[med-svn] [gmap] 01/06: Imported Upstream version 2014-06-10

Alex Mestiashvili malex-guest at moszumanska.debian.org
Tue Jul 1 16:33:11 UTC 2014


This is an automated email from the git hooks/post-receive script.

malex-guest pushed a commit to branch master
in repository gmap.

commit eff24d5dbbff584e79a2387212dba50547908e02
Author: Alexandre Mestiashvili <alex at biotec.tu-dresden.de>
Date:   Mon Jun 30 13:03:39 2014 +0200

    Imported Upstream version 2014-06-10
---
 ChangeLog                            |  2272 +-
 Makefile.am                          |     4 +-
 Makefile.in                          |    13 +-
 NOTICE                               |    85 +
 README                               |   458 +-
 TODO                                 |     3 +
 VERSION                              |     2 +-
 acinclude.m4                         |     3 +-
 config/acx_mmap_fixed.m4             |     4 +-
 config/acx_mmap_variable.m4          |     4 +-
 config/ax_ext.m4                     |   181 +-
 config/ax_gcc_x86_avx_xgetbv.m4      |    79 +
 config/madvise-flags.m4              |     9 +
 config/popcnt.m4                     |    42 -
 config/sse2_shift_defect.m4          |    26 +
 configure                            |  3216 +-
 configure.ac                         |    34 +-
 src/Makefile.am                      |   167 +-
 src/Makefile.in                      |  2954 +-
 src/access.c                         |   160 +-
 src/atoiindex.c                      |   608 +-
 src/bitpack64-access.c               |  2135 +
 src/bitpack64-access.h               |     9 +
 src/bitpack64-read.c                 | 14517 +++++++
 src/bitpack64-read.h                 |    30 +
 src/bitpack64-readtwo.c              | 14242 +++++++
 src/bitpack64-readtwo.h              |    15 +
 src/bitpack64-write.c                |  5447 +++
 src/bitpack64-write.h                |    24 +
 src/boyer-moore.c                    |    49 +-
 src/bytecoding.c                     |   785 +
 src/bytecoding.h                     |    53 +
 src/{diagpool.c => cellpool.c}       |   134 +-
 src/cellpool.h                       |    40 +
 src/chimera.c                        |   359 +-
 src/chimera.h                        |    20 +-
 src/chrom.c                          |    15 +-
 src/chrom.h                          |     6 +-
 src/chrsubset.c                      |   490 -
 src/chrsubset.h                      |    43 -
 src/cmetindex.c                      |   609 +-
 src/compress-write.c                 |   689 +
 src/{compress.h => compress-write.h} |    28 +-
 src/compress.c                       |  2629 +-
 src/compress.h                       |    44 +-
 src/config.h.in                      |    45 +-
 src/diag.c                           |   112 +-
 src/diag.h                           |    10 +-
 src/diagpool.c                       |     4 +-
 src/doublelist.c                     |   154 +
 src/doublelist.h                     |    24 +
 src/dynprog.c                        | 11066 +----
 src/dynprog.h                        |   361 +-
 src/dynprog_cdna.c                   |  1321 +
 src/dynprog_cdna.h                   |    32 +
 src/dynprog_end.c                    |  3202 ++
 src/dynprog_end.h                    |   117 +
 src/dynprog_genome.c                 |  3900 ++
 src/dynprog_genome.h                 |    35 +
 src/dynprog_simd.c                   |  4928 +++
 src/dynprog_simd.h                   |   121 +
 src/dynprog_single.c                 |  1375 +
 src/dynprog_single.h                 |    57 +
 src/fastlog.h                        |   124 +
 src/genome-write.c                   |    40 +-
 src/genome-write.h                   |    13 +-
 src/genome.c                         |   726 +-
 src/genome.h                         |    25 +-
 src/genome128_hr.c                   | 23774 +++++++++++
 src/genome128_hr.h                   |    76 +
 src/genome_hr.c                      | 71664 ---------------------------------
 src/genome_hr.h                      |   146 -
 src/genome_sites.c                   | 26262 ++++++++++++
 src/genome_sites.h                   |    49 +
 src/genomicpos.c                     |    11 +-
 src/genomicpos.h                     |    10 +-
 src/get-genome.c                     |   248 +-
 src/gmap.c                           |  2684 +-
 src/gmapindex.c                      |   701 +-
 src/goby.c                           |     8 +-
 src/goby.h                           |     4 +-
 src/gregion.c                        |    98 +-
 src/gsnap.c                          |   883 +-
 src/iit-read-univ.c                  |    36 +-
 src/iit-read.c                       |   686 +-
 src/iit-read.h                       |    23 +-
 src/iit-write-univ.c                 |     2 +-
 src/iit-write-univ.h                 |     8 +-
 src/iit-write.c                      |    96 +-
 src/iit-write.h                      |     8 +-
 src/iit_get.c                        |   522 +-
 src/iit_store.c                      |   133 +-
 src/iitdef.h                         |    24 +-
 src/inbuffer.c                       |    53 +-
 src/indel.c                          |   340 +
 src/indel.h                          |    30 +
 src/indexdb-write.c                  |  2111 +-
 src/indexdb-write.h                  |    78 +-
 src/indexdb.c                        |  1842 +-
 src/indexdb.h                        |    88 +-
 src/indexdb_hr.c                     |   412 +-
 src/indexdbdef.h                     |    41 +-
 src/interval.c                       |    35 +-
 src/interval.h                       |     6 +-
 src/intlist.c                        |    22 +-
 src/intlist.h                        |     4 +-
 src/littleendian.c                   |    12 +-
 src/littleendian.h                   |     8 +-
 src/mapq.c                           |    22 +-
 src/mapq.h                           |     8 +-
 src/mem.c                            |   205 +-
 src/mem.h                            |    18 +-
 src/oligo.c                          |   164 +-
 src/oligoindex.c                     |  2020 -
 src/oligoindex.h                     |   106 -
 src/oligoindex_hr.c                  |  7884 +++-
 src/oligoindex_hr.h                  |    54 +-
 src/outbuffer.c                      |  1230 +-
 src/outbuffer.h                      |    22 +-
 src/pair.c                           |   422 +-
 src/pair.h                           |    28 +-
 src/pairdef.h                        |     5 +-
 src/pairpool.c                       |   515 +-
 src/pairpool.h                       |    28 +-
 src/popcount.c                       |  4116 ++
 src/popcount.h                       |    18 +
 src/resulthr.c                       |     3 +-
 src/saca-k.c                         |   509 +
 src/saca-k.h                         |    10 +
 src/samflags.h                       |    29 +-
 src/samheader.c                      |    52 +
 src/samheader.h                      |    14 +
 src/samprint.c                       |  2133 +-
 src/samprint.h                       |    55 +-
 src/sarray-read.c                    |  3736 ++
 src/sarray-read.h                    |    45 +
 src/sarray-write.c                   |  1588 +
 src/sarray-write.h                   |    54 +
 src/scores.h                         |    10 +-
 src/segmentpos.c                     |    19 +-
 src/segmentpos.h                     |     4 +-
 src/sequence.c                       |   134 +-
 src/sequence.h                       |     8 +-
 src/shortread.c                      |   648 +-
 src/shortread.h                      |    20 +-
 src/smooth.c                         |   576 +-
 src/smooth.h                         |     6 +-
 src/snpindex.c                       |   328 +-
 src/spanningelt.c                    |   339 +-
 src/spanningelt.h                    |    31 +-
 src/splice.c                         |  1628 +
 src/splice.h                         |    65 +
 src/splicestringpool.c               |   223 +
 src/splicestringpool.h               |    38 +
 src/splicetrie.c                     |   159 +-
 src/splicetrie.h                     |    10 +-
 src/splicetrie_build.c               |  1593 +-
 src/splicetrie_build.h               |    12 +-
 src/stage1.c                         |   318 +-
 src/stage1.h                         |     9 +-
 src/stage1hr.c                       | 13415 +++---
 src/stage1hr.h                       |    40 +-
 src/stage2.c                         |  4411 +-
 src/stage2.h                         |    68 +-
 src/stage3.c                         |  6488 +--
 src/stage3.h                         |    96 +-
 src/stage3hr.c                       |  3873 +-
 src/stage3hr.h                       |   152 +-
 src/stopwatch.c                      |    18 +-
 src/substring.c                      |   649 +-
 src/substring.h                      |    47 +-
 src/table.c                          |    21 +-
 src/table.h                          |     4 +-
 src/translation.c                    |    31 +-
 src/types.h                          |    39 +-
 src/uint8list.c                      |    20 +-
 src/uint8list.h                      |     4 +-
 src/uintlist.c                       |    20 +-
 src/uintlist.h                       |     4 +-
 src/uniqscan.c                       |   267 +-
 src/univinterval.c                   |    63 +-
 src/univinterval.h                   |    13 +-
 tests/Makefile.in                    |     7 +-
 util/Makefile.am                     |    33 +-
 util/Makefile.in                     |    71 +-
 util/ensembl_genes.pl.in             |    54 +
 util/fa_coords.pl.in                 |    96 +-
 util/gmap_build.pl.in                |   379 +-
 util/gmap_process.pl.in              |    19 +-
 util/gmap_setup.pl.in                |   459 -
 util/gvf_iit.pl.in                   |    63 +
 191 files changed, 166843 insertions(+), 109118 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9f60514..c04bf12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,76 +1,2290 @@
-2013-07-20  twu
+2014-06-11  twu
+
+    * VERSION: Updated version number
+
+    * config.site.rescomp.prd, config.site.rescomp.tst, sarray-read.c, splice.c,
+      src, stage1hr.c, stage3hr.c, stage3hr.h, trunk: Merged revisions 138722
+      through 138743 from branches/2014-06-01-amb-shortexon-fix1 to allow for
+      ambiguous shortexons and to place a limit of MAX_LOCALSPLICING_POTENTIAL
+      on splicing and shortexons
+
+    * archive.html, index.html: Put version 2014-05-15.v3 into archive
+
+    * stage1hr.c: Not processing splicing or shortexons if number of
+      possibilities exceeds MAX_LOCALSPLICING_POTENTIAL
+
+    * gsnap.c: In memusage debugging, printing accession for each thread at the
+      start of its processing
+
+    * substring.c, substring.h: Added function Substring_chimera_prob_2
+
+    * segmentpos.c, segmentpos.h: Added function Segmentpos_compare_order
+
+    * samprint.c: Removed unused variable
+
+    * iitdef.h: Added FILENAME_SORT as a sorting type
+
+    * gsnap.c: Added commas to memusage debugging output
+
+    * dynprog_end.c: Removed assertions, which do not hold
+
+2014-06-09  twu
+
+    * gmap_build.pl.in: Added option for sorting chromosomes by order in a file
+
+    * chrom.c, chrom.h, gmapindex.c: Added option for sorting chromosomes by
+      order in a file
+
+2014-06-04  twu
+
+    * VERSION: Updated version number
+
+    * README, configure.ac: Increased default MAX_READLENGTH for GSNAP from 250
+      to 300
+
+    * dynprog_simd.c: Fixed formatting
+
+    * dynprog_genome.c: Using correct interface to Dynprog_standard for non-SSE2
+      systems
+
+    * dynprog_cdna.c: Using correct interface to Dynprog_standard for non-SSE2
+      systems
+
+    * dynprog_end.c: Enabled non-SSE2 compilation to work.  Made traceback
+      procedures follow those in dynprog_simd.c.
+
+    * dynprog.c, dynprog.h: Modified traceback_std (non-SIMD) to behave the same
+      as the SIMD traceback routines.  Improved debugging output.
+
+    * stage3.c: Added comments
+
+    * dynprog.c, dynprog.h: Exposed Dynprog_standard, needed for systems without
+      SSE2 instructions
+
+    * gmap.c, gsnap.c: In checking behavior of _mm_extract_epi8, just reporting
+      results and not exiting based on behavior
+
+    * genome128_hr.c: Casting _mm_extract_epi16 to unsigned short, or a zero
+      extended result, which is technically the correct behavior
+
+    * dynprog_simd.c: Being very explicit about casting between int and Score8_T
+      and Score16_T types
+
+    * dynprog.h: Removed conditionals around defining Score_8 and Score_16 types
+
+    * compress.c: Calling _mm_free to match _mm_malloc
+
+2014-05-31  twu
+
+    * VERSION, compress.c, config.site.rescomp.prd, config.site.rescomp.tst,
+      genome128_hr.c, index.html, src, trunk: Merged revisions 137093 through
+      137694 from branches/2014-05-23-genome128-32bit-shortchut to implement
+      32-bit shortcuts for 128-bit genomebits
+
+2014-05-30  twu
+
+    * stage3hr.c: Not checking any more for duplicate Stage3end_T objects
+
+    * stage2.c: Eliminated penalty when exon length < EXON_DEFN, which misses
+      short exons
+
+    * stage1hr.c: Restored usage of paired_usedp to avoid excess calls to GMAP
+      for halfmapping alignments
+
+    * stage1hr.c: Not using paired_usedp in computing GMAP for halfmapping
+      alignments
+
+    * dynprog_simd.c: Fixed traceback procedures to follow correct paths on gaps
+
+    * dynprog.c, dynprog.h, dynprog_genome.c, dynprog_single.c: Moved gap
+      penalties to dynprog.h, and reduced open penalties to allow for multiple
+      indels
+
+2014-05-28  twu
+
+    * stage3.c: In merge_local_single, checking filledp to see if merge failed. 
+      When merge fails, recompute pairarray for this_left and this_right.
+
+2014-05-27  twu
+
+    * dynprog_simd.c: Implemented replacement for _mm_min_epi8 for non-SSE4.1
+      systems
+
+2014-05-24  twu
+
+    * dynprog_simd.c: Fixed computations of E and H for values near
+      NEG_INFINITY, to prevent horizontal or vertical jumps into the empty
+      triangle.  Added an E_mask variable to set horizontal/vertical scores into
+      the empty triangle to be NEG_INFINITY.  Setting directions_nogap
+      explicitly to DIAG along the main diagonal to take care of ties between E
+      and H.
+
+    * dynprog_end.c: Using computed lband and uband in find_best_endpoint
+      procedures, instead of trying to recompute them, which led to incorrect
+      results
+
+2014-05-23  twu
+
+    * get-genome.c, iit-read-univ.c: Fixed zero-based behavior of -L option to
+      one-based behavior. Zero-based behavior introduced in revision 99737 on
+      2013-06-27.
+
+    * index.html: Made changes for version 2014-05-15
+
+    * gmap.c, gsnap.c: Added better test for behavior of max operation in SSE4.1
+
+    * stage1hr.c: Fixed a memory leak involving ambcoords
+
+    * stage1hr.c: Using nmatches_posttrim in evaluating alignments.  Doing a
+      comparison between concordant alignments involving terminals and
+      halfmapping alignments, to determine the best solution.
+
+    * stage3hr.c: Fixed assignment of amb_nmatches to correct end for minus
+      alignments in Stage3end_new_splice.  Extending hardclips by
+      amb_nmatches_start and amb_nmatches_end in Stage3pair_overlap.
+
+    * stage3hr.c, stage3hr.h: Changed Stage3end_nmatches and Stage3pair_nmatches
+      to Stage3end_nmatches_posttrim and Stage3pair_nmatches_posttrim
+
+2014-05-21  twu
+
+    * samprint.c, samprint.h: Fixed typo in keeping a parameter
+
+    * README: Clarified effect of --failed-input option
+
+    * README: Fixed typo
+
+    * acx_mmap_fixed.m4, acx_mmap_variable.m4: Fixed type incompatibility when
+      char * is cast to int
+
+    * stage1hr.c: Changed categories for some debugging statements
+
+    * gmap.c, gsnap.c, outbuffer.c, outbuffer.h, samprint.c, samprint.h,
+      stage3hr.c, stage3hr.h: Changed --fails-as-input flag to --failed-input
+      flag, which takes an argument.  Printing failed inputs in addition to
+      nomapping output.
+
+    * genome.c: Made error message clearer when genomebits128 file not found
+
+2014-05-17  twu
+
+    * stage3hr.c: Setting amb_nmatches_start, amb_nmatches_end,
+      start_ambiguous_p, and end_ambiguous_p based on amb_nmatches for halfdonor
+      and halfacceptor splices, even when ambcoords_left and ambcoords_right are
+      NULL
+
+    * stage1hr.c: Minor fixes to debugging statements
+
+2014-05-16  twu
+
+    * stage1hr.c: Turned on macro for finding middle alignments.
+
+    * stage1hr.c: Turned on finding of middle alignments in find_terminals.  Set
+      length threshold to be querylength/3 instead of index1part.
+
+2014-05-15  twu
+
+    * stage3.c: Removed revisions of coordinates near indels, which is not
+      needed any more with the latest dynamic programming procedures
+
+2014-05-14  twu
+
+    * VERSION, index.html: Updated version number
+
+    * dynprog_simd.c: For systems with SSE2 but not SSE4.1, subtracting 128 from
+      pairscore in F loop of Dynprog_simd_8, and from initial column in
+      Dynprog_simd_8_lower, to obtain correct results
+
+    * dynprog_genome.c: Removed debugging statements
+
+    * dynprog_genome.c: Fixed an uninitialized variable, best_prob
+
+2014-05-13  twu
+
+    * Makefile.gsnaptoo.am, README, bytecoding.c, samprint.c, sarray-read.c,
+      sarray-read.h, splice.c, splice.h, src, stage1hr.c, stage3hr.c,
+      stage3hr.h, substring.c, substring.h, trunk, uint8list.c, uint8list.h,
+      uintlist.c, uintlist.h: Merged revisions 135802 through 136084 from
+      branches/2014-05-09-novel-ambiguous to consolidate ambiguous splices to
+      save on memory usage and to consider them as a single concordant alignment
+
+    * pairpool.c: Not advancing coordinate at start of Pairpool_add_queryskip
+      and Pairpool_add_genomeskip
+
+2014-05-09  twu
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst, index.html,
+      sarray-read.c, splice.c, splice.h, src, stage1hr.c, stage3hr.c,
+      stage3hr.h, substring.c, substring.h, trunk: Merged revisions 135797
+      through 135801 from branches/2014-05-09-novel-ambiguous to save state
+      before implementing novel ambiguous positions
+
+    * gsnap.c: Improved output for MEMUSAGE
+
+    * dynprog_simd.c: Speeding up traceback for upper and lower triangles, to
+      take advantage of the fact that the main diagonal is filled with DIAGs.
+
+    * sarray-read.c, stage1hr.c, stage3hr.c, stage3hr.h: Grouping multiple
+      splice segments connected to a given splice site, and selecting the best
+      among these.  If multiple best choices are found, creating an ambiguous
+      splice.
+
+    * dynprog_simd.c: In traceback procedures, added check after each indel to
+      see if we are in row 0 or column 0, and if so, not to trust the value in
+      directions_nogap.
+
+    * splicetrie_build.c: Fixed comparison with MAX_SITES_ALLOCATED for
+      intron-level splicing files
+
+    * gsnap.c: Setting POOL_FREE_INTERVAL to be 1
+
+    * gsnap.c, outbuffer.c: Using new interface to memusage routines
+
+    * mem.c, mem.h: Changed variable names for memusage.  Added memusage report
+      for keep pool.
+
+    * dynprog_simd.c: Fixed bug with infinite loop at row 1 or column 1, leading
+      to error in memory allocation for pairpool
+
+    * dynprog_simd.c, pairpool.c: Adding 1 to r and c only on final indel
+
+2014-05-08  twu
+
+    * pairpool.c: When adding indel (queryskip or genomeskip), not advancing
+      coordinate by 1, since that can cross over chromosomal bounds
+
+2014-05-07  twu
+
+    * VERSION: Updated version number
+
+    * Makefile.gsnaptoo.am, cellpool.c, cellpool.h, gmap.c, smooth.c,
+      stage1hr.c, stage1hr.h, stage2.c, stage2.h, stage3.c, stage3.h,
+      uniqscan.c: Added Cellpool_T object to handle allocations of Cell_T in
+      stage 2
+
+    * gsnap.c: Calling Pairpool_reset, Diagpool_reset, and Cellpool_reset before
+      processing each request.  Previously, this memory was not being freed
+      until the end of the process.
+
+    * splicestringpool.c: Changed memory procedures to use standard pool instead
+      of keep pool
+
+    * dynprog_simd.c: Fixed saturation bug in F loop when trying to add
+      pairscore.  Setting E and H so non-diag directions are placed in row 0 and
+      column 0.  At end of traceback procedures, adding final indel to (0,0).
+
+    * stage3.c: Having make_pairarray_merge return a boolean to indicate success
+      or failure.  Trying to use the old pairarray in case of failure.
+
+    * gmap.c, gsnap.c, uniqscan.c: Using new interface to Splicetrie_retrieve
+      procedures, using Splicestringpool_T object
+
+    * Makefile.gsnaptoo.am, splicestringpool.c, splicestringpool.h,
+      splicetrie_build.c, splicetrie_build.h: Using Splicestringpool_T object to
+      reduce number of memory allocations for Splicestring_T objects.  Using
+      local array for sites to also reduce number of memory allocations.
+
+    * splicetrie_build.c: Allocating struct Interval_T when copies are needed,
+      to reduce the number of calls to allocate memory.  Allocating triecontents
+      as an array instead of uintlist, also to reduce the number of calls to
+      allocate memory.
+
+    * interval.c, interval.h: Allocating struct Interval_T when copies are
+      needed, to reduce the number of calls to allocate memory
+
+2014-05-06  twu
+
+    * dynprog.h: Added definitions of POS_INFINITY_8 and POS_INFINITY_16
+
+    * pair.c: Returning correct type of NULL
+
+    * dynprog_cdna.c, dynprog_genome.c: Fixed potential memory leak with
+      SNP-tolerant alignment
+
+    * genome.c: If glength == 0, Genome_get_segment_blocks now returns NULL
+
+    * stage3.c: Changed condition for not running Dynprog_single_gap from
+      (queryjump < 0 || genomejump < 0) to (queryjump <= 0 || genomejump <= 0)
+
+2014-05-05  twu
+
+    * stage1hr.c: Checking for anomalous splice (samechr splice) before trying
+      to compute mapping position from distal end
+
+    * compress.c: Bypassing SSSE3 version of Compress_shift when
+      DEFECTIVE_SSE2_COMPILER is true
+
+2014-05-02  twu
+
+    * ax_ext.m4: Not allowing AVX unless immintrin.h is present
+
+    * indexdb.c: Freeing offsetspages for large genomes
+
+    * gsnap.c: For MEMUSAGE, changing pool free interval to be 1
+
+    * dynprog.c: Freeing nt_to_int_array
+
+    * dynprog_simd.c: Simplified traceback procedures
+
+2014-05-01  twu
+
+    * stopwatch.c: Removed comment
+
+    * stage3hr.c: Allocating ambi and amb_nmismatches into output memory pool
+
+    * stage1hr.c: Limiting the number of terminals
+
+    * mem.c: Fixed memusage_reset procedure and revised debugging messages to
+      print pool type
+
+    * intlist.c, intlist.h: Implemented Intlist_to_array_out
+
+    * compress.c, compress.h: Implemented SSSE3 procedure and fixed bug in SSE2
+      procedure for Compress_shift
+
+    * genome128_hr.c: Fixed block_diff_snp procedure to perform the complete
+      calculation for query, ref, and alt sequences.
+
+    * genome.c: Fixed Genome_get_segment_blocks_left and _right to provide
+      correct alternate genomic segment
+
+    * dynprog_simd.c: Setting values along bands to be DIAG to avoid going out
+      of bounds. Revised loops for gaps in traceback procedures.  Compensating
+      for open value in comparing E vs H for dir_horiz and dir_vert.  Using
+      nt_to_int_array. Improved debugging print procedures.
+
+    * dynprog.c, dynprog.h: Introduced nt_to_int_array.  Setting score for
+      AMBIGUOUS to be 0, and setting N-N to be that score.
+
+2014-04-24  twu
+
+    * ax_ext.m4: Removing -mavx and -mavx2 compiler flags for now.  Being added
+      to Mac OS X Mavericks, where they are causing problems.
+
+    * stopwatch.c: Added macro for specifying POSIX C time
+
+    * stage3hr.c: Allowing pair_insert_length_trimmed to handle non-concordant
+      paired ends
+
+    * genome128_hr.c: Implemented code for defective SSE2 compilers that cannot
+      handle shifts with a non-immediate scalar
+
+    * samprint.c: Fixed printing of XS for half-donor and half-acceptor reads
+
+2014-04-21  twu
+
+    * iit-read-univ.c: Printing tp:circular for circular chromosomes
+
+    * stage3.c: Using new interface to Pair_circularpos
+
+    * stage3hr.c: Computing insertlength properly for circular chromosomes when
+      ends have different aliases.  Handling duplicates of aliases better.
+
+    * pair.c, pair.h: Computing alias correctly in Pair_circularpos
+
+    * pair.c: Fixed bug when Pair_trim_ends is called when pairs is NULL
+
+2014-04-20  twu
+
+    * Makefile.gsnaptoo.am, atoiindex.c, cmetindex.c, genome.c, genome.h,
+      genome128_hr.c, genome128_hr.h, gmapindex.c, gsnap.c, indel.c, indel.h,
+      indexdb.c, mapq.c, mapq.h, oligo.c, oligoindex_hr.c, sarray-read.c,
+      sarray-read.h, sarray-write.c, sarray-write.h, splice.c, splice.h,
+      splicetrie.c, splicetrie.h, src, stage1hr.c, stage1hr.h, stage3hr.c,
+      stage3hr.h, substring.c, substring.h, trunk: Merged revisions 133654
+      through 133759 from branches/2014-04-18-cmet-atoi-suffix-arrays to fix
+      CMET and ATOI procedures
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst: Updated version
+      number
+
+    * index.html: Updated for version 2014-04-17
+
+    * stage3.c: Fixed uninitialized variable
+
+2014-04-17  twu
+
+    * indexdb.c: Creating correct bitpack filenames when snps_root is given
+
+    * snpindex.c: Handling the case when an IIT file is not provided on the
+      command-line, and installation is not needed
+
+2014-04-10  twu
+
+    * gmap_build.pl.in: Fixed documentation for compression types
+
+    * dynprog_simd.c, dynprog_simd.h, dynprog_single.c: Added traceback
+      procedure for Score16_T variables
+
+    * snpindex.c: Creating genomebits128 format instead of genomebits format
+
+2014-04-09  twu
+
+    * sarray-read.c: Made changes in code (commented out) to try to infer
+      lcp-intervals for short oligomers from 12-mer index, but still has some
+      bugs
+
+    * archive.html, index.html: Made changes for version 2014-04-08 and
+      2013-03-28.v2
+
+    * VERSION: Updated version number
+
+    * gmap.c: Removed unnecessary const
+
+    * stage2.c: Applying maxintronlen in deciding whether to create a grand
+      lookback
+
+2014-04-08  twu
+
+    * pairpool.c: Fixed bug in Pairpool_compact_copy
+
+    * stage3.c: Removed debugging statement
+
+    * Makefile.gsnaptoo.am, dynprog.c, dynprog.h, dynprog_cdna.c,
+      dynprog_cdna.h, dynprog_end.c, dynprog_end.h, dynprog_genome.c,
+      dynprog_genome.h, dynprog_simd.c, dynprog_simd.h, dynprog_single.c,
+      dynprog_single.h, gmap.c, gsnap.c, sarray-read.c, sequence.c, sequence.h,
+      splicetrie.c, src, stage3.c, stage3.h, trunk, uniqscan.c, util: Merged
+      --reintegrate branches/2014-04-04-dynprog-shift to change dynprog_end
+      routines to use upper/lower algorithm without F loops
+
+    * index.html: Updated for version 2014-04-06
+
+    * pairpool.c, pairpool.h: Implemented Pairpool_compact_copy
+
+    * oligoindex_hr.c: Freeing storage memory in Oligoindex_array_T object
+
+    * stage1.c: Checking extensions to make sure they fall within
+      --max_totallength
+
+    * chimera.c, chimera.h, gmap.c, stage3.c, stage3.h: Checking chimeras to see
+      that they satisfy --min-trimmed-coverage and --min-identity filters
+
+    * mem.c: Turned off DEBUG macro
+
+    * iit-read-univ.c: Restored warning message when IIT file cannot be read
+
+    * gmapindex.c, sarray-write.c, sarray-write.h: Implemented
+      Sarray_child_uncompress
+
+    * gmap.c: No longer proceeding to align if Stage2_scan yields max_ncovered
+      of less than 10% of the querylength.
+
+    * genome128_hr.c: Made additional changes to avoid _mm_extract_ps on
+      non-SSE4.1 systems
+
+2014-04-07  twu
+
+    * sarray-read.c: When effective querylength is less than bucket indexsize,
+      no longer trying to infer lcp-interval from bucket array, but just
+      starting from entire lcp-interval.
+
+2014-04-06  twu
+
+    * gmap.c, gsnap.c, uniqscan.c: Checking for valid float values between 0.0
+      and 1.0
+
+    * dynprog_genome.c, splicetrie.c: Fixed headers for dynprog routines
+
+    * dynprog_single.c: Using a variable in the F loop to see if H needs to be
+      reloaded
+
+    * oligoindex_hr.c: Allocating storage for Oligoindex_array_T
+
+    * Makefile.gsnaptoo.am, dynprog.c, dynprog.h, dynprog_genome.c,
+      dynprog_genome.h, dynprog_single.c, dynprog_single.h, gmap.c, gsnap.c,
+      pairpool.c, pairpool.h, src, stage3.c, stage3.h, trunk, uniqscan.c, util:
+      erge reintegrated branches/2014-04-04-dynprog-shift to use new SIMD
+      routines that are row-first and reduce use of F loops
+
+    * util: Removed property changes
+
+    * src: Removed property changes
+
+    * VERSION: Updated version number
+
+    * gmap.c, gsnap.c, oligoindex_hr.c, oligoindex_hr.h, stage1hr.c, stage1hr.h,
+      stage2.c, stage2.h, stage3.c, stage3.h, uniqscan.c: Created a separate
+      Oligoindex_array_T object, which also holds storage
+
+    * configure.ac: Added AC_FUNC_ALLOCA
+
+    * mem.h: Added hooks for memory allocation using alloca
+
+    * bitpack64-readtwo.c: Added missing #endif
+
+    * indexdb.c: Fixed type of offsets from UINT4 back to Positionsptr_T
+
+    * iit-read-univ.c: aking Univ_FNode_T struct separate from FNode_T struct
+
+    * gmapindex.c: Checking genomelength before trying to create suffix array or
+      LCP/child/DC arrays
+
+    * bitpack64-readtwo.c: Fixed bug where not enough 128-bit registers were
+      provided for large genomes
+
+    * bitpack64-read.c: Eliminated an extra addition from computing offset in
+      large genomes
+
+2014-04-03  twu
+
+    * uniqscan.c: Using new interface to Oligoindex_new routines
+
+    * index.html: Updated for 2014-04-01 version
+
+    * archive.html: oved 2014-03-28 and earlier versions to archive
+
+    * acinclude.m4, ax_ext.m4, ax_gcc_x86_avx_xgetbv.m4: Updated ax_ext.m4 and
+      added ax_gcc_x86_avx_xgetbv
+
+    * uniqscan.c: Using new interface to Stage3_setup
+
+    * stage3.c, stage3.h: Providing min_end_indel_matches to end trimming
+      procedures
+
+    * sarray-read.c, sarray-read.h: Added separate access control for lcpchilddc
+
+    * oligoindex_hr.c, oligoindex_hr.h: Allocating dedicated space needed for
+      Oligoindex_get_mappings, to avoid memory allocation/deallocation
+
+    * gsnap.c: Using new interface to Oligoindex_new routines, Stage3_setup, and
+      Sarray_new
+
+    * gmap.c: Using new interface to Oligoindex_new routines and Stage3_setup
+
+    * genome128_hr.c: Provided alternative to _mm_extract_ps, which also
+      requires SSE4.1
+
+    * dynprog.c: odified debugging statements
+
+2014-04-02  twu
+
+    * ax_ext.m4: Adding warning messages when immintrin.h is not found and could
+      be used
+
+    * ax_ext.m4: Checking for immintrin.h before allowing popcnt, lzcnt, or bmi1
+
+    * ax_ext.m4: Improved warning messages
+
+    * Makefile.gsnaptoo.am, VERSION, atoiindex.c, ax_ext.m4, bitpack64-access.c,
+      bitpack64-read.c, bitpack64-read.h, bitpack64-readtwo.c,
+      bitpack64-readtwo.h, bitpack64-serial-read.c, bitpack64-serial-read.h,
+      bitpack64-serial-write.c, bitpack64-serial-write.h, bitpack64-write.c,
+      bitpack64-write.h, bytecoding.c, bytecoding.h, cmetindex.c,
+      compress-write.c, compress-write.h, compress.c, compress.h, compress128.c,
+      config.site.rescomp.prd, config.site.rescomp.tst, dynprog.c,
+      genome-write.c, genome-write.h, genome.c, genome128-write.c,
+      genome128-write.h, genome128_hr.c, genome128_hr.h, genome_hr.c,
+      genome_hr.h, genome_sites.c, gmap.c, gmap_build.pl.in, gmapindex.c,
+      gsnap.c, iit-read-univ.c, iit-read.h, iit-write-univ.h, iit-write.h,
+      iitdef.h, indel.c, indexdb-write.c, indexdb-write.h, indexdb.c, indexdb.h,
+      indexdb_hr.c, indexdbdef.h, mapq.c, sarray-read.c, sarray-read.h,
+      sarray-write.c, sarray-write.h, snpindex.c, splice.c, splicetrie.c,
+      splicetrie_build.c, src, stage1hr.c, stage2.c, stage3.c, stage3hr.c,
+      substring.c, trunk, types.h, uniqscan.c, util: ajor change.  Merged
+      revisions 131573 to 132142 from branches/2014-03-26-bitpack-esa to use
+      genomebits128 format, bp64-columnar, and enhanced suffix arrays
+
+    * VERSION: Updated version number
+
+    * index.html: Revised for latest version
+
+    * stage3hr.c: Not using number of introns to determine equivalence in
+      hit_equiv_cmp and hitpair_equiv_cmp
+
+    * genome_sites.c: Resolved comparison between unsigned and signed values for
+      -1
+
+2014-04-01  twu
+
+    * boyer-moore.c, dynprog.c, stage3.c: Implemented changes to restore finding
+      microexons
+
+    * shortread.c: Handling Casava reads ending in ";1".  Fixed problem where -q
+      and --allow-pe-name-mismatch together caused a fatal bug.
+
+    * genome_hr.c: Changed debugging output for splice fragments to print
+      unsigned shorts
+
+2014-03-28  twu
+
+    * indexdb.c: Changed type of offsets (called only for regular bitpack
+      procedure) from Positionsptr_T * to UINT4 *
+
+    * indexdb_hr.c: Calling correct procedures for LARGE_GENOMES
+
+    * substring.c, substring.h: Fixing comparisons of coordinates to handle
+      circular chromosomes
+
+    * stage3hr.h: Removed queryseq as arguments to Stage3end_remove_duplicates
+
+    * stage3hr.c: Fixing comparisons of coordinates to handle circular
+      chromosomes
+
+    * stage1hr.c: Calling Stage3end_remove_duplicates after
+      Stage3end_remove_circular_alias
+
+    * stage1hr.c, stage3hr.c, stage3hr.h: Trying to salvage alias +1 within
+      Stage3end_remove_circular_alias, and calling that rather than
+      Stage3end_unalias_circular
+
+2014-03-27  twu
+
+    * stage3hr.c: In Stage3_new_splice, not trying to merge long-distance
+      splices at this time, which can lead to bad coordinates for GMAP
+
+    * stage1hr.c: Initializing variable, previously not initialized
+
+    * pair.c: Fixed assertion on CIGAR length to include hardclips
+
+    * gsnap.c: Including splice.h
+
+    * chimera.c: Rearrange order of loops in Chimera_bestpath
+
+2014-03-26  twu
+
+    * stage3hr.c: Fixed bug where overlap across circular chromosome origin is
+      entirely trimmed, leading to an "SH" cigar string
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst, index.html,
+      trunk, util: Updated version number
+
+    * gmap.c: Checking return value of Chimera_bestpath
+
+    * gmap.c: Checking return value of Chimera_bestpath
+
+    * chimera.c, chimera.h: Chimera_bestpath returning a value to indicate if a
+      chimera was found
+
+    * stage3.c: In Stage3_merge_local, traversing cDNA gap any time intronlength
+      is less than 0
+
+    * pairpool.c: Created separate debugging category for Pairpool_clean_join
+
+    * gsnap.c, splice.c, splice.h: Using min_shortend to control splice length
+      at ends
+
+    * sarray-read.c: Fixed problem where splice or deletion could extend into
+      next chromosome
+
+2014-03-17  twu
+
+    * translation.c: Fixed bug where assign_cdna_backward was returning ncdna
+      instead of codon
+
+2014-03-13  twu
+
+    * sarray-read.c: Put sarray_search loop into a new function,
+      find_longest_match
+
+    * sarray-read.c: Improved sarray_search by looking up genome only when lcp
+      advances by more than one position
+
+    * oligoindex_hr.c: Using faster method for checking for zero 128-bit
+      register when SSE4.1 is available
+
+    * dynprog.c, gdiag.c, indexdb_hr.c, oligo.c, pair.c, sarray-read.c,
+      spanningelt.c, stage1.c, stage1hr.c, stage2.c: Using safer method for
+      computing average of lowi and highi in binary search
+
+    * access.c: Handling empty files
+
+2014-03-01  twu
+
+    * gmap.c, stage3.c, stage3.h: Removed alignment_score_fwd and
+      alignment_score_rev from Stage3_T object
+
+    * VERSION: Updated version number
+
+    * stage3.h: Using maxintronlen_bound in Stage3_mergeable
+
+    * stage3.c: Not trimming exons at end based on splice site probabilities
+
+    * stage2.c: In D4 section, when diffdistance <= EQUAL_DISTANCE_NO_SPLICING,
+      adding CONSEC_POINTS_PER_MATCH, to extend chains further
+
+    * gmap.c: Using maxintronlen_bound in Stage3_mergeable
+
+    * gmap.c: Performing iterations for finding a local join, before iterations
+      for finding a chimera.
+
+    * stage3.c: Revised criteria for pick_cdna_direction.  When cdna_direction
+      == 0, assigning fwd or rev introntype instead of NONINTRON.
+
+2014-02-28  twu
+
+    * Makefile.dna.am, Makefile.gsnaptoo.am, get-genome.c, gmap.c, outbuffer.c,
+      outbuffer.h, stage1.c, stage1.h: Removed references to Chrsubset_T.  Made
+      -c flag work again by setting universal coordinate bounds in stage 1.
+
+    * gmap.c: Checking coverage of nonchimericbest against each chimeric part,
+      and if coverage is large enough on each side, picking non-chimeric
+      alignment over chimera.
+
+    * stage3.c, stage3.h: Not determining mergeable based on cdna_directions of
+      the left and right part.  In that situation, fixing the alignment by
+      recomputing to find the best cdna_direction.
+
+    * pair.c: Disallowing transitions even 10 bp outside of alignments
+
+    * chimera.c: Calling Pair_pathscores directly, instead of through
+      Stage3_pathscores
+
+    * gmap_build.pl.in: Removed reference to localdir.  Putting tempfiles for
+      <genome>.coords and <genome>.sources into destination directory.
+
+    * sarray-read.c: Slight speed improvement in handling pre-alignment loop. 
+      Now using 0 instead of 4.
+
+    * stage3hr.c: Restored old version of Stage3end_remove_overlaps, with
+      different algorithm from that for paired ends
+
+2014-02-26  twu
+
+    * stage1hr.c: For paired-end reads, when only one end is too short, aligning
+      the other end as part of a halfmapping alignment
+
+2014-02-24  twu
+
+    * stage3hr.c: Implemented recursive, list-based approach to removing bad
+      superstretches in paired-end alignments, instead of O(n^3) algorithm,
+      which occasionally hanged in repetitive regions
+
+    * gmap.c: Added debugging statements for chimera
+
+    * stage2.c: Reducing NINTRON_PENALTY_MISMATCH from 32 to 1, because short
+      exons were being missed.  Also, eliminated querydist_credit and restored
+      querydist_penalty.
+
+    * chimera.c: In Chimera_local_join_p, checking genomic positions to make
+      sure they make sense
+
+2014-02-22  twu
+
+    * gsnap.c, pair.c, pair.h, samprint.c, samprint.h: Implemented option
+      --hide-soft-clips
+
+    * stage3.c: Returning value from merge_local_single
+
+    * substring.c, substring.h: Added function Substring_queryend_orig
+
+2014-02-20  twu
+
+    * gsnap.c: Using new interface to Stage2_setup
+
+    * chimera.c, diagpool.c, gmap.c, oligoindex.c, oligoindex_hr.c, pair.c, src,
+      stage2.c, stage2.h, stage3.c, uniqscan.c: erged revisions 128075 to 128117
+      from branches/2014-02-20-chimera-breakpoint to fix cases where breakpoint
+      was found outside of alignments
+
+    * dynprog.c: Handling lower-case nucleotides correctly in dynamic
+      programming. Handling alternate alleles equally in dynamic programming.
+
+    * bitpack64-read.c, indexdb.c: Fixed bugs in handling bitpackpages file for
+      huge genomes
+
+2014-02-18  twu
+
+    * pair.c, pair.h, stage3.c: Added numbers of matches, mismatches, indels and
+      unknowns to GFF3 output
+
+    * VERSION: Updated version
+
+    * ax_ext.m4: Fixed typo
+
+    * gmap_build.pl.in: Not printing warning message about -T unless it is used.
+       Deleting .sources file.
+
+    * chimera.c, chimera.h, gmap.c: Added donor_watsonp and acceptor_watsonp to
+      fields for GMAP
+
+    * stage3hr.c: Fixed bug in printing header twice for concordant
+      translocations in standard GSNAP output format
+
+    * get-genome.c: Added output for vareffect
+
+    * samprint.c: Added strands to XT field
+
+    * indexdb-write.c: When checking bitpack64, printing warning messages rather
+      than exiting.
+
+2014-02-15  twu
+
+    * sarray-read.c: Fixed a bug where r for an lcp-interval was being
+      decremented from 0 to -1U.
+
+2014-02-13  twu
+
+    * samprint.c: Added distant splice information to XT field, but without
+      strand information
+
+    * samprint.c: Added XC flag to indicate a circular alignment
+
+2014-02-12  twu
+
+    * stage1hr.c: Removed unnecessary variables that have been made global
+      within the file
+
+    * branchpoint.c, branchpoint.h, splicing-score.c: Added bpa-all option to
+      print all marginals
+
+    * iit-read.c: Handling cases in signed matching where sign == 0
+
+    * get-genome.c: Added option --aslabel
+
+    * sarray-read.c: Turning off debugging
+
+2014-02-02  twu
+
+    * get-genome.c: Added debugging statements
+
+2014-02-01  twu
+
+    * get-genome.c: Making typed queries when user provides a typestring
+
+2014-01-31  twu
+
+    * Makefile.dna.am, Makefile.gsnaptoo.am, README, branchpoint.c,
+      branchpoint.h, gsnap.c, indel.c, indel.h, sarray-read.c, splicing-score.c,
+      src, stage1hr.c, translation.c, trunk, uniqscan.c, util: Merged revisions
+      125127 to 125307 from branches/2014-01-30-lsm-branch-point to add bpa
+      analysis to splicing-score
+
+2014-01-29  twu
+
+    * splicing-score.c: Added -v flag to handle alternate alleles
+
+2014-01-22  twu
+
+    * fa_coords.pl.in: Fixed syntax error
+
+    * VERSION, closeparen-table.pl, config.site.rescomp.prd,
+      config.site.rescomp.tst, excess-leftward.pl, excess-rightward.pl,
+      index.html, openparen-table.pl, select1-table.pl, src: Updated version
+      number
+
+    * fa_coords.pl.in: Fixed syntax error
+
+2014-01-21  twu
+
+    * Makefile.dna.am, Makefile.gsnaptoo.am: Added SIMD_FLAGS and POPCNT_FLAGS
+      to all programs that include compress.c
+
+    * sarray-read.c: Added benchmarking procedure Sarray_traverse_children
+
+    * oligo.c: Added "U" to end of integer constants where necessary
+
+    * gsnap.c: Fixed typo in --help statement
+
+    * gmap.c: Fixed revision of extension length relative to end-segment length
+      for finding chimeras
+
+2014-01-15  twu
+
+    * gmap_build.pl.in: Fixed variable name
+
+2013-12-24  twu
+
+    * sarray-read.c: Added comments
+
+    * Makefile.gsnaptoo.am: Added files for bp-read and bp-write
+
+    * bp-read.c, bp-read.h, bp-write.c, bp-write.h, bp.h, gmapindex.c,
+      sarray-write.c, sarray-write.h, types.h: Merged revisions 119699 to 122378
+      from branches/2013-11-27-child-bitvector to add code for bitvector
+      representation of child array
+
+    * bitpack64-read.c: Removed extraneous addition for second half of block for
+      packsize of 32
+
+2013-12-20  twu
+
+    * gmap_build.pl.in, util: Merged revisions 119700 through 122189 from
+      branches/2013-11-27-child-bitvector/util to write genome indices in
+      destination directory
+
+    * fa_coords.pl.in, gmap_build.pl.in, gmap_process.pl.in: Writing FASTA
+      sources to a file
+
+    * Makefile.dna.am: Added gamma-speed-test and bitpack64-speed-test
+
+    * splicing-score.c: Checking if coordinates are valid
+
+    * gamma-speed-test.c: Printing nanoseconds per query
+
+    * bitpack64-speed-test.c: Using new interface to bitpack64 read commands
+
+2013-12-17  twu
+
+    * stage1hr.c, stage3hr.c, stage3hr.h: Requiring single or unpaired terminals
+      to be 2/3rds of the querylength
+
+    * sarray-read.c: Fixed memory leak
+
+    * dynprog.c: Fixed a bug where the wrong genomic position was provided for a
+      high-probability microexon.
+
+2013-12-16  twu
+
+    * stage1hr.c: Not passing in max_terminal_length to find_terminals
+
+    * sarray-read.c: Allowing initial lcp interval for the first nucleotide
+
+    * gmapindex.c: Changed name of child_uncompress procedure
+
+    * bitpack64-write.c: Handling the case for Bitpack64_write_direct where the
+      packsize is 0.
+
+    * sarray-write.c, sarray-write.h: Included code for bp version of child
+      information
+
+2013-12-13  twu
+
+    * Makefile.dna.am, Makefile.gsnaptoo.am, atoiindex.c, bitpack64-access.c,
+      bitpack64-access.h, bitpack64-read.c, bitpack64-read.h, bitpack64-write.c,
+      bitpack64-write.h, chimera.c, cmetindex.c, config.site.rescomp.tst,
+      dynprog.c, dynprog.h, genome.c, genome.h, gmap.c, gmapindex.c,
+      indexdb-write.c, indexdb-write.h, indexdb.c, indexdb.h, indexdb_hr.c,
+      indexdbdef.h, oligoindex_hr.c, oligoindex_hr.h, oligoindex_pmap.c,
+      oligoindex_pmap.h, pmapindex.c, sarray-read.c, sarray-write.c,
+      sarray-write.h, sequence.c, sequence.h, snpindex.c, splicetrie.c,
+      splicetrie.h, splicing-score.c, src, stage1hr.h, stage2.c, stage2.h,
+      stage3.c, stage3.h, trunk, util: Merged revisions 120874 through 121506
+      from branches/2013-12-10-pmap
+
+2013-12-05  twu
+
+    * substring.c: Fixed issue where circularpos was assigned in the region of
+      soft-clipping, leading to an improper CIGAR string
+
+    * pair.c: In GFF output, printing '.' instead of '?' for unknown strand
+
+2013-11-27  twu
+
+    * index.html: Added statement about portability of NAN
+
+    * iit_store.c: Handling NAN when it is not available
+
+    * VERSION, index.html: Updated version number
+
+    * popcount.c, popcount.h: Added popcount.c and popcount.h to store tables
+
+    * Makefile.gsnaptoo.am: Added popcount.c and popcount.h
+
+    * genome_sites.c: Added include of popcount.h.
+
+    * genome_hr.c: Moved tables to popcount.c, and added include of popcount.h.
+
+    * indexdb-write.c: Revised size of memory reserved for bitpackptrs.  Moved
+      tables to popcount.c, and added include of popcount.h.
+
+    * sarray-write.c: Revised size of memory reserved.  Added include of
+      popcount.h
+
+2013-11-23  twu
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst, index.html:
+      Updated version number
+
+    * stage3.c: In build_pairs_singles, build_pairs_introns, and
+      build_pairs_dualintrons, remove gaps at the beginning and any gap at the
+      end of the path.
+
+2013-11-22  twu
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst, index.html:
+      Updated version number
+
+    * outbuffer.c: Fixed bug in using --fails-as-input on single-end reads
+
+    * stage3.c: Replaced one call to insert_gapholders with List_reverse
+
+    * Makefile.dna.am: Added files needed for gmapindex and uniqscan
+
+    * stage3.c: Inserting gapholders before calling assign_intron_probs
+
+2013-11-21  twu
+
+    * iit-read.c: Fixed issue with IIT_fieldvalue returning the previous line
+      from what is desired
+
+    * stage3hr.c: Slight improvement in efficiency of randomization procedure
+
+2013-11-20  twu
+
+    * stage3hr.c: Using a different formula for generating a random integer
+
+    * stage3hr.c: Put an explicit type conversion to double before RAND_MAX
+
+    * stage3hr.c: Now picking primary alignment randomly among best alignments
+      with ties
+
+    * Makefile.dna.am, Makefile.gsnaptoo.am, VERSION, config.site.rescomp.prd,
+      config.site.rescomp.tst, dynprog.c, iit-read.c, iit-read.h, iit-write.c,
+      iit-write.h, iit_get.c, iit_store.c, iitdef.h, index.html, littleendian.h,
+      src, trunk, util: Merged revisions 115687 to 115891 from
+      branches/2013-11-19-iit-values
+
+    * archive.html: Moved version 2013-10-28 to archive
+
+    * README: Changed discussion to use gmap_build and not gmap_setup
+
+    * Makefile.am, configure.ac: Removing gmap_setup program
+
+    * gmap_build.pl.in: Added --contigs-are-mapped and --fasta-pipe options. 
+      Providing arguments to subroutines.
+
+    * archive.html: Added link to old database format using gamma compression
+
+    * index.html: Provided link to old genome database formats
+
+    * spanningelt.c, src: Fixed bug in code for spanning elt in regular-sized
+      genomes
+
+    * index.html: Updated for version 2013-10-28
+
+2013-11-19  twu
+
+    * README: Changed N1 and N2 abbreviations to NM
+
+    * configure.ac: Added ensembl_genes program
+
+    * Makefile.am, ensembl_genes.pl.in: Added ensembl_genes program
+
+    * gmap_build.pl.in: Clarified usage of --circular feature when --names
+      feature is also used
+
+    * bitpack64-read.c: Declared variable needed for non-SSE2 compilation
+
+    * stage2.c: Revised debugging statement
+
+    * gmap.c: Added debugging statement
+
+    * oligoindex_hr.c: Made debugging statements print counts for each oligomer
+
+    * oligoindex.c: Resetting query_evaluated_p in Oligoindex_untally, to avoid
+      interactions between queryseqs
+
+    * dynprog.c: Not adding dashes if gap is long.  Not performing simple genome
+      gap if finalp is true.
+
+    * Makefile.dna.am, Makefile.gsnaptoo.am: Added sarray-read.c and
+      sarray-read.h to gsnapl and uniqscanl
+
+    * uniqscan.c: Using new interface to Stage3hr_setup
+
+    * stage3hr.c: Removed unused code
+
+    * smooth.c, stage3.c: In traverse_dual_intron, if dual scores win over
+      single score, protecting that exon from being smoothed by size
+
+    * pairdef.h: Added comment about protectedp
+
+    * pair.c, pair.h: Added function Pair_protect_list
+
+    * outbuffer.c: Removed unused code
+
+2013-11-18  twu
+
+    * gmap.c: Reduced threshold for discarding gegion from 0.80*max_ncovered to
+      0.25.
+
+    * stage3.c: Reduced amount of peelback.  Made fixes to improve finding of
+      short exons, including reducing criteria for dual_canonical_p, and
+      eliminating smoothing by size.
+
+    * access.c, atoiindex.c, bitpack64-read.c, bitpack64-read.h,
+      bitpack64-speed-test.c, cmetindex.c, genome_hr.c, genome_hr.h, gmap.c,
+      gmapindex.c, gsnap.c, iit-read-univ.c, indexdb-write.c, indexdb-write.h,
+      indexdb.c, indexdb.h, indexdb_hr.c, indexdbdef.h, littleendian.c,
+      littleendian.h, snpindex.c, spanningelt.c, spanningelt.h, stage1hr.c,
+      stage2.c, types.h: Merged changes from branches/2013-10-16-huge-genomes to
+      allow for huge genomes, where offsets (or length of positions file)
+      exceeds 2^32 entries
+
+    * table.c, table.h: Changed type of keyfree procedure to take const void as
+      argument type
+
+    * stage3hr.c, stage3hr.h: Allowing --fails-as-input to work with new xs
+      files
+
+    * shortread.c, shortread.h: Allowing --fails-as-input to work with new xs
+      files
+
+    * samflags.h: Changed N1 and N2 abbreviations to be NM
+
+    * outbuffer.c, samprint.c, samprint.h: Allowing --fastq-as-input to work
+      with new xs files
+
+    * gmap_build.pl.in: Merged changes from branches/2013-10-16-huge-genomes to
+      count offsets and to allow for huge genomes
+
+2013-11-16  twu
+
+    * README: Added discussion of XS categories
+
+    * stage1hr.c: Setting ignore_found_score to be found_score, so the input
+      value will be correct for those procedures
+
+    * stage1.c: For short sequences (< 4 times the default matchsize),
+      performing scan_ends twice, once with a short matchsize and once with a
+      default matchsize, to improve sensitivity and specificity
+
+    * outbuffer.c, samflags.h, samprint.c, samprint.h, stage3hr.c, stage3hr.h:
+      Added xs (for quiet-if-excessive) output files and categories.  Added
+      file_setup procedures for SAM and standard output types for GSNAP.
+
+    * gmap.c: Removed --quiet-if-excessive option from GMAP, because not working
+      properly
+
+2013-11-15  twu
+
+    * gmap_build.pl.in: Added comment
+
+    * indexdb-write.c: Not performing check of bitpack compression when there
+      are no k-mers
+
+    * sarray-write.c: Include code for reading sarray using fread instead of
+      mmap
+
+    * Makefile.gsnaptoo.am, gmapindex.c, sarray-write.c, sarray-write.h: Using
+      less memory for creating LCP array and saindex.  Using permuted LCP
+      algorithm.  Memory mapping suffix array file and compressed LCP files.
+
+2013-11-14  twu
+
+    * genome_hr.c: Made some fixes to Genome_consecutive_matches_pair
+
+    * genome_hr.c, genome_hr.h: Implemented Genome_consecutive_matches_pair
+
+2013-10-29  twu
+
+    * indexdb.c: Using a separate sanity check on positions filesize when
+      expanding bitpack offsets
+
+    * stage1.c: Reducing intial matchsize for short reads to be less than half
+      the read length
+
+    * stage3hr.c: Fixed bug where insert length was being computed between GMAP
+      and a TRANSLOC_SPLICE using pair_insert_length on a NULL substring.
+
+2013-10-25  twu
+
+    * samheader.c: Changed SO:unknown to SO:unsorted
+
+    * gregion.c: Added comment
+
+2013-10-24  twu
+
+    * gregion.c: In Gregion_extend, when chrend goes past chrhigh, setting it to
+      chrlength - 1 and not chrlength
+
+    * stage3.c: In peel_leftward and peel_rightward, removing initial pairs that
+      are gaps or indels, so we don't leave a gap or indel on the top.
+
+    * genome_sites.c: Fixed bug in large genomes where -1U was being compared to
+      -1UL
+
+2013-10-23  twu
+
+    * samprint.c: For non-concordant pairs, setting clipdir to 0 when calling
+      SAM_compute_chrpos.
+
+    * stage3hr.c: Now calling pair_insert_length_unpaired for unpaired
+      alignments involving GMAP, which helps to eliminate duplicate alignments.
+
+    * README, acinclude.m4, configure.ac, sse2_shift_defect.m4: Added a test to
+      see if compiler can handle SSE2 shift commands properly, and setting
+      config.h variable automatically
+
+2013-10-22  twu
+
+    * VERSION: Updated version number
+
+    * dynprog.c: Fixed bug in checking for either rlength or glength to be too
+      long
+
+2013-10-21  twu
+
+    * stage3.c: Added hooks for HMM step, but still not using it
+
+    * stage3.h: Allowing stage3debug value of middle
+
+    * gmap.c: Allowing stage3debug value of middle
+
+    * oligoindex.c: Adjusting lookback for querypos with no hits.  Making
+      lookback value equal for all oligoindices.
+
+2013-10-18  twu
+
+    * gmap.c, stage3.c, stage3.h: Made stage3debug work
+
+2013-10-15  twu
+
+    * stage1hr.c: Restored previous criteria for distant splicing
+
+    * stage1hr.c: Loosened criteria for distant splice probabilities.  Checking
+      for gmap_allowance on single-end GMAP and terminal improvement GMAP
+      alignments.
+
+    * samprint.c: Fixed bug in printing deletion resulting in consecutive M
+      tokens
+
+2013-10-11  twu
+
+    * indexdb.c: Fixed memory leak when snp_root is given and desired file is
+      not found
+
+    * boyer-moore.c: Checking if result of Genome_get_segment_blocks_left is
+      NULL
+
+    * dynprog.c, genome.c: In Genome_get_segment_blocks_right and
+      Genome_get_segment_blocks_left, returning NULL if the entire segment is
+      outside the chromosomal bounds
+
+    * psl_splices.pl.in: Replaced hard-coded path
+
+2013-10-10  twu
+
+    * stage3.c: Fixed typo in variable name
+
+    * stage2.c: Adding query_offset to pairs in non-standard (cmet or atoi)
+      modes
+
+    * VERSION, index.html: Updated version
+
+    * README: Added section on compiler issues.  Added section numbers.  Revised
+      some sections for latest version.
+
+    * configure.ac: Added option --with-defective-sse2-compiler
+
+    * diag.c: Added debugging statements
+
+    * compress.c: Added code for defective SSE2 compilers
+
+    * stage3hr.c: In cases of overreach when concordant is expected, returning
+      NULL
+
+    * gmap_build.pl.in: Added --no-sarray option to gmap_build
+
+    * stage3.c: Making sure not to leave an INDEL_COMP or SHORTGAP_COMP on the
+      path/pairs after peelback.  Treating SHORTGAP_COMP the same as INDEL_COMP
+      throughout the code.
+
+2013-10-09  twu
+
+    * VERSION: Updated version number
+
+    * stage3hr.c: Fixed insert length calculation for GMAP/substring to go from
+      start5 to end3.  Fixed overreach criteria to consider only substrings that
+      entirely pass the end of the other hit.
+
+    * substring.c, substring.h: Added procedures for segment-based trimmed
+      overlap
+
+    * stage3hr.c: Added a general segment-based algorithm for finding trimmed
+      insert length.  Skipping cases with dual overreach.
+
+2013-10-08  twu
+
+    * stage3hr.c: Fixed bug in computing start and end positions in computing
+      non-GMAP trimmed insert length.  Added code for handling overreach, by
+      changing splices to halfsplices.
+
+    * stage3hr.c: Fixed bug in computing overlap between non-GMAP hits
+
+2013-10-07  twu
+
+    * stage3hr.c, substring.c, substring.h: Checking all possible substring
+      combinations in computing trimmed insertlength for non-GMAP hits
+
+2013-10-05  twu
+
+    * stage1hr.c: Fixed the computation of goal for finding the next chromosome
+      bounds
+
+    * sarray-read.c: Handling the case where nmisses_allowed < 0.  When saindex
+      yields no result, setting low and high to be the beginning and end of the
+      suffix array, rather than iterating through saindex for a hit.
+
+2013-10-04  twu
+
+    * gmap.c, stage3.c, stage3.h: In Stage3_merge_local, recovering gracefully
+      if clipping leads to a NULL list for either Stage3_T object
+
+    * substring.c, substring.h: Revised calculation of substring trimmed
+      insertlength to account for trimming of 3' end
+
+    * stage3hr.c: Revised calculation of GMAP-GMAP trimmed insertlength to
+      account for trimming
+
+    * samprint.c: Revised criteria for printing D token in deletion.  Made
+      compute_cigar follow the logic of print_cigar.
+
+    * samprint.c: Not computing pair overlaps when a pair involves a circular
+      alignment
+
+    * stage3hr.c: Improvements to computing insertlength for calculating pair
+      overlap. Using querylength instead of querylength_adj.  Searching through
+      GMAP pairarray to find intersecting genomic position.  Added checks for
+      (left + genomiclength) > chrhigh.
+
+2013-10-02  twu
+
+    * stage3.c: Reduced some parameters for looping in stage 3.  Not looping for
+      GSNAP.
+
+    * bitpack64-access.c: Added an access procedure for packsize of zero
+
+    * bitpack64-read.c: Added a read procedure for packsize of zero
+
+    * sarray-write.c: Changed type of len to size_t
+
+    * indexdb-write.c: Handling the case when all offset differences are zero,
+      resulting in a packsize of zero
+
+    * bitpack64-write.c: Allow writing when packsize is zero
+
+    * stage3.c: Using new interface to Pair_print_sam
+
+    * config.site.rescomp.prd, config.site.rescomp.tst: Updated version number
+
+    * archive.html, index.html: Made changes for new version, including the one
+      with suffix arrays
+
+    * outbuffer.c, pair.c, pair.h, samprint.c, samprint.h, stage3hr.c,
+      substring.c, substring.h: Made numerous changes to fix --clip-overlap,
+      involving trimming and GMAP alignments
+
+    * sarray-read.c: Fixed memory leak
+
+2013-10-01  twu
+
+    * stage3.c: Turned off HMM in stage 3, because of possible core dumps
+
+    * VERSION, config.site.rescomp.prd: Updated version number
+
+    * stage3.c: Allowing iteration of outer loop based on dual_break_p. 
+      Restored filtering by HMM to remove bad sections.  Removing noncanonical
+      end exons only if both canonical and noncanonical introns exist.
+
+    * index.html: Updated for latest version
+
+    * fa_coords.pl.in, gmap_build.pl.in: Allowing user to specify circular
+      chromosomes using a file instead of the command line.
+
+    * bitpack64-read.c: Fixed Bitpack64_offsetptr_only to work on poly-T.
+
+    * bitpack64-read.c, dynprog.c, indexdb-write.c, sarray-write.c, src, trunk,
+      util: Merged revisions from branches/2013-09-27-bidir-bitpack64 to
+      implement bidirectional bitpack64 format
+
+2013-09-30  twu
+
+    * stage3hr.c: Fixed Stage3pair_overlap to handle trimmed ends
+
+    * access.c: Disabling memory allocation on Macintoshes when single fread
+      fails
+
+    * stage3hr.c: Added debugging statements
+
+    * stage1hr.c: Added debugging statements
+
+    * resulthr.c: Handing a missing case in Pairtype_string
+
+    * gsnap.c: No longer setting terminal_output_minlength to be MAX_READLENGTH
+
+    * genome_hr.c: For determining trim mismatches, setting query_unk_mismatch_p
+      to be false
+
+    * access.c: Eliminated check for i >= 0, which is always true for size_t
+
+    * dynprog.c, src, trunk, util: Merged revisions 109420 through 109556 from
+      releases/internal-2013-09-27
+
+    * stage1hr.c, stage3hr.c, stage3hr.h: Merged revisions 109420 through 109556
+      from releases/internal-2013-09-27 to check for concordance after running
+      GMAP improvement on paired results
+
+    * madvise-flags.m4: Added check for MADV_SEQUENTIAL
+
+    * dynprog.c: Making NEG_INFINITY_16 and NEG_INFINITY_8 visible outside SIMD
+      code
+
+    * gmap.c: No longer bounding chimera_margin by CHIMERA_SLOP
+
+    * stage3.c: Avoiding indels at chimeric join by cleaning ends, extending
+      with no gaps, and then clipping at breakpoint
+
+    * substring.c: Fixed assertions relative to chrhigh
+
+    * samprint.c: Fixed bug in --clip-overlap SAM output where deletion occurs
+      at the clip site
+
+2013-09-27  twu
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst: Updated version
+      number
+
+    * access.c: Fixed workaround for Macintosh fread bug to handle large files
+
+    * uniqscan.c: Providing --gmap-allowance
+
+    * gsnap.c: Providing --gmap-allowance
+
+    * samprint.c: Fixing problem with mate flags when the mate is a
+      translocation
+
+    * sarray-read.h: Passing max_end_deletions into Sarray_setup
+
+    * sarray-read.c: If read from beginning does not go halfway across read,
+      trying a search from the middle of the read to see if it finds
+      substitutions
+
+    * substring.c: No longer allowing donor or acceptor substrings in circular
+      chromosomes, thereby preventing translocations to those chromosomes
+
+    * stage1hr.c, stage3hr.c, stage3hr.h: Using
+      Stage3end_better_equiv_unpaired_p as a way to determine whether to do
+      spanning set or complete set algorithms after suffix array method.
+
+    * stage1hr.h: Added gmap_allowance to filter bad GMAP alignments
+
+    * stage1hr.c: Added gmap_allowance to filter bad GMAP alignments.  No longer
+      allowing GMAP splicing on circular chromosomes.  No GMAP improvement on
+      sarray hits.  Doing spanning set algorithm after suffix array algorithm if
+      nconcordant == 0.
+
+2013-09-26  twu
+
+    * sarray-read.c: Applying max_end_deletions.  In collect_elt_matches,
+      looking at multiple hits between goal and high.
+
+2013-09-25  twu
+
+    * substring.c: Disallowing donor and acceptor substrings on the duplicate
+      length of a circular chromosome
+
+    * dynprog.c, src, trunk, util: Reintegrated changes from
+      releases/internal-2013-09-01
+
+    * stage3.c, stage3.h: Merged changes from releases/internal-2013-09-01 to
+      clean ends of local merges
+
+    * sarray-read.c, sarray-read.h: Merged changes from
+      releases/internal-2013-09-01 to fix problem with insertions that are too
+      long
+
+    * pairpool.c: Merged changes from releases/internal-2013-09-01 to add
+      debugging statements
+
+    * pair.c: Merged changes from releases/internal-2013-09-01 to fix
+      Pair_start_bound and Pair_end_bound
+
+    * gsnap.c: Merged changes from releases/internal-2013-09-01 to use new
+      interfaces to Sarray_setup
+
+    * gmap.c: Merged changes from releases/internal-2013-09-01 to use new
+      interfaces to stage 3 chimera commands
+
+2013-09-24  twu
+
+    * VERSION: Updated version number
+
+    * bitpack64-speed-test.c, gamma-speed-test.c: Finding both start and end of
+      position blocks
+
+    * sarray-read.c, sarray-read.h: Make some fields available for benchmarking
+      purposes
+
+2013-09-20  twu
+
+    * pairpool.c: In Pairpool_clean_join, making sure that no gaps are left at
+      the medial ends
+
+    * gmap.c, stage3.c, stage3.h: In Stage3_merge_local_splice, when a new
+      intron is required, performing a full call to path_compute_dir and
+      path_compute_final
+
+2013-09-19  twu
+
+    * gmap.c: Fixed behavior of -n 1 in GMAP, so it does not print chimeric
+      alignments
+
+    * substring.c: Added new assertions to make sure alignstart and alignend do
+      not exceed chrhigh
+
+    * sarray-read.c: For indels and splices, using subtract_bounded and
+      add_bounded to make sure the other piece is on the same chromosome
+
+2013-09-18  twu
+
+    * stage3hr.c: Stage3pair_overlap inverts return value for minus alignments
+
+    * pair.c, stage3hr.c: Reworking of computation for pair overlap
+
+    * bitpack64-speed-test.c: Added code for uncompressing offsets
+
+    * stage3hr.c: Computing pair overlap based on difference between totallength
+      and insertlength, not alignment coordinates
+
+2013-09-17  twu
+
+    * indexdb.c: Fixed user message about expanding bitpackcomp
+
+    * stage1hr.c: Fixed memory leak when newpair involving GMAP is not kept
+
+    * stage3.c: When queryjump > nullgap and genomejump < 16 (not enough
+      material for stage 2), performing cDNA gap rather than dual break.  In
+      path_compute_final, resolving dual breaks as single gaps.
+
+    * stage3hr.c: Fixed memory leak when resolving inner splices
+
+    * stage3hr.c: Fixed memory leak
+
+    * shortread.c: Fixed invalid read in chopping adapters when read lengths are
+      unequal
+
+    * stage3.c: Removed uninitialized variable
+
+2013-09-16  twu
+
+    * bitpack64-speed-test.c: Initial import into SVN
+
+    * Makefile.dna.am: Made instructions match those for Makefile.gsnaptoo.am. 
+      Added gamma-speed-test and bitpack64-speed-test.
+
+    * gamma-speed-test.c: Simplified code to focus only on decoding
+
+    * splicing-score.c: Fixed code for universal chromosome IIT
+
+    * indexdb.c, indexdb.h: Exposing different types of filename retrieval
+
+    * gregion.c: Considering fraction of overlap
+
+    * samprint.c: Fixed CIGAR strings for splicing on minus strand with
+      clip-overlap
+
+2013-09-13  twu
+
+    * gmap.c: Increased default value for shortsplicedist from 200,000 to
+      2,000,000. For chimeric alignments that overlap, fixed bug where
+      maxpeelback was negative, and now computing based on midpoint of the ends.
+
+    * stage3.h: In Stage3_mergeable, using shortsplicedist
+
+    * stage3.c: No longer calling Smooth_pairs_by_netgap.  In Stage3_mergeable,
+      using shortsplicedist.  For extend5 and extend3, handling case where path
+      or pairs is NULL after peelback.
+
+2013-09-12  twu
+
+    * index.html: Updated for version 2013-09-11
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst: Updated version
+      numbers
+
+    * stage1.c: Added debugging statement
+
+    * gregion.c: For determining overlaps, using chrstart and chrend instead of
+      extentstart and extentend
 
-    * public-2013-06-27: Merged changes from trunk
+    * pairpool.c, pairpool.h, stage3.c: In merging for local splice, added
+      procedure Pairpool_clean_join to peel back both ends to remove negative
+      genomejumps
 
-    * setup1.test.in, tests: Merged changes from trunk
+2013-09-11  twu
 
-    * VERSION: Updated version number
+    * stage3hr.c: Fixed memory leak on new pairs.  Handling the case where pair
+      overlap is negative.
 
-    * iit-write-univ.c: Fixed message
+    * stage1hr.c: Fixed memory leak on terminal alignments that fail
+      terminal_output_minlength test
+
+    * shortread.c: Not checking for Illumina endings on shortreads that are
+      skipped
+
+    * dynprog.c: Initializing value of introntype
+
+    * pair.c: Fixed memory leak under --clip-overlap feature
+
+    * stage3.c: Requiring 25 bp on both sides of a chimeric alignment
+
+2013-09-10  twu
+
+    * sarray-read.c: Fixed bug in Elt_fill_positions_all where position could be
+      negative
+
+2013-09-09  twu
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst: Updated version
+      number
+
+    * stage3.c: Restored finding of microexons when sequence quality is high
+
+    * pair.c: Making value of trim_5p dependent on trim_left
+
+    * iit_get.c: Fixed behavior of iit_get to work when reading queries from
+      stdin
+
+    * stage3.c: In build_pairs_introns, when finalp is true, solving cDNA gaps
+      as single gaps
+
+    * stage3.c: When finalp is true, not relying upon stored solutions for any
+      traversal functions.  Performing iterative calls to trimming non-canonical
+      introns at ends.
+
+    * stage3.c: In traverse_single_gap, not relying upon previous result if
+      finalp is true
+
+    * stage2.c: Checking to make sure calls to genome canonicalp procedures do
+      not have negative coordinates
+
+    * gmap.c: Initializing genome_sites for pairalign and usersegment queries
+
+    * samprint.c: Allowing printing of results where chrpos == 0
+
+2013-09-06  twu
+
+    * index.html: Updated for latest version
+
+    * stage1hr.c: Fixed bug in add_bounded where coordinates extended past
+      chrhigh
+
+    * dynprog.c: Fixed problem where prob_trunc was not being initialized
+
+    * fa_coords.pl.in, gmap_build.pl.in: Added -n flag for substituting
+      chromosome names
+
+2013-09-05  twu
+
+    * gmap.c, gsnap.c: Allowed compilation when pthreads are disabled
+
+2013-09-04  twu
+
+    * stage1hr.c: Fixed a fatal bug in find_middle_indels when floors is NULL,
+      from all oligos being omitted
+
+    * README: Added discussion about output types
+
+    * stage3.c: Put an absolute limit on peelback.  In build_pairs_introns, when
+      queryjump exceeds nullgap, traversing a dual break.
+
+    * pair.c: Eliminated possible infinite loop in
+      Pair_guess_cdna_direction_array
+
+    * gsnap.c: Fixed error message
+
+2013-09-03  twu
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst: Updated version
+      number
+
+    * outbuffer.c, stage3.c, stage3.h: Providing XO abbrev information for SAM
+      output from GMAP
+
+    * outbuffer.c, pair.c, pair.h, samflags.h, samprint.c, samprint.h: Added XO
+      flag to SAM output
+
+2013-08-31  twu
+
+    * gsnap.c, stage3hr.c, stage3hr.h, uniqscan.c: Fixed genomicstart for
+      distant samechr splices when --merge-distant-samechr is specified
+
+    * gregion.c: Fixed bug where overlaps were found in error because we used
+      chromosomal coordinates instead of univeral coordinates
+
+    * dynprog.c: Made single and paired indel penalties the same
+
+    * README, configure.ac: Modified to include gvf_iit program
+
+    * Makefile.am, gvf_iit.pl.in: Added gvf_iit program
+
+2013-08-30  twu
+
+    * gsnap.c, stage1hr.c, stage1hr.h, stage3hr.c, stage3hr.h, uniqscan.c:
+      Filtering terminals with minlength less than value of
+      --terminal-output-minlength
+
+    * stage3hr.c, stage3hr.h: Creating Stage3pair_T for terminals only if the
+      terminal lengths exceed terminal_output_minlength
+
+2013-08-29  twu
+
+    * dynprog.c, dynprog.h, gmap.c, gsnap.c, pair.c, pair.h, src, stage1hr.c,
+      stage2.c, stage3.c, stage3.h, stage3hr.c, stage3hr.h, trunk, util: Did
+      reintegration merge (revisions 106186 to 106267) of
+      branches/2013-08-20-stage23-work
+
+    * src, trunk, util: Commit property changes
+
+2013-08-28  twu
+
+    * Makefile.gsnaptoo.am, config.site.rescomp.tst, diag.c, diag.h,
+      doublelist.c, dynprog.c, dynprog.h, genome_sites.c, genome_sites.h,
+      gmap.c, gsnap.c, pairpool.c, pairpool.h, smooth.c, smooth.h, src,
+      stage1.c, stage1hr.c, stage2.c, stage2.h, stage3.c, stage3.h, stage3hr.c,
+      trunk, uniqscan.c, util: Merged revisions 105272 to 106186 from
+      branches/2013-08-20-stage23-work to improve stage 2 and stage 3 procedures
+
+2013-08-20  twu
+
+    * dynprog.c, gmap.c, scores.h, src, trunk, util: Reintegrated changes from
+      branches/2013-08-20-stage23-work to fix alignment rankings and evaluation
+      of chimeric alignment
+
+    * index.html: Updated for latest version
+
+    * gmap_build.pl.in: Handling case where -d argument contains a directory
+
+    * stage3.c: Fixed infinite loop in peelback.  Made some changes in stage 3
+      procedures.
+
+    * smooth.c, smooth.h: Restoring procedures for smoothing by net gap
+
+    * pairpool.c: If all pairs are outside bounds, returning NULL
+
+    * dynprog.c: Reduced indel penalties for low-quality alignments
+
+2013-08-19  twu
+
+    * outbuffer.c: Adding q() line for R output
+
+2013-08-14  twu
+
+    * stage3hr.c: Restoring filter where terminal alignments are removed if
+      mismatches in trimmed region are too high.
+
+    * stage1hr.c: In computing genomic bounds for GMAP alignment, truncating at
+      chromosomal boundaries
+
+    * chimera.c, chimera.h, gmap.c: For local chimeric joins, requiring that
+      pieces are locally joinable in Chimera_bestpath
+
+2013-08-08  twu
+
+    * dynprog.c: Added cache flush command needed for opencc compiler using -O3
+      optimization on AMD computers
+
+2013-08-06  twu
+
+    * genome_sites.c: Added lookup tables needed when popcnt is not available
+
+    * genome_hr.c: Made debugging statements work when popcnt is not available
+
+2013-08-02  twu
+
+    * acinclude.m4, configure.ac: Removed popcnt.m4 and relying upon ACX_BUILTIN
+
+    * Makefile.gsnaptoo.am, outbuffer.c, samheader.c, samheader.h, samprint.c,
+      samprint.h: Moved SAM header code to new samheader.c file
+
+    * gmap.c, gsnap.c, outbuffer.c, outbuffer.h, samprint.c, samprint.h: Added
+      @HD and @PG header lines to SAM output
+
+2013-07-25  twu
+
+    * Makefile.gsnaptoo.am, NOTICE, config.site.rescomp.prd, dynprog.c,
+      fastlog.h, mapq.c, mapq.h, oligoindex.c, oligoindex_hr.c, pair.c, pair.h,
+      pairpool.c, smooth.c, smooth.h, src, stage1hr.c, stage2.c, stage3.c,
+      stage3hr.c, stage3hr.h, substring.c, substring.h, trunk, univinterval.c,
+      univinterval.h, util: Reintegrated revisions from
+      branches/2013-07-24-fastlog to use a fast approximate log function, to
+      change calloc to malloc in several places, to eliminate a smoothing step,
+      and to improve the oligoindex SIMD procedures slightly
+
+2013-07-24  twu
+
+    * Makefile.gsnaptoo.am, compress.c, compress.h, dynprog.c, dynprog.h,
+      genome_hr.c, gmap.c, pair.c, pairpool.c, pairpool.h, src, stage1hr.c,
+      stage2.c, stage3.c, stage3.h, stage3hr.c, stage3hr.h, table.c, table.h,
+      trunk, univinterval.c, univinterval.h, util: Merged revisions 102329 to
+      102725 from branches/2012-07-22-stage3-dir to restructure stage 3
+      algorithm, including reduction of insert_gapholders and early
+      determination of cdna direction; to add gmap_history to memoize GMAP
+      alignment results; and SIMD instructions for Compress_shift
+
+2013-07-23  twu
+
+    * stage3.c: Changing Pairpool_pop to List_transfer_one in some procedures
+
+    * config.site.rescomp.prd, config.site.rescomp.tst, dynprog.c, dynprog.h,
+      src, stage3.c, trunk, util: Reintegrated revisions from
+      branches/2013-07-22-stage3-dir to determine cdna direction early in stage
+      3
+
+    * VERSION, index.html: Updated version number
+
+    * dynprog.c: Added memory fences at beginning of each SIMD loop
+
+2013-07-22  twu
+
+    * stage2.c: Returned to safer code that keeps ranges 3 and 4 separate
+
+    * dynprog.c: Added needed variables
+
+    * dynprog.c: Making a single call to find splice sites from IIT file,
+      instead of individual calls.  Removed old code.
+
+    * iit-read.c, iit-read.h: Added functions IIT_get_lows_signed and
+      IIT_get_highs_signed
+
+    * dynprog.c: In bridge_intron_gap procedures, using genomic sequence instead
+      of get_genomic_nt.  Also, implemented code for a single call to
+      splicesites IIT, instead of one call for each position.
+
+2013-07-20  twu
+
+    * gmap_setup.pl.in: Added backslash escape that was missing
 
     * gsnap.c: Fixed help string
 
+    * sarray-read.c: Handling N's in query sequence
+
+    * types.h: Added comment
+
+    * iit-write-univ.c: Fixed message
+
     * types.h: Prefer to use unsigned long long for UINT8
 
 2013-07-19  twu
 
+    * stage3hr.c: Changed debugging statement
+
     * stage1hr.c: Changed single-end statement for terminals to look like
       paired-end statement
 
     * gsnap.c: Turned default for --terminal-threshold back to 2 for DNA-Seq
       alignments, since terminal alignments are needed for some GMAP alignments
 
-    * iit-write.c: Including types.h just to make sure we have it
+    * bitpack64-write.c: Using _mm_store_si128 instead of type casting and a
+      memory fence
+
+    * compress-write.h: Added comment
 
     * iit-write-univ.c: Added message about coordinate sizes
 
-    * stage1hr.c: Keeping lowprob splices unless dominated by other splices
+    * iit-write.c: Including types.h just to make sure we have it
+
+    * stage1hr.c: Keeping lowprob splices, unless dominated by other splices
+
+    * gsnap.c, uniqscan.c: Restored --pairexpect and --pairdev flags.  Giving
+      information to Stage3hr_setup.
+
+    * stage3hr.h: Using insertlength, outerlength, and splice probabilities to
+      resolve difficult cases
 
-    * gsnap.c, stage3hr.c, stage3hr.h, uniqscan.c: Merged changes from trunk to
-      improve usage of insertlength, outerlength, and splice probabilities to
+    * stage3hr.c: Using insertlength, outerlength, and splice probabilities to
       resolve difficult cases
 
     * dynprog.c: Added memory fences between SIMD and non-SIMD code
 
+    * bitpack64-write.c: Added comment
+
+    * bitpack64-write.c: Added _mm_lfence to take care of incorrect SIMD
+      behavior.
+
+2013-07-18  twu
+
+    * sarray-write.c: Fixed procedure for checking bitpack compression
+
+    * indexdb.c: Fixed procedure for expanding bitpack
+
+    * indexdb-write.c: Added procedure for checking bitpack compression
+
+    * indexdb.c: Added extra information to message when expanding offsets
+
+    * bitpack64-access.c: Added extra information to error message
+
+    * bitpack64-read.c: Fixed Bitpack64_block_offsets function
+
 2013-07-17  twu
 
-    * stage1.c: Merged changes from trunk to restore decision of which side to
-      advance based on number of hits
+    * config.site.rescomp.tst, dynprog.c, src, trunk, util: Reintegrated
+      revisions from branches/2013-07-16-faster-stage2
+
+    * stage2.c: Reintegrated revisions from branches/2013-07-16-faster-stage2 to
+      speed up stage2 procedure
+
+    * dynprog.c, goby.c, goby.h, inbuffer.c, shortread.c, shortread.h, src,
+      trunk, uniqscan.c, util: Reintegrated changes from
+      branches/2013-07-17-reduce-memset to not allocate memory for short reads
+      that are skipped
+
+    * VERSION, index.html: Updated version number
+
+    * dynprog.c: Preventing read of uninitialized variable at matrix position
+      0,0 during traceback
+
+    * dynprog.c: Not initializing directions_Egap or directions_nogap
+
+    * stage1.c: In find_first_pair, restored decision of which end to advance
+      based on number of hits
 
 2013-07-16  twu
 
     * gregion.c: Turned off debugging
 
-    * gff3_genes.pl.in, gff3_introns.pl.in, gff3_splicesites.pl.in: Merged
-      changes from trunk
+    * stage1.c: Allowing arbitrarily long scanning of ends to find first pair
+
+    * sequence.c: Modified definition of Sequence_trimlength
+
+    * gregion.c: Handling case where extentstart goes past genomic position 0
 
-    * oligoindex_hr.c, stage3.c: Merged changes from trunk to capture last
-      oligomers of sequence and chimeras exactly
+    * gmap.c: Handling case where genomebits is absent
 
-    * gregion.c: Merged changes from trunk to handle case where extentstart goes
-      past genomic position 0
+    * genome.c: Handling case of negative genomic coordinates
 
-    * sequence.c: Merged changes from trunk to modify definition of
-      Sequence_trimlength
+    * diag.c, oligoindex_hr.c, stage3.c: Fixed ends to capture last oligomers of
+      sequence and chimeras exactly
 
-    * stage1.c: Merged changes from trunk to allow arbitrarily long scanning of
-      ends to find first pair
+    * stage2.c: Added comment
+
+    * bitpack64-access.c: Fixed size of accessor table
+
+    * dynprog.c: For non-SSE4.1 8-bit SIMD, using a separate pairscore array
+      incremented by 128.
+
+    * dynprog.c: Turned off debugging
 
 2013-07-15  twu
 
-    * VERSION: Updated version number
+    * dynprog.c, src, trunk, util: Reintegrated revisions from
+      branches/2013-07-15-sse2-simd8 allowing SSE computers to run 8-bit SIMD
+      dynamic programming procedures
+
+    * VERSION, config.site.rescomp.prd, index.html: Updated version number
 
-    * gff3_genes.pl.in, gff3_introns.pl.in, gff3_splicesites.pl.in: Merged
-      changes from trunk to handle GFF3 files without gene lines
+    * dynprog.c: Before calling Boyer-Moore procedure, requiring that textlen >=
+      querylen
 
-    * iit_store.c: Merged change from trunk to make iit_store work on versions >
-      1
+    * dynprog.c: Not calling Boyer-Moore procedure if textright <= textleft
+
+    * dynprog.c: Fixed variable name for SSE2 code
+
+    * gsnap.c: Fixed --help comment for --mode flag
+
+    * gmap.c: Including a header file for compress-write.h
+
+    * compress-write.c: Fixed bug in writing genomebits for user-provided
+      segment in GMAP
+
+    * genomicpos.c, genomicpos.h: Fixed formatting routine to work on large
+      files
+
+    * Makefile.am, Makefile.gsnaptoo.am, bitpack64-access.c, bitpack64-access.h,
+      bitpack64-write.c, bitpack64-write.h, gmap_build.pl.in, gmap_setup.pl.in,
+      gmapindex.c, gsnap.c, indexdb-write.c, sarray-read.c, sarray-write.c,
+      sarray-write.h, src, trunk, util: Reintegrated revisions from
+      branches/2013-07-11-compress-lcp to compress lcp file
+
+    * VERSION, config.site.rescomp.prd: Updated version number
+
+    * stage1hr.c: Disallowing diagonals < querylength, which lead to left < 0,
+      again
+
+    * boyer-moore.c, dynprog.c: Using new Genome_get_segment_blocks_left and
+      Genome_get_segment_blocks_right procedures
+
+    * genome.c, genome.h: Added separate Genome_get_segment_blocks_left and
+      Genome_get_segment_blocks_right
+
+    * stage1hr.c: In batch_init and identify_all_segments, allowing diagonal to
+      be less than querylength, needed for insertions in reads at the beginning
+      of the genome.
+
+    * genome.c: Fixed memory leak when genomebits file is not available
+
+    * Makefile.am, NOTICE: Added NOTICE file for distribution
+
+    * Makefile.gsnaptoo.am: Using new saca-k.c and saca-k.h files
+
+    * compress-write.c: Fixed bug where coordinates above 2^31 were being
+      treated as negative values
+
+    * genome.c: Fixed bug where coordinates above 2^31 were being treated as
+      negative values
+
+    * iit_store.c: For IITs with divs (versions above 1), converting from
+      Univinterval_T objects to Interval_T objects
+
+    * saca-k.c, saca-k.h, sarray-write.c: Moved suffix array construction
+      procedures to a separate file.  Using latest version of SACA-K code.
+
+    * gmap_build.pl.in: Added command for making suffix array
+
+2013-07-12  twu
+
+    * Makefile.gsnaptoo.am, VERSION, compress-write.c, compress-write.h,
+      compress.c, compress.h, compress128.c, compress128.h,
+      config.site.rescomp.prd, config.site.rescomp.tst, genome-write.c,
+      genome-write.h, genome.c, genome.h, genome128-write.c, genome128-write.h,
+      genome128.c, genome128.h, genome128_hr.c, genome128_hr.h, genome_hr.c,
+      genome_hr.h, genome_sites.c, genome_sites.h, get-genome.c, gmap.c,
+      gmap_build.pl.in, gmapindex.c, gsnap.c, indexdb-write.c, maxent128_hr.c,
+      maxent128_hr.h, snpindex.c, splice.c, splicetrie.c, splicetrie_build.c,
+      src, stage1hr.c, stage2.c, trunk, uniqscan.c, util: Merged changes from
+      branches/2013-07-05-new-genomecomp to implement 32-bit unshuffled
+      representation of genome
+
+    * gmap_setup.pl.in: Added offsets, bitpackptrs, and bitpackcomp suffixes
+
+    * gff3_splicesites.pl.in: Removed debugging statement
+
+    * boyer-moore.c, dynprog.c: Using Genome_get_segment_blocks to avoid making
+      repeated calls to Genome_get_char_blocks
+
+    * genome.c, genome.h: Implemented Genome_get_segment_blocks
+
+    * sarray-read.c: Fixed bug in known splicing, where index j was not being
+      incremented
+
+    * samprint.c: Fixed hardclipping ends for circular alignments
+
+2013-07-10  twu
+
+    * stage1hr.c: Fixed debugging statement
+
+2013-07-09  twu
+
+    * gff3_introns.pl.in: Fixed warning statements
+
+2013-07-06  twu
+
+    * setup1.test.in: Fixed test to use gmap_build, rather than gmap_setup
+
+2013-07-05  twu
+
+    * oligoindex_hr.c: Handling special cases now within general case.  Not
+      allowing count/store rev SIMD procedures to have ptr go below 0.  Fixed
+      debugging comparison of std and SIMD results.
+
+    * gmap.c, stage2.c: Using new interfaces to Oligoindex_untally and
+      Oligoindex_clear_inquery
+
+    * VERSION, config.site.rescomp.prd, config.site.rescomp.tst: Updated version
+      number
+
+    * sarray-read.c, sarray-write.c: Changed lcp file suffix to be .salcp. 
+      Checking to see if suffix array files are present, and returning NULL
+      gracefully if not.
+
+    * oligoindex.c, oligoindex.h: Clearing Oligoindex_T data structures after
+      alignment by going through oligomers in the query, rather than using
+      memset on the entire structure.
+
+    * uniqscan.c: Using new interface to Stage1hr_setup
+
+    * gsnap.c: Added --use-sarray flag
+
+    * stage1hr.c, stage1hr.h: Added parameter use_sarray_p to setup procedure. 
+      Improved warning message for very short reads.
+
+    * gff3_genes.pl.in: Printing genes with a single exon
+
+    * gff3_genes.pl.in, gff3_introns.pl.in, gff3_splicesites.pl.in: Allowing
+      type CDS to be equivalent to exon
+
+2013-07-04  twu
+
+    * oligoindex_hr.c: Removed global memcpy of oligospace in
+      allocate_positions, and copying individual pointers at the same time as
+      positions are assigned.
+
+    * gsnap.c, uniqscan.c: Using new interfaces to Stage1hr procedures
+
+    * stage1hr.c, stage1hr.h: Generalized mergeable list to be used for middle
+      indels as well as splicing
+
+    * oligoindex_hr.c: Fixed values for startdiscard and enddiscard in special
+      case of count_fwdrev_simd and store_fwdrev_simd when startptr + 3 ==
+      endptr.
+
+    * sarray-read.c: Implemented SIMD procedure for scanning array in
+      Elt_fill_positions_filtered
+
+    * gsnap.c: For a single read, changing sarray access to be USE_MMAP_ONLY
+
+    * stage1hr.c: Removed requirement of nconcordant == 0 from performing GMAP
+      terminal alignments.  The concordant pairs can sometimes include pairs of
+      terminal alignments.
+
+    * sarray-read.c: In calls to Genome_count_mismatches_limit, changed
+      nmismatches_allowed parameter from incorrect value of 2 to
+      nmisses_allowed.
+
+2013-07-03  twu
+
+    * sarray-read.c: Increased value of SARRAY_EXCESS_HITS from 1000 to 100,000.
+       Providing separate actions for USE_MMAP_PRELOAD and USE_MMAP_ONLY in
+      Sarray_new.
+
+    * Makefile.gsnaptoo.am, access.c, genome.c, genome.h, genome_hr.c,
+      genome_hr.h, gmapindex.c, gsnap.c, pair.c, pair.h, samprint.c,
+      sarray-read.c, sarray-read.h, sarray-write.c, sarray-write.h,
+      spanningelt.c, splice.c, splice.h, src, stage1hr.c, stage3hr.c,
+      stage3hr.h, trunk, types.h, util: Merged revisions 100273 to 100402 from
+      branches/2013-07-02-suffix-array-redo to implement suffix array algorithm
+
+    * gsnap.c: Added comment
+
+    * gmap_build.pl.in: When compression type is specified to be none, setting
+      base size to be equal to the k-mer size.
+
+    * gmapindex.c: Fixed bug from failing to initialize compression_types. 
+      Changing to NO_COMPRESSION when base size is equal to k-mer size.
+
+2013-07-02  twu
+
+    * indexdb-write.c, indexdb-write.h: When compression_type is NO_COMPRESSION,
+      writing file as "offsets", rather than "offsetscomp".
+
+    * indexdb.c, indexdb_hr.c: Checking for NO_COMPRESSION case first
+
+    * oligoindex_hr.c: Fixed case for SIMD where startptr and endptr are 3 units
+      apart (adjacent blocks).
+
+    * shortread.c: Ignoring accession and header for second queryseq in
+      paired-end FASTA format over two files
+
+    * indexdb-write.c: Computing basesize separately for bitpack and gamma
+      compression
+
+    * atoiindex.c, cmetindex.c, gmapindex.c, indexdb.c, indexdb.h, snpindex.c:
+      Added offsets_only_p argument to Indexdb_get_filenames
+
+    * gmap_build.pl.in: Added -z flag for specifying compression types
+
+    * config.site.rescomp.prd, src, trunk, util: Merged changes from
+      branches/2013-07-01-faster-splicing to speed up find_singlesplices and
+      find_doublesplices
+
+    * gsnap.c, uniqscan.c: Using new interface to Stage1hr procedures
+
+    * stage1hr.c, stage1hr.h: Merged changes from
+      branches/2013-07-01-faster-splicing to use a spliceable array.  Removed
+      code for quicksort version of identify_all_segments.
+
+    * genome_hr.c: Added comment about unshuffle procedure
+
+    * VERSION, config.site.rescomp.tst: Updated version number
+
+    * gff3_genes.pl.in, gff3_introns.pl.in, gff3_splicesites.pl.in: Handling
+      GFF3 files that lack gene lines
+
+    * indexdb.c: Changed stderr message when allocating memory for output
+      pointers
+
+    * bitpack64-read.c: Using a procedure dispatch table instead of a switch
+      statement
+
+    * atoiindex.c, cmetindex.c, indexdb-write.c, indexdb-write.h, snpindex.c:
+      Added support for bitpack compression
+
+2013-07-01  twu
+
+    * gmapindex.c: Added ability to write positions from offsets compressed with
+      bitpacking method
+
+    * indexdb.c, indexdb.h: Added ability to write positions from offsets
+      compressed with bitpacking method
+
+    * indexdb-write.c, indexdb-write.h: Added ability to write positions from
+      offsets compressed with bitpacking method
+
+    * bitpack64-read.c: Implemented Bitpack64_block_offsets to compute all
+      offsets
+
+    * bitpack64-read.c: Gave distinct variable names for debugging statements
+
+    * indexdb-write.c: Added code so bitpack offsets file can be written without
+      SIMD instructions.
+
+    * bitpack64-write.c: Added code so bitpack offsets file can be written
+      without SIMD instructions.
+
+    * bitpack16-read.c, bitpack32-read.c: Fixed debugging code
+
+    * bitpack64-read.c: Made some speed improvements in non-SIMD code by only
+      adding as many terms as needed.
+
+2013-06-30  twu
+
+    * bitpack64-read.c: Added code for decoding of bitpack files without SSE2
+      present
+
+    * Makefile.gsnaptoo.am, bitpack64-read.c, bitpack64-read.h,
+      bitpack64-write.c, bitpack64-write.h, gmapindex.c, indexdb-write.c,
+      indexdb.c, indexdb_hr.c, indexdbdef.h: Changed back to 64-element blocks,
+      with only two pieces of meta-information, pointer and offset0, and
+      packsize inferred from successive pointers.
+
+    * bitpack32-read.c, bitpack32-read.h: Performing cumulative sums within each
+      unpack procedure
+
+    * bitpack32-read.c, bitpack32-read.h, bitpack32-write.c, bitpack32-write.h,
+      indexdb-write.c, indexdb.c, indexdb_hr.c, indexdbdef.h: Changed from
+      64-element blocks to 32-element half-blocks
+
+    * gmapindex.c: Changed from 64-element blocks to 32-element half-blocks
+
+    * Makefile.gsnaptoo.am: Changed from 64-element blocks to 32-element
+      half-blocks
+
+2013-06-29  twu
+
+    * indexdb.c, indexdb.h: Added Indexdb_get_filenames procedure that returns a
+      Filenames_T object.  Put definition of Filenames_T into header file.
+
+    * genome_hr.c, genome_hr.h: Using Offsetscomp_T type
+
+    * bitpack16-write.c: Changed write procedure to take a pointer as argument,
+      to avoid compiler warnings
+
+    * bitpack16-read.h: Added procedure to compute all offsets
+
+    * gmapindex.c, indexdb-write.h: Determining selection of filenames based on
+      compression type for offsets.
+
+    * bitpack16-read.c, indexdb-write.c: Changed forrmat to put all metablock
+      information, including offset and packsize, into the pointers file
+
+    * indexdbdef.h: Added values for compression types, and compression type
+      field in Indexdb_T object.
+
+    * indexdb_hr.c: Calling bitpack or gamma compression at run time, as needed
+
+    * indexdb.c, indexdb.h: Searching for bitpack format, then gamma format, and
+      then no compression. Created Filenames_T object to standardize routines.
+
+    * indexdb-write.c, indexdb-write.h: Added compression_types as a parameter,
+      so multiple formats can be written
+
+    * bitpack16-read.c, bitpack16-read.h: Moved data structures to static
+      variables, so they do not need to be passed as arguments each time.
+
+    * bitpack16-read.c: Using Blocksize_T type
+
+2013-06-28  twu
+
+    * indexdb-write.c, indexdb-write.h: Restored lost code from large genome
+      revisions
+
+    * bitpack16-read.h: Using Blocksize_T type
+
+    * Makefile.gsnaptoo.am: Added bitpack files for large genome programs
 
-2013-07-11  twu
+    * Makefile.gsnaptoo.am, bitpack16-read.c, bitpack16-read.h,
+      bitpack16-write.c, bitpack16-write.h, config.site.rescomp.prd,
+      indexdb-write.c, indexdb-write.h, indexdb.c, indexdb_hr.c, src, trunk,
+      util: Reintegrated revisions from branches/2013-06-14-bitpacking to add
+      bitpack compression code
 
-    * samprint.c: Fixed sides of hardclipping for circular alignments
+    * index.html, src, trunk, util: Added link to large genomes version
 
-    * public-2013-06-27: Created public release 2013-06-27
+    * oligoindex_hr.c: Merged revisions 99785 to 99781 from
+      branches/2013-06-27-simd-oligo to add SIMD code for counting and storing
+      olimers
 
 2013-06-27  twu
 
diff --git a/Makefile.am b/Makefile.am
index 8497762..9c69a2a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,14 +1,14 @@
 
 SUBDIRS = src util tests
 
-EXTRA_DIST = VERSION config.site
+EXTRA_DIST = VERSION NOTICE config.site
 
 CLEANFILES = so_locations
 
 ACLOCAL_AMFLAGS = -I config
 
 install-data-local:
-	$(mkinstalldirs) $(GMAPDB)
+#	$(mkinstalldirs) $(GMAPDB)
 
 dist-hook:
 #	svn log -v --xml | ./svncl.pl > ChangeLog
diff --git a/Makefile.in b/Makefile.in
index 4629079..47a108d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -35,7 +35,7 @@ target_triplet = @target@
 subdir = .
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
-	ChangeLog INSTALL NEWS config/compile config/config.guess \
+	ChangeLog INSTALL NEWS TODO config/compile config/config.guess \
 	config/config.sub config/depcomp config/install-sh \
 	config/ltmain.sh config/missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -53,9 +53,10 @@ am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \
 	$(top_srcdir)/config/builtin.m4 \
 	$(top_srcdir)/config/struct-stat64.m4 \
 	$(top_srcdir)/config/expand.m4 $(top_srcdir)/config/perl.m4 \
-	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/popcnt.m4 \
-	$(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/sse2_shift_defect.m4 \
 	$(top_srcdir)/config/ax_gcc_x86_cpuid.m4 \
+	$(top_srcdir)/config/ax_gcc_x86_avx_xgetbv.m4 \
 	$(top_srcdir)/config/ax_check_compile_flag.m4 \
 	$(top_srcdir)/config/ax_ext.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -91,6 +92,7 @@ GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -150,7 +152,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-POPCNT_CFLAGS = @POPCNT_CFLAGS@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
@@ -220,7 +221,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SUBDIRS = src util tests
-EXTRA_DIST = VERSION config.site
+EXTRA_DIST = VERSION NOTICE config.site
 CLEANFILES = so_locations
 ACLOCAL_AMFLAGS = -I config
 all: all-recursive
@@ -659,7 +660,7 @@ uninstall-am:
 
 
 install-data-local:
-	$(mkinstalldirs) $(GMAPDB)
+#	$(mkinstalldirs) $(GMAPDB)
 
 dist-hook:
 #	svn log -v --xml | ./svncl.pl > ChangeLog
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..d457bdf
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,85 @@
+
+This package includes software taken from the following sources:
+
+(1) Software for suffix array construction.  Algorithm described in
+G. Nong, Practical linear-time O(1)-workspace suffix sorting for
+constant alphabets, ACM Transactions on Information Systems, July 2013.
+
+Code obtained from
+http://ge-nong.googlecode.com/files/saca-k-tois-20130413.zip, and
+covered under the MIT License, as follows:
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+ 
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+(2) Software for bit packing and unpacking.  Algorithm described in
+Daniel Lemire and Leonid Boytsov, Decoding billions of integers per
+second through vectorization, Software Practice & Experience, to
+appear.
+
+Code obtained from https://github.com/lemire/FastPFor, and covered
+under the Apache License, Version 2.0 (ASL2.0), available at
+http://www.apache.org/licenses/LICENSE-2.0.  The code was modified for
+use in this project.
+
+
+(3) Software for fast approximate logarithm and exponential
+computations.  Code obtained from http://code.google.com/p/fastapprox,
+and covered under the following license:
+
+/*=====================================================================*
+ *                   Copyright (C) 2012 Paul Mineiro                   *
+ * All rights reserved.                                                *
+ *                                                                     *
+ * Redistribution and use in source and binary forms, with             *
+ * or without modification, are permitted provided that the            *
+ * following conditions are met:                                       *
+ *                                                                     *
+ *     * Redistributions of source code must retain the                *
+ *     above copyright notice, this list of conditions and             *
+ *     the following disclaimer.                                       *
+ *                                                                     *
+ *     * Redistributions in binary form must reproduce the             *
+ *     above copyright notice, this list of conditions and             *
+ *     the following disclaimer in the documentation and/or            *
+ *     other materials provided with the distribution.                 *
+ *                                                                     *
+ *     * Neither the name of Paul Mineiro nor the names                *
+ *     of other contributors may be used to endorse or promote         *
+ *     products derived from this software without specific            *
+ *     prior written permission.                                       *
+ *                                                                     *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND              *
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,         *
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES               *
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE             *
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER               *
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,                 *
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES            *
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE           *
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR                *
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF          *
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT           *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY              *
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE             *
+ * POSSIBILITY OF SUCH DAMAGE.                                         *
+ *                                                                     *
+ * Contact: Paul Mineiro <paul at mineiro.com>                            *
+ *=====================================================================*/
diff --git a/README b/README
index 4c17c69..bff2766 100644
--- a/README
+++ b/README
@@ -53,7 +53,7 @@ then refer to it like this
 
 Note 3: GSNAP is designed for short reads of a limited length, and
 relies upon a maximum read length variable MAX_READLENGTH defined at
-compile time (default 250).  You may set this variable by providing it
+compile time (default 300).  You may set this variable by providing it
 to configure like this
 
     ./configure MAX_READLENGTH=<length>
@@ -93,16 +93,63 @@ the library files are in /path/to/goby/lib, you can then add the flag
 config.site file to have this directory as the value for "with_goby".
 
 
+2.  Possible issues during compilation
+======================================
 
-2.  Downloading a pre-built GMAP/GSNAP database
+Recent versions of GMAP and GSNAP use certain techniques to achieve
+increased speed.  One of these techniques is special SIMD
+(single-instruction, multiple data) instructions that can perform some
+computations in parallel.  There are various levels of SIMD
+instructions, and we use those from the SSE2 and SSE4.1 instruction
+sets.  Most computers built within the last 10 years should support
+SSE2 at least.  However, you may run into the following issues:
+
+
+Compiler issue 1.  If you compile the code successfully, but when you
+run the program, you see something that says "Illegal instruction",
+then you must be running GMAP or GSNAP on a different computer than
+the one where you compiled it.  You may be using a computer cluster
+with a variety of different computer models.  Each time you start GMAP
+or GSNAP, the program tests to see if the computer can run the same
+set of SSE2 or SSE4.1 instructions as were available when the programs
+were compiled.  (The programs also check for if the popcnt
+instructions work, but popcnt is so widely implemented that they
+generally do not cause any problems.)
+
+In that case, you may need to compile your program for the lowest
+common denominator by disabling SSE2 instructions by providing
+--disable-sse4.1 or --disable-sse2 to ./configure as necessary.
+Alternatively, your computer cluster may have the ability to detect
+the capabilities of each computer when it receives a job.  Then, you
+may want to create different compiled versions of GMAP and GSNAP, and
+call the appropriate binary for that particular job.  You will have to
+work with your system administrator if you want to accomplish this.
+
+
+Compiler issue 2.  The most recent versions of GSNAP (starting with
+2013-10-01) build a suffix array to help with speed.  If your computer
+does not have sufficient RAM, it is possible that the gmap_build 
+step fails after printing something like this:
+
+    SACA_K called with n = 3095693984, K = 5, level 0
+
+If this happens, you either need to find a computer with more RAM, or
+you can build a genome without a suffix array, by providing
+--no-sarray to gmap_build.  The GSNAP program will still work with the
+resulting genome index, but it won't achieve optimal speed.  GMAP does
+not use the suffix array at all.  Also, large genomes of over 4
+billion bp also will not create or use a suffix array.
+
+
+
+3.  Downloading a pre-built GMAP/GSNAP database
 ===============================================
 
 A GMAP/GSNAP "database" is a set of genomic index files, representing
-the genome in a hash table format.  You can use the programs
-gmap_build or gmap_setup to build your own database (as described
-below), but you can started quickly by downloading a pre-built
-GMAP/GSNAP database from the same place you obtained the GMAP program
-(see above for URL).
+the genome in a hash table format.  You can use the gmap_build program
+to build your own database (as described below), but you can started
+quickly by downloading a pre-built GMAP/GSNAP database from the same
+place you obtained the GMAP program (see above for URL).
 
 Place the database in the GMAPDB directory you specified in the
 config.site file when you built the gmap program.  You should include
@@ -116,43 +163,36 @@ this
     ...
     /path/to/gmapdb/<genome>/<genome>.version
 
-Note that the GMAP database format has changed with the 2011-08-15
-release.  Older versions of GMAP and GSNAP will not work with the
-newer databases, but the current version of the programs is backward
-compatible with the older databases.  Also, versions of GMAP and GSNAP
-before 2008 may require symbolic links to work even with the older
-databases.
-
-The old databases have the index files <genome>.ref3offsets and
-<genome>.ref3positions.  The new databases have the index files
-<genome>.ref12153gammaptrs, <genome>.ref12153offsetscomp, and
-<genome>.ref153positions, if built using a base size of 12, a k-mer
-size of 15, and skipping every 3 bp in the genome.  If the k-mer size
-is equal to the base size, then the gammaptrs file will be absent.
-
-Also, the name of the positions file has changed starting with
-2012-02-14 version.  Previously, the file was named
-<genome>.ref12153positions, but it is now named
-<genome>.ref153positions, since the contents are independent of the
-base size.  If you create a database with a newer version of the
-package, and want older versions of the GMAP or GSNAP to work with
-these newer versions, you will need to make a symbolic link like this:
+Note that the GMAP database format has changed with the 2013-10-01
+release to add a suffix array and other new file formats.  However,
+GMAP and GSNAP are both backwards and forwards compatible, meaning
+that new source code will work with older genome indices and that old
+source code will work with newer genome indices.  Mixing up the two,
+though, will result in slower running speed.  To achieve optimal
+speed, you should use both the latest source code and rebuild your
+genome indices with the latest gmap_build program.  You can tell if
+your database has the most recent format if it has files of the type
+<genome>.sarray, <genome>.ref12153bitpackptrs, and
+<genome>.ref12153bitpackcomp.
 
-    ln -s <genome>.ref153positions <genome>.ref12153.positions
+Note that the hg19 database provided on the Web site lacks the suffix
+array, although GMAP and GSNAP will work fine, albeit more slowly.
+The suffix array for hg19 requires 15 GB of disk space.  If you want
+the suffix array, you will have to build it yourself, as discussed in
+the next section.
 
 
 
-3.  Setting up to build a GMAP/GSNAP database (one chromosome per FASTA entry)
+4.  Setting up to build a GMAP/GSNAP database (one chromosome per FASTA entry)
 ==============================================================================
 
-You can also build your own genomic database, using one of two utility
-programs provided with this package: gmap_build (the newer, one-step
-method) or gmap_setup (the older way that uses Makefile and requires
-multiple steps).
+You can also build your own genomic database, using the gmap_build
+program provided with this package.  (Note: the gmap_setup
+method from older versions is no longer provided or supported.)
 
 Previous versions limited the total sequence length in your database
 to 2^32 = 4,294,967,296 (about 4 billion) bp.  However, starting with
-version 2013-04-XX, a total "genome" may now contain up to 2^64 bp.
+version 2013-04-01, a total "genome" may now contain up to 2^64 bp.
 However, each individual chromosome is still limited to 2^32 bp.  The
 utility programs below will automatically recognize when a genome is
 larger than 2^32 bp and build the index files accordingly.  Below I
@@ -177,13 +217,14 @@ which will build and install the GMAP index files in your default
 GMAPDB location.
 
 You can see the full usage of gmap_build by doing "gmap_build --help",
-but here are some useful flags.  If your FASTA files are gzipped, you
-can add the flag "-g" to gmap_build.  You can control the k-mer size
-for the genomic index with the -k flag, which can range from 12 to 15.
-The default value for -k is 15, but this requires your machine to have
-4 GB of RAM to build the indices.  If you do not have 4 GB of RAM,
-then you will need to reduce the value of -k or find another machine.
-Here are the RAM requirements for building various indices:
+but here are some useful flags.  If your FASTA files are compressed
+using gzip, you can add the flag "-g" to gmap_build.  You can control
+the k-mer size for the genomic index with the -k flag, which can range
+from 12 to 15.  The default value for -k is 15, but this requires your
+machine to have 4 GB of RAM to build the indices.  If you do not have
+4 GB of RAM, then you will need to reduce the value of -k or find
+another machine.  Here are the RAM requirements for building various
+indices:
 
     k-mer of 12: 64 MB
     k-mer of 13: 256 MB
@@ -220,19 +261,14 @@ genome in human beings is circular.
 
 
 
-4.  Setting up to build a GMAP/GSNAP database (more complex cases)
+5.  Setting up to build a GMAP/GSNAP database (more complex cases)
 ==================================================================
 
-If gmap_build works for you, you can skip to section 5.  Otherwise, if
-you have more complicated needs than gmap_build can handle, there is a
-more general build tool called gmap_setup, which creates a Makefile
-with this command
-
-    gmap_setup -d <genome> [-k <kmer size>] <fasta_file>...
-
-and then has you run a few make commands, based on the directions it
-provides.  Again, you can type "gmap_setup --help" to see the full set
-of options.
+If you are indexing a genome, where each chromosome is contained in a
+separate FASTA entry, or a set of contigs, where the contigs are
+independent of each other, then you can just skip to section 6.
+Otherwise, if you have more complicated needs, you may need to add
+options to gmap_build.
 
 Note that the term
 
@@ -240,28 +276,27 @@ Note that the term
 
 above indicates that multiple files can be listed.  The files can be
 in any order, and the contigs can be in any order within these files.
-By default, the GMAP setup process will sort the contigs and
+By default, the gmap_build process will sort the contigs and
 chromosomes into their appropriate "chrom" order.  For the human
 genome, this order is 1, 2, ..., 10, 11, ..., 22, X, Y, M, followed by
 all other chromosomes in numeric/alphabetical order.  If you don't
-want this sort, provide the "-s none" flag to gmap_setup or
-gmap_build.  Other sort options besides "none" and "chrom" are "alpha"
-and "numeric-alpha".
+want this sort, provide the "-s none" flag to gmap_build.  Other sort
+options besides "none" and "chrom" are "alpha" and "numeric-alpha".
 
-We show the full set of gmap_setup options under item 4d below, but
-we first discuss some specific situations for using the program.
+You can type "gmap_setup --help" to see the full set of options.  We
+discuss some specific situations below.
 
 
-4a.  Chromosomes represented as contig pieces
-=============================================
+5a.  Contigs are mapped to chromosomes
+======================================
 
 If your FASTA entries consist of contigs, each of which has a mapping
-to a chromosomal region in the header, you may need to add the -C flag
-to gmap_setup, like this
+to a chromosomal region in the header, you may add the -C (or
+--contigs-are-mapped) flag to gmap_build, like this
 
-    gmap_setup -d <genome> -C <fasta_file>...
+    gmap_build -d <genome> -C <fasta_file>...
 
-Then gmap_setup will try to parse a chromosomal region from each
+Then gmap_build will try to parse a chromosomal region from each
 header.  The program knows how to parse the following patterns:
 
     chr=1:217281..257582  [may insert spaces around '=', or omit '=' character]
@@ -275,106 +310,46 @@ header.  The program knows how to parse the following patterns:
 
 If only the chromosome is specified, without coordinates, the program
 will assign its own chromosomal coordinates by concatenating the
-contigs within each chromosome.  If gmap_setup cannot figure out the
+contigs within each chromosome.  If gmap_build cannot figure out the
 chromosome, it will assign it to chromosome "NA".
 
 
-4b.  Using an MD file
+5b.  Using an MD file
 =====================
 
-Another possibility is that your FASTA entries consist of contigs,
-each of which has mapping information in an external file.  Genomes
-from NCBI typically include an ".md" file (like seq_contig.md) that
-specifies the chromosomal coordinates for each contig.  To use this
-information, provide the -M flag to gmap_setup, like this
+Another possibility is that your FASTA entries consist of contigs that
+mapped to chromosomes, where the mapping information is in an external
+file.  Genomes from NCBI typically include an ".md" file (like
+seq_contig.md) that specifies the chromosomal coordinates for each
+contig.  To use this information, provide the -M (or --mdfile) flag to
+gmap_build like this
 
-    gmap_setup -d <genome> -M <mdfile> <fasta_file>...
+    gmap_build -d <genome> -M <mdfile> <fasta_file>...
 
 The program will then try to parse the mdfile (which often changes
 formats) and verify with you which columns contain the contig names
 and chromosomal coordinates.
 
 
-4c.  Compressed FASTA files or files requiring processing
+5c.  Compressed FASTA files or files requiring processing
 =========================================================
 
-If your genome files don't satisfy any of the cases above, you may
-need to write a small script that pipes the sequences in FASTA format
-to gmap_setup.  You can tell gmap_setup about your script with the -E
-flag, like this
+If your genome files are compressed using gzip, you can simply add the
+flag "-g" to gmap_build.  But if your genome files require some other
+type of processing, you may need to write a small script that pipes
+the sequences in FASTA format to gmap_build.  You can tell gmap_build
+about your script with the -E (or --fasta-pipe) flag, like this
 
-    gmap_setup -d <genome> -E 'gunzip -c chr*.gz'
-    gmap_setup -d <genome> -E 'cat *.fa | ./add-chromosomal-info.pl'
+    gmap_build -d <genome> -E 'gunzip -c chr*.gz'
+    gmap_build -d <genome> -E 'cat *.fa | ./add-chromosomal-info.pl'
 
 You can think of the command as a Unix pipe for processing each FASTA
-file before it is read by gmap_setup.
-
-
-4d.  General use of gmap_setup program
-======================================
-
-Any of the steps above (4a, 4b, or 4c) will create a Makefile, called
-Makefile.<genome>.  You will then use this Makefile to build a
-GMAP/GSNAP database.  You will be prompted to use this Makefile
-through the following commands:
-
-    make -f Makefile.<genome> coords
-    make -f Makefile.<genome> gmapdb
-    make -f Makefile.<genome> install
-
-Note that older versions of GMAP allowed the building of genomic
-databases containing lower-case characters by doing "make -f
-Makefile.<genome> gmapdb_lc" or "make -f Makefile.<genome>
-gmapdb_lc_masked", but these will not work with GSNAP, and I am not
-certain if these still work with the most recent GMAP either, so they
-are not currently supported.
-
-
-The first step in using this Makefile is to create a file called
-coords.<genome>.  You may manually edit this file, if you wish, before
-proceeding with the rest of the Makefile steps.  The coords file
-contains one contig per line, in the following format:
-
-<contig_name>	<chromosomal_mapping>	<optional_strain>
-
-where the chromosomal_mapping is in the form
-<chr_name>:<start>..<end>.  Here are some examples:
-
-NT_077911.1	1:217281..257582
-NT_091704.1	22U:1..166566
-
-If you want the contig to be inserted as its reverse complement, then
-list the coordinates in the reverse direction (starting with the
-higher number), like this:
-
-NT_039199.1	1:61563373..61273712
+file before it is read by gmap_build.
 
-You may delete lines or comment them out with a '#' character, which
-will effectively omit those contigs from your genome build.  You may
-also change chromosomal assignments (in column 2) at this stage.
 
-Note: Previous versions of GMAP allowed you to specify alternate
-strains in column 3, but this feature added too much complexity and is
-no longer supported.
 
-
-You then will run "make -f Makefile.<genome> gmapdb".  This creates a
-compressed version of the genome, in the file <genome>.genomecomp,
-which can hold only the standard, upper-case A, C, G, T, N, and X
-characters.  It converts all lower-case characters to upper-case, and
-all non-ACGTNX characters to 'N'.  This command also creates a hash
-table of the genome, with files that end with "gammaptrs",
-"offsetscomp", and "positions".
-
-Finally, running "make -f Makefile.<genome> install" will place all
-database files in a subdirectory specified by your "-d" flag under the
-directory specified either by the "-D" flag or, if not specified, the
-value of --with-gmapdb you provided at configure time.
-
-
-
-Running GMAP
-============
+6.  Running GMAP
+================
 
 To see the full set of options, type "gmap --help".  The following are
 some common examples of usage.  For more examples, see the document
@@ -452,8 +427,8 @@ size, and will exit if you try to run them on the wrong-sized genomes.
 
 
 
-Building map files
-==================
+7.  Building map files
+======================
 
 This package includes an implementation of interval index trees
 (IITs), which permits efficient lookup of interval information.  The
@@ -532,11 +507,11 @@ files using its -G and -l flags.  More details about iit_store can be
 found by doing "iit_store --help".
 
 
-Running GSNAP
-=============
+8.  Running GSNAP
+=================
 
 GSNAP uses the same database as GMAP does, so you will need to process
-the genome using gmap_setup as explained above, if you haven't done
+the genome using gmap_build as explained above, if you haven't done
 that already.
 
 To see the full set of options for GSNAP, type "gsnap --help".  A key
@@ -694,8 +669,8 @@ genomes.
 
 
 
-SAM output format
-=======================
+9.  SAM output format
+=====================
 
 GSNAP can generate SAM output format, by providing the "-A sam" flag
 to GSNAP.  In addition, GMAP can also print its alignments in SAM
@@ -715,6 +690,111 @@ XQ: A non-normalized mapping quality score
 X2: The second best XQ score among all multimapping alignments for a
 given read.  If there is only a single alignment, this value is 0.
 
+XO: Output type.  GSNAP categorizes its alignments into output types,
+as follows.  Note that the --split-output option will create separate
+output files for each output type, and the filename suffixes are shown
+below for each output type:
+
+  NM (nomapping) (filename suffix ".nomapping"): The entire read
+  (single-end or paired-end) could not be aligned.  If the
+  --failed-input=FILENAME flag is specified, then these reads are also
+   printed in FASTQ or FASTA format (depending on the input format) in
+  the given file (plus a .1 or .2 ending for the first and second ends
+  of a paired-end read).
+
+  CU (concordant unique) (filename suffix ".concordant_uniq"): Both
+  ends of a paired-end read could be aligned concordantly to a single
+  position in the genome.  For a definition of concordance, see the
+  section "Output types" below.
+
+  CM (concordant multiple) (filename suffix ".concordant_mult"): Both
+  ends of a paired-end read could be aligned concordantly, but to more
+  than one position in the genome.
+
+  CX (concordant multiple excess) (filename suffix
+  ".concordant_mult_xs"): Multiple concordant alignments, but user
+  specified --quiet-if-excessive and the number of alignments exceeds
+  "-n" threshold.  If the --failed-input option is given, these reads
+  are also printed in FASTA or FASTQ format in the given file.
+
+  CT (concordant translocation) (filename suffix
+  ".concordant_transloc"): Both ends of a paired-end read could be
+  aligned concordantly, but one end requires a split alignment to a
+  distant location, such as another chromosome, or a different strand
+  on that chromosome, or a far distance on that strand.  Note that
+  translocation alignments need to be printed on two separate SAM
+  lines.
+
+  CC (concordant circular) (filename suffix ".concordant_circular"):
+  Both ends of a paired-end read could be aligned concordantly, but
+  one or both ends require an alignment that goes around the origin of
+  a circular chromosome.  Circular chromosomes are specified in the
+  gmap_build step by using the -c or --circular flag, as described
+  previously.  Note that circular alignments need to be printed on two
+  separate SAM lines.
+
+  PI (paired unique inversion) (filename suffix ".paired_uniq_inv"):
+  Both ends of a paired-end read could be aligned uniquely, but in a
+  way that indicates that a genomic inversion has occurred between the
+  two ends.
+
+  PS (paired unique scramble) (filename suffix ".paired_uniq_scr"):
+  Both ends of a paired-end read could be aligned uniquely, but in a
+  way that indicates that the genomic order is scrambled.  This
+  typically occurs because of tandem duplications.
+
+  PL (paired unique long) (filename suffix ".paired_uniq_long"): Both
+  ends of a paired-end read could be aligned uniquely, but in a way
+  that indicates that a large genomic deletion has occurred between
+  the two ends.
+
+  PC (paired unique circular) (filename suffix
+  ".paired_uniq_circular"): Both ends of a paired-end read could be
+  aligned uniquely, but not concordantly, representing an inversion,
+  scramble, or deletion.  In addition, one or both ends of the read
+  goes around the origin of a circular chromosome.
+
+  PM (paired multiple) (filename suffix ".paired_mult"): Both
+  ends of a paired-end read could be aligned near each other,
+  representing an inversion, scramble, or deletion, but there are
+  multiple places in the genome where an alignment is found.
+
+  PX (paired multiple excess) (filename suffix ".paired_mult_xs"):
+  Multiple paired alignments, but user specified --quiet-if-excessive
+  and the number of alignments exceeds the "-n" threshold.  If the
+  --failed-input option is given, these reads are also printed in
+  FASTA or FASTQ format in the given file.
+
+  HU, HM, HT, HC (halfmapping unique, halfmapping multiple,
+  halfmapping translocation, and halfmapping circular, respectively)
+  (filename suffixes: ".halfmapping_uniq", ".halfmapping_mult",
+  ".halfmapping_transloc", ".halfmapping_circular): Same as for the
+  concordant output types, except that only one end of the paired-end
+  read could be aligned, and the other end could not be aligned
+  anywhere in the genome.
+
+  HX (halfmapping multiple excess) (filename suffix
+  ".halfmapping_mult_xs"): Multiple halfmapping alignments, but user
+  specified --quiet-if-excessive and the number of alignments exceeds
+  the "-n" threshold.  If the --failed-input option is given, these
+  reads are also printed in FASTA or FASTQ format in the given file.
+
+  UU, UM, UT, UC (unpaired unique, unpaired multiple, unpaired
+  translocation, and unpaired circular, respectively) (filename
+  suffixes: ".unpaired_uniq", ".unpaired_mult", ".unpaired_transloc",
+  ".unpaired_circular): Same as for the concordant output types,
+  except that the two ends could not be aligned concordantly or even
+  paired.  These "unpaired" categories are also used for single-end
+  reads, since they lack a mate end that can allow for concordance,
+  pairing, or halfmapping.
+
+  UX (unpaired multiple excess) (filename suffix ".unpaired_mult_xs"):
+  Multiple unpaired alignments, but user specified
+  --quiet-if-excessive and the number of alignments on one end exceeds
+  the "-n" threshold.  If the --failed-input option is given, these
+  reads are also printed in FASTA or FASTQ format in the given file.
+
+
 XB: Prints the barcode extracted from the end of the read.  Applies only
 if --barcode-length is not 0.
 
@@ -735,6 +815,21 @@ To prevent this flag, which cannot be handled by such programs (such
 as Cufflinks), use the --force-xs-dir flag.  However, this flag will
 merely change occurrences of XS:A:? arbitrarily to XS:A:+.
 
+XA: Indicates an ambiguous splice.  If GSNAP finds two or more
+possible splices at a given position, it will try to resolve the
+ambiguity if possible based on the other end of the paired-end read.
+If the ambiguity cannot be resolved, GSNAP will not report any of the
+splices, but will report a soft clip instead.  The XA field indicates
+which end or ends are ambiguous and the number of matches found on
+each ambiguous end, based on the output XA:Z:i,j.  If i or j is
+greater than 0, that indicates that the lower or higher chromosomal
+end is ambiguous, respectively.  The value given indicates the number
+of matches found in the ambiguous end.  This number may be smaller
+than the number of bases soft-clipped, due to mismatches.
+
+XC: Indicates whether the alignment crosses over the origin of a
+circular chromosome.  If so, the string XC:A:+ is printed.
+
 XT: Prints the intron dinucleotides and splice probabilities around a
 distant splicing event (genomic deletion, inversion, scramble, or
 translocation).
@@ -750,17 +845,16 @@ genome, and with the exception of indels, should equal the value of
 NM.
 
 
-GSNAP output format
-===================
+
+10.  GSNAP output format
+========================
 
 By default, GSNAP prints its output in a FASTA-like format, which we
 developed before we incorporated the SAM format.  The default GSNAP
 output has some advantages over SAM output, especially for debugging
-purposes.
-
-the orientation of splice junctions, in indicating translocations that
-occur in a single read, and in reflecting information about known
-splice sites or known SNPs.  
+purposes.  However, we routinely use SAM output for our own pipeline,
+and it has been subject to the most testing by ourselves and by outside
+users.
 
 Here is some output from GSNAP on a paired-end read:
 
@@ -779,6 +873,10 @@ any); in column 2, the number of hits for that query and if the read
 is paired-end, the relationship between the ends (as discussed in the
 next paragraph); and in column 3, the accession number for the query.
 
+
+11.  Output types
+=================
+
 The two ends of a paired-end read can have the following
 relationships: "concordant", "paired", or "unpaired".  A paired-end
 read is concordant if the ends align to the same chromosome, in the
@@ -890,8 +988,8 @@ the sum of the alignment scores) and the inferred length of the insert
 (ignoring splices within each segment, but not between segments).  
 
 
-Detecting known and novel splice sites in GSNAP
-===============================================
+12.  Detecting known and novel splice sites in GSNAP
+====================================================
 
 GSNAP can detect splice junctions in individual reads.  You can detect
 splices using a probabilistic model using the --novelsplicing (or -N)
@@ -1059,8 +1157,8 @@ Then, you may use the file by doing this:
     gsnap -d <genome> -s <intronsfile> <shortreads>, or
                                                                                                 
 
-SNP-tolerant alignment in GSNAP
-===============================
+13.  SNP-tolerant alignment in GSNAP
+====================================
 
 GSNAP has the ability to align to a reference space of all possible
 major and minor alleles in a set of known SNPs provided by the user.
@@ -1131,8 +1229,8 @@ where "W" is the reference allele and "X" and "Y" are two different
 alternate alleles.
 
 To help you generate the file, this package includes programs that can
-process known SNP data, either from older dbSNP files or from newer
-files in VCF format.  The older dbSNP files can be obtained from UCSC,
+process known SNP data, from various formats, including dbSNP files,
+VCF format, or GVF format.  The dbSNP files can be obtained from UCSC,
 like this
 
     ftp://hgdownload.cse.ucsc.edu/goldenPath/hg18/database/snp130.txt.gz
@@ -1166,8 +1264,8 @@ However, if you want to include some types of exceptions, you will
 need to modify the dbsnp_iit program (written in Perl) to indicate a
 "1" for the type of exception you want to include.
 
-The more recent SNP data are provided in VCF format, and can be
-retrieved like this:
+Sometimes SNP data are provided in VCF format, and can be retrieved
+like this:
 
     ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606/VCF/00-All.vcf.gz
 
@@ -1186,9 +1284,17 @@ the SNP is allowed.  These rules might not be the best ones; I made
 them up by trying to compare version 135 of the VCF data with
 version 135 of the UCSC dbSNP data.
 
+Likewise, SNP data are sometimes provided in GVF format, and these
+files can be processed using our program gvf_iit, like this:
+
+    gunzip -c filename.gvf.gz | gvf_iit > <snpfile>.txt
+
+From my limited experience with GVF format, it appears that the file
+contains variants from only one version of dbSNP.
+
 
-Once you have built a <snpfile>.txt file using either dbsnp_iit or
-vcf_iit, you create an IIT file by doing this
+Once you have built a <snpfile>.txt file using dbsnp_iit, vcf_iit, or
+gvf_iit, you create an IIT file by doing this
                                                                                                 
     cat <snpfile>.txt | iit_store -o <snpfile>
                                                                                                 
@@ -1219,15 +1325,17 @@ Additional options for snpindex can be found by doing "snpindex
 
 Finally, you can perform SNP-tolerant alignment by doing
 
-    gsnap -d <genome> [-V <snpdirectory>] -v <snpfile> <shortreads>
+    gsnap -d <genome> [-V <snpdirectory>] -v <snpfile> --use-sarray=0 <shortreads>
 
 You can also retrieve snp information for genomic segments by running
 get-genome with the -v and -f flags.  For more details, run
-"get-genome --help".
+"get-genome --help".  Note that you will want to turn off the suffix
+array algorithm, which helps GSNAP run faster, but has an inherent
+bias towards the reference alleles relative to the alternate alleles.
 
 
-Alignment of reads from bisulfite-treated DNA in GSNAP
-======================================================
+14.  Alignment of reads from bisulfite-treated DNA in GSNAP
+===========================================================
 
 GSNAP has the ability to align reads from bisulfite-treated DNA, which
 converts unmethylated cytosines to uracils that appear as thymines in
@@ -1270,8 +1378,8 @@ A's in half the reads.
 
 
 
-RNA-editing tolerance in GSNAP
-==============================
+15.  RNA-editing tolerance in GSNAP
+===================================
 
 Just as GSNAP has a program cmetindex and a mode called "cmet" for
 tolerance to C-to-T changes, it can be tolerant to A-to-G changes
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..c5a7bd7
--- /dev/null
+++ b/TODO
@@ -0,0 +1,3 @@
+
+Add flag that allows for splitting afterwards.
+
diff --git a/VERSION b/VERSION
index 57d47bc..5150f45 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2013-07-20
\ No newline at end of file
+2014-06-10
\ No newline at end of file
diff --git a/acinclude.m4 b/acinclude.m4
index 296f79e..dec57af 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -14,9 +14,10 @@ m4_include([config/expand.m4])
 m4_include([config/perl.m4])
 
 m4_include([config/fopen.m4])
-m4_include([config/popcnt.m4])
 m4_include([config/asm-bsr.m4])
+m4_include([config/sse2_shift_defect.m4])
 
 m4_include([config/ax_gcc_x86_cpuid.m4])
+m4_include([config/ax_gcc_x86_avx_xgetbv.m4])
 m4_include([config/ax_check_compile_flag.m4])
 m4_include([config/ax_ext.m4])
diff --git a/config/acx_mmap_fixed.m4 b/config/acx_mmap_fixed.m4
index 9424936..9f99fba 100644
--- a/config/acx_mmap_fixed.m4
+++ b/config/acx_mmap_fixed.m4
@@ -77,7 +77,7 @@ char *malloc ();
 ],
 [
   char *data, *data2, *data3;
-  int i, pagesize;
+  size_t i, pagesize;
   int fd;
 
   pagesize = getpagesize ();
@@ -105,7 +105,7 @@ char *malloc ();
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+  data2 += (pagesize - ((size_t) data2 & (pagesize - 1))) & (pagesize - 1);
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
                      MAP_PRIVATE | MAP_FIXED, fd, 0L))
     exit (1);
diff --git a/config/acx_mmap_variable.m4 b/config/acx_mmap_variable.m4
index 8812d61..8d4c470 100644
--- a/config/acx_mmap_variable.m4
+++ b/config/acx_mmap_variable.m4
@@ -77,7 +77,7 @@ char *malloc ();
 ],
 [
   char *data, *data2, *data3;
-  int i, pagesize;
+  size_t i, pagesize;
   int fd;
 
   pagesize = getpagesize ();
@@ -105,7 +105,7 @@ char *malloc ();
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+  data2 += (pagesize - ((size_t) data2 & (pagesize - 1))) & (pagesize - 1);
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
                      MAP_PRIVATE | MAP_VARIABLE, fd, 0L))
     exit (1);
diff --git a/config/ax_ext.m4 b/config/ax_ext.m4
index 4959b76..1ca5a78 100644
--- a/config/ax_ext.m4
+++ b/config/ax_ext.m4
@@ -10,8 +10,8 @@
 #
 #   Find supported SIMD extensions by requesting cpuid. When an SIMD
 #   extension is found, the -m"simdextensionname" is added to SIMD_FLAGS if
-#   compilator supports it. For example, if "sse2" is available, then
-#   "-msse2" is added to SIMD_FLAGS.
+#   compiler supports it. For example, if "sse2" is available, then "-msse2"
+#   is added to SIMD_FLAGS.
 #
 #   This macro calls:
 #
@@ -24,13 +24,14 @@
 # LICENSE
 #
 #   Copyright (c) 2007 Christophe Tournayre <turn3r at users.sourceforge.net>
+#   Copyright (c) 2013 Michael Petch <mpetch at capp-sysware.com>
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
 #   and this notice are preserved. This file is offered as-is, without any
 #   warranty.
 
-#serial 10
+#serial 13
 
 AC_DEFUN([AX_EXT],
 [
@@ -54,13 +55,19 @@ AC_DEFUN([AX_EXT],
     ;;
 
 
-    i[[3456]]86*|x86_64*)
+    i[[3456]]86*|x86_64*|amd64*)
 
       AC_REQUIRE([AX_GCC_X86_CPUID])
+      AC_REQUIRE([AX_GCC_X86_AVX_XGETBV])
 
       AX_GCC_X86_CPUID(0x00000001)
-      ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
-      edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+      ecx=0
+      edx=0
+      if test "$ax_cv_gcc_x86_cpuid_0x00000001" != "unknown";
+      then
+        ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
+        edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+      fi
 
       AC_CACHE_CHECK([whether mmx is enabled and supported], [ax_cv_have_mmx_ext],
       [
@@ -122,21 +129,98 @@ AC_DEFUN([AX_EXT],
         fi
       ])
 
-      AC_CACHE_CHECK([whether avx is enabled and supported], [ax_cv_have_avx_ext],
+      AC_CACHE_CHECK([whether avx is enabled and supported by processor], [ax_cv_have_avx_cpu_ext],
       [
-        ax_cv_have_avx_ext=no
+        ax_cv_have_avx_cpu_ext=no
         if test "$((0x$ecx>>28&0x01))" = 1; then
-          ax_cv_have_avx_ext=yes
+          ax_cv_have_avx_cpu_ext=yes
+        fi
+      ])
+
+      if test x"$ax_cv_have_avx_cpu_ext" = x"yes"; then
+        AX_GCC_X86_AVX_XGETBV(0x00000000)
+
+        xgetbv_eax="0"
+        if test x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then
+          xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1`
+        fi
+
+        AC_CACHE_CHECK([whether avx is supported by operating system], [ax_cv_have_avx_ext],
+        [
+          ax_cv_have_avx_ext=no
+
+          if test "$((0x$ecx>>27&0x01))" = 1; then
+            if test "$((0x$xgetbv_eax&0x6))" = 6; then
+              ax_cv_have_avx_ext=yes
+            fi
+          fi
+        ])
+        if test x"$ax_cv_have_avx_ext" = x"no"; then
+          AC_MSG_WARN([Your processor supports AVX, but your operating system doesn't])
+        fi
+      fi
+
+
+      AC_CACHE_CHECK([whether popcnt is enabled and supported], [ax_cv_have_popcnt_ext],
+      [
+        ax_cv_have_popcnt_ext=no
+        if test "$((0x$ecx>>23&0x01))" = 1; then
+          ax_cv_have_popcnt_ext=yes
+        fi
+      ])
+
+
+      AX_GCC_X86_CPUID(0x80000001)
+      ecx=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 3`
+      edx=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 4`
+
+      AC_CACHE_CHECK([whether lzcnt is enabled and supported], [ax_cv_have_lzcnt_ext],
+      [
+        ax_cv_have_lzcnt_ext=no
+        if test "$((0x$ecx>>5&0x01))" = 1; then
+          ax_cv_have_lzcnt_ext=yes
         fi
       ])
 
+
+      AX_GCC_X86_CPUID(0x00000007)
+      ebx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 2`
+      ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 3`
+      edx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 4`
+
+      AC_CACHE_CHECK([whether avx2 is enabled and supported], [ax_cv_have_avx2_ext],
+      [
+        ax_cv_have_avx2_ext=no
+        if test "$((0x$ebx>>5&0x01))" = 1; then
+          ax_cv_have_avx2_ext=yes
+        fi
+      ])
+
+      AC_CACHE_CHECK([whether bmi1 is enabled and supported], [ax_cv_have_bmi1_ext],
+      [
+        ax_cv_have_bmi1_ext=no
+        if test "$((0x$ebx>>3&0x01))" = 1; then
+          ax_cv_have_bmi1_ext=yes
+        fi
+      ])
+
+      AC_CACHE_CHECK([whether bmi2 is enabled and supported], [ax_cv_have_bmi2_ext],
+      [
+        ax_cv_have_bmi2_ext=no
+        if test "$((0x$ebx>>8&0x01))" = 1; then
+          ax_cv_have_bmi2_ext=yes
+        fi
+      ])
+
+
+
       if test "$ax_cv_have_mmx_ext" = yes; then
         AX_CHECK_COMPILE_FLAG(-mmmx, ax_cv_support_mmx_ext=yes, [])
         if test x"$ax_cv_support_mmx_ext" = x"yes"; then
           SIMD_FLAGS="$SIMD_FLAGS -mmmx"
           AC_DEFINE(HAVE_MMX,1,[Define to 1 if you support mmx instructions])
         else
-          AC_MSG_WARN([Your processor supports mmx instructions but not your compiler.  Can you try another compiler?])
+          AC_MSG_WARN([Your processor supports mmx instructions but not your compiler.  Can you try another compiler or update yours?])
         fi
       fi
 
@@ -146,7 +230,7 @@ AC_DEFUN([AX_EXT],
           SIMD_FLAGS="$SIMD_FLAGS -msse"
           AC_DEFINE(HAVE_SSE,1,[Define to 1 if you support SSE (Streaming SIMD Extensions) instructions])
         else
-          AC_MSG_WARN([Your processor supports sse instructions but not your compiler.  Can you try another compiler?])
+          AC_MSG_WARN([Your processor supports sse instructions but not your compiler.  Can you try another compiler or update yours?])
         fi
       fi
 
@@ -156,7 +240,7 @@ AC_DEFUN([AX_EXT],
 	  SIMD_FLAGS="$SIMD_FLAGS -msse2"
 	  AC_DEFINE(HAVE_SSE2,1,[Define to 1 if you support SSE2 (Streaming SIMD Extensions 2) instructions])
 	else
-	  AC_MSG_WARN([Your processor supports sse2 instructions but not your compiler.  Can you try another compiler?])
+	  AC_MSG_WARN([Your processor supports sse2 instructions but not your compiler.  Can you try another compiler or update yours?])
 	fi
       fi
 
@@ -166,7 +250,7 @@ AC_DEFUN([AX_EXT],
           SIMD_FLAGS="$SIMD_FLAGS -msse3"
           AC_DEFINE(HAVE_SSE3,1,[Define to 1 if you support SSE3 (Streaming SIMD Extensions 3) instructions])
         else
-          AC_MSG_WARN([Your processor supports sse3 instructions but not your compiler.  Can you try another compiler?])
+          AC_MSG_WARN([Your processor supports sse3 instructions but not your compiler.  Can you try another compiler or update yours?])
         fi
       fi
 
@@ -176,7 +260,7 @@ AC_DEFUN([AX_EXT],
           SIMD_FLAGS="$SIMD_FLAGS -mssse3"
           AC_DEFINE(HAVE_SSSE3,1,[Define to 1 if you support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions])
         else
-          AC_MSG_WARN([Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler?])
+          AC_MSG_WARN([Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler or update yours?])
         fi
       fi
 
@@ -186,7 +270,7 @@ AC_DEFUN([AX_EXT],
 	  SIMD_FLAGS="$SIMD_FLAGS -msse4.1"
 	  AC_DEFINE(HAVE_SSE4_1,1,[Define to 1 if you support SSE4.1 (Streaming SIMD Extensions 4.1) instructions])
 	else
-	  AC_MSG_WARN([Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler?])
+	  AC_MSG_WARN([Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler or update yours?])
 	fi
       fi
 
@@ -196,20 +280,71 @@ AC_DEFUN([AX_EXT],
           SIMD_FLAGS="$SIMD_FLAGS -msse4.2"
           AC_DEFINE(HAVE_SSE4_2,1,[Define to 1 if you support SSE4.2 (Streaming SIMD Extensions 4.2) instructions])
         else
-          AC_MSG_WARN([Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler?])
+          AC_MSG_WARN([Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler or update yours?])
         fi
       fi
 
-      if test "$ax_cv_have_avx_ext" = yes; then
-        AX_CHECK_COMPILE_FLAG(-mavx, ax_cv_support_avx_ext=yes, [])
-        if test x"$ax_cv_support_avx_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -mavx"
-          AC_DEFINE(HAVE_AVX,1,[Define to 1 inf you support AVX (Advanced Vector Extensions) instructions])
-        else
-          AC_MSG_WARN([Your processor supports avx instructions but not your compiler.  Can you try another compiler?])
+      AC_MSG_CHECKING(for immintrin.h header file)
+      AC_TRY_LINK([#include <immintrin.h>],
+                  [ ],
+                  [ax_cv_have_immintrin_h=yes])
+
+
+      if test x"$a_cv_have_immintrin_h" = x"yes"; then
+        AC_MSG_RESULT([yes])
+
+        if test "$ax_cv_have_avx_ext" = yes; then
+          AX_CHECK_COMPILE_FLAG(-mavx, ax_cv_support_avx_ext=yes, [])
+          if test x"$ax_cv_support_avx_ext" = x"yes"; then
+            SIMD_FLAGS="$SIMD_FLAGS -mavx"
+            AC_DEFINE(HAVE_AVX,1,[Define to 1 if you support AVX (Advanced Vector Extensions) instructions])
+          else
+            AC_MSG_WARN([Your processor supports avx instructions but not your compiler.  Can you try another compiler or update yours?])
+          fi
+        fi
+
+        if test "$ax_cv_have_popcnt_ext" = yes; then
+          AC_DEFINE(HAVE_POPCNT,1,[Define to 1 if you support Intel intrinsic _popcnt instruction])
+        fi
+
+        if test "$ax_cv_have_lzcnt_ext" = yes; then
+          AC_DEFINE(HAVE_LZCNT,1,[Define to 1 if you support Intel intrinsic _lzcnt instruction])
+        fi
+
+        if test "$ax_cv_have_bmi1_ext" = yes; then
+          AC_DEFINE(HAVE_BMI1,1,[Define to 1 if you support BMI1 (Bit Manipulation Instruction set 1)])
+        fi
+      else
+        AC_MSG_RESULT([no])
+        if test "$ax_cv_have_avx_ext" = yes; then
+          AC_MSG_WARN([Your processor supports AVX but your compiler cannot find immintrin.h.  Will not use AVX.])
+        fi
+  
+        if test "$ax_cv_have_popcnt_ext" = yes; then
+          AC_MSG_WARN([Your processor supports _popcnt instructions but your compiler cannot find immintrin.h.  Will try another method.])
+        fi
+        if test "$ax_cv_have_lzcnt_ext" = yes; then
+          AC_MSG_WARN([Your processor supports _lzcnt instructions but your compiler cannot find immintrin.h.  Will try another method.])
+        fi
+        if test "$ax_cv_have_bmi1_ext" = yes; then
+          AC_MSG_WARN([Your processor supports bmi instructions but your compiler cannot find immintrin.h.  Will try another method.])
         fi
       fi
 
+      if test "$ax_cv_have_bmi2_ext" = yes; then
+        AC_DEFINE(HAVE_BMI2,1,[Define to 1 if you support BMI2 (Bit Manipulation Instruction set 2)])
+      fi
+
+#      if test "$ax_cv_have_avx2_ext" = yes; then
+#        AX_CHECK_COMPILE_FLAG(-mavx2, ax_cv_support_avx2_ext=yes, [])
+#        if test x"$ax_cv_support_avx2_ext" = x"yes"; then
+#          SIMD_FLAGS="$SIMD_FLAGS -mavx2"
+#          AC_DEFINE(HAVE_AVX2,1,[Define to 1 if you support AVX2 (Advanced Vector Extensions 2) instructions])
+#        else
+#          AC_MSG_WARN([Your processor supports avx2 instructions but not your compiler.  Can you try another compiler or update yours?])
+#        fi
+#      fi
+
   ;;
   esac
 
diff --git a/config/ax_gcc_x86_avx_xgetbv.m4 b/config/ax_gcc_x86_avx_xgetbv.m4
new file mode 100644
index 0000000..0624eeb
--- /dev/null
+++ b/config/ax_gcc_x86_avx_xgetbv.m4
@@ -0,0 +1,79 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_avx_xgetbv.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_GCC_X86_AVX_XGETBV
+#
+# DESCRIPTION
+#
+#   On later x86 processors with AVX SIMD support, with gcc or a compiler
+#   that has a compatible syntax for inline assembly instructions, run a
+#   small program that executes the xgetbv instruction with input OP. This
+#   can be used to detect if the OS supports AVX instruction usage.
+#
+#   On output, the values of the eax and edx registers are stored as
+#   hexadecimal strings as "eax:edx" in the cache variable
+#   ax_cv_gcc_x86_avx_xgetbv.
+#
+#   If the xgetbv instruction fails (because you are running a
+#   cross-compiler, or because you are not using gcc, or because you are on
+#   a processor that doesn't have this instruction),
+#   ax_cv_gcc_x86_avx_xgetbv_OP is set to the string "unknown".
+#
+#   This macro mainly exists to be used in AX_EXT.
+#
+# LICENSE
+#
+#   Copyright (c) 2013 Michael Petch <mpetch at capp-sysware.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 1
+
+AC_DEFUN([AX_GCC_X86_AVX_XGETBV],
+[AC_REQUIRE([AC_PROG_CC])
+AC_LANG_PUSH([C])
+AC_CACHE_CHECK(for x86-AVX xgetbv $1 output, ax_cv_gcc_x86_avx_xgetbv_$1,
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
+     int op = $1, eax, edx;
+     FILE *f;
+      /* Opcodes for xgetbv */
+      __asm__(".byte 0x0f, 0x01, 0xd0"
+        : "=a" (eax), "=d" (edx)
+        : "c" (op));
+     f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x\n", eax, edx);
+     fclose(f);
+     return 0;
+])],
+     [ax_cv_gcc_x86_avx_xgetbv_$1=`cat conftest_xgetbv`; rm -f conftest_xgetbv],
+     [ax_cv_gcc_x86_avx_xgetbv_$1=unknown; rm -f conftest_xgetbv],
+     [ax_cv_gcc_x86_avx_xgetbv_$1=unknown])])
+AC_LANG_POP([C])
+])
diff --git a/config/madvise-flags.m4 b/config/madvise-flags.m4
index 1d93762..59a1eca 100644
--- a/config/madvise-flags.m4
+++ b/config/madvise-flags.m4
@@ -30,6 +30,15 @@ AC_COMPILE_IFELSE(
    AC_DEFINE([HAVE_MADVISE_MADV_RANDOM],[1],[Define to 1 if MADV_RANDOM available for madvise])],
   [AC_MSG_RESULT(no)])
 
+AC_MSG_CHECKING(for MADV_SEQUENTIAL in madvise)
+AC_COMPILE_IFELSE(
+  [AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <sys/mman.h>]],
+                   [[int flags = MADV_SEQUENTIAL;]])],
+  [AC_MSG_RESULT(yes)
+   AC_DEFINE([HAVE_MADVISE_MADV_SEQUENTIAL],[1],[Define to 1 if MADV_SEQUENTIAL available for madvise])],
+  [AC_MSG_RESULT(no)])
+
 AC_LANG_RESTORE
 ])
 
diff --git a/config/popcnt.m4 b/config/popcnt.m4
deleted file mode 100644
index cccd84e..0000000
--- a/config/popcnt.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-
-AC_DEFUN([ACX_POPCNT], [
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_LANG_SAVE
-  AC_LANG_C
-
-  POPCNT_CFLAGS=""
-  acx_popcnt_ok=no
-
-  save_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -mpopcnt"
-
-  AC_MSG_CHECKING(whether -mpopcnt compiler flag works)
-  AC_RUN_IFELSE(
-  [AC_LANG_PROGRAM([[#include <stdio.h>
-#include <stdlib.h>]],
-                   [[unsigned int x = rand();
-printf("%08X ",x);
-#ifdef HAVE_BUILTIN_CLZ
-printf("clz=%d ",__builtin_clz(x));
-#endif
-#ifdef HAVE_BUILTIN_CTZ
-printf("ctz=%d ",__builtin_ctz(x));
-#endif
-#ifdef HAVE_BUILTIN_POPCOUNT
-printf("popcount=%d ",__builtin_popcount(x));
-#endif
-]])],
-  [acx_popcnt_ok=yes])
-
-  CFLAGS="$save_CFLAGS"
-
-  AC_MSG_RESULT($acx_popcnt_ok)
-  if test "x$acx_popcnt_ok" = xyes; then
-    POPCNT_CFLAGS="-mpopcnt"
-  fi
-
-  AC_SUBST(POPCNT_CFLAGS)
-
-AC_LANG_RESTORE
-])dnl
-
diff --git a/config/sse2_shift_defect.m4 b/config/sse2_shift_defect.m4
new file mode 100644
index 0000000..17aca56
--- /dev/null
+++ b/config/sse2_shift_defect.m4
@@ -0,0 +1,26 @@
+
+AC_DEFUN([ACX_SSE2_SHIFT_DEFECT], [
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_LANG_SAVE
+  AC_LANG_C
+
+  AC_MSG_CHECKING(compiler is defective and requires an immediate in sse2 shift commands)
+  AC_COMPILE_IFELSE(
+  [AC_LANG_PROGRAM([[#include <stdio.h>
+#include <stdlib.h>
+#include <emmintrin.h>]],
+                   [[int nshift = rand() % 32;
+__m128i shifted;
+shifted = _mm_slli_epi32(_mm_set1_epi32(1),nshift);
+]])],
+  [ax_cv_sse2_shift_defect=no],
+  [ax_cv_sse2_shift_defect=yes])
+
+  AC_MSG_RESULT($ax_cv_sse2_shift_defect)
+  if test "$ax_cv_sse2_shift_defect" = yes; then
+    AC_DEFINE(DEFECTIVE_SSE2_COMPILER,1,[Define to 1 if your compiler is defective and requires an immediate in sse2 shift commands.])
+  fi
+
+AC_LANG_RESTORE
+])dnl
+
diff --git a/configure b/configure
index 281f4a3..77000c1 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for gmap 2013-07-20.
+# Generated by GNU Autoconf 2.63 for gmap 2014-06-10.
 #
 # Report bugs to <Thomas Wu <twu at gene.com>>.
 #
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='gmap'
 PACKAGE_TARNAME='gmap'
-PACKAGE_VERSION='2013-07-20'
-PACKAGE_STRING='gmap 2013-07-20'
+PACKAGE_VERSION='2014-06-10'
+PACKAGE_STRING='gmap 2014-06-10'
 PACKAGE_BUGREPORT='Thomas Wu <twu at gene.com>'
 
 ac_unique_file="src/gmap.c"
@@ -796,7 +796,7 @@ ZLIB_LIBS
 MAX_READLENGTH
 GMAPDB
 SIMD_FLAGS
-POPCNT_CFLAGS
+ALLOCA
 PTHREAD_CFLAGS
 PTHREAD_LIBS
 PTHREAD_CC
@@ -1501,7 +1501,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gmap 2013-07-20 to adapt to many kinds of systems.
+\`configure' configures gmap 2014-06-10 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1572,7 +1572,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gmap 2013-07-20:";;
+     short | recursive ) echo "Configuration of gmap 2014-06-10:";;
    esac
   cat <<\_ACEOF
 
@@ -1627,7 +1627,7 @@ Some influential environment variables:
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
   MAX_READLENGTH
-              Maximum read length for GSNAP (default 250)
+              Maximum read length for GSNAP (default 300)
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1695,7 +1695,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gmap configure 2013-07-20
+gmap configure 2014-06-10
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1709,7 +1709,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gmap $as_me 2013-07-20, which was
+It was created by gmap $as_me 2014-06-10, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2079,8 +2079,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 { $as_echo "$as_me:$LINENO: checking package version" >&5
 $as_echo_n "checking package version... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: 2013-07-20" >&5
-$as_echo "2013-07-20" >&6; }
+{ $as_echo "$as_me:$LINENO: result: 2014-06-10" >&5
+$as_echo "2014-06-10" >&6; }
 
 
 ### Read defaults
@@ -3979,7 +3979,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=gmap
- VERSION=2013-07-20
+ VERSION=2014-06-10
 
 
 cat >>confdefs.h <<_ACEOF
@@ -16029,25 +16029,25 @@ _ACEOF
 #AC_FUNC_REALLOC -- Causes use of rpl_realloc
 #AC_FUNC_CLOSEDIR_VOID -- We are checking return value
 
-{ $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if test "${ac_cv_sys_largefile_source+set}" = set; then
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  while :; do
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
+#include <alloca.h>
 int
 main ()
 {
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
   ;
   return 0;
 }
@@ -16073,31 +16073,65 @@ $as_echo "$ac_try_echo") >&5
 	 test "$cross_compiling" = yes ||
 	 $as_test_x conftest$ac_exeext
        }; then
-  ac_cv_sys_largefile_source=no; break
+  ac_cv_working_alloca_h=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+	ac_cv_working_alloca_h=no
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
 int
 main ()
 {
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+char *p = (char *) alloca (1);
+				    if (p) return 0;
   ;
   return 0;
 }
@@ -16123,207 +16157,118 @@ $as_echo "$ac_try_echo") >&5
 	 test "$cross_compiling" = yes ||
 	 $as_test_x conftest$ac_exeext
        }; then
-  ac_cv_sys_largefile_source=1; break
+  ac_cv_func_alloca_works=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+	ac_cv_func_alloca_works=no
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
-  ac_cv_sys_largefile_source=unknown
-  break
-done
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
-case $ac_cv_sys_largefile_source in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
-;;
-esac
-rm -rf conftest*
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
 
-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
-# in glibc 2.1.3, but that breaks too many other things.
-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-if test $ac_cv_sys_largefile_source != unknown; then
+if test $ac_cv_func_alloca_works = yes; then
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_FSEEKO 1
+#define HAVE_ALLOCA 1
 _ACEOF
 
-fi
-
-
-#AC_FUNC_MMAP        # Checks only private fixed mapping of already-mapped memory
-
-
-{ $as_echo "$as_me:$LINENO: checking whether mmap is enabled" >&5
-$as_echo_n "checking whether mmap is enabled... " >&6; }
-# Check whether --enable-mmap was given.
-if test "${enable_mmap+set}" = set; then
-  enableval=$enable_mmap; answer="$enableval"
 else
-  answer=""
-fi
-
-case x"$answer" in
-     xyes)
-     { $as_echo "$as_me:$LINENO: result: enabled" >&5
-$as_echo "enabled" >&6; }
-
-
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-acx_mmap_fixed_ok=no
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
 
-{ $as_echo "$as_me:$LINENO: checking for working mmap with MAP_FIXED" >&5
-$as_echo_n "checking for working mmap with MAP_FIXED... " >&6; }
 
-        cat >conftest.$ac_ext <<_ACEOF
+{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
 
-/* Thanks to Mike Haertel and Jim Avera for this test.
-   Here is a matrix of mmap possibilities:
-	mmap private not fixed
-	mmap private fixed at somewhere currently unmapped
-	mmap private fixed at somewhere already mapped
-	mmap shared not fixed
-	mmap shared fixed at somewhere currently unmapped
-	mmap shared fixed at somewhere already mapped
-   For private mappings, we should verify that changes cannot be read()
-   back from the file, nor mmap's back from the file at a different
-   address.  (There have been systems where private was not correctly
-   implemented like the infamous i386 svr4.0, and systems where the
-   VM page cache was not coherent with the file system buffer cache
-   like early versions of FreeBSD and possibly contemporary NetBSD.)
-   For shared mappings, we should conversely verify that changes get
-   propagated back to all the places they're supposed to be.
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
 
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
 
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <stdlib.h>
-#include <unistd.h>
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
 
-#if !STDC_HEADERS && !HAVE_STDLIB_H
-char *malloc ();
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
 #endif
 
-/* This mess was copied from the GNU getpagesize.h.  */
-#if !HAVE_GETPAGESIZE
-/* Assume that all systems that can run configure have sys/param.h.  */
-# if !HAVE_SYS_PARAM_H
-#  define HAVE_SYS_PARAM_H 1
-# endif
-
-# ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-#  if HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#   ifdef EXEC_PAGESIZE
-#    define getpagesize() EXEC_PAGESIZE
-#   else /* no EXEC_PAGESIZE */
-#    ifdef NBPG
-#     define getpagesize() NBPG * CLSIZE
-#     ifndef CLSIZE
-#      define CLSIZE 1
-#     endif /* no CLSIZE */
-#    else /* no NBPG */
-#     ifdef NBPC
-#      define getpagesize() NBPC
-#     else /* no NBPC */
-#      ifdef PAGESIZE
-#       define getpagesize() PAGESIZE
-#      endif /* PAGESIZE */
-#     endif /* no NBPC */
-#    endif /* no NBPG */
-#   endif /* no EXEC_PAGESIZE */
-#  else /* no HAVE_SYS_PARAM_H */
-#   define getpagesize() 8192	/* punt totally */
-#  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
+#undef $ac_func
 
-#endif /* no HAVE_GETPAGESIZE */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
 
 int
 main ()
 {
-
-  char *data, *data2, *data3;
-  int i, pagesize;
-  int fd;
-
-  pagesize = getpagesize ();
-
-  /* First, make a file with some known garbage in it. */
-  data = (char *) malloc (pagesize);
-  if (!data)
-    exit (1);
-  for (i = 0; i < pagesize; ++i)
-    *(data + i) = rand ();
-  umask (0);
-  fd = creat ("conftest.mmap", 0600);
-  if (fd < 0)
-    exit (1);
-  if (write (fd, data, pagesize) != pagesize)
-    exit (1);
-  close (fd);
-
-  /* Next, try to mmap the file at a fixed address which already has
-     something else allocated at it.  If we can, also make sure that
-     we see the same garbage.  */
-  fd = open ("conftest.mmap", O_RDWR);
-  if (fd < 0)
-    exit (1);
-  data2 = (char *) malloc (2 * pagesize);
-  if (!data2)
-    exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
-  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
-                     MAP_PRIVATE | MAP_FIXED, fd, 0L))
-    exit (1);
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data2 + i))
-      exit (1);
-
-  /* Finally, make sure that changes to the mapped area do not
-     percolate back to the file as seen by read().  (This is a bug on
-     some variants of i386 svr4.0.)  */
-  for (i = 0; i < pagesize; ++i)
-    *(data2 + i) = *(data2 + i) + 1;
-  data3 = (char *) malloc (pagesize);
-  if (!data3)
-    exit (1);
-  if (read (fd, data3, pagesize) != pagesize)
-    exit (1);
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data3 + i))
-      exit (1);
-  close (fd);
-  exit (0);
-
+return $ac_func ();
   ;
   return 0;
 }
@@ -16349,28 +16294,267 @@ $as_echo "$ac_try_echo") >&5
 	 test "$cross_compiling" = yes ||
 	 $as_test_x conftest$ac_exeext
        }; then
-  acx_mmap_fixed_ok=yes
+  eval "$as_ac_var=yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+	eval "$as_ac_var=no"
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
 
-{ $as_echo "$as_me:$LINENO: result: $acx_mmap_fixed_ok" >&5
-$as_echo "$acx_mmap_fixed_ok" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+    break
+fi
 
-   # Checks fixed mapping
+  done
+fi
+
+{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_stack_direction=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  return find_stack_direction () < 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_stack_direction=1
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_source+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_sys_largefile_source=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGEFILE_SOURCE 1
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_sys_largefile_source=1; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  ac_cv_sys_largefile_source=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
+$as_echo "$ac_cv_sys_largefile_source" >&6; }
+case $ac_cv_sys_largefile_source in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+;;
+esac
+rm -rf conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+if test $ac_cv_sys_largefile_source != unknown; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSEEKO 1
+_ACEOF
+
+fi
+
+
+#AC_FUNC_MMAP        # Checks only private fixed mapping of already-mapped memory
+
+
+{ $as_echo "$as_me:$LINENO: checking whether mmap is enabled" >&5
+$as_echo_n "checking whether mmap is enabled... " >&6; }
+# Check whether --enable-mmap was given.
+if test "${enable_mmap+set}" = set; then
+  enableval=$enable_mmap; answer="$enableval"
+else
+  answer=""
+fi
+
+case x"$answer" in
+     xyes)
+     { $as_echo "$as_me:$LINENO: result: enabled" >&5
+$as_echo "enabled" >&6; }
 
 
 
@@ -16380,10 +16564,10 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-acx_mmap_variable_ok=no
+acx_mmap_fixed_ok=no
 
-{ $as_echo "$as_me:$LINENO: checking for working mmap with MAP_VARIABLE" >&5
-$as_echo_n "checking for working mmap with MAP_VARIABLE... " >&6; }
+{ $as_echo "$as_me:$LINENO: checking for working mmap with MAP_FIXED" >&5
+$as_echo_n "checking for working mmap with MAP_FIXED... " >&6; }
 
         cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -16392,7 +16576,7 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-/* This modified from a test by Mike Haertel and Jim Avera.
+/* Thanks to Mike Haertel and Jim Avera for this test.
    Here is a matrix of mmap possibilities:
 	mmap private not fixed
 	mmap private fixed at somewhere currently unmapped
@@ -16400,7 +16584,6 @@ cat >>conftest.$ac_ext <<_ACEOF
 	mmap shared not fixed
 	mmap shared fixed at somewhere currently unmapped
 	mmap shared fixed at somewhere already mapped
-
    For private mappings, we should verify that changes cannot be read()
    back from the file, nor mmap's back from the file at a different
    address.  (There have been systems where private was not correctly
@@ -16410,9 +16593,10 @@ cat >>conftest.$ac_ext <<_ACEOF
    For shared mappings, we should conversely verify that changes get
    propagated back to all the places they're supposed to be.
 
-   Previous test was designed for grep, which needs private fixed already mapped.
-   We want shared variable.
-*/
+   Grep wants private fixed already mapped.
+   The main things grep needs to know about mmap are:
+   * does it exist and is it safe to write into the mmap'd area
+   * how to use it (BSD variants)  */
 
 #include <fcntl.h>
 #include <sys/mman.h>
@@ -16465,7 +16649,7 @@ main ()
 {
 
   char *data, *data2, *data3;
-  int i, pagesize;
+  size_t i, pagesize;
   int fd;
 
   pagesize = getpagesize ();
@@ -16493,9 +16677,9 @@ main ()
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+  data2 += (pagesize - ((size_t) data2 & (pagesize - 1))) & (pagesize - 1);
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
-                     MAP_PRIVATE | MAP_VARIABLE, fd, 0L))
+                     MAP_PRIVATE | MAP_FIXED, fd, 0L))
     exit (1);
   for (i = 0; i < pagesize; ++i)
     if (*(data + i) != *(data2 + i))
@@ -16542,7 +16726,7 @@ $as_echo "$ac_try_echo") >&5
 	 test "$cross_compiling" = yes ||
 	 $as_test_x conftest$ac_exeext
        }; then
-  acx_mmap_variable_ok=yes
+  acx_mmap_fixed_ok=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -16554,8 +16738,8 @@ rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 
-{ $as_echo "$as_me:$LINENO: result: $acx_mmap_variable_ok" >&5
-$as_echo "$acx_mmap_variable_ok" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $acx_mmap_fixed_ok" >&5
+$as_echo "$acx_mmap_fixed_ok" >&6; }
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -16563,8 +16747,201 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-   # Checks variable mapping
-     ;;
+   # Checks fixed mapping
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+acx_mmap_variable_ok=no
+
+{ $as_echo "$as_me:$LINENO: checking for working mmap with MAP_VARIABLE" >&5
+$as_echo_n "checking for working mmap with MAP_VARIABLE... " >&6; }
+
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* This modified from a test by Mike Haertel and Jim Avera.
+   Here is a matrix of mmap possibilities:
+	mmap private not fixed
+	mmap private fixed at somewhere currently unmapped
+	mmap private fixed at somewhere already mapped
+	mmap shared not fixed
+	mmap shared fixed at somewhere currently unmapped
+	mmap shared fixed at somewhere already mapped
+
+   For private mappings, we should verify that changes cannot be read()
+   back from the file, nor mmap's back from the file at a different
+   address.  (There have been systems where private was not correctly
+   implemented like the infamous i386 svr4.0, and systems where the
+   VM page cache was not coherent with the file system buffer cache
+   like early versions of FreeBSD and possibly contemporary NetBSD.)
+   For shared mappings, we should conversely verify that changes get
+   propagated back to all the places they're supposed to be.
+
+   Previous test was designed for grep, which needs private fixed already mapped.
+   We want shared variable.
+*/
+
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#if !STDC_HEADERS && !HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h.  */
+#if !HAVE_GETPAGESIZE
+/* Assume that all systems that can run configure have sys/param.h.  */
+# if !HAVE_SYS_PARAM_H
+#  define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+#  define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+#  if HAVE_SYS_PARAM_H
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else /* no EXEC_PAGESIZE */
+#    ifdef NBPG
+#     define getpagesize() NBPG * CLSIZE
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif /* no CLSIZE */
+#    else /* no NBPG */
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     else /* no NBPC */
+#      ifdef PAGESIZE
+#       define getpagesize() PAGESIZE
+#      endif /* PAGESIZE */
+#     endif /* no NBPC */
+#    endif /* no NBPG */
+#   endif /* no EXEC_PAGESIZE */
+#  else /* no HAVE_SYS_PARAM_H */
+#   define getpagesize() 8192	/* punt totally */
+#  endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+
+  char *data, *data2, *data3;
+  size_t i, pagesize;
+  int fd;
+
+  pagesize = getpagesize ();
+
+  /* First, make a file with some known garbage in it. */
+  data = (char *) malloc (pagesize);
+  if (!data)
+    exit (1);
+  for (i = 0; i < pagesize; ++i)
+    *(data + i) = rand ();
+  umask (0);
+  fd = creat ("conftest.mmap", 0600);
+  if (fd < 0)
+    exit (1);
+  if (write (fd, data, pagesize) != pagesize)
+    exit (1);
+  close (fd);
+
+  /* Next, try to mmap the file at a fixed address which already has
+     something else allocated at it.  If we can, also make sure that
+     we see the same garbage.  */
+  fd = open ("conftest.mmap", O_RDWR);
+  if (fd < 0)
+    exit (1);
+  data2 = (char *) malloc (2 * pagesize);
+  if (!data2)
+    exit (1);
+  data2 += (pagesize - ((size_t) data2 & (pagesize - 1))) & (pagesize - 1);
+  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+                     MAP_PRIVATE | MAP_VARIABLE, fd, 0L))
+    exit (1);
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data2 + i))
+      exit (1);
+
+  /* Finally, make sure that changes to the mapped area do not
+     percolate back to the file as seen by read().  (This is a bug on
+     some variants of i386 svr4.0.)  */
+  for (i = 0; i < pagesize; ++i)
+    *(data2 + i) = *(data2 + i) + 1;
+  data3 = (char *) malloc (pagesize);
+  if (!data3)
+    exit (1);
+  if (read (fd, data3, pagesize) != pagesize)
+    exit (1);
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data3 + i))
+      exit (1);
+  close (fd);
+  exit (0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  acx_mmap_variable_ok=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+{ $as_echo "$as_me:$LINENO: result: $acx_mmap_variable_ok" >&5
+$as_echo "$acx_mmap_variable_ok" >&6; }
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+   # Checks variable mapping
+     ;;
 
      xno)
      { $as_echo "$as_me:$LINENO: result: disabled" >&5
@@ -16668,7 +17045,7 @@ main ()
 {
 
   char *data, *data2, *data3;
-  int i, pagesize;
+  size_t i, pagesize;
   int fd;
 
   pagesize = getpagesize ();
@@ -16696,7 +17073,7 @@ main ()
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+  data2 += (pagesize - ((size_t) data2 & (pagesize - 1))) & (pagesize - 1);
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
                      MAP_PRIVATE | MAP_FIXED, fd, 0L))
     exit (1);
@@ -16861,7 +17238,7 @@ main ()
 {
 
   char *data, *data2, *data3;
-  int i, pagesize;
+  size_t i, pagesize;
   int fd;
 
   pagesize = getpagesize ();
@@ -16889,7 +17266,7 @@ main ()
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+  data2 += (pagesize - ((size_t) data2 & (pagesize - 1))) & (pagesize - 1);
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
                      MAP_PRIVATE | MAP_VARIABLE, fd, 0L))
     exit (1);
@@ -17429,6 +17806,59 @@ fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+{ $as_echo "$as_me:$LINENO: checking for MADV_SEQUENTIAL in madvise" >&5
+$as_echo_n "checking for MADV_SEQUENTIAL in madvise... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/mman.h>
+int
+main ()
+{
+int flags = MADV_SEQUENTIAL;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MADVISE_MADV_SEQUENTIAL 1
+_ACEOF
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -17888,6 +18318,19 @@ _ACEOF
 fi
 
 
+{ $as_echo "$as_me:$LINENO: checking for popcnt feature" >&5
+$as_echo_n "checking for popcnt feature... " >&6; }
+# Check whether --enable-popcnt was given.
+if test "${enable_popcnt+set}" = set; then
+  enableval=$enable_popcnt; answer="$enableval"
+else
+  answer=""
+fi
+
+case x"$answer" in
+	xyes)
+        { $as_echo "$as_me:$LINENO: result: enabled" >&5
+$as_echo "enabled" >&6; }
 
 
 ac_ext=c
@@ -18114,8 +18557,18 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+	;;
+
+	xno)
+	{ $as_echo "$as_me:$LINENO: result: disabled" >&5
+$as_echo "disabled" >&6; }
+	;;
+
+	x)
+	{ $as_echo "$as_me:$LINENO: result: not specified so enabled by default" >&5
+$as_echo "not specified so enabled by default" >&6; }
+
 
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -18123,9 +18576,18 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ $as_echo "$as_me:$LINENO: checking for bsr instruction in assembly" >&5
-$as_echo_n "checking for bsr instruction in assembly... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
+{ $as_echo "$as_me:$LINENO: checking for __builtin_popcount" >&5
+$as_echo_n "checking for __builtin_popcount... " >&6; }
+if test "$cross_compiling" = yes; then
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18135,86 +18597,58 @@ cat >>conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
-int msb; unsigned int x = rand(); asm("bsr %1,%0" : "=r"(msb) : "r"(x));
+return (__builtin_popcount(0xffffffffu) == 32) ? 0 : 9;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASM_BSR 1
+#define HAVE_BUILTIN_POPCOUNT 1
 _ACEOF
 
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+( exit $ac_status )
+{ $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for popcnt feature" >&5
-$as_echo_n "checking for popcnt feature... " >&6; }
-# Check whether --enable-popcnt was given.
-if test "${enable_popcnt+set}" = set; then
-  enableval=$enable_popcnt; answer="$enableval"
-else
-  answer=""
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
-case x"$answer" in
-	xyes)
-        { $as_echo "$as_me:$LINENO: result: enabled" >&5
-$as_echo "enabled" >&6; }
-
-
-
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
 
-  POPCNT_CFLAGS=""
-  acx_popcnt_ok=no
 
-  save_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -mpopcnt"
-
-  { $as_echo "$as_me:$LINENO: checking whether -mpopcnt compiler flag works" >&5
-$as_echo_n "checking whether -mpopcnt compiler flag works... " >&6; }
-  if test "$cross_compiling" = yes; then
+{ $as_echo "$as_me:$LINENO: checking for __builtin_clz" >&5
+$as_echo_n "checking for __builtin_clz... " >&6; }
+if test "$cross_compiling" = yes; then
   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 { { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
@@ -18229,23 +18663,11 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdio.h>
-#include <stdlib.h>
+
 int
 main ()
 {
-unsigned int x = rand();
-printf("%08X ",x);
-#ifdef HAVE_BUILTIN_CLZ
-printf("clz=%d ",__builtin_clz(x));
-#endif
-#ifdef HAVE_BUILTIN_CTZ
-printf("ctz=%d ",__builtin_ctz(x));
-#endif
-#ifdef HAVE_BUILTIN_POPCOUNT
-printf("popcount=%d ",__builtin_popcount(x));
-#endif
-
+return (__builtin_clz(0x1u) == 31) ? 0 : 9;
   ;
   return 0;
 }
@@ -18272,12 +18694,21 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  acx_popcnt_ok=yes
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BUILTIN_CLZ 1
+_ACEOF
+
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
+( exit $ac_status )
+{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
@@ -18285,52 +18716,9 @@ fi
 
 
 
-  CFLAGS="$save_CFLAGS"
-
-  { $as_echo "$as_me:$LINENO: result: $acx_popcnt_ok" >&5
-$as_echo "$acx_popcnt_ok" >&6; }
-  if test "x$acx_popcnt_ok" = xyes; then
-    POPCNT_CFLAGS="-mpopcnt"
-  fi
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-	;;
-
-	xno)
-	{ $as_echo "$as_me:$LINENO: result: disabled" >&5
-$as_echo "disabled" >&6; }
-	;;
-
-	x)
-	{ $as_echo "$as_me:$LINENO: result: not specified so enabled by default" >&5
-$as_echo "not specified so enabled by default" >&6; }
-
-
-
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-  POPCNT_CFLAGS=""
-  acx_popcnt_ok=no
-
-  save_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -mpopcnt"
-
-  { $as_echo "$as_me:$LINENO: checking whether -mpopcnt compiler flag works" >&5
-$as_echo_n "checking whether -mpopcnt compiler flag works... " >&6; }
-  if test "$cross_compiling" = yes; then
+{ $as_echo "$as_me:$LINENO: checking for __builtin_ctz" >&5
+$as_echo_n "checking for __builtin_ctz... " >&6; }
+if test "$cross_compiling" = yes; then
   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 { { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
@@ -18345,23 +18733,11 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdio.h>
-#include <stdlib.h>
+
 int
 main ()
 {
-unsigned int x = rand();
-printf("%08X ",x);
-#ifdef HAVE_BUILTIN_CLZ
-printf("clz=%d ",__builtin_clz(x));
-#endif
-#ifdef HAVE_BUILTIN_CTZ
-printf("ctz=%d ",__builtin_ctz(x));
-#endif
-#ifdef HAVE_BUILTIN_POPCOUNT
-printf("popcount=%d ",__builtin_popcount(x));
-#endif
-
+return (__builtin_ctz(0x80000000u) == 31) ? 0 : 9;
   ;
   return 0;
 }
@@ -18388,12 +18764,21 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  acx_popcnt_ok=yes
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BUILTIN_CTZ 1
+_ACEOF
+
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
+( exit $ac_status )
+{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
@@ -18401,13 +18786,15 @@ fi
 
 
 
-  CFLAGS="$save_CFLAGS"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 
-  { $as_echo "$as_me:$LINENO: result: $acx_popcnt_ok" >&5
-$as_echo "$acx_popcnt_ok" >&6; }
-  if test "x$acx_popcnt_ok" = xyes; then
-    POPCNT_CFLAGS="-mpopcnt"
-  fi
+	;;
+esac
 
 
 
@@ -18418,8 +18805,64 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-	;;
+{ $as_echo "$as_me:$LINENO: checking for bsr instruction in assembly" >&5
+$as_echo_n "checking for bsr instruction in assembly... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int msb; unsigned int x = rand(); asm("bsr %1,%0" : "=r"(msb) : "r"(x));
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
 esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ASM_BSR 1
+_ACEOF
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 
 
 { $as_echo "$as_me:$LINENO: checking whether sse2 is enabled" >&5
@@ -18451,25 +18894,107 @@ $as_echo "not specified so enabled by default" >&6; }
      ;;
 esac
 
-{ $as_echo "$as_me:$LINENO: checking whether sse4.1 is enabled" >&5
-$as_echo_n "checking whether sse4.1 is enabled... " >&6; }
-# Check whether --enable-sse4.1 was given.
-if test "${enable_sse4_1+set}" = set; then
-  enableval=$enable_sse4_1; answer="$enableval"
-else
-  answer=""
-fi
+ax_cv_sse2_shift_defect=no
+if test "$ax_cv_want_sse2_ext" = yes; then
 
-if test "$ax_cv_want_sse2_ext" = no; then
-   { $as_echo "$as_me:$LINENO: result: disabled because the user disabled sse2" >&5
-$as_echo "disabled because the user disabled sse2" >&6; }
-   ax_cv_want_sse41_ext=no
-else
-    case x"$answer" in
-	 xyes)
-	 { $as_echo "$as_me:$LINENO: result: enabled" >&5
-$as_echo "enabled" >&6; }
-	 ax_cv_want_sse41_ext=yes
+
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:$LINENO: checking compiler is defective and requires an immediate in sse2 shift commands" >&5
+$as_echo_n "checking compiler is defective and requires an immediate in sse2 shift commands... " >&6; }
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+#include <stdlib.h>
+#include <emmintrin.h>
+int
+main ()
+{
+int nshift = rand() % 32;
+__m128i shifted;
+shifted = _mm_slli_epi32(_mm_set1_epi32(1),nshift);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ax_cv_sse2_shift_defect=no
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ax_cv_sse2_shift_defect=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+  { $as_echo "$as_me:$LINENO: result: $ax_cv_sse2_shift_defect" >&5
+$as_echo "$ax_cv_sse2_shift_defect" >&6; }
+  if test "$ax_cv_sse2_shift_defect" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DEFECTIVE_SSE2_COMPILER 1
+_ACEOF
+
+  fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether sse4.1 is enabled" >&5
+$as_echo_n "checking whether sse4.1 is enabled... " >&6; }
+# Check whether --enable-sse4.1 was given.
+if test "${enable_sse4_1+set}" = set; then
+  enableval=$enable_sse4_1; answer="$enableval"
+else
+  answer=""
+fi
+
+if test "$ax_cv_want_sse2_ext" = no; then
+   { $as_echo "$as_me:$LINENO: result: disabled because the user disabled sse2" >&5
+$as_echo "disabled because the user disabled sse2" >&6; }
+   ax_cv_want_sse41_ext=no
+else
+    case x"$answer" in
+	 xyes)
+	 { $as_echo "$as_me:$LINENO: result: enabled" >&5
+$as_echo "enabled" >&6; }
+	 ax_cv_want_sse41_ext=yes
 	 ;;
 
 	 xno)
@@ -18586,6 +19111,93 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86-AVX xgetbv  output" >&5
+$as_echo_n "checking for x86-AVX xgetbv  output... " >&6; }
+if test "${ax_cv_gcc_x86_avx_xgetbv_+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_avx_xgetbv_=unknown
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+
+     int op = , eax, edx;
+     FILE *f;
+      /* Opcodes for xgetbv */
+      __asm__(".byte 0x0f, 0x01, 0xd0"
+        : "=a" (eax), "=d" (edx)
+        : "c" (op));
+     f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x\n", eax, edx);
+     fclose(f);
+     return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_avx_xgetbv_=`cat conftest_xgetbv`; rm -f conftest_xgetbv
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ax_cv_gcc_x86_avx_xgetbv_=unknown; rm -f conftest_xgetbv
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_avx_xgetbv_" >&5
+$as_echo "$ax_cv_gcc_x86_avx_xgetbv_" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
 
 
   case $host_cpu in
@@ -18677,7 +19289,8 @@ fi
     ;;
 
 
-    i[3456]86*|x86_64*)
+    i[3456]86*|x86_64*|amd64*)
+
 
 
 
@@ -18767,8 +19380,13 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-      ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
-      edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+      ecx=0
+      edx=0
+      if test "$ax_cv_gcc_x86_cpuid_0x00000001" != "unknown";
+      then
+        ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
+        edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+      fi
 
       { $as_echo "$as_me:$LINENO: checking whether mmx is enabled and supported" >&5
 $as_echo_n "checking whether mmx is enabled and supported... " >&6; }
@@ -18879,255 +19497,406 @@ fi
 { $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse42_ext" >&5
 $as_echo "$ax_cv_have_sse42_ext" >&6; }
 
-      { $as_echo "$as_me:$LINENO: checking whether avx is enabled and supported" >&5
-$as_echo_n "checking whether avx is enabled and supported... " >&6; }
-if test "${ax_cv_have_avx_ext+set}" = set; then
+      { $as_echo "$as_me:$LINENO: checking whether avx is enabled and supported by processor" >&5
+$as_echo_n "checking whether avx is enabled and supported by processor... " >&6; }
+if test "${ax_cv_have_avx_cpu_ext+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-        ax_cv_have_avx_ext=no
+        ax_cv_have_avx_cpu_ext=no
         if test "$((0x$ecx>>28&0x01))" = 1; then
-          ax_cv_have_avx_ext=yes
+          ax_cv_have_avx_cpu_ext=yes
         fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx_ext" >&5
-$as_echo "$ax_cv_have_avx_ext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx_cpu_ext" >&5
+$as_echo "$ax_cv_have_avx_cpu_ext" >&6; }
 
-      if test "$ax_cv_have_mmx_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mmmx" >&5
-$as_echo_n "checking whether C compiler accepts -mmmx... " >&6; }
-if test "${ax_cv_check_cflags___mmmx+set}" = set; then
+      if test x"$ax_cv_have_avx_cpu_ext" = x"yes"; then
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86-AVX xgetbv 0x00000000 output" >&5
+$as_echo_n "checking for x86-AVX xgetbv 0x00000000 output... " >&6; }
+if test "${ax_cv_gcc_x86_avx_xgetbv_0x00000000+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -mmmx"
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
+#include <stdio.h>
 int
 main ()
 {
 
+     int op = 0x00000000, eax, edx;
+     FILE *f;
+      /* Opcodes for xgetbv */
+      __asm__(".byte 0x0f, 0x01, 0xd0"
+        : "=a" (eax), "=d" (edx)
+        : "c" (op));
+     f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x\n", eax, edx);
+     fclose(f);
+     return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___mmmx=yes
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_avx_xgetbv_0x00000000=`cat conftest_xgetbv`; rm -f conftest_xgetbv
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___mmmx=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+( exit $ac_status )
+ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown; rm -f conftest_xgetbv
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___mmmx" >&5
-$as_echo "$ax_cv_check_cflags___mmmx" >&6; }
-if test x"$ax_cv_check_cflags___mmmx" = xyes; then
-  ax_cv_support_mmx_ext=yes
-else
-  :
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
-        if test x"$ax_cv_support_mmx_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -mmmx"
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&5
+$as_echo "$ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMX 1
-_ACEOF
 
-        else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler?" >&2;}
+
+        xgetbv_eax="0"
+        if test x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then
+          xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1`
         fi
-      fi
 
-      if test "$ax_cv_have_sse_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse" >&5
-$as_echo_n "checking whether C compiler accepts -msse... " >&6; }
-if test "${ax_cv_check_cflags___msse+set}" = set; then
+        { $as_echo "$as_me:$LINENO: checking whether avx is supported by operating system" >&5
+$as_echo_n "checking whether avx is supported by operating system... " >&6; }
+if test "${ax_cv_have_avx_ext+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -msse"
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+          ax_cv_have_avx_ext=no
 
-int
+          if test "$((0x$ecx>>27&0x01))" = 1; then
+            if test "$((0x$xgetbv_eax&0x6))" = 6; then
+              ax_cv_have_avx_ext=yes
+            fi
+          fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx_ext" >&5
+$as_echo "$ax_cv_have_avx_ext" >&6; }
+        if test x"$ax_cv_have_avx_ext" = x"no"; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports AVX, but your operating system doesn't" >&5
+$as_echo "$as_me: WARNING: Your processor supports AVX, but your operating system doesn't" >&2;}
+        fi
+      fi
+
+
+      { $as_echo "$as_me:$LINENO: checking whether popcnt is enabled and supported" >&5
+$as_echo_n "checking whether popcnt is enabled and supported... " >&6; }
+if test "${ax_cv_have_popcnt_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_popcnt_ext=no
+        if test "$((0x$ecx>>23&0x01))" = 1; then
+          ax_cv_have_popcnt_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_popcnt_ext" >&5
+$as_echo "$ax_cv_have_popcnt_ext" >&6; }
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86 cpuid 0x80000001 output" >&5
+$as_echo_n "checking for x86 cpuid 0x80000001 output... " >&6; }
+if test "${ax_cv_gcc_x86_cpuid_0x80000001+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_cpuid_0x80000001=unknown
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
 main ()
 {
 
+     int op = 0x80000001, eax, ebx, ecx, edx;
+     FILE *f;
+      __asm__("cpuid"
+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+        : "a" (op));
+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+     fclose(f);
+     return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___msse=yes
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_cpuid_0x80000001=`cat conftest_cpuid`; rm -f conftest_cpuid
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___msse=no
+( exit $ac_status )
+ax_cv_gcc_x86_cpuid_0x80000001=unknown; rm -f conftest_cpuid
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse" >&5
-$as_echo "$ax_cv_check_cflags___msse" >&6; }
-if test x"$ax_cv_check_cflags___msse" = xyes; then
-  ax_cv_support_sse_ext=yes
-else
-  :
+
+
 fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_cpuid_0x80000001" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_0x80000001" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-        if test x"$ax_cv_support_sse_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -msse"
+      ecx=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 3`
+      edx=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 4`
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SSE 1
-_ACEOF
+      { $as_echo "$as_me:$LINENO: checking whether lzcnt is enabled and supported" >&5
+$as_echo_n "checking whether lzcnt is enabled and supported... " >&6; }
+if test "${ax_cv_have_lzcnt_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
 
-        else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler?" >&2;}
+        ax_cv_have_lzcnt_ext=no
+        if test "$((0x$ecx>>5&0x01))" = 1; then
+          ax_cv_have_lzcnt_ext=yes
         fi
-      fi
 
-      if test "$ax_cv_have_sse2_ext" = yes; then
-	{ $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse2" >&5
-$as_echo_n "checking whether C compiler accepts -msse2... " >&6; }
-if test "${ax_cv_check_cflags___msse2+set}" = set; then
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_lzcnt_ext" >&5
+$as_echo "$ax_cv_have_lzcnt_ext" >&6; }
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86 cpuid 0x00000007 output" >&5
+$as_echo_n "checking for x86 cpuid 0x00000007 output... " >&6; }
+if test "${ax_cv_gcc_x86_cpuid_0x00000007+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -msse2"
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_cpuid_0x00000007=unknown
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
+#include <stdio.h>
 int
 main ()
 {
 
+     int op = 0x00000007, eax, ebx, ecx, edx;
+     FILE *f;
+      __asm__("cpuid"
+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+        : "a" (op));
+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+     fclose(f);
+     return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___msse2=yes
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_cpuid_0x00000007=`cat conftest_cpuid`; rm -f conftest_cpuid
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___msse2=no
+( exit $ac_status )
+ax_cv_gcc_x86_cpuid_0x00000007=unknown; rm -f conftest_cpuid
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse2" >&5
-$as_echo "$ax_cv_check_cflags___msse2" >&6; }
-if test x"$ax_cv_check_cflags___msse2" = xyes; then
-  ax_cv_support_sse2_ext=yes
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_cpuid_0x00000007" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_0x00000007" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+      ebx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 2`
+      ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 3`
+      edx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 4`
+
+      { $as_echo "$as_me:$LINENO: checking whether avx2 is enabled and supported" >&5
+$as_echo_n "checking whether avx2 is enabled and supported... " >&6; }
+if test "${ax_cv_have_avx2_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
 else
-  :
+
+        ax_cv_have_avx2_ext=no
+        if test "$((0x$ebx>>5&0x01))" = 1; then
+          ax_cv_have_avx2_ext=yes
+        fi
+
 fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx2_ext" >&5
+$as_echo "$ax_cv_have_avx2_ext" >&6; }
 
+      { $as_echo "$as_me:$LINENO: checking whether bmi1 is enabled and supported" >&5
+$as_echo_n "checking whether bmi1 is enabled and supported... " >&6; }
+if test "${ax_cv_have_bmi1_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
 
-	if test x"$ax_cv_support_sse2_ext" = x"yes"; then
-	  SIMD_FLAGS="$SIMD_FLAGS -msse2"
+        ax_cv_have_bmi1_ext=no
+        if test "$((0x$ebx>>3&0x01))" = 1; then
+          ax_cv_have_bmi1_ext=yes
+        fi
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SSE2 1
-_ACEOF
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_bmi1_ext" >&5
+$as_echo "$ax_cv_have_bmi1_ext" >&6; }
 
-	else
-	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler?" >&2;}
-	fi
-      fi
+      { $as_echo "$as_me:$LINENO: checking whether bmi2 is enabled and supported" >&5
+$as_echo_n "checking whether bmi2 is enabled and supported... " >&6; }
+if test "${ax_cv_have_bmi2_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
 
-      if test "$ax_cv_have_sse3_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse3" >&5
-$as_echo_n "checking whether C compiler accepts -msse3... " >&6; }
-if test "${ax_cv_check_cflags___msse3+set}" = set; then
+        ax_cv_have_bmi2_ext=no
+        if test "$((0x$ebx>>8&0x01))" = 1; then
+          ax_cv_have_bmi2_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_bmi2_ext" >&5
+$as_echo "$ax_cv_have_bmi2_ext" >&6; }
+
+
+
+      if test "$ax_cv_have_mmx_ext" = yes; then
+        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mmmx" >&5
+$as_echo_n "checking whether C compiler accepts -mmmx... " >&6; }
+if test "${ax_cv_check_cflags___mmmx+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
   ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -msse3"
+  CFLAGS="$CFLAGS  -mmmx"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19161,48 +19930,48 @@ $as_echo "$ac_try_echo") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___msse3=yes
+  ax_cv_check_cflags___mmmx=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___msse3=no
+	ax_cv_check_cflags___mmmx=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS=$ax_check_save_flags
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse3" >&5
-$as_echo "$ax_cv_check_cflags___msse3" >&6; }
-if test x"$ax_cv_check_cflags___msse3" = xyes; then
-  ax_cv_support_sse3_ext=yes
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___mmmx" >&5
+$as_echo "$ax_cv_check_cflags___mmmx" >&6; }
+if test x"$ax_cv_check_cflags___mmmx" = xyes; then
+  ax_cv_support_mmx_ext=yes
 else
   :
 fi
 
 
-        if test x"$ax_cv_support_sse3_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -msse3"
+        if test x"$ax_cv_support_mmx_ext" = x"yes"; then
+          SIMD_FLAGS="$SIMD_FLAGS -mmmx"
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SSE3 1
+#define HAVE_MMX 1
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
-      if test "$ax_cv_have_ssse3_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mssse3" >&5
-$as_echo_n "checking whether C compiler accepts -mssse3... " >&6; }
-if test "${ax_cv_check_cflags___mssse3+set}" = set; then
+      if test "$ax_cv_have_sse_ext" = yes; then
+        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse" >&5
+$as_echo_n "checking whether C compiler accepts -msse... " >&6; }
+if test "${ax_cv_check_cflags___msse+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
   ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -mssse3"
+  CFLAGS="$CFLAGS  -msse"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19236,48 +20005,48 @@ $as_echo "$ac_try_echo") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___mssse3=yes
+  ax_cv_check_cflags___msse=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___mssse3=no
+	ax_cv_check_cflags___msse=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS=$ax_check_save_flags
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___mssse3" >&5
-$as_echo "$ax_cv_check_cflags___mssse3" >&6; }
-if test x"$ax_cv_check_cflags___mssse3" = xyes; then
-  ax_cv_support_ssse3_ext=yes
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse" >&5
+$as_echo "$ax_cv_check_cflags___msse" >&6; }
+if test x"$ax_cv_check_cflags___msse" = xyes; then
+  ax_cv_support_sse_ext=yes
 else
   :
 fi
 
 
-        if test x"$ax_cv_support_ssse3_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -mssse3"
+        if test x"$ax_cv_support_sse_ext" = x"yes"; then
+          SIMD_FLAGS="$SIMD_FLAGS -msse"
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SSSE3 1
+#define HAVE_SSE 1
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
-      if test "$ax_cv_have_sse41_ext" = yes; then
-	{ $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse4.1" >&5
-$as_echo_n "checking whether C compiler accepts -msse4.1... " >&6; }
-if test "${ax_cv_check_cflags___msse4_1+set}" = set; then
+      if test "$ax_cv_have_sse2_ext" = yes; then
+	{ $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse2" >&5
+$as_echo_n "checking whether C compiler accepts -msse2... " >&6; }
+if test "${ax_cv_check_cflags___msse2+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
   ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -msse4.1"
+  CFLAGS="$CFLAGS  -msse2"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19311,48 +20080,48 @@ $as_echo "$ac_try_echo") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___msse4_1=yes
+  ax_cv_check_cflags___msse2=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___msse4_1=no
+	ax_cv_check_cflags___msse2=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS=$ax_check_save_flags
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse4_1" >&5
-$as_echo "$ax_cv_check_cflags___msse4_1" >&6; }
-if test x"$ax_cv_check_cflags___msse4_1" = xyes; then
-  ax_cv_support_sse41_ext=yes
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse2" >&5
+$as_echo "$ax_cv_check_cflags___msse2" >&6; }
+if test x"$ax_cv_check_cflags___msse2" = xyes; then
+  ax_cv_support_sse2_ext=yes
 else
   :
 fi
 
 
-	if test x"$ax_cv_support_sse41_ext" = x"yes"; then
-	  SIMD_FLAGS="$SIMD_FLAGS -msse4.1"
+	if test x"$ax_cv_support_sse2_ext" = x"yes"; then
+	  SIMD_FLAGS="$SIMD_FLAGS -msse2"
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SSE4_1 1
+#define HAVE_SSE2 1
 _ACEOF
 
 	else
-	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler?" >&2;}
+	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
 	fi
       fi
 
-      if test "$ax_cv_have_sse42_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse4.2" >&5
-$as_echo_n "checking whether C compiler accepts -msse4.2... " >&6; }
-if test "${ax_cv_check_cflags___msse4_2+set}" = set; then
+      if test "$ax_cv_have_sse3_ext" = yes; then
+        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse3" >&5
+$as_echo_n "checking whether C compiler accepts -msse3... " >&6; }
+if test "${ax_cv_check_cflags___msse3+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
   ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -msse4.2"
+  CFLAGS="$CFLAGS  -msse3"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19386,48 +20155,48 @@ $as_echo "$ac_try_echo") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___msse4_2=yes
+  ax_cv_check_cflags___msse3=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___msse4_2=no
+	ax_cv_check_cflags___msse3=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS=$ax_check_save_flags
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse4_2" >&5
-$as_echo "$ax_cv_check_cflags___msse4_2" >&6; }
-if test x"$ax_cv_check_cflags___msse4_2" = xyes; then
-  ax_cv_support_sse42_ext=yes
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse3" >&5
+$as_echo "$ax_cv_check_cflags___msse3" >&6; }
+if test x"$ax_cv_check_cflags___msse3" = xyes; then
+  ax_cv_support_sse3_ext=yes
 else
   :
 fi
 
 
-        if test x"$ax_cv_support_sse42_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -msse4.2"
+        if test x"$ax_cv_support_sse3_ext" = x"yes"; then
+          SIMD_FLAGS="$SIMD_FLAGS -msse3"
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_SSE4_2 1
+#define HAVE_SSE3 1
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
-      if test "$ax_cv_have_avx_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mavx" >&5
-$as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
-if test "${ax_cv_check_cflags___mavx+set}" = set; then
+      if test "$ax_cv_have_ssse3_ext" = yes; then
+        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mssse3" >&5
+$as_echo_n "checking whether C compiler accepts -mssse3... " >&6; }
+if test "${ax_cv_check_cflags___mssse3+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
   ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -mavx"
+  CFLAGS="$CFLAGS  -mssse3"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19461,89 +20230,123 @@ $as_echo "$ac_try_echo") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___mavx=yes
+  ax_cv_check_cflags___mssse3=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___mavx=no
+	ax_cv_check_cflags___mssse3=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS=$ax_check_save_flags
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___mavx" >&5
-$as_echo "$ax_cv_check_cflags___mavx" >&6; }
-if test x"$ax_cv_check_cflags___mavx" = xyes; then
-  ax_cv_support_avx_ext=yes
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___mssse3" >&5
+$as_echo "$ax_cv_check_cflags___mssse3" >&6; }
+if test x"$ax_cv_check_cflags___mssse3" = xyes; then
+  ax_cv_support_ssse3_ext=yes
 else
   :
 fi
 
 
-        if test x"$ax_cv_support_avx_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -mavx"
+        if test x"$ax_cv_support_ssse3_ext" = x"yes"; then
+          SIMD_FLAGS="$SIMD_FLAGS -mssse3"
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_AVX 1
+#define HAVE_SSSE3 1
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
-  ;;
-  esac
-
-
-   # Sets SIMD_FLAGS, and HAVE_ALTIVEC,HAVE_MMX,HAVE_SSE,HAVE_SSE2,HAVE_SSE3,HAVE_SSSE3,HAVE_SSE4_1,HAVE_SSE4_2,HAVE_AVX
-     ;;
-
-     xno)
-     { $as_echo "$as_me:$LINENO: result: disabled" >&5
-$as_echo "disabled" >&6; }
-     ;;
-
-     x)
-     { $as_echo "$as_me:$LINENO: result: not specified so enabled by default" >&5
-$as_echo "not specified so enabled by default" >&6; }
+      if test "$ax_cv_have_sse41_ext" = yes; then
+	{ $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse4.1" >&5
+$as_echo_n "checking whether C compiler accepts -msse4.1... " >&6; }
+if test "${ax_cv_check_cflags___msse4_1+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
 
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS  -msse4.1"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
-  case $host_cpu in
-    powerpc*)
-      { $as_echo "$as_me:$LINENO: checking whether altivec is enabled and supported" >&5
-$as_echo_n "checking whether altivec is enabled and supported... " >&6; }
-if test "${ax_cv_have_altivec_ext+set}" = set; then
-  $as_echo_n "(cached) " >&6
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ax_cv_check_cflags___msse4_1=yes
 else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-            if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then
-                if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then
-                  ax_cv_have_altivec_ext=yes
-                fi
-            fi
+	ax_cv_check_cflags___msse4_1=no
+fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse4_1" >&5
+$as_echo "$ax_cv_check_cflags___msse4_1" >&6; }
+if test x"$ax_cv_check_cflags___msse4_1" = xyes; then
+  ax_cv_support_sse41_ext=yes
+else
+  :
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_altivec_ext" >&5
-$as_echo "$ax_cv_have_altivec_ext" >&6; }
 
-          if test "$ax_cv_have_altivec_ext" = yes; then
+
+	if test x"$ax_cv_support_sse41_ext" = x"yes"; then
+	  SIMD_FLAGS="$SIMD_FLAGS -msse4.1"
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALTIVEC 1
+#define HAVE_SSE4_1 1
 _ACEOF
 
-            { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -faltivec" >&5
-$as_echo_n "checking whether C compiler accepts -faltivec... " >&6; }
-if test "${ax_cv_check_cflags___faltivec+set}" = set; then
+	else
+	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
+	fi
+      fi
+
+      if test "$ax_cv_have_sse42_ext" = yes; then
+        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -msse4.2" >&5
+$as_echo_n "checking whether C compiler accepts -msse4.2... " >&6; }
+if test "${ax_cv_check_cflags___msse4_2+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
   ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -faltivec"
+  CFLAGS="$CFLAGS  -msse4.2"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19559,50 +20362,817 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ax_cv_check_cflags___msse4_2=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ax_cv_check_cflags___msse4_2=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___msse4_2" >&5
+$as_echo "$ax_cv_check_cflags___msse4_2" >&6; }
+if test x"$ax_cv_check_cflags___msse4_2" = xyes; then
+  ax_cv_support_sse42_ext=yes
+else
+  :
+fi
+
+
+        if test x"$ax_cv_support_sse42_ext" = x"yes"; then
+          SIMD_FLAGS="$SIMD_FLAGS -msse4.2"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SSE4_2 1
+_ACEOF
+
+        else
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
+        fi
+      fi
+
+      { $as_echo "$as_me:$LINENO: checking for immintrin.h header file" >&5
+$as_echo_n "checking for immintrin.h header file... " >&6; }
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <immintrin.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ax_cv_have_immintrin_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+
+      if test x"$a_cv_have_immintrin_h" = x"yes"; then
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+        if test "$ax_cv_have_avx_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mavx" >&5
+$as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
+if test "${ax_cv_check_cflags___mavx+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS  -mavx"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ax_cv_check_cflags___mavx=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ax_cv_check_cflags___mavx=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___mavx" >&5
+$as_echo "$ax_cv_check_cflags___mavx" >&6; }
+if test x"$ax_cv_check_cflags___mavx" = xyes; then
+  ax_cv_support_avx_ext=yes
+else
+  :
+fi
+
+
+          if test x"$ax_cv_support_avx_ext" = x"yes"; then
+            SIMD_FLAGS="$SIMD_FLAGS -mavx"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_AVX 1
+_ACEOF
+
+          else
+            { $as_echo "$as_me:$LINENO: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
+          fi
+        fi
+
+        if test "$ax_cv_have_popcnt_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_POPCNT 1
+_ACEOF
+
+        fi
+
+        if test "$ax_cv_have_lzcnt_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LZCNT 1
+_ACEOF
+
+        fi
+
+        if test "$ax_cv_have_bmi1_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BMI1 1
+_ACEOF
+
+        fi
+      else
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+        if test "$ax_cv_have_avx_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports AVX but your compiler cannot find immintrin.h.  Will not use AVX." >&5
+$as_echo "$as_me: WARNING: Your processor supports AVX but your compiler cannot find immintrin.h.  Will not use AVX." >&2;}
+        fi
+
+        if test "$ax_cv_have_popcnt_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports _popcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&5
+$as_echo "$as_me: WARNING: Your processor supports _popcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&2;}
+        fi
+        if test "$ax_cv_have_lzcnt_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports _lzcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&5
+$as_echo "$as_me: WARNING: Your processor supports _lzcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&2;}
+        fi
+        if test "$ax_cv_have_bmi1_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports bmi instructions but your compiler cannot find immintrin.h.  Will try another method." >&5
+$as_echo "$as_me: WARNING: Your processor supports bmi instructions but your compiler cannot find immintrin.h.  Will try another method." >&2;}
+        fi
+      fi
+
+      if test "$ax_cv_have_bmi2_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BMI2 1
+_ACEOF
+
+      fi
+
+#      if test "$ax_cv_have_avx2_ext" = yes; then
+#        AX_CHECK_COMPILE_FLAG(-mavx2, ax_cv_support_avx2_ext=yes, [])
+#        if test x"$ax_cv_support_avx2_ext" = x"yes"; then
+#          SIMD_FLAGS="$SIMD_FLAGS -mavx2"
+#          AC_DEFINE(HAVE_AVX2,1,[Define to 1 if you support AVX2 (Advanced Vector Extensions 2) instructions])
+#        else
+#          AC_MSG_WARN([Your processor supports avx2 instructions but not your compiler.  Can you try another compiler or update yours?])
+#        fi
+#      fi
+
+  ;;
+  esac
+
+
+   # Sets SIMD_FLAGS, and HAVE_ALTIVEC,HAVE_MMX,HAVE_SSE,HAVE_SSE2,HAVE_SSE3,HAVE_SSSE3,HAVE_SSE4_1,HAVE_SSE4_2,HAVE_AVX
+     ;;
+
+     xno)
+     { $as_echo "$as_me:$LINENO: result: disabled" >&5
+$as_echo "disabled" >&6; }
+     ;;
+
+     x)
+     { $as_echo "$as_me:$LINENO: result: not specified so enabled by default" >&5
+$as_echo "not specified so enabled by default" >&6; }
+
+
+
+  case $host_cpu in
+    powerpc*)
+      { $as_echo "$as_me:$LINENO: checking whether altivec is enabled and supported" >&5
+$as_echo_n "checking whether altivec is enabled and supported... " >&6; }
+if test "${ax_cv_have_altivec_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+            if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then
+                if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then
+                  ax_cv_have_altivec_ext=yes
+                fi
+            fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_altivec_ext" >&5
+$as_echo "$ax_cv_have_altivec_ext" >&6; }
+
+          if test "$ax_cv_have_altivec_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALTIVEC 1
+_ACEOF
+
+            { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -faltivec" >&5
+$as_echo_n "checking whether C compiler accepts -faltivec... " >&6; }
+if test "${ax_cv_check_cflags___faltivec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS  -faltivec"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ax_cv_check_cflags___faltivec=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ax_cv_check_cflags___faltivec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___faltivec" >&5
+$as_echo "$ax_cv_check_cflags___faltivec" >&6; }
+if test x"$ax_cv_check_cflags___faltivec" = xyes; then
+  SIMD_FLAGS="$SIMD_FLAGS -faltivec"
+else
+  :
+fi
+
+
+          fi
+    ;;
+
+
+    i[3456]86*|x86_64*|amd64*)
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86 cpuid 0x00000001 output" >&5
+$as_echo_n "checking for x86 cpuid 0x00000001 output... " >&6; }
+if test "${ax_cv_gcc_x86_cpuid_0x00000001+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_cpuid_0x00000001=unknown
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+
+     int op = 0x00000001, eax, ebx, ecx, edx;
+     FILE *f;
+      __asm__("cpuid"
+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+        : "a" (op));
+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+     fclose(f);
+     return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_cpuid_0x00000001=`cat conftest_cpuid`; rm -f conftest_cpuid
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ax_cv_gcc_x86_cpuid_0x00000001=unknown; rm -f conftest_cpuid
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_cpuid_0x00000001" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_0x00000001" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+      ecx=0
+      edx=0
+      if test "$ax_cv_gcc_x86_cpuid_0x00000001" != "unknown";
+      then
+        ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
+        edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+      fi
+
+      { $as_echo "$as_me:$LINENO: checking whether mmx is enabled and supported" >&5
+$as_echo_n "checking whether mmx is enabled and supported... " >&6; }
+if test "${ax_cv_have_mmx_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_mmx_ext=no
+        if test "$((0x$edx>>23&0x01))" = 1; then
+          ax_cv_have_mmx_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_mmx_ext" >&5
+$as_echo "$ax_cv_have_mmx_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether sse is enabled and supported" >&5
+$as_echo_n "checking whether sse is enabled and supported... " >&6; }
+if test "${ax_cv_have_sse_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_sse_ext=no
+        if test "$((0x$edx>>25&0x01))" = 1; then
+          ax_cv_have_sse_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse_ext" >&5
+$as_echo "$ax_cv_have_sse_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether sse2 is enabled and supported" >&5
+$as_echo_n "checking whether sse2 is enabled and supported... " >&6; }
+if test "${ax_cv_have_sse2_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_sse2_ext=no
+        if test "$ax_cv_want_sse2_ext" = yes; then
+          if test "$((0x$edx>>26&0x01))" = 1; then
+            ax_cv_have_sse2_ext=yes
+          fi
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse2_ext" >&5
+$as_echo "$ax_cv_have_sse2_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether sse3 is enabled and supported" >&5
+$as_echo_n "checking whether sse3 is enabled and supported... " >&6; }
+if test "${ax_cv_have_sse3_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_sse3_ext=no
+        if test "$((0x$ecx&0x01))" = 1; then
+          ax_cv_have_sse3_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse3_ext" >&5
+$as_echo "$ax_cv_have_sse3_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether ssse3 is enabled and supported" >&5
+$as_echo_n "checking whether ssse3 is enabled and supported... " >&6; }
+if test "${ax_cv_have_ssse3_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_ssse3_ext=no
+        if test "$((0x$ecx>>9&0x01))" = 1; then
+          ax_cv_have_ssse3_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_ssse3_ext" >&5
+$as_echo "$ax_cv_have_ssse3_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether sse4.1 is enabled and supported" >&5
+$as_echo_n "checking whether sse4.1 is enabled and supported... " >&6; }
+if test "${ax_cv_have_sse41_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_sse41_ext=no
+        if test "$ax_cv_want_sse41_ext" = yes; then
+          if test "$((0x$ecx>>19&0x01))" = 1; then
+            ax_cv_have_sse41_ext=yes
+          fi
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse41_ext" >&5
+$as_echo "$ax_cv_have_sse41_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether sse4.2 is enabled and supported" >&5
+$as_echo_n "checking whether sse4.2 is enabled and supported... " >&6; }
+if test "${ax_cv_have_sse42_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_sse42_ext=no
+        if test "$((0x$ecx>>20&0x01))" = 1; then
+          ax_cv_have_sse42_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse42_ext" >&5
+$as_echo "$ax_cv_have_sse42_ext" >&6; }
+
+      { $as_echo "$as_me:$LINENO: checking whether avx is enabled and supported by processor" >&5
+$as_echo_n "checking whether avx is enabled and supported by processor... " >&6; }
+if test "${ax_cv_have_avx_cpu_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_avx_cpu_ext=no
+        if test "$((0x$ecx>>28&0x01))" = 1; then
+          ax_cv_have_avx_cpu_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx_cpu_ext" >&5
+$as_echo "$ax_cv_have_avx_cpu_ext" >&6; }
+
+      if test x"$ax_cv_have_avx_cpu_ext" = x"yes"; then
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86-AVX xgetbv 0x00000000 output" >&5
+$as_echo_n "checking for x86-AVX xgetbv 0x00000000 output... " >&6; }
+if test "${ax_cv_gcc_x86_avx_xgetbv_0x00000000+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+
+     int op = 0x00000000, eax, edx;
+     FILE *f;
+      /* Opcodes for xgetbv */
+      __asm__(".byte 0x0f, 0x01, 0xd0"
+        : "=a" (eax), "=d" (edx)
+        : "c" (op));
+     f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x\n", eax, edx);
+     fclose(f);
+     return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_avx_xgetbv_0x00000000=`cat conftest_xgetbv`; rm -f conftest_xgetbv
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown; rm -f conftest_xgetbv
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&5
+$as_echo "$ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+        xgetbv_eax="0"
+        if test x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then
+          xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1`
+        fi
+
+        { $as_echo "$as_me:$LINENO: checking whether avx is supported by operating system" >&5
+$as_echo_n "checking whether avx is supported by operating system... " >&6; }
+if test "${ax_cv_have_avx_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+          ax_cv_have_avx_ext=no
+
+          if test "$((0x$ecx>>27&0x01))" = 1; then
+            if test "$((0x$xgetbv_eax&0x6))" = 6; then
+              ax_cv_have_avx_ext=yes
+            fi
+          fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx_ext" >&5
+$as_echo "$ax_cv_have_avx_ext" >&6; }
+        if test x"$ax_cv_have_avx_ext" = x"no"; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports AVX, but your operating system doesn't" >&5
+$as_echo "$as_me: WARNING: Your processor supports AVX, but your operating system doesn't" >&2;}
+        fi
+      fi
+
+
+      { $as_echo "$as_me:$LINENO: checking whether popcnt is enabled and supported" >&5
+$as_echo_n "checking whether popcnt is enabled and supported... " >&6; }
+if test "${ax_cv_have_popcnt_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        ax_cv_have_popcnt_ext=no
+        if test "$((0x$ecx>>23&0x01))" = 1; then
+          ax_cv_have_popcnt_ext=yes
+        fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_popcnt_ext" >&5
+$as_echo "$ax_cv_have_popcnt_ext" >&6; }
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:$LINENO: checking for x86 cpuid 0x80000001 output" >&5
+$as_echo_n "checking for x86 cpuid 0x80000001 output... " >&6; }
+if test "${ax_cv_gcc_x86_cpuid_0x80000001+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ax_cv_gcc_x86_cpuid_0x80000001=unknown
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+
+     int op = 0x80000001, eax, ebx, ecx, edx;
+     FILE *f;
+      __asm__("cpuid"
+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+        : "a" (op));
+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+     fclose(f);
+     return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ax_cv_check_cflags___faltivec=yes
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ax_cv_gcc_x86_cpuid_0x80000001=`cat conftest_cpuid`; rm -f conftest_cpuid
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ax_cv_check_cflags___faltivec=no
+( exit $ac_status )
+ax_cv_gcc_x86_cpuid_0x80000001=unknown; rm -f conftest_cpuid
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_check_cflags___faltivec" >&5
-$as_echo "$ax_cv_check_cflags___faltivec" >&6; }
-if test x"$ax_cv_check_cflags___faltivec" = xyes; then
-  SIMD_FLAGS="$SIMD_FLAGS -faltivec"
-else
-  :
+
+
 fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_cpuid_0x80000001" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_0x80000001" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-          fi
-    ;;
+      ecx=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 3`
+      edx=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 4`
 
+      { $as_echo "$as_me:$LINENO: checking whether lzcnt is enabled and supported" >&5
+$as_echo_n "checking whether lzcnt is enabled and supported... " >&6; }
+if test "${ax_cv_have_lzcnt_ext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
 
-    i[3456]86*|x86_64*)
+        ax_cv_have_lzcnt_ext=no
+        if test "$((0x$ecx>>5&0x01))" = 1; then
+          ax_cv_have_lzcnt_ext=yes
+        fi
 
+fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_lzcnt_ext" >&5
+$as_echo "$ax_cv_have_lzcnt_ext" >&6; }
 
 
 
@@ -19612,13 +21182,13 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-{ $as_echo "$as_me:$LINENO: checking for x86 cpuid 0x00000001 output" >&5
-$as_echo_n "checking for x86 cpuid 0x00000001 output... " >&6; }
-if test "${ax_cv_gcc_x86_cpuid_0x00000001+set}" = set; then
+{ $as_echo "$as_me:$LINENO: checking for x86 cpuid 0x00000007 output" >&5
+$as_echo_n "checking for x86 cpuid 0x00000007 output... " >&6; }
+if test "${ax_cv_gcc_x86_cpuid_0x00000007+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then
-  ax_cv_gcc_x86_cpuid_0x00000001=unknown
+  ax_cv_gcc_x86_cpuid_0x00000007=unknown
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -19631,7 +21201,7 @@ int
 main ()
 {
 
-     int op = 0x00000001, eax, ebx, ecx, edx;
+     int op = 0x00000007, eax, ebx, ecx, edx;
      FILE *f;
       __asm__("cpuid"
         : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
@@ -19667,14 +21237,14 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ax_cv_gcc_x86_cpuid_0x00000001=`cat conftest_cpuid`; rm -f conftest_cpuid
+  ax_cv_gcc_x86_cpuid_0x00000007=`cat conftest_cpuid`; rm -f conftest_cpuid
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-ax_cv_gcc_x86_cpuid_0x00000001=unknown; rm -f conftest_cpuid
+ax_cv_gcc_x86_cpuid_0x00000007=unknown; rm -f conftest_cpuid
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
@@ -19682,8 +21252,8 @@ fi
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_cpuid_0x00000001" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0x00000001" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_gcc_x86_cpuid_0x00000007" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_0x00000007" >&6; }
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -19691,132 +21261,56 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-      ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
-      edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+      ebx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 2`
+      ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 3`
+      edx=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 4`
 
-      { $as_echo "$as_me:$LINENO: checking whether mmx is enabled and supported" >&5
-$as_echo_n "checking whether mmx is enabled and supported... " >&6; }
-if test "${ax_cv_have_mmx_ext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-        ax_cv_have_mmx_ext=no
-        if test "$((0x$edx>>23&0x01))" = 1; then
-          ax_cv_have_mmx_ext=yes
-        fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_mmx_ext" >&5
-$as_echo "$ax_cv_have_mmx_ext" >&6; }
-
-      { $as_echo "$as_me:$LINENO: checking whether sse is enabled and supported" >&5
-$as_echo_n "checking whether sse is enabled and supported... " >&6; }
-if test "${ax_cv_have_sse_ext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-        ax_cv_have_sse_ext=no
-        if test "$((0x$edx>>25&0x01))" = 1; then
-          ax_cv_have_sse_ext=yes
-        fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse_ext" >&5
-$as_echo "$ax_cv_have_sse_ext" >&6; }
-
-      { $as_echo "$as_me:$LINENO: checking whether sse2 is enabled and supported" >&5
-$as_echo_n "checking whether sse2 is enabled and supported... " >&6; }
-if test "${ax_cv_have_sse2_ext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-        ax_cv_have_sse2_ext=no
-        if test "$ax_cv_want_sse2_ext" = yes; then
-          if test "$((0x$edx>>26&0x01))" = 1; then
-            ax_cv_have_sse2_ext=yes
-          fi
-        fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse2_ext" >&5
-$as_echo "$ax_cv_have_sse2_ext" >&6; }
-
-      { $as_echo "$as_me:$LINENO: checking whether sse3 is enabled and supported" >&5
-$as_echo_n "checking whether sse3 is enabled and supported... " >&6; }
-if test "${ax_cv_have_sse3_ext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-        ax_cv_have_sse3_ext=no
-        if test "$((0x$ecx&0x01))" = 1; then
-          ax_cv_have_sse3_ext=yes
-        fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse3_ext" >&5
-$as_echo "$ax_cv_have_sse3_ext" >&6; }
-
-      { $as_echo "$as_me:$LINENO: checking whether ssse3 is enabled and supported" >&5
-$as_echo_n "checking whether ssse3 is enabled and supported... " >&6; }
-if test "${ax_cv_have_ssse3_ext+set}" = set; then
+      { $as_echo "$as_me:$LINENO: checking whether avx2 is enabled and supported" >&5
+$as_echo_n "checking whether avx2 is enabled and supported... " >&6; }
+if test "${ax_cv_have_avx2_ext+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-        ax_cv_have_ssse3_ext=no
-        if test "$((0x$ecx>>9&0x01))" = 1; then
-          ax_cv_have_ssse3_ext=yes
+        ax_cv_have_avx2_ext=no
+        if test "$((0x$ebx>>5&0x01))" = 1; then
+          ax_cv_have_avx2_ext=yes
         fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_ssse3_ext" >&5
-$as_echo "$ax_cv_have_ssse3_ext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx2_ext" >&5
+$as_echo "$ax_cv_have_avx2_ext" >&6; }
 
-      { $as_echo "$as_me:$LINENO: checking whether sse4.1 is enabled and supported" >&5
-$as_echo_n "checking whether sse4.1 is enabled and supported... " >&6; }
-if test "${ax_cv_have_sse41_ext+set}" = set; then
+      { $as_echo "$as_me:$LINENO: checking whether bmi1 is enabled and supported" >&5
+$as_echo_n "checking whether bmi1 is enabled and supported... " >&6; }
+if test "${ax_cv_have_bmi1_ext+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-        ax_cv_have_sse41_ext=no
-        if test "$ax_cv_want_sse41_ext" = yes; then
-          if test "$((0x$ecx>>19&0x01))" = 1; then
-            ax_cv_have_sse41_ext=yes
-          fi
+        ax_cv_have_bmi1_ext=no
+        if test "$((0x$ebx>>3&0x01))" = 1; then
+          ax_cv_have_bmi1_ext=yes
         fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse41_ext" >&5
-$as_echo "$ax_cv_have_sse41_ext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_bmi1_ext" >&5
+$as_echo "$ax_cv_have_bmi1_ext" >&6; }
 
-      { $as_echo "$as_me:$LINENO: checking whether sse4.2 is enabled and supported" >&5
-$as_echo_n "checking whether sse4.2 is enabled and supported... " >&6; }
-if test "${ax_cv_have_sse42_ext+set}" = set; then
+      { $as_echo "$as_me:$LINENO: checking whether bmi2 is enabled and supported" >&5
+$as_echo_n "checking whether bmi2 is enabled and supported... " >&6; }
+if test "${ax_cv_have_bmi2_ext+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-        ax_cv_have_sse42_ext=no
-        if test "$((0x$ecx>>20&0x01))" = 1; then
-          ax_cv_have_sse42_ext=yes
+        ax_cv_have_bmi2_ext=no
+        if test "$((0x$ebx>>8&0x01))" = 1; then
+          ax_cv_have_bmi2_ext=yes
         fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_sse42_ext" >&5
-$as_echo "$ax_cv_have_sse42_ext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_bmi2_ext" >&5
+$as_echo "$ax_cv_have_bmi2_ext" >&6; }
 
-      { $as_echo "$as_me:$LINENO: checking whether avx is enabled and supported" >&5
-$as_echo_n "checking whether avx is enabled and supported... " >&6; }
-if test "${ax_cv_have_avx_ext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-        ax_cv_have_avx_ext=no
-        if test "$((0x$ecx>>28&0x01))" = 1; then
-          ax_cv_have_avx_ext=yes
-        fi
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $ax_cv_have_avx_ext" >&5
-$as_echo "$ax_cv_have_avx_ext" >&6; }
 
       if test "$ax_cv_have_mmx_ext" = yes; then
         { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mmmx" >&5
@@ -19888,8 +21382,8 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports mmx instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
@@ -19963,8 +21457,8 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
@@ -20038,8 +21532,8 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 	else
-	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler?" >&2;}
+	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse2 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
 	fi
       fi
 
@@ -20113,8 +21607,8 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
@@ -20188,8 +21682,8 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports ssse3 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
@@ -20263,8 +21757,8 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 	else
-	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler?" >&2;}
+	  { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse4.1 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
 	fi
       fi
 
@@ -20338,13 +21832,68 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
         else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler?" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports sse4.2 instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
         fi
       fi
 
-      if test "$ax_cv_have_avx_ext" = yes; then
-        { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mavx" >&5
+      { $as_echo "$as_me:$LINENO: checking for immintrin.h header file" >&5
+$as_echo_n "checking for immintrin.h header file... " >&6; }
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <immintrin.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ax_cv_have_immintrin_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+
+      if test x"$a_cv_have_immintrin_h" = x"yes"; then
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+        if test "$ax_cv_have_avx_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: checking whether C compiler accepts -mavx" >&5
 $as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
 if test "${ax_cv_check_cflags___mavx+set}" = set; then
   $as_echo_n "(cached) " >&6
@@ -20405,19 +21954,82 @@ else
 fi
 
 
-        if test x"$ax_cv_support_avx_ext" = x"yes"; then
-          SIMD_FLAGS="$SIMD_FLAGS -mavx"
+          if test x"$ax_cv_support_avx_ext" = x"yes"; then
+            SIMD_FLAGS="$SIMD_FLAGS -mavx"
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_AVX 1
 _ACEOF
 
-        else
-          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler?" >&5
-$as_echo "$as_me: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler?" >&2;}
+          else
+            { $as_echo "$as_me:$LINENO: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler or update yours?" >&5
+$as_echo "$as_me: WARNING: Your processor supports avx instructions but not your compiler.  Can you try another compiler or update yours?" >&2;}
+          fi
+        fi
+
+        if test "$ax_cv_have_popcnt_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_POPCNT 1
+_ACEOF
+
+        fi
+
+        if test "$ax_cv_have_lzcnt_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LZCNT 1
+_ACEOF
+
         fi
+
+        if test "$ax_cv_have_bmi1_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BMI1 1
+_ACEOF
+
+        fi
+      else
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+        if test "$ax_cv_have_avx_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports AVX but your compiler cannot find immintrin.h.  Will not use AVX." >&5
+$as_echo "$as_me: WARNING: Your processor supports AVX but your compiler cannot find immintrin.h.  Will not use AVX." >&2;}
+        fi
+
+        if test "$ax_cv_have_popcnt_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports _popcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&5
+$as_echo "$as_me: WARNING: Your processor supports _popcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&2;}
+        fi
+        if test "$ax_cv_have_lzcnt_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports _lzcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&5
+$as_echo "$as_me: WARNING: Your processor supports _lzcnt instructions but your compiler cannot find immintrin.h.  Will try another method." >&2;}
+        fi
+        if test "$ax_cv_have_bmi1_ext" = yes; then
+          { $as_echo "$as_me:$LINENO: WARNING: Your processor supports bmi instructions but your compiler cannot find immintrin.h.  Will try another method." >&5
+$as_echo "$as_me: WARNING: Your processor supports bmi instructions but your compiler cannot find immintrin.h.  Will try another method." >&2;}
+        fi
+      fi
+
+      if test "$ax_cv_have_bmi2_ext" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BMI2 1
+_ACEOF
+
       fi
 
+#      if test "$ax_cv_have_avx2_ext" = yes; then
+#        AX_CHECK_COMPILE_FLAG(-mavx2, ax_cv_support_avx2_ext=yes, [])
+#        if test x"$ax_cv_support_avx2_ext" = x"yes"; then
+#          SIMD_FLAGS="$SIMD_FLAGS -mavx2"
+#          AC_DEFINE(HAVE_AVX2,1,[Define to 1 if you support AVX2 (Advanced Vector Extensions 2) instructions])
+#        else
+#          AC_MSG_WARN([Your processor supports avx2 instructions but not your compiler.  Can you try another compiler or update yours?])
+#        fi
+#      fi
+
   ;;
   esac
 
@@ -20481,7 +22093,7 @@ $as_echo_n "checking MAX_READLENGTH... " >&6; }
 if test x"$MAX_READLENGTH" = x; then
 
   EXP_VAR=MAX_READLENGTH
-  FROM_VAR='250'
+  FROM_VAR='300'
 
     prefix_save=$prefix
   exec_prefix_save=$exec_prefix
@@ -21584,8 +23196,6 @@ ac_config_files="$ac_config_files util/gmap_uncompress.pl"
 
 ac_config_files="$ac_config_files util/gmap_process.pl"
 
-ac_config_files="$ac_config_files util/gmap_setup.pl"
-
 ac_config_files="$ac_config_files util/gmap_build.pl"
 
 ac_config_files="$ac_config_files util/gmap_reassemble.pl"
@@ -21600,6 +23210,8 @@ ac_config_files="$ac_config_files util/psl_introns.pl"
 
 ac_config_files="$ac_config_files util/psl_genes.pl"
 
+ac_config_files="$ac_config_files util/ensembl_genes.pl"
+
 ac_config_files="$ac_config_files util/gtf_splicesites.pl"
 
 ac_config_files="$ac_config_files util/gtf_introns.pl"
@@ -21614,6 +23226,8 @@ ac_config_files="$ac_config_files util/gff3_genes.pl"
 
 ac_config_files="$ac_config_files util/dbsnp_iit.pl"
 
+ac_config_files="$ac_config_files util/gvf_iit.pl"
+
 ac_config_files="$ac_config_files util/vcf_iit.pl"
 
 ac_config_files="$ac_config_files tests/Makefile"
@@ -22075,7 +23689,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gmap $as_me 2013-07-20, which was
+This file was extended by gmap $as_me 2014-06-10, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22138,7 +23752,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-gmap config.status 2013-07-20
+gmap config.status 2014-06-10
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -22525,7 +24139,6 @@ do
     "util/gmap_compress.pl") CONFIG_FILES="$CONFIG_FILES util/gmap_compress.pl" ;;
     "util/gmap_uncompress.pl") CONFIG_FILES="$CONFIG_FILES util/gmap_uncompress.pl" ;;
     "util/gmap_process.pl") CONFIG_FILES="$CONFIG_FILES util/gmap_process.pl" ;;
-    "util/gmap_setup.pl") CONFIG_FILES="$CONFIG_FILES util/gmap_setup.pl" ;;
     "util/gmap_build.pl") CONFIG_FILES="$CONFIG_FILES util/gmap_build.pl" ;;
     "util/gmap_reassemble.pl") CONFIG_FILES="$CONFIG_FILES util/gmap_reassemble.pl" ;;
     "util/md_coords.pl") CONFIG_FILES="$CONFIG_FILES util/md_coords.pl" ;;
@@ -22533,6 +24146,7 @@ do
     "util/psl_splicesites.pl") CONFIG_FILES="$CONFIG_FILES util/psl_splicesites.pl" ;;
     "util/psl_introns.pl") CONFIG_FILES="$CONFIG_FILES util/psl_introns.pl" ;;
     "util/psl_genes.pl") CONFIG_FILES="$CONFIG_FILES util/psl_genes.pl" ;;
+    "util/ensembl_genes.pl") CONFIG_FILES="$CONFIG_FILES util/ensembl_genes.pl" ;;
     "util/gtf_splicesites.pl") CONFIG_FILES="$CONFIG_FILES util/gtf_splicesites.pl" ;;
     "util/gtf_introns.pl") CONFIG_FILES="$CONFIG_FILES util/gtf_introns.pl" ;;
     "util/gtf_genes.pl") CONFIG_FILES="$CONFIG_FILES util/gtf_genes.pl" ;;
@@ -22540,6 +24154,7 @@ do
     "util/gff3_introns.pl") CONFIG_FILES="$CONFIG_FILES util/gff3_introns.pl" ;;
     "util/gff3_genes.pl") CONFIG_FILES="$CONFIG_FILES util/gff3_genes.pl" ;;
     "util/dbsnp_iit.pl") CONFIG_FILES="$CONFIG_FILES util/dbsnp_iit.pl" ;;
+    "util/gvf_iit.pl") CONFIG_FILES="$CONFIG_FILES util/gvf_iit.pl" ;;
     "util/vcf_iit.pl") CONFIG_FILES="$CONFIG_FILES util/vcf_iit.pl" ;;
     "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
     "tests/align.test") CONFIG_FILES="$CONFIG_FILES tests/align.test" ;;
@@ -24067,3 +25682,24 @@ with the rest of the installation.
 " >&2;}
   fi
 fi
+
+if test x"$ax_cv_sse2_shift_defect" = xyes; then
+  { $as_echo "$as_me:$LINENO: WARNING:
+
+WARNING: Your C compiler does not know how to handle a particular
+form of the SSE2 shift commands, and must be somewhat old (probably
+gcc 4.1 or gcc 4.2).  The configure script has therefore substituted
+alternate C code that your compiler can handle.  However, for
+optimal performance, you may want to obtain a more recent C compiler
+and build the code with that.
+" >&5
+$as_echo "$as_me: WARNING:
+
+WARNING: Your C compiler does not know how to handle a particular
+form of the SSE2 shift commands, and must be somewhat old (probably
+gcc 4.1 or gcc 4.2).  The configure script has therefore substituted
+alternate C code that your compiler can handle.  However, for
+optimal performance, you may want to obtain a more recent C compiler
+and build the code with that.
+" >&2;}
+fi
diff --git a/configure.ac b/configure.ac
index a86686f..c42bf4a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -175,6 +175,7 @@ AC_CHECK_SIZEOF(off_t)
 #AC_FUNC_REALLOC -- Causes use of rpl_realloc
 #AC_FUNC_CLOSEDIR_VOID -- We are checking return value
 
+AC_FUNC_ALLOCA
 AC_FUNC_FSEEKO
 
 #AC_FUNC_MMAP        # Checks only private fixed mapping of already-mapped memory
@@ -225,9 +226,6 @@ ACX_FUNC_FOPEN_BINARY
 ACX_FUNC_FOPEN_TEXT
 
 
-ACX_BUILTIN
-ACX_ASM_BSR
-
 AC_MSG_CHECKING(for popcnt feature)
 AC_ARG_ENABLE([popcnt],
               AC_HELP_STRING([--enable-popcnt],
@@ -237,7 +235,7 @@ AC_ARG_ENABLE([popcnt],
 case x"$answer" in
 	xyes)
         AC_MSG_RESULT(enabled)
-	ACX_POPCNT
+	ACX_BUILTIN
 	;;
 	
 	xno)
@@ -246,10 +244,11 @@ case x"$answer" in
 
 	x)
 	AC_MSG_RESULT([not specified so enabled by default])
-	ACX_POPCNT
+	ACX_BUILTIN
 	;;
 esac	
 
+ACX_ASM_BSR
 
 AC_MSG_CHECKING(whether sse2 is enabled)
 AC_ARG_ENABLE([sse2],
@@ -274,6 +273,12 @@ case x"$answer" in
      ;;
 esac	
 
+ax_cv_sse2_shift_defect=no
+if test "$ax_cv_want_sse2_ext" = yes; then
+ACX_SSE2_SHIFT_DEFECT
+fi
+
+
 AC_MSG_CHECKING(whether sse4.1 is enabled)
 AC_ARG_ENABLE([sse4.1],
 	      AC_HELP_STRING([--enable-sse4.1],
@@ -342,9 +347,9 @@ AC_MSG_RESULT($GMAPDB)
 
 # MAX_READLENGTH
 AC_MSG_CHECKING(MAX_READLENGTH)
-AC_ARG_VAR([MAX_READLENGTH], [Maximum read length for GSNAP (default 250)])
+AC_ARG_VAR([MAX_READLENGTH], [Maximum read length for GSNAP (default 300)])
 if test x"$MAX_READLENGTH" = x; then
-        ACX_EXPAND(MAX_READLENGTH,'250')
+        ACX_EXPAND(MAX_READLENGTH,'300')
 fi
 AC_MSG_RESULT($MAX_READLENGTH)
 
@@ -471,7 +476,6 @@ AC_CONFIG_FILES([util/Makefile])
 AC_CONFIG_FILES([util/gmap_compress.pl])
 AC_CONFIG_FILES([util/gmap_uncompress.pl])
 AC_CONFIG_FILES([util/gmap_process.pl])
-AC_CONFIG_FILES([util/gmap_setup.pl])
 AC_CONFIG_FILES([util/gmap_build.pl])
 AC_CONFIG_FILES([util/gmap_reassemble.pl])
 AC_CONFIG_FILES([util/md_coords.pl])
@@ -479,6 +483,7 @@ AC_CONFIG_FILES([util/fa_coords.pl])
 AC_CONFIG_FILES([util/psl_splicesites.pl])
 AC_CONFIG_FILES([util/psl_introns.pl])
 AC_CONFIG_FILES([util/psl_genes.pl])
+AC_CONFIG_FILES([util/ensembl_genes.pl])
 AC_CONFIG_FILES([util/gtf_splicesites.pl])
 AC_CONFIG_FILES([util/gtf_introns.pl])
 AC_CONFIG_FILES([util/gtf_genes.pl])
@@ -486,6 +491,7 @@ AC_CONFIG_FILES([util/gff3_splicesites.pl])
 AC_CONFIG_FILES([util/gff3_introns.pl])
 AC_CONFIG_FILES([util/gff3_genes.pl])
 AC_CONFIG_FILES([util/dbsnp_iit.pl])
+AC_CONFIG_FILES([util/gvf_iit.pl])
 AC_CONFIG_FILES([util/vcf_iit.pl])
 AC_CONFIG_FILES([tests/Makefile])
 AC_CONFIG_FILES([tests/align.test],[chmod +x tests/align.test])
@@ -531,3 +537,15 @@ with the rest of the installation.
 ])
   fi
 fi
+
+if test x"$ax_cv_sse2_shift_defect" = xyes; then
+  AC_MSG_WARN([
+
+WARNING: Your C compiler does not know how to handle a particular
+form of the SSE2 shift commands, and must be somewhat old (probably
+gcc 4.1 or gcc 4.2).  The configure script has therefore substituted
+alternate C code that your compiler can handle.  However, for 
+optimal performance, you may want to obtain a more recent C compiler
+and build the code with that.
+])
+fi
diff --git a/src/Makefile.am b/src/Makefile.am
index c0cd552..2fbddb4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -18,27 +18,31 @@ GMAP_FILES = fopen.h bool.h types.h separator.h comp.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
- genomicpos.c genomicpos.h compress.c compress.h \
- gbuffer.c gbuffer.h genome.c genome.h genome_hr.c genome_hr.h \
+ genomicpos.c genomicpos.h compress.c compress.h compress-write.c compress-write.h \
+ gbuffer.c gbuffer.h genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
  genome-write.c genome-write.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h block.c block.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
- chrnum.c chrnum.h chrsubset.c chrsubset.h uinttable.c uinttable.h gregion.c gregion.h \
+ chrnum.c chrnum.h uinttable.c uinttable.h gregion.c gregion.h \
  matchdef.h match.c match.h matchpool.c matchpool.h \
  diagnostic.c diagnostic.h stage1.c stage1.h \
  diagdef.h diag.c diag.h diagpool.c diagpool.h \
  cmet.c cmet.h atoi.c atoi.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h \
  scores.h intron.c intron.h maxent.c maxent.h maxent_hr.c maxent_hr.h samflags.h pairdef.h pair.c pair.h \
- pairpool.c pairpool.h stage2.c stage2.h \
- smooth.c smooth.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
- boyer-moore.c boyer-moore.h dynprog.c dynprog.h \
+ pairpool.c pairpool.h cellpool.c cellpool.h stage2.c stage2.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ boyer-moore.c boyer-moore.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
  translation.c translation.h \
- pbinom.c pbinom.h changepoint.c changepoint.h sense.h stage3.c stage3.h \
+ pbinom.c pbinom.h changepoint.c changepoint.h sense.h fastlog.h stage3.c stage3.h \
  request.c request.h result.c result.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  chimera.c chimera.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h gmap.c
 
@@ -61,27 +65,31 @@ GMAPL_FILES = fopen.h bool.h types.h separator.h comp.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
- genomicpos.c genomicpos.h compress.c compress.h \
- gbuffer.c gbuffer.h genome.c genome.h genome_hr.c genome_hr.h \
+ genomicpos.c genomicpos.h compress.c compress.h compress-write.c compress-write.h \
+ gbuffer.c gbuffer.h genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
  genome-write.c genome-write.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h block.c block.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
- chrnum.c chrnum.h chrsubset.c chrsubset.h uinttable.c uinttable.h gregion.c gregion.h \
+ chrnum.c chrnum.h uinttable.c uinttable.h gregion.c gregion.h \
  matchdef.h match.c match.h matchpool.c matchpool.h \
  diagnostic.c diagnostic.h stage1.c stage1.h \
  diagdef.h diag.c diag.h diagpool.c diagpool.h \
  cmet.c cmet.h atoi.c atoi.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h \
  scores.h intron.c intron.h maxent.c maxent.h maxent_hr.c maxent_hr.h samflags.h pairdef.h pair.c pair.h \
- pairpool.c pairpool.h stage2.c stage2.h \
- smooth.c smooth.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
- boyer-moore.c boyer-moore.h dynprog.c dynprog.h \
+ pairpool.c pairpool.h cellpool.c cellpool.h stage2.c stage2.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ boyer-moore.c boyer-moore.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
  translation.c translation.h \
- pbinom.c pbinom.h changepoint.c changepoint.h sense.h stage3.c stage3.h \
+ pbinom.c pbinom.h changepoint.c changepoint.h sense.h fastlog.h stage3.c stage3.h \
  request.c request.h result.c result.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  chimera.c chimera.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h gmap.c
 
@@ -107,7 +115,9 @@ GSNAP_FILES = fopen.h bool.h types.h separator.h comp.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -117,14 +127,19 @@ GSNAP_FILES = fopen.h bool.h types.h separator.h comp.h \
  goby.c goby.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h gbuffer.c gbuffer.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ gbuffer.c gbuffer.h translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
+ bytecoding.c bytecoding.h sarray-read.c sarray-read.h \
  stage1hr.c stage1hr.h \
  request.c request.h resulthr.c resulthr.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h gsnap.c
 
@@ -149,7 +164,9 @@ GSNAPL_FILES = fopen.h bool.h types.h separator.h comp.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -159,14 +176,18 @@ GSNAPL_FILES = fopen.h bool.h types.h separator.h comp.h \
  goby.c goby.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h gbuffer.c gbuffer.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ gbuffer.c gbuffer.h translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
  stage1hr.c stage1hr.h \
  request.c request.h resulthr.c resulthr.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h gsnap.c
 
@@ -190,7 +211,9 @@ UNIQSCAN_FILES = fopen.h bool.h types.h separator.h comp.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -199,11 +222,16 @@ UNIQSCAN_FILES = fopen.h bool.h types.h separator.h comp.h \
  mapq.c mapq.h shortread.c shortread.h substring.c substring.h stage3hr.c stage3hr.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
+ bytecoding.c bytecoding.h sarray-read.c sarray-read.h \
  stage1hr.c stage1hr.h resulthr.c resulthr.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h uniqscan.c
@@ -220,12 +248,14 @@ UNIQSCANL_FILES = fopen.h bool.h types.h separator.h comp.h \
  except.c except.h assert.c assert.h mem.c mem.h \
  intlistdef.h intlist.c intlist.h listdef.h list.c list.h \
  littleendian.c littleendian.h bigendian.c bigendian.h \
- univinterval.c univinterval.h interval.c interval.h uintlist.c uintlist.h \
+ univinterval.c univinterval.h interval.c interval.h uintlist.c uintlist.h uint8list.c uint8list.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -234,11 +264,15 @@ UNIQSCANL_FILES = fopen.h bool.h types.h separator.h comp.h \
  mapq.c mapq.h shortread.c shortread.h substring.c substring.h stage3hr.c stage3hr.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
  stage1hr.c stage1hr.h resulthr.c resulthr.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h uniqscan.c
@@ -260,14 +294,18 @@ GMAPINDEX_FILES = fopen.h bool.h types.h \
  iit-read-univ.c iit-read-univ.h iit-write-univ.c iit-write-univ.h \
  iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
- genomicpos.c genomicpos.h compress.c compress.h genome-write.c genome-write.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
+ genomicpos.c genomicpos.h compress-write.c compress-write.h genome-write.c genome-write.h \
+ compress.c compress.h popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
+ bitpack64-access.c bitpack64-access.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
  table.c table.h tableuint.c tableuint.h tableuint8.c tableuint8.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
+ saca-k.c saca-k.h uint8list.c uint8list.h bytecoding.c bytecoding.h sarray-write.c sarray-write.h \
  gmapindex.c
 
 gmapindex_CC = $(PTHREAD_CC)
-gmapindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DUTILITYP=1
+gmapindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_CFLAGS) -DUTILITYP=1
 gmapindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
 gmapindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_gmapindex_SOURCES = $(GMAPINDEX_FILES)
@@ -280,15 +318,17 @@ SNPINDEX_FILES = fopen.h bool.h types.h \
  univinterval.c univinterval.h interval.c interval.h uintlist.c uintlist.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
- genomicpos.c genomicpos.h compress.c compress.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
+ genomicpos.c genomicpos.h compress.c compress.h compress-write.c compress-write.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
  chrom.c chrom.h \
  complement.h md5.c md5.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
  datadir.c datadir.h \
  getopt.c getopt1.c getopt.h snpindex.c
 
 snpindex_CC = $(PTHREAD_CC)
-snpindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
+snpindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_FLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
 snpindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
 snpindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_snpindex_SOURCES = $(SNPINDEX_FILES)
@@ -301,16 +341,21 @@ CMETINDEX_FILES = fopen.h bool.h types.h \
  stopwatch.c stopwatch.h access.c access.h \
  univinterval.c univinterval.h interval.h interval.c \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.h iit-read.c \
- complement.h compress.c compress.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
+ complement.h compress.c compress.h compress-write.c compress-write.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
  cmet.c cmet.h \
+ complement.h md5.c md5.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
+ uintlist.c uintlist.h intlist.c intlist.h \
+ saca-k.c saca-k.h uint8list.c uint8list.h bytecoding.c bytecoding.h sarray-write.c sarray-write.h \
  list.c list.h listdef.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h cmetindex.c
 
 cmetindex_CC = $(PTHREAD_CC)
-cmetindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
+cmetindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_FLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
 cmetindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
-cmetindex_LDADD = $(PTHREAD_LIBS)
+cmetindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_cmetindex_SOURCES = $(CMETINDEX_FILES)
 
 
@@ -321,16 +366,21 @@ ATOIINDEX_FILES = fopen.h bool.h types.h \
  stopwatch.c stopwatch.h access.c access.h \
  univinterval.c univinterval.h interval.h interval.c \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.h iit-read.c \
- complement.h compress.c compress.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
+ complement.h compress.c compress.h compress-write.c compress-write.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
  atoi.c atoi.h \
+ complement.h md5.c md5.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
+ uintlist.c uintlist.h intlist.c intlist.h \
+ saca-k.c saca-k.h uint8list.c uint8list.h bytecoding.c bytecoding.h sarray-write.c sarray-write.h \
  list.c list.h listdef.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h atoiindex.c
 
 atoiindex_CC = $(PTHREAD_CC)
-atoiindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
+atoiindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_FLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
 atoiindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
-atoiindex_LDADD = $(PTHREAD_LIBS)
+atoiindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_atoiindex_SOURCES = $(ATOIINDEX_FILES)
 
 
@@ -344,7 +394,7 @@ GET_GENOME_FILES = fopen.h bool.h types.h separator.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h \
  genome.c genome.h \
  genomicpos.c genomicpos.h chrom.c chrom.h \
- chrnum.c chrnum.h chrsubset.c chrsubset.h \
+ chrnum.c chrnum.h \
  datadir.c datadir.h parserange.c parserange.h \
  getopt.c getopt1.c getopt.h get-genome.c
 
@@ -362,6 +412,7 @@ IIT_STORE_FILES = fopen.h bool.h types.h \
  univinterval.c univinterval.h interval.c interval.h \
  uintlist.c uintlist.h \
  stopwatch.c stopwatch.h access.c access.h \
+ doublelist.c doublelist.h \
  iit-write-univ.c iit-write-univ.h iitdef.h iit-write.c iit-write.h \
  tableint.c tableint.h table.c table.h chrom.c chrom.h \
  getopt.c getopt1.c getopt.h iit_store.c
diff --git a/src/Makefile.in b/src/Makefile.in
index e2db99b..75fab42 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -56,9 +56,10 @@ am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \
 	$(top_srcdir)/config/builtin.m4 \
 	$(top_srcdir)/config/struct-stat64.m4 \
 	$(top_srcdir)/config/expand.m4 $(top_srcdir)/config/perl.m4 \
-	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/popcnt.m4 \
-	$(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/sse2_shift_defect.m4 \
 	$(top_srcdir)/config/ax_gcc_x86_cpuid.m4 \
+	$(top_srcdir)/config/ax_gcc_x86_avx_xgetbv.m4 \
 	$(top_srcdir)/config/ax_check_compile_flag.m4 \
 	$(top_srcdir)/config/ax_ext.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -75,15 +76,26 @@ am__objects_1 = atoiindex-except.$(OBJEXT) atoiindex-assert.$(OBJEXT) \
 	atoiindex-stopwatch.$(OBJEXT) atoiindex-access.$(OBJEXT) \
 	atoiindex-univinterval.$(OBJEXT) atoiindex-interval.$(OBJEXT) \
 	atoiindex-iit-read-univ.$(OBJEXT) atoiindex-iit-read.$(OBJEXT) \
-	atoiindex-compress.$(OBJEXT) atoiindex-genome_hr.$(OBJEXT) \
+	atoiindex-compress.$(OBJEXT) \
+	atoiindex-compress-write.$(OBJEXT) \
+	atoiindex-popcount.$(OBJEXT) atoiindex-genome128_hr.$(OBJEXT) \
+	atoiindex-bitpack64-read.$(OBJEXT) \
+	atoiindex-bitpack64-readtwo.$(OBJEXT) \
+	atoiindex-bitpack64-write.$(OBJEXT) \
 	atoiindex-indexdb.$(OBJEXT) atoiindex-indexdb-write.$(OBJEXT) \
-	atoiindex-atoi.$(OBJEXT) atoiindex-list.$(OBJEXT) \
+	atoiindex-atoi.$(OBJEXT) atoiindex-md5.$(OBJEXT) \
+	atoiindex-bzip2.$(OBJEXT) atoiindex-sequence.$(OBJEXT) \
+	atoiindex-genome.$(OBJEXT) atoiindex-uintlist.$(OBJEXT) \
+	atoiindex-intlist.$(OBJEXT) atoiindex-saca-k.$(OBJEXT) \
+	atoiindex-uint8list.$(OBJEXT) atoiindex-bytecoding.$(OBJEXT) \
+	atoiindex-sarray-write.$(OBJEXT) atoiindex-list.$(OBJEXT) \
 	atoiindex-datadir.$(OBJEXT) atoiindex-getopt.$(OBJEXT) \
 	atoiindex-getopt1.$(OBJEXT) atoiindex-atoiindex.$(OBJEXT)
 dist_atoiindex_OBJECTS = $(am__objects_1)
 atoiindex_OBJECTS = $(dist_atoiindex_OBJECTS)
 am__DEPENDENCIES_1 =
-atoiindex_DEPENDENCIES = $(am__DEPENDENCIES_1)
+atoiindex_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 atoiindex_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(atoiindex_CFLAGS) \
 	$(CFLAGS) $(atoiindex_LDFLAGS) $(LDFLAGS) -o $@
@@ -93,14 +105,25 @@ am__objects_2 = cmetindex-except.$(OBJEXT) cmetindex-assert.$(OBJEXT) \
 	cmetindex-stopwatch.$(OBJEXT) cmetindex-access.$(OBJEXT) \
 	cmetindex-univinterval.$(OBJEXT) cmetindex-interval.$(OBJEXT) \
 	cmetindex-iit-read-univ.$(OBJEXT) cmetindex-iit-read.$(OBJEXT) \
-	cmetindex-compress.$(OBJEXT) cmetindex-genome_hr.$(OBJEXT) \
+	cmetindex-compress.$(OBJEXT) \
+	cmetindex-compress-write.$(OBJEXT) \
+	cmetindex-popcount.$(OBJEXT) cmetindex-genome128_hr.$(OBJEXT) \
+	cmetindex-bitpack64-read.$(OBJEXT) \
+	cmetindex-bitpack64-readtwo.$(OBJEXT) \
+	cmetindex-bitpack64-write.$(OBJEXT) \
 	cmetindex-indexdb.$(OBJEXT) cmetindex-indexdb-write.$(OBJEXT) \
-	cmetindex-cmet.$(OBJEXT) cmetindex-list.$(OBJEXT) \
+	cmetindex-cmet.$(OBJEXT) cmetindex-md5.$(OBJEXT) \
+	cmetindex-bzip2.$(OBJEXT) cmetindex-sequence.$(OBJEXT) \
+	cmetindex-genome.$(OBJEXT) cmetindex-uintlist.$(OBJEXT) \
+	cmetindex-intlist.$(OBJEXT) cmetindex-saca-k.$(OBJEXT) \
+	cmetindex-uint8list.$(OBJEXT) cmetindex-bytecoding.$(OBJEXT) \
+	cmetindex-sarray-write.$(OBJEXT) cmetindex-list.$(OBJEXT) \
 	cmetindex-datadir.$(OBJEXT) cmetindex-getopt.$(OBJEXT) \
 	cmetindex-getopt1.$(OBJEXT) cmetindex-cmetindex.$(OBJEXT)
 dist_cmetindex_OBJECTS = $(am__objects_2)
 cmetindex_OBJECTS = $(dist_cmetindex_OBJECTS)
-cmetindex_DEPENDENCIES = $(am__DEPENDENCIES_1)
+cmetindex_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 cmetindex_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(cmetindex_CFLAGS) \
 	$(CFLAGS) $(cmetindex_LDFLAGS) $(LDFLAGS) -o $@
@@ -117,9 +140,9 @@ am__objects_3 = get_genome-except.$(OBJEXT) \
 	get_genome-bzip2.$(OBJEXT) get_genome-sequence.$(OBJEXT) \
 	get_genome-genome.$(OBJEXT) get_genome-genomicpos.$(OBJEXT) \
 	get_genome-chrom.$(OBJEXT) get_genome-chrnum.$(OBJEXT) \
-	get_genome-chrsubset.$(OBJEXT) get_genome-datadir.$(OBJEXT) \
-	get_genome-parserange.$(OBJEXT) get_genome-getopt.$(OBJEXT) \
-	get_genome-getopt1.$(OBJEXT) get_genome-get-genome.$(OBJEXT)
+	get_genome-datadir.$(OBJEXT) get_genome-parserange.$(OBJEXT) \
+	get_genome-getopt.$(OBJEXT) get_genome-getopt1.$(OBJEXT) \
+	get_genome-get-genome.$(OBJEXT)
 dist_get_genome_OBJECTS = $(am__objects_3)
 get_genome_OBJECTS = $(dist_get_genome_OBJECTS)
 get_genome_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -136,31 +159,37 @@ am__objects_4 = gmap-except.$(OBJEXT) gmap-assert.$(OBJEXT) \
 	gmap-iit-read.$(OBJEXT) gmap-md5.$(OBJEXT) \
 	gmap-bzip2.$(OBJEXT) gmap-sequence.$(OBJEXT) \
 	gmap-reader.$(OBJEXT) gmap-genomicpos.$(OBJEXT) \
-	gmap-compress.$(OBJEXT) gmap-gbuffer.$(OBJEXT) \
-	gmap-genome.$(OBJEXT) gmap-genome_hr.$(OBJEXT) \
-	gmap-genome-write.$(OBJEXT) gmap-indexdb.$(OBJEXT) \
-	gmap-indexdb_hr.$(OBJEXT) gmap-oligo.$(OBJEXT) \
-	gmap-block.$(OBJEXT) gmap-chrom.$(OBJEXT) \
+	gmap-compress.$(OBJEXT) gmap-compress-write.$(OBJEXT) \
+	gmap-gbuffer.$(OBJEXT) gmap-genome.$(OBJEXT) \
+	gmap-popcount.$(OBJEXT) gmap-genome128_hr.$(OBJEXT) \
+	gmap-genome_sites.$(OBJEXT) gmap-genome-write.$(OBJEXT) \
+	gmap-bitpack64-read.$(OBJEXT) gmap-bitpack64-readtwo.$(OBJEXT) \
+	gmap-indexdb.$(OBJEXT) gmap-indexdb_hr.$(OBJEXT) \
+	gmap-oligo.$(OBJEXT) gmap-block.$(OBJEXT) gmap-chrom.$(OBJEXT) \
 	gmap-segmentpos.$(OBJEXT) gmap-chrnum.$(OBJEXT) \
-	gmap-chrsubset.$(OBJEXT) gmap-uinttable.$(OBJEXT) \
-	gmap-gregion.$(OBJEXT) gmap-match.$(OBJEXT) \
-	gmap-matchpool.$(OBJEXT) gmap-diagnostic.$(OBJEXT) \
-	gmap-stage1.$(OBJEXT) gmap-diag.$(OBJEXT) \
-	gmap-diagpool.$(OBJEXT) gmap-cmet.$(OBJEXT) \
-	gmap-atoi.$(OBJEXT) gmap-orderstat.$(OBJEXT) \
-	gmap-oligoindex.$(OBJEXT) gmap-oligoindex_hr.$(OBJEXT) \
+	gmap-uinttable.$(OBJEXT) gmap-gregion.$(OBJEXT) \
+	gmap-match.$(OBJEXT) gmap-matchpool.$(OBJEXT) \
+	gmap-diagnostic.$(OBJEXT) gmap-stage1.$(OBJEXT) \
+	gmap-diag.$(OBJEXT) gmap-diagpool.$(OBJEXT) \
+	gmap-cmet.$(OBJEXT) gmap-atoi.$(OBJEXT) \
+	gmap-orderstat.$(OBJEXT) gmap-oligoindex_hr.$(OBJEXT) \
 	gmap-intron.$(OBJEXT) gmap-maxent.$(OBJEXT) \
 	gmap-maxent_hr.$(OBJEXT) gmap-pair.$(OBJEXT) \
-	gmap-pairpool.$(OBJEXT) gmap-stage2.$(OBJEXT) \
-	gmap-smooth.$(OBJEXT) gmap-splicetrie_build.$(OBJEXT) \
-	gmap-splicetrie.$(OBJEXT) gmap-boyer-moore.$(OBJEXT) \
-	gmap-dynprog.$(OBJEXT) gmap-translation.$(OBJEXT) \
+	gmap-pairpool.$(OBJEXT) gmap-cellpool.$(OBJEXT) \
+	gmap-stage2.$(OBJEXT) gmap-doublelist.$(OBJEXT) \
+	gmap-smooth.$(OBJEXT) gmap-splicestringpool.$(OBJEXT) \
+	gmap-splicetrie_build.$(OBJEXT) gmap-splicetrie.$(OBJEXT) \
+	gmap-boyer-moore.$(OBJEXT) gmap-dynprog.$(OBJEXT) \
+	gmap-dynprog_simd.$(OBJEXT) gmap-dynprog_single.$(OBJEXT) \
+	gmap-dynprog_genome.$(OBJEXT) gmap-dynprog_cdna.$(OBJEXT) \
+	gmap-dynprog_end.$(OBJEXT) gmap-translation.$(OBJEXT) \
 	gmap-pbinom.$(OBJEXT) gmap-changepoint.$(OBJEXT) \
 	gmap-stage3.$(OBJEXT) gmap-request.$(OBJEXT) \
 	gmap-result.$(OBJEXT) gmap-inbuffer.$(OBJEXT) \
-	gmap-outbuffer.$(OBJEXT) gmap-chimera.$(OBJEXT) \
-	gmap-datadir.$(OBJEXT) gmap-getopt.$(OBJEXT) \
-	gmap-getopt1.$(OBJEXT) gmap-gmap.$(OBJEXT)
+	gmap-samheader.$(OBJEXT) gmap-outbuffer.$(OBJEXT) \
+	gmap-chimera.$(OBJEXT) gmap-datadir.$(OBJEXT) \
+	gmap-getopt.$(OBJEXT) gmap-getopt1.$(OBJEXT) \
+	gmap-gmap.$(OBJEXT)
 dist_gmap_OBJECTS = $(am__objects_4)
 gmap_OBJECTS = $(dist_gmap_OBJECTS)
 gmap_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -179,12 +208,19 @@ am__objects_5 = gmapindex-except.$(OBJEXT) gmapindex-assert.$(OBJEXT) \
 	gmapindex-iit-read.$(OBJEXT) gmapindex-md5.$(OBJEXT) \
 	gmapindex-bzip2.$(OBJEXT) gmapindex-sequence.$(OBJEXT) \
 	gmapindex-genome.$(OBJEXT) gmapindex-genomicpos.$(OBJEXT) \
-	gmapindex-compress.$(OBJEXT) gmapindex-genome-write.$(OBJEXT) \
-	gmapindex-genome_hr.$(OBJEXT) gmapindex-indexdb.$(OBJEXT) \
-	gmapindex-indexdb-write.$(OBJEXT) gmapindex-table.$(OBJEXT) \
-	gmapindex-tableuint.$(OBJEXT) gmapindex-tableuint8.$(OBJEXT) \
-	gmapindex-chrom.$(OBJEXT) gmapindex-segmentpos.$(OBJEXT) \
-	gmapindex-gmapindex.$(OBJEXT)
+	gmapindex-compress-write.$(OBJEXT) \
+	gmapindex-genome-write.$(OBJEXT) gmapindex-compress.$(OBJEXT) \
+	gmapindex-popcount.$(OBJEXT) gmapindex-genome128_hr.$(OBJEXT) \
+	gmapindex-bitpack64-read.$(OBJEXT) \
+	gmapindex-bitpack64-readtwo.$(OBJEXT) \
+	gmapindex-bitpack64-access.$(OBJEXT) \
+	gmapindex-bitpack64-write.$(OBJEXT) \
+	gmapindex-indexdb.$(OBJEXT) gmapindex-indexdb-write.$(OBJEXT) \
+	gmapindex-table.$(OBJEXT) gmapindex-tableuint.$(OBJEXT) \
+	gmapindex-tableuint8.$(OBJEXT) gmapindex-chrom.$(OBJEXT) \
+	gmapindex-segmentpos.$(OBJEXT) gmapindex-saca-k.$(OBJEXT) \
+	gmapindex-uint8list.$(OBJEXT) gmapindex-bytecoding.$(OBJEXT) \
+	gmapindex-sarray-write.$(OBJEXT) gmapindex-gmapindex.$(OBJEXT)
 dist_gmapindex_OBJECTS = $(am__objects_5)
 gmapindex_OBJECTS = $(dist_gmapindex_OBJECTS)
 gmapindex_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -202,28 +238,34 @@ am__objects_6 = gmapl-except.$(OBJEXT) gmapl-assert.$(OBJEXT) \
 	gmapl-md5.$(OBJEXT) gmapl-bzip2.$(OBJEXT) \
 	gmapl-sequence.$(OBJEXT) gmapl-reader.$(OBJEXT) \
 	gmapl-genomicpos.$(OBJEXT) gmapl-compress.$(OBJEXT) \
-	gmapl-gbuffer.$(OBJEXT) gmapl-genome.$(OBJEXT) \
-	gmapl-genome_hr.$(OBJEXT) gmapl-genome-write.$(OBJEXT) \
-	gmapl-indexdb.$(OBJEXT) gmapl-indexdb_hr.$(OBJEXT) \
-	gmapl-oligo.$(OBJEXT) gmapl-block.$(OBJEXT) \
-	gmapl-chrom.$(OBJEXT) gmapl-segmentpos.$(OBJEXT) \
-	gmapl-chrnum.$(OBJEXT) gmapl-chrsubset.$(OBJEXT) \
+	gmapl-compress-write.$(OBJEXT) gmapl-gbuffer.$(OBJEXT) \
+	gmapl-genome.$(OBJEXT) gmapl-popcount.$(OBJEXT) \
+	gmapl-genome128_hr.$(OBJEXT) gmapl-genome_sites.$(OBJEXT) \
+	gmapl-genome-write.$(OBJEXT) gmapl-bitpack64-read.$(OBJEXT) \
+	gmapl-bitpack64-readtwo.$(OBJEXT) gmapl-indexdb.$(OBJEXT) \
+	gmapl-indexdb_hr.$(OBJEXT) gmapl-oligo.$(OBJEXT) \
+	gmapl-block.$(OBJEXT) gmapl-chrom.$(OBJEXT) \
+	gmapl-segmentpos.$(OBJEXT) gmapl-chrnum.$(OBJEXT) \
 	gmapl-uinttable.$(OBJEXT) gmapl-gregion.$(OBJEXT) \
 	gmapl-match.$(OBJEXT) gmapl-matchpool.$(OBJEXT) \
 	gmapl-diagnostic.$(OBJEXT) gmapl-stage1.$(OBJEXT) \
 	gmapl-diag.$(OBJEXT) gmapl-diagpool.$(OBJEXT) \
 	gmapl-cmet.$(OBJEXT) gmapl-atoi.$(OBJEXT) \
-	gmapl-orderstat.$(OBJEXT) gmapl-oligoindex.$(OBJEXT) \
-	gmapl-oligoindex_hr.$(OBJEXT) gmapl-intron.$(OBJEXT) \
-	gmapl-maxent.$(OBJEXT) gmapl-maxent_hr.$(OBJEXT) \
-	gmapl-pair.$(OBJEXT) gmapl-pairpool.$(OBJEXT) \
-	gmapl-stage2.$(OBJEXT) gmapl-smooth.$(OBJEXT) \
+	gmapl-orderstat.$(OBJEXT) gmapl-oligoindex_hr.$(OBJEXT) \
+	gmapl-intron.$(OBJEXT) gmapl-maxent.$(OBJEXT) \
+	gmapl-maxent_hr.$(OBJEXT) gmapl-pair.$(OBJEXT) \
+	gmapl-pairpool.$(OBJEXT) gmapl-cellpool.$(OBJEXT) \
+	gmapl-stage2.$(OBJEXT) gmapl-doublelist.$(OBJEXT) \
+	gmapl-smooth.$(OBJEXT) gmapl-splicestringpool.$(OBJEXT) \
 	gmapl-splicetrie_build.$(OBJEXT) gmapl-splicetrie.$(OBJEXT) \
 	gmapl-boyer-moore.$(OBJEXT) gmapl-dynprog.$(OBJEXT) \
-	gmapl-translation.$(OBJEXT) gmapl-pbinom.$(OBJEXT) \
-	gmapl-changepoint.$(OBJEXT) gmapl-stage3.$(OBJEXT) \
-	gmapl-request.$(OBJEXT) gmapl-result.$(OBJEXT) \
-	gmapl-inbuffer.$(OBJEXT) gmapl-outbuffer.$(OBJEXT) \
+	gmapl-dynprog_simd.$(OBJEXT) gmapl-dynprog_single.$(OBJEXT) \
+	gmapl-dynprog_genome.$(OBJEXT) gmapl-dynprog_cdna.$(OBJEXT) \
+	gmapl-dynprog_end.$(OBJEXT) gmapl-translation.$(OBJEXT) \
+	gmapl-pbinom.$(OBJEXT) gmapl-changepoint.$(OBJEXT) \
+	gmapl-stage3.$(OBJEXT) gmapl-request.$(OBJEXT) \
+	gmapl-result.$(OBJEXT) gmapl-inbuffer.$(OBJEXT) \
+	gmapl-samheader.$(OBJEXT) gmapl-outbuffer.$(OBJEXT) \
 	gmapl-chimera.$(OBJEXT) gmapl-datadir.$(OBJEXT) \
 	gmapl-getopt.$(OBJEXT) gmapl-getopt1.$(OBJEXT) \
 	gmapl-gmap.$(OBJEXT)
@@ -244,30 +286,40 @@ am__objects_7 = gsnap-except.$(OBJEXT) gsnap-assert.$(OBJEXT) \
 	gsnap-md5.$(OBJEXT) gsnap-bzip2.$(OBJEXT) \
 	gsnap-sequence.$(OBJEXT) gsnap-reader.$(OBJEXT) \
 	gsnap-genomicpos.$(OBJEXT) gsnap-compress.$(OBJEXT) \
-	gsnap-genome.$(OBJEXT) gsnap-genome_hr.$(OBJEXT) \
-	gsnap-indexdb.$(OBJEXT) gsnap-indexdb_hr.$(OBJEXT) \
-	gsnap-oligo.$(OBJEXT) gsnap-chrom.$(OBJEXT) \
-	gsnap-segmentpos.$(OBJEXT) gsnap-chrnum.$(OBJEXT) \
-	gsnap-maxent_hr.$(OBJEXT) gsnap-samprint.$(OBJEXT) \
-	gsnap-mapq.$(OBJEXT) gsnap-shortread.$(OBJEXT) \
-	gsnap-substring.$(OBJEXT) gsnap-stage3hr.$(OBJEXT) \
-	gsnap-goby.$(OBJEXT) gsnap-spanningelt.$(OBJEXT) \
-	gsnap-cmet.$(OBJEXT) gsnap-atoi.$(OBJEXT) \
-	gsnap-maxent.$(OBJEXT) gsnap-pair.$(OBJEXT) \
-	gsnap-pairpool.$(OBJEXT) gsnap-diag.$(OBJEXT) \
-	gsnap-diagpool.$(OBJEXT) gsnap-orderstat.$(OBJEXT) \
-	gsnap-oligoindex.$(OBJEXT) gsnap-oligoindex_hr.$(OBJEXT) \
-	gsnap-stage2.$(OBJEXT) gsnap-intron.$(OBJEXT) \
-	gsnap-boyer-moore.$(OBJEXT) gsnap-changepoint.$(OBJEXT) \
-	gsnap-pbinom.$(OBJEXT) gsnap-dynprog.$(OBJEXT) \
+	gsnap-genome.$(OBJEXT) gsnap-popcount.$(OBJEXT) \
+	gsnap-genome128_hr.$(OBJEXT) gsnap-genome_sites.$(OBJEXT) \
+	gsnap-bitpack64-read.$(OBJEXT) \
+	gsnap-bitpack64-readtwo.$(OBJEXT) gsnap-indexdb.$(OBJEXT) \
+	gsnap-indexdb_hr.$(OBJEXT) gsnap-oligo.$(OBJEXT) \
+	gsnap-chrom.$(OBJEXT) gsnap-segmentpos.$(OBJEXT) \
+	gsnap-chrnum.$(OBJEXT) gsnap-maxent_hr.$(OBJEXT) \
+	gsnap-samprint.$(OBJEXT) gsnap-mapq.$(OBJEXT) \
+	gsnap-shortread.$(OBJEXT) gsnap-substring.$(OBJEXT) \
+	gsnap-stage3hr.$(OBJEXT) gsnap-goby.$(OBJEXT) \
+	gsnap-spanningelt.$(OBJEXT) gsnap-cmet.$(OBJEXT) \
+	gsnap-atoi.$(OBJEXT) gsnap-maxent.$(OBJEXT) \
+	gsnap-pair.$(OBJEXT) gsnap-pairpool.$(OBJEXT) \
+	gsnap-diag.$(OBJEXT) gsnap-diagpool.$(OBJEXT) \
+	gsnap-orderstat.$(OBJEXT) gsnap-oligoindex_hr.$(OBJEXT) \
+	gsnap-cellpool.$(OBJEXT) gsnap-stage2.$(OBJEXT) \
+	gsnap-intron.$(OBJEXT) gsnap-boyer-moore.$(OBJEXT) \
+	gsnap-changepoint.$(OBJEXT) gsnap-pbinom.$(OBJEXT) \
+	gsnap-dynprog.$(OBJEXT) gsnap-dynprog_simd.$(OBJEXT) \
+	gsnap-dynprog_single.$(OBJEXT) gsnap-dynprog_genome.$(OBJEXT) \
+	gsnap-dynprog_cdna.$(OBJEXT) gsnap-dynprog_end.$(OBJEXT) \
 	gsnap-gbuffer.$(OBJEXT) gsnap-translation.$(OBJEXT) \
-	gsnap-smooth.$(OBJEXT) gsnap-chimera.$(OBJEXT) \
-	gsnap-stage3.$(OBJEXT) gsnap-splicetrie_build.$(OBJEXT) \
-	gsnap-splicetrie.$(OBJEXT) gsnap-stage1hr.$(OBJEXT) \
+	gsnap-doublelist.$(OBJEXT) gsnap-smooth.$(OBJEXT) \
+	gsnap-chimera.$(OBJEXT) gsnap-stage3.$(OBJEXT) \
+	gsnap-splicestringpool.$(OBJEXT) \
+	gsnap-splicetrie_build.$(OBJEXT) gsnap-splicetrie.$(OBJEXT) \
+	gsnap-splice.$(OBJEXT) gsnap-indel.$(OBJEXT) \
+	gsnap-bitpack64-access.$(OBJEXT) gsnap-bytecoding.$(OBJEXT) \
+	gsnap-sarray-read.$(OBJEXT) gsnap-stage1hr.$(OBJEXT) \
 	gsnap-request.$(OBJEXT) gsnap-resulthr.$(OBJEXT) \
-	gsnap-inbuffer.$(OBJEXT) gsnap-outbuffer.$(OBJEXT) \
-	gsnap-datadir.$(OBJEXT) gsnap-getopt.$(OBJEXT) \
-	gsnap-getopt1.$(OBJEXT) gsnap-gsnap.$(OBJEXT)
+	gsnap-inbuffer.$(OBJEXT) gsnap-samheader.$(OBJEXT) \
+	gsnap-outbuffer.$(OBJEXT) gsnap-datadir.$(OBJEXT) \
+	gsnap-getopt.$(OBJEXT) gsnap-getopt1.$(OBJEXT) \
+	gsnap-gsnap.$(OBJEXT)
 dist_gsnap_OBJECTS = $(am__objects_7)
 gsnap_OBJECTS = $(dist_gsnap_OBJECTS)
 gsnap_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -286,7 +338,9 @@ am__objects_8 = gsnapl-except.$(OBJEXT) gsnapl-assert.$(OBJEXT) \
 	gsnapl-bzip2.$(OBJEXT) gsnapl-sequence.$(OBJEXT) \
 	gsnapl-reader.$(OBJEXT) gsnapl-genomicpos.$(OBJEXT) \
 	gsnapl-compress.$(OBJEXT) gsnapl-genome.$(OBJEXT) \
-	gsnapl-genome_hr.$(OBJEXT) gsnapl-indexdb.$(OBJEXT) \
+	gsnapl-popcount.$(OBJEXT) gsnapl-genome128_hr.$(OBJEXT) \
+	gsnapl-genome_sites.$(OBJEXT) gsnapl-bitpack64-read.$(OBJEXT) \
+	gsnapl-bitpack64-readtwo.$(OBJEXT) gsnapl-indexdb.$(OBJEXT) \
 	gsnapl-indexdb_hr.$(OBJEXT) gsnapl-oligo.$(OBJEXT) \
 	gsnapl-chrom.$(OBJEXT) gsnapl-segmentpos.$(OBJEXT) \
 	gsnapl-chrnum.$(OBJEXT) gsnapl-maxent_hr.$(OBJEXT) \
@@ -297,16 +351,22 @@ am__objects_8 = gsnapl-except.$(OBJEXT) gsnapl-assert.$(OBJEXT) \
 	gsnapl-atoi.$(OBJEXT) gsnapl-maxent.$(OBJEXT) \
 	gsnapl-pair.$(OBJEXT) gsnapl-pairpool.$(OBJEXT) \
 	gsnapl-diag.$(OBJEXT) gsnapl-diagpool.$(OBJEXT) \
-	gsnapl-orderstat.$(OBJEXT) gsnapl-oligoindex.$(OBJEXT) \
-	gsnapl-oligoindex_hr.$(OBJEXT) gsnapl-stage2.$(OBJEXT) \
+	gsnapl-orderstat.$(OBJEXT) gsnapl-oligoindex_hr.$(OBJEXT) \
+	gsnapl-cellpool.$(OBJEXT) gsnapl-stage2.$(OBJEXT) \
 	gsnapl-intron.$(OBJEXT) gsnapl-boyer-moore.$(OBJEXT) \
 	gsnapl-changepoint.$(OBJEXT) gsnapl-pbinom.$(OBJEXT) \
-	gsnapl-dynprog.$(OBJEXT) gsnapl-gbuffer.$(OBJEXT) \
-	gsnapl-translation.$(OBJEXT) gsnapl-smooth.$(OBJEXT) \
-	gsnapl-chimera.$(OBJEXT) gsnapl-stage3.$(OBJEXT) \
+	gsnapl-dynprog.$(OBJEXT) gsnapl-dynprog_simd.$(OBJEXT) \
+	gsnapl-dynprog_single.$(OBJEXT) \
+	gsnapl-dynprog_genome.$(OBJEXT) gsnapl-dynprog_cdna.$(OBJEXT) \
+	gsnapl-dynprog_end.$(OBJEXT) gsnapl-gbuffer.$(OBJEXT) \
+	gsnapl-translation.$(OBJEXT) gsnapl-doublelist.$(OBJEXT) \
+	gsnapl-smooth.$(OBJEXT) gsnapl-chimera.$(OBJEXT) \
+	gsnapl-stage3.$(OBJEXT) gsnapl-splicestringpool.$(OBJEXT) \
 	gsnapl-splicetrie_build.$(OBJEXT) gsnapl-splicetrie.$(OBJEXT) \
-	gsnapl-stage1hr.$(OBJEXT) gsnapl-request.$(OBJEXT) \
-	gsnapl-resulthr.$(OBJEXT) gsnapl-inbuffer.$(OBJEXT) \
+	gsnapl-splice.$(OBJEXT) gsnapl-indel.$(OBJEXT) \
+	gsnapl-bitpack64-access.$(OBJEXT) gsnapl-stage1hr.$(OBJEXT) \
+	gsnapl-request.$(OBJEXT) gsnapl-resulthr.$(OBJEXT) \
+	gsnapl-inbuffer.$(OBJEXT) gsnapl-samheader.$(OBJEXT) \
 	gsnapl-outbuffer.$(OBJEXT) gsnapl-datadir.$(OBJEXT) \
 	gsnapl-getopt.$(OBJEXT) gsnapl-getopt1.$(OBJEXT) \
 	gsnapl-gsnap.$(OBJEXT)
@@ -353,6 +413,7 @@ am__objects_11 = iit_store-except.$(OBJEXT) iit_store-assert.$(OBJEXT) \
 	iit_store-bigendian.$(OBJEXT) iit_store-univinterval.$(OBJEXT) \
 	iit_store-interval.$(OBJEXT) iit_store-uintlist.$(OBJEXT) \
 	iit_store-stopwatch.$(OBJEXT) iit_store-access.$(OBJEXT) \
+	iit_store-doublelist.$(OBJEXT) \
 	iit_store-iit-write-univ.$(OBJEXT) \
 	iit_store-iit-write.$(OBJEXT) iit_store-tableint.$(OBJEXT) \
 	iit_store-table.$(OBJEXT) iit_store-chrom.$(OBJEXT) \
@@ -372,7 +433,11 @@ am__objects_12 = snpindex-except.$(OBJEXT) snpindex-assert.$(OBJEXT) \
 	snpindex-stopwatch.$(OBJEXT) snpindex-access.$(OBJEXT) \
 	snpindex-iit-read-univ.$(OBJEXT) snpindex-iit-read.$(OBJEXT) \
 	snpindex-genomicpos.$(OBJEXT) snpindex-compress.$(OBJEXT) \
-	snpindex-genome_hr.$(OBJEXT) snpindex-indexdb.$(OBJEXT) \
+	snpindex-compress-write.$(OBJEXT) snpindex-popcount.$(OBJEXT) \
+	snpindex-genome128_hr.$(OBJEXT) \
+	snpindex-bitpack64-read.$(OBJEXT) \
+	snpindex-bitpack64-readtwo.$(OBJEXT) \
+	snpindex-bitpack64-write.$(OBJEXT) snpindex-indexdb.$(OBJEXT) \
 	snpindex-indexdb-write.$(OBJEXT) snpindex-chrom.$(OBJEXT) \
 	snpindex-md5.$(OBJEXT) snpindex-bzip2.$(OBJEXT) \
 	snpindex-sequence.$(OBJEXT) snpindex-genome.$(OBJEXT) \
@@ -395,7 +460,11 @@ am__objects_13 = uniqscan-except.$(OBJEXT) uniqscan-assert.$(OBJEXT) \
 	uniqscan-md5.$(OBJEXT) uniqscan-bzip2.$(OBJEXT) \
 	uniqscan-sequence.$(OBJEXT) uniqscan-reader.$(OBJEXT) \
 	uniqscan-genomicpos.$(OBJEXT) uniqscan-compress.$(OBJEXT) \
-	uniqscan-genome.$(OBJEXT) uniqscan-genome_hr.$(OBJEXT) \
+	uniqscan-genome.$(OBJEXT) uniqscan-popcount.$(OBJEXT) \
+	uniqscan-genome128_hr.$(OBJEXT) \
+	uniqscan-genome_sites.$(OBJEXT) \
+	uniqscan-bitpack64-read.$(OBJEXT) \
+	uniqscan-bitpack64-readtwo.$(OBJEXT) \
 	uniqscan-indexdb.$(OBJEXT) uniqscan-indexdb_hr.$(OBJEXT) \
 	uniqscan-oligo.$(OBJEXT) uniqscan-chrom.$(OBJEXT) \
 	uniqscan-segmentpos.$(OBJEXT) uniqscan-chrnum.$(OBJEXT) \
@@ -406,17 +475,24 @@ am__objects_13 = uniqscan-except.$(OBJEXT) uniqscan-assert.$(OBJEXT) \
 	uniqscan-maxent.$(OBJEXT) uniqscan-pair.$(OBJEXT) \
 	uniqscan-pairpool.$(OBJEXT) uniqscan-diag.$(OBJEXT) \
 	uniqscan-diagpool.$(OBJEXT) uniqscan-orderstat.$(OBJEXT) \
-	uniqscan-oligoindex.$(OBJEXT) uniqscan-oligoindex_hr.$(OBJEXT) \
+	uniqscan-oligoindex_hr.$(OBJEXT) uniqscan-cellpool.$(OBJEXT) \
 	uniqscan-stage2.$(OBJEXT) uniqscan-intron.$(OBJEXT) \
 	uniqscan-boyer-moore.$(OBJEXT) uniqscan-changepoint.$(OBJEXT) \
 	uniqscan-pbinom.$(OBJEXT) uniqscan-dynprog.$(OBJEXT) \
-	uniqscan-translation.$(OBJEXT) uniqscan-smooth.$(OBJEXT) \
-	uniqscan-chimera.$(OBJEXT) uniqscan-stage3.$(OBJEXT) \
+	uniqscan-dynprog_simd.$(OBJEXT) \
+	uniqscan-dynprog_single.$(OBJEXT) \
+	uniqscan-dynprog_genome.$(OBJEXT) \
+	uniqscan-dynprog_cdna.$(OBJEXT) uniqscan-dynprog_end.$(OBJEXT) \
+	uniqscan-translation.$(OBJEXT) uniqscan-doublelist.$(OBJEXT) \
+	uniqscan-smooth.$(OBJEXT) uniqscan-chimera.$(OBJEXT) \
+	uniqscan-stage3.$(OBJEXT) uniqscan-splicestringpool.$(OBJEXT) \
 	uniqscan-splicetrie_build.$(OBJEXT) \
-	uniqscan-splicetrie.$(OBJEXT) uniqscan-stage1hr.$(OBJEXT) \
-	uniqscan-resulthr.$(OBJEXT) uniqscan-datadir.$(OBJEXT) \
-	uniqscan-getopt.$(OBJEXT) uniqscan-getopt1.$(OBJEXT) \
-	uniqscan-uniqscan.$(OBJEXT)
+	uniqscan-splicetrie.$(OBJEXT) uniqscan-splice.$(OBJEXT) \
+	uniqscan-indel.$(OBJEXT) uniqscan-bitpack64-access.$(OBJEXT) \
+	uniqscan-bytecoding.$(OBJEXT) uniqscan-sarray-read.$(OBJEXT) \
+	uniqscan-stage1hr.$(OBJEXT) uniqscan-resulthr.$(OBJEXT) \
+	uniqscan-datadir.$(OBJEXT) uniqscan-getopt.$(OBJEXT) \
+	uniqscan-getopt1.$(OBJEXT) uniqscan-uniqscan.$(OBJEXT)
 dist_uniqscan_OBJECTS = $(am__objects_13)
 uniqscan_OBJECTS = $(dist_uniqscan_OBJECTS)
 uniqscan_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -429,12 +505,16 @@ am__objects_14 = uniqscanl-except.$(OBJEXT) uniqscanl-assert.$(OBJEXT) \
 	uniqscanl-list.$(OBJEXT) uniqscanl-littleendian.$(OBJEXT) \
 	uniqscanl-bigendian.$(OBJEXT) uniqscanl-univinterval.$(OBJEXT) \
 	uniqscanl-interval.$(OBJEXT) uniqscanl-uintlist.$(OBJEXT) \
-	uniqscanl-stopwatch.$(OBJEXT) uniqscanl-access.$(OBJEXT) \
-	uniqscanl-iit-read-univ.$(OBJEXT) uniqscanl-iit-read.$(OBJEXT) \
-	uniqscanl-md5.$(OBJEXT) uniqscanl-bzip2.$(OBJEXT) \
-	uniqscanl-sequence.$(OBJEXT) uniqscanl-reader.$(OBJEXT) \
-	uniqscanl-genomicpos.$(OBJEXT) uniqscanl-compress.$(OBJEXT) \
-	uniqscanl-genome.$(OBJEXT) uniqscanl-genome_hr.$(OBJEXT) \
+	uniqscanl-uint8list.$(OBJEXT) uniqscanl-stopwatch.$(OBJEXT) \
+	uniqscanl-access.$(OBJEXT) uniqscanl-iit-read-univ.$(OBJEXT) \
+	uniqscanl-iit-read.$(OBJEXT) uniqscanl-md5.$(OBJEXT) \
+	uniqscanl-bzip2.$(OBJEXT) uniqscanl-sequence.$(OBJEXT) \
+	uniqscanl-reader.$(OBJEXT) uniqscanl-genomicpos.$(OBJEXT) \
+	uniqscanl-compress.$(OBJEXT) uniqscanl-genome.$(OBJEXT) \
+	uniqscanl-popcount.$(OBJEXT) uniqscanl-genome128_hr.$(OBJEXT) \
+	uniqscanl-genome_sites.$(OBJEXT) \
+	uniqscanl-bitpack64-read.$(OBJEXT) \
+	uniqscanl-bitpack64-readtwo.$(OBJEXT) \
 	uniqscanl-indexdb.$(OBJEXT) uniqscanl-indexdb_hr.$(OBJEXT) \
 	uniqscanl-oligo.$(OBJEXT) uniqscanl-chrom.$(OBJEXT) \
 	uniqscanl-segmentpos.$(OBJEXT) uniqscanl-chrnum.$(OBJEXT) \
@@ -445,18 +525,25 @@ am__objects_14 = uniqscanl-except.$(OBJEXT) uniqscanl-assert.$(OBJEXT) \
 	uniqscanl-maxent.$(OBJEXT) uniqscanl-pair.$(OBJEXT) \
 	uniqscanl-pairpool.$(OBJEXT) uniqscanl-diag.$(OBJEXT) \
 	uniqscanl-diagpool.$(OBJEXT) uniqscanl-orderstat.$(OBJEXT) \
-	uniqscanl-oligoindex.$(OBJEXT) \
-	uniqscanl-oligoindex_hr.$(OBJEXT) uniqscanl-stage2.$(OBJEXT) \
-	uniqscanl-intron.$(OBJEXT) uniqscanl-boyer-moore.$(OBJEXT) \
+	uniqscanl-oligoindex_hr.$(OBJEXT) uniqscanl-cellpool.$(OBJEXT) \
+	uniqscanl-stage2.$(OBJEXT) uniqscanl-intron.$(OBJEXT) \
+	uniqscanl-boyer-moore.$(OBJEXT) \
 	uniqscanl-changepoint.$(OBJEXT) uniqscanl-pbinom.$(OBJEXT) \
-	uniqscanl-dynprog.$(OBJEXT) uniqscanl-translation.$(OBJEXT) \
+	uniqscanl-dynprog.$(OBJEXT) uniqscanl-dynprog_simd.$(OBJEXT) \
+	uniqscanl-dynprog_single.$(OBJEXT) \
+	uniqscanl-dynprog_genome.$(OBJEXT) \
+	uniqscanl-dynprog_cdna.$(OBJEXT) \
+	uniqscanl-dynprog_end.$(OBJEXT) \
+	uniqscanl-translation.$(OBJEXT) uniqscanl-doublelist.$(OBJEXT) \
 	uniqscanl-smooth.$(OBJEXT) uniqscanl-chimera.$(OBJEXT) \
 	uniqscanl-stage3.$(OBJEXT) \
+	uniqscanl-splicestringpool.$(OBJEXT) \
 	uniqscanl-splicetrie_build.$(OBJEXT) \
-	uniqscanl-splicetrie.$(OBJEXT) uniqscanl-stage1hr.$(OBJEXT) \
-	uniqscanl-resulthr.$(OBJEXT) uniqscanl-datadir.$(OBJEXT) \
-	uniqscanl-getopt.$(OBJEXT) uniqscanl-getopt1.$(OBJEXT) \
-	uniqscanl-uniqscan.$(OBJEXT)
+	uniqscanl-splicetrie.$(OBJEXT) uniqscanl-splice.$(OBJEXT) \
+	uniqscanl-indel.$(OBJEXT) uniqscanl-bitpack64-access.$(OBJEXT) \
+	uniqscanl-stage1hr.$(OBJEXT) uniqscanl-resulthr.$(OBJEXT) \
+	uniqscanl-datadir.$(OBJEXT) uniqscanl-getopt.$(OBJEXT) \
+	uniqscanl-getopt1.$(OBJEXT) uniqscanl-uniqscan.$(OBJEXT)
 dist_uniqscanl_OBJECTS = $(am__objects_14)
 uniqscanl_OBJECTS = $(dist_uniqscanl_OBJECTS)
 uniqscanl_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -494,6 +581,7 @@ ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -553,7 +641,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-POPCNT_CFLAGS = @POPCNT_CFLAGS@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
@@ -633,27 +720,31 @@ GMAP_FILES = fopen.h bool.h types.h separator.h comp.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
- genomicpos.c genomicpos.h compress.c compress.h \
- gbuffer.c gbuffer.h genome.c genome.h genome_hr.c genome_hr.h \
+ genomicpos.c genomicpos.h compress.c compress.h compress-write.c compress-write.h \
+ gbuffer.c gbuffer.h genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
  genome-write.c genome-write.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h block.c block.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
- chrnum.c chrnum.h chrsubset.c chrsubset.h uinttable.c uinttable.h gregion.c gregion.h \
+ chrnum.c chrnum.h uinttable.c uinttable.h gregion.c gregion.h \
  matchdef.h match.c match.h matchpool.c matchpool.h \
  diagnostic.c diagnostic.h stage1.c stage1.h \
  diagdef.h diag.c diag.h diagpool.c diagpool.h \
  cmet.c cmet.h atoi.c atoi.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h \
  scores.h intron.c intron.h maxent.c maxent.h maxent_hr.c maxent_hr.h samflags.h pairdef.h pair.c pair.h \
- pairpool.c pairpool.h stage2.c stage2.h \
- smooth.c smooth.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
- boyer-moore.c boyer-moore.h dynprog.c dynprog.h \
+ pairpool.c pairpool.h cellpool.c cellpool.h stage2.c stage2.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ boyer-moore.c boyer-moore.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
  translation.c translation.h \
- pbinom.c pbinom.h changepoint.c changepoint.h sense.h stage3.c stage3.h \
+ pbinom.c pbinom.h changepoint.c changepoint.h sense.h fastlog.h stage3.c stage3.h \
  request.c request.h result.c result.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  chimera.c chimera.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h gmap.c
 
@@ -672,27 +763,31 @@ GMAPL_FILES = fopen.h bool.h types.h separator.h comp.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
- genomicpos.c genomicpos.h compress.c compress.h \
- gbuffer.c gbuffer.h genome.c genome.h genome_hr.c genome_hr.h \
+ genomicpos.c genomicpos.h compress.c compress.h compress-write.c compress-write.h \
+ gbuffer.c gbuffer.h genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
  genome-write.c genome-write.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h block.c block.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
- chrnum.c chrnum.h chrsubset.c chrsubset.h uinttable.c uinttable.h gregion.c gregion.h \
+ chrnum.c chrnum.h uinttable.c uinttable.h gregion.c gregion.h \
  matchdef.h match.c match.h matchpool.c matchpool.h \
  diagnostic.c diagnostic.h stage1.c stage1.h \
  diagdef.h diag.c diag.h diagpool.c diagpool.h \
  cmet.c cmet.h atoi.c atoi.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h \
  scores.h intron.c intron.h maxent.c maxent.h maxent_hr.c maxent_hr.h samflags.h pairdef.h pair.c pair.h \
- pairpool.c pairpool.h stage2.c stage2.h \
- smooth.c smooth.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
- boyer-moore.c boyer-moore.h dynprog.c dynprog.h \
+ pairpool.c pairpool.h cellpool.c cellpool.h stage2.c stage2.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ boyer-moore.c boyer-moore.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
  translation.c translation.h \
- pbinom.c pbinom.h changepoint.c changepoint.h sense.h stage3.c stage3.h \
+ pbinom.c pbinom.h changepoint.c changepoint.h sense.h fastlog.h stage3.c stage3.h \
  request.c request.h result.c result.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  chimera.c chimera.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h gmap.c
 
@@ -713,7 +808,9 @@ GSNAP_FILES = fopen.h bool.h types.h separator.h comp.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -723,14 +820,19 @@ GSNAP_FILES = fopen.h bool.h types.h separator.h comp.h \
  goby.c goby.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h gbuffer.c gbuffer.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ gbuffer.c gbuffer.h translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
+ bytecoding.c bytecoding.h sarray-read.c sarray-read.h \
  stage1hr.c stage1hr.h \
  request.c request.h resulthr.c resulthr.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h gsnap.c
 
@@ -751,7 +853,9 @@ GSNAPL_FILES = fopen.h bool.h types.h separator.h comp.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -761,14 +865,18 @@ GSNAPL_FILES = fopen.h bool.h types.h separator.h comp.h \
  goby.c goby.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h gbuffer.c gbuffer.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ gbuffer.c gbuffer.h translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
  stage1hr.c stage1hr.h \
  request.c request.h resulthr.c resulthr.h \
- inbuffer.c inbuffer.h outbuffer.c outbuffer.h \
+ inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h gsnap.c
 
@@ -788,7 +896,9 @@ UNIQSCAN_FILES = fopen.h bool.h types.h separator.h comp.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -797,11 +907,16 @@ UNIQSCAN_FILES = fopen.h bool.h types.h separator.h comp.h \
  mapq.c mapq.h shortread.c shortread.h substring.c substring.h stage3hr.c stage3hr.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
+ bytecoding.c bytecoding.h sarray-read.c sarray-read.h \
  stage1hr.c stage1hr.h resulthr.c resulthr.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h uniqscan.c
@@ -815,12 +930,14 @@ UNIQSCANL_FILES = fopen.h bool.h types.h separator.h comp.h \
  except.c except.h assert.c assert.h mem.c mem.h \
  intlistdef.h intlist.c intlist.h listdef.h list.c list.h \
  littleendian.c littleendian.h bigendian.c bigendian.h \
- univinterval.c univinterval.h interval.c interval.h uintlist.c uintlist.h \
+ univinterval.c univinterval.h interval.c interval.h uintlist.c uintlist.h uint8list.c uint8list.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h reader.c reader.h \
  genomicpos.c genomicpos.h compress.c compress.h \
- genome.c genome.h genome_hr.c genome_hr.h \
+ genome.c genome.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h genome_sites.c genome_sites.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
  indexdbdef.h indexdb.c indexdb.h indexdb_hr.c indexdb_hr.h \
  oligo.c oligo.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
@@ -829,11 +946,15 @@ UNIQSCANL_FILES = fopen.h bool.h types.h separator.h comp.h \
  mapq.c mapq.h shortread.c shortread.h substring.c substring.h stage3hr.c stage3hr.h \
  spanningelt.c spanningelt.h cmet.c cmet.h atoi.c atoi.h \
  comp.h maxent.c maxent.h pairdef.h pair.c pair.h pairpool.c pairpool.h diag.c diag.h diagpool.c diagpool.h \
- orderstat.c orderstat.h oligoindex.c oligoindex.h oligoindex_hr.c oligoindex_hr.h stage2.c stage2.h \
+ orderstat.c orderstat.h oligoindex_hr.c oligoindex_hr.h cellpool.c cellpool.h stage2.c stage2.h \
  intron.c intron.h boyer-moore.c boyer-moore.h changepoint.c changepoint.h pbinom.c pbinom.h \
- dynprog.c dynprog.h translation.c translation.h smooth.c smooth.h \
- chimera.c chimera.h sense.h stage3.c stage3.h \
- splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ dynprog.c dynprog.h dynprog_simd.c dynprog_simd.h \
+ dynprog_single.c dynprog_single.h dynprog_genome.c dynprog_genome.h dynprog_cdna.c dynprog_cdna.h dynprog_end.c dynprog_end.h \
+ translation.c translation.h \
+ doublelist.c doublelist.h smooth.c smooth.h \
+ chimera.c chimera.h sense.h fastlog.h stage3.c stage3.h \
+ splicestringpool.c splicestringpool.h splicetrie_build.c splicetrie_build.h splicetrie.c splicetrie.h \
+ splice.c splice.h indel.c indel.h bitpack64-access.c bitpack64-access.h \
  stage1hr.c stage1hr.h resulthr.c resulthr.h \
  datadir.c datadir.h mode.h \
  getopt.c getopt1.c getopt.h uniqscan.c
@@ -852,14 +973,18 @@ GMAPINDEX_FILES = fopen.h bool.h types.h \
  iit-read-univ.c iit-read-univ.h iit-write-univ.c iit-write-univ.h \
  iitdef.h iit-read.c iit-read.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
- genomicpos.c genomicpos.h compress.c compress.h genome-write.c genome-write.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
+ genomicpos.c genomicpos.h compress-write.c compress-write.h genome-write.c genome-write.h \
+ compress.c compress.h popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h \
+ bitpack64-access.c bitpack64-access.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
  table.c table.h tableuint.c tableuint.h tableuint8.c tableuint8.h \
  chrom.c chrom.h segmentpos.c segmentpos.h \
+ saca-k.c saca-k.h uint8list.c uint8list.h bytecoding.c bytecoding.h sarray-write.c sarray-write.h \
  gmapindex.c
 
 gmapindex_CC = $(PTHREAD_CC)
-gmapindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DUTILITYP=1
+gmapindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_CFLAGS) -DUTILITYP=1
 gmapindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
 gmapindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_gmapindex_SOURCES = $(GMAPINDEX_FILES)
@@ -870,15 +995,17 @@ SNPINDEX_FILES = fopen.h bool.h types.h \
  univinterval.c univinterval.h interval.c interval.h uintlist.c uintlist.h \
  stopwatch.c stopwatch.h access.c access.h \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.c iit-read.h \
- genomicpos.c genomicpos.h compress.c compress.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
+ genomicpos.c genomicpos.h compress.c compress.h compress-write.c compress-write.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.c indexdb.h indexdb-write.c indexdb-write.h \
  chrom.c chrom.h \
  complement.h md5.c md5.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
  datadir.c datadir.h \
  getopt.c getopt1.c getopt.h snpindex.c
 
 snpindex_CC = $(PTHREAD_CC)
-snpindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
+snpindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_FLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
 snpindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
 snpindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_snpindex_SOURCES = $(SNPINDEX_FILES)
@@ -889,16 +1016,21 @@ CMETINDEX_FILES = fopen.h bool.h types.h \
  stopwatch.c stopwatch.h access.c access.h \
  univinterval.c univinterval.h interval.h interval.c \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.h iit-read.c \
- complement.h compress.c compress.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
+ complement.h compress.c compress.h compress-write.c compress-write.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
  cmet.c cmet.h \
+ complement.h md5.c md5.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
+ uintlist.c uintlist.h intlist.c intlist.h \
+ saca-k.c saca-k.h uint8list.c uint8list.h bytecoding.c bytecoding.h sarray-write.c sarray-write.h \
  list.c list.h listdef.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h cmetindex.c
 
 cmetindex_CC = $(PTHREAD_CC)
-cmetindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
+cmetindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_FLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
 cmetindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
-cmetindex_LDADD = $(PTHREAD_LIBS)
+cmetindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_cmetindex_SOURCES = $(CMETINDEX_FILES)
 ATOIINDEX_FILES = fopen.h bool.h types.h \
  except.c except.h assert.c assert.h mem.c mem.h \
@@ -907,16 +1039,21 @@ ATOIINDEX_FILES = fopen.h bool.h types.h \
  stopwatch.c stopwatch.h access.c access.h \
  univinterval.c univinterval.h interval.h interval.c \
  iit-read-univ.c iit-read-univ.h iitdef.h iit-read.h iit-read.c \
- complement.h compress.c compress.h \
- genome_hr.c genome_hr.h indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
+ complement.h compress.c compress.h compress-write.c compress-write.h \
+ popcount.c popcount.h genome128_hr.c genome128_hr.h \
+ bitpack64-read.c bitpack64-read.h bitpack64-readtwo.c bitpack64-readtwo.h bitpack64-write.c bitpack64-write.h \
+ indexdbdef.h indexdb.h indexdb.c indexdb-write.c indexdb-write.h \
  atoi.c atoi.h \
+ complement.h md5.c md5.h bzip2.c bzip2.h sequence.c sequence.h genome.c genome.h \
+ uintlist.c uintlist.h intlist.c intlist.h \
+ saca-k.c saca-k.h uint8list.c uint8list.h bytecoding.c bytecoding.h sarray-write.c sarray-write.h \
  list.c list.h listdef.h datadir.c datadir.h \
  getopt.c getopt1.c getopt.h atoiindex.c
 
 atoiindex_CC = $(PTHREAD_CC)
-atoiindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
+atoiindex_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(SIMD_FLAGS) $(POPCNT_FLAGS) -DGMAPDB=\"$(GMAPDB)\" -DUTILITYP=1
 atoiindex_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
-atoiindex_LDADD = $(PTHREAD_LIBS)
+atoiindex_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
 dist_atoiindex_SOURCES = $(ATOIINDEX_FILES)
 GET_GENOME_FILES = fopen.h bool.h types.h separator.h \
  except.c except.h assert.c assert.h mem.c mem.h \
@@ -928,7 +1065,7 @@ GET_GENOME_FILES = fopen.h bool.h types.h separator.h \
  md5.c md5.h complement.h bzip2.c bzip2.h sequence.c sequence.h \
  genome.c genome.h \
  genomicpos.c genomicpos.h chrom.c chrom.h \
- chrnum.c chrnum.h chrsubset.c chrsubset.h \
+ chrnum.c chrnum.h \
  datadir.c datadir.h parserange.c parserange.h \
  getopt.c getopt1.c getopt.h get-genome.c
 
@@ -944,6 +1081,7 @@ IIT_STORE_FILES = fopen.h bool.h types.h \
  univinterval.c univinterval.h interval.c interval.h \
  uintlist.c uintlist.h \
  stopwatch.c stopwatch.h access.c access.h \
+ doublelist.c doublelist.h \
  iit-write-univ.c iit-write-univ.h iitdef.h iit-write.c iit-write.h \
  tableint.c tableint.h table.c table.h chrom.c chrom.h \
  getopt.c getopt1.c getopt.h iit_store.c
@@ -1115,10 +1253,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-atoiindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-bitpack64-readtwo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-bitpack64-write.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-bytecoding.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-compress-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-compress.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-except.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-genome128_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-getopt1.Po at am__quote@
@@ -1127,20 +1272,35 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-indexdb-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-indexdb.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-interval.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-intlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-list.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-littleendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-mem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-popcount.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-saca-k.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-sarray-write.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-stopwatch.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-uint8list.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-uintlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atoiindex-univinterval.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-access.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-bitpack64-readtwo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-bitpack64-write.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-bytecoding.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-bzip2.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-cmet.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-cmetindex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-compress-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-compress.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-except.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-genome128_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-getopt1.Po at am__quote@
@@ -1149,10 +1309,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-indexdb-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-indexdb.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-interval.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-intlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-list.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-littleendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-mem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-popcount.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-saca-k.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-sarray-write.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-stopwatch.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-uint8list.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-uintlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cmetindex-univinterval.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-access.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-assert.Po at am__quote@
@@ -1160,7 +1328,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-bzip2.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-chrnum.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-chrom.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-chrsubset.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_genome-genome.Po at am__quote@
@@ -1185,26 +1352,36 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-bitpack64-readtwo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-block.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-boyer-moore.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-cellpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-changepoint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-chimera.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-chrnum.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-chrom.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-chrsubset.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-cmet.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-compress-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-compress.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-diag.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-diagnostic.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-diagpool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-dynprog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-dynprog_cdna.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-dynprog_end.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-dynprog_genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-dynprog_simd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-dynprog_single.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-gbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-genome-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-genome128_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-genome_sites.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-getopt1.Po at am__quote@
@@ -1227,19 +1404,21 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-mem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-oligo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-oligoindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-oligoindex_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-orderstat.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-outbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-pair.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-pairpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-pbinom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-reader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-request.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-result.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-samheader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-segmentpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-smooth.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-splicestringpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-splicetrie.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-splicetrie_build.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmap-stage1.Po at am__quote@
@@ -1253,13 +1432,19 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-access.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bitpack64-access.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bitpack64-readtwo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bitpack64-write.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bytecoding.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-bzip2.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-chrom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-compress-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-compress.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-genome-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-genome128_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-gmapindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-iit-read-univ.Po at am__quote@
@@ -1273,38 +1458,52 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-littleendian.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-mem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-popcount.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-saca-k.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-sarray-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-segmentpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-stopwatch.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-table.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-tableuint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-tableuint8.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-uint8list.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-uintlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapindex-univinterval.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-access.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-bitpack64-readtwo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-block.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-boyer-moore.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-cellpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-changepoint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-chimera.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-chrnum.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-chrom.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-chrsubset.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-cmet.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-compress-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-compress.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-diag.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-diagnostic.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-diagpool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-dynprog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-dynprog_cdna.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-dynprog_end.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-dynprog_genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-dynprog_simd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-dynprog_single.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-gbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-genome-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-genome128_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-genome_sites.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-getopt1.Po at am__quote@
@@ -1327,19 +1526,21 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-mem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-oligo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-oligoindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-oligoindex_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-orderstat.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-outbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-pair.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-pairpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-pbinom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-reader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-request.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-result.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-samheader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-segmentpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-smooth.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-splicestringpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-splicetrie.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-splicetrie_build.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gmapl-stage1.Po at am__quote@
@@ -1354,8 +1555,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-bitpack64-access.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-bitpack64-readtwo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-boyer-moore.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-bytecoding.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-cellpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-changepoint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-chimera.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-chrnum.Po at am__quote@
@@ -1365,11 +1571,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-diag.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-diagpool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-dynprog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-dynprog_cdna.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-dynprog_end.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-dynprog_genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-dynprog_simd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-dynprog_single.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-gbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-genome128_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-genome_sites.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-getopt1.Po at am__quote@
@@ -1378,6 +1591,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-iit-read-univ.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-iit-read.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-inbuffer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-indel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-indexdb.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-indexdb_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-interval.Po at am__quote@
@@ -1391,22 +1605,26 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-mem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-oligo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-oligoindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-oligoindex_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-orderstat.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-outbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-pair.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-pairpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-pbinom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-reader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-request.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-resulthr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-samheader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-samprint.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-sarray-read.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-segmentpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-shortread.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-smooth.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-spanningelt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-splice.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-splicestringpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-splicetrie.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-splicetrie_build.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnap-stage1hr.Po at am__quote@
@@ -1422,8 +1640,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-bitpack64-access.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-bitpack64-readtwo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-boyer-moore.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-cellpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-changepoint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-chimera.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-chrnum.Po at am__quote@
@@ -1433,11 +1655,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-diag.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-diagpool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-dynprog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-dynprog_cdna.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-dynprog_end.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-dynprog_genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-dynprog_simd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-dynprog_single.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-gbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-genome128_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-genome_sites.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-getopt1.Po at am__quote@
@@ -1446,6 +1675,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-iit-read-univ.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-iit-read.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-inbuffer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-indel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-indexdb.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-indexdb_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-interval.Po at am__quote@
@@ -1459,22 +1689,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-mem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-oligo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-oligoindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-oligoindex_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-orderstat.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-outbuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-pair.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-pairpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-pbinom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-reader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-request.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-resulthr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-samheader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-samprint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-segmentpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-shortread.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-smooth.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-spanningelt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-splice.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-splicestringpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-splicetrie.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-splicetrie_build.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsnapl-stage1hr.Po at am__quote@
@@ -1526,6 +1759,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-bigendian.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-chrom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iit_store-getopt1.Po at am__quote@
@@ -1545,13 +1779,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-access.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-bitpack64-readtwo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-bitpack64-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-bzip2.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-chrom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-compress-write.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-compress.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-genome128_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-getopt1.Po at am__quote@
@@ -1565,6 +1803,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-littleendian.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-mem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-snpindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/snpindex-stopwatch.Po at am__quote@
@@ -1574,8 +1813,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-bitpack64-access.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-bitpack64-readtwo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-boyer-moore.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-bytecoding.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-cellpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-changepoint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-chimera.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-chrnum.Po at am__quote@
@@ -1585,15 +1829,23 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-diag.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-diagpool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-dynprog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-dynprog_cdna.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-dynprog_end.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-dynprog_genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-dynprog_simd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-dynprog_single.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-genome128_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-genome_sites.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-getopt1.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-iit-read-univ.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-iit-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-indel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-indexdb.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-indexdb_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-interval.Po at am__quote@
@@ -1607,19 +1859,22 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-mem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-oligo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-oligoindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-oligoindex_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-orderstat.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-pair.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-pairpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-pbinom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-reader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-resulthr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-sarray-read.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-segmentpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-sequence.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-shortread.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-smooth.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-spanningelt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-splice.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-splicestringpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-splicetrie.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-splicetrie_build.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscan-stage1hr.Po at am__quote@
@@ -1636,8 +1891,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-assert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-atoi.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-bigendian.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-bitpack64-access.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-bitpack64-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-bitpack64-readtwo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-boyer-moore.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-bzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-cellpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-changepoint.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-chimera.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-chrnum.Po at am__quote@
@@ -1647,15 +1906,23 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-datadir.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-diag.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-diagpool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-doublelist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-dynprog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-dynprog_cdna.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-dynprog_end.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-dynprog_genome.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-dynprog_simd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-dynprog_single.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-except.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-genome.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-genome_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-genome128_hr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-genome_sites.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-genomicpos.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-getopt.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-getopt1.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-iit-read-univ.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-iit-read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-indel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-indexdb.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-indexdb_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-interval.Po at am__quote@
@@ -1669,12 +1936,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-md5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-mem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-oligo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-oligoindex.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-oligoindex_hr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-orderstat.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-pair.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-pairpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-pbinom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-popcount.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-reader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-resulthr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-segmentpos.Po at am__quote@
@@ -1682,6 +1949,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-shortread.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-smooth.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-spanningelt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-splice.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-splicestringpool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-splicetrie.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-splicetrie_build.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-stage1hr.Po at am__quote@
@@ -1691,6 +1960,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-stopwatch.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-substring.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-translation.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-uint8list.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-uintlist.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-uniqscan.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uniqscanl-univinterval.Po at am__quote@
@@ -1898,19 +2168,89 @@ atoiindex-compress.obj: compress.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
 
-atoiindex-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-genome_hr.o -MD -MP -MF $(DEPDIR)/atoiindex-genome_hr.Tpo -c -o atoiindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-genome_hr.Tpo $(DEPDIR)/atoiindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='atoiindex-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+atoiindex-compress-write.o: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-compress-write.o -MD -MP -MF $(DEPDIR)/atoiindex-compress-write.Tpo -c -o atoiindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-compress-write.Tpo $(DEPDIR)/atoiindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='atoiindex-compress-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+
+atoiindex-compress-write.obj: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-compress-write.obj -MD -MP -MF $(DEPDIR)/atoiindex-compress-write.Tpo -c -o atoiindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-compress-write.Tpo $(DEPDIR)/atoiindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='atoiindex-compress-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+
+atoiindex-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-popcount.o -MD -MP -MF $(DEPDIR)/atoiindex-popcount.Tpo -c -o atoiindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-popcount.Tpo $(DEPDIR)/atoiindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='atoiindex-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+atoiindex-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-popcount.obj -MD -MP -MF $(DEPDIR)/atoiindex-popcount.Tpo -c -o atoiindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-popcount.Tpo $(DEPDIR)/atoiindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='atoiindex-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+atoiindex-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-genome128_hr.o -MD -MP -MF $(DEPDIR)/atoiindex-genome128_hr.Tpo -c -o atoiindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-genome128_hr.Tpo $(DEPDIR)/atoiindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='atoiindex-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+atoiindex-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-genome128_hr.obj -MD -MP -MF $(DEPDIR)/atoiindex-genome128_hr.Tpo -c -o atoiindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-genome128_hr.Tpo $(DEPDIR)/atoiindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='atoiindex-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+atoiindex-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bitpack64-read.o -MD -MP -MF $(DEPDIR)/atoiindex-bitpack64-read.Tpo -c -o atoiindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bitpack64-read.Tpo $(DEPDIR)/atoiindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='atoiindex-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+atoiindex-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/atoiindex-bitpack64-read.Tpo -c -o atoiindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bitpack64-read.Tpo $(DEPDIR)/atoiindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='atoiindex-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+atoiindex-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/atoiindex-bitpack64-readtwo.Tpo -c -o atoiindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bitpack64-readtwo.Tpo $(DEPDIR)/atoiindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='atoiindex-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+atoiindex-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/atoiindex-bitpack64-readtwo.Tpo -c -o atoiindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bitpack64-readtwo.Tpo $(DEPDIR)/atoiindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='atoiindex-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
 
-atoiindex-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-genome_hr.obj -MD -MP -MF $(DEPDIR)/atoiindex-genome_hr.Tpo -c -o atoiindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-genome_hr.Tpo $(DEPDIR)/atoiindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='atoiindex-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+atoiindex-bitpack64-write.o: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bitpack64-write.o -MD -MP -MF $(DEPDIR)/atoiindex-bitpack64-write.Tpo -c -o atoiindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bitpack64-write.Tpo $(DEPDIR)/atoiindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='atoiindex-bitpack64-write.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+
+atoiindex-bitpack64-write.obj: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bitpack64-write.obj -MD -MP -MF $(DEPDIR)/atoiindex-bitpack64-write.Tpo -c -o atoiindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bitpack64-write.Tpo $(DEPDIR)/atoiindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='atoiindex-bitpack64-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
 
 atoiindex-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-indexdb.o -MD -MP -MF $(DEPDIR)/atoiindex-indexdb.Tpo -c -o atoiindex-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -1954,6 +2294,146 @@ atoiindex-atoi.obj: atoi.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-atoi.obj `if test -f 'atoi.c'; then $(CYGPATH_W) 'atoi.c'; else $(CYGPATH_W) '$(srcdir)/atoi.c'; fi`
 
+atoiindex-md5.o: md5.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-md5.o -MD -MP -MF $(DEPDIR)/atoiindex-md5.Tpo -c -o atoiindex-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-md5.Tpo $(DEPDIR)/atoiindex-md5.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='md5.c' object='atoiindex-md5.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
+
+atoiindex-md5.obj: md5.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-md5.obj -MD -MP -MF $(DEPDIR)/atoiindex-md5.Tpo -c -o atoiindex-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-md5.Tpo $(DEPDIR)/atoiindex-md5.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='md5.c' object='atoiindex-md5.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`
+
+atoiindex-bzip2.o: bzip2.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bzip2.o -MD -MP -MF $(DEPDIR)/atoiindex-bzip2.Tpo -c -o atoiindex-bzip2.o `test -f 'bzip2.c' || echo '$(srcdir)/'`bzip2.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bzip2.Tpo $(DEPDIR)/atoiindex-bzip2.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bzip2.c' object='atoiindex-bzip2.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bzip2.o `test -f 'bzip2.c' || echo '$(srcdir)/'`bzip2.c
+
+atoiindex-bzip2.obj: bzip2.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bzip2.obj -MD -MP -MF $(DEPDIR)/atoiindex-bzip2.Tpo -c -o atoiindex-bzip2.obj `if test -f 'bzip2.c'; then $(CYGPATH_W) 'bzip2.c'; else $(CYGPATH_W) '$(srcdir)/bzip2.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bzip2.Tpo $(DEPDIR)/atoiindex-bzip2.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bzip2.c' object='atoiindex-bzip2.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bzip2.obj `if test -f 'bzip2.c'; then $(CYGPATH_W) 'bzip2.c'; else $(CYGPATH_W) '$(srcdir)/bzip2.c'; fi`
+
+atoiindex-sequence.o: sequence.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-sequence.o -MD -MP -MF $(DEPDIR)/atoiindex-sequence.Tpo -c -o atoiindex-sequence.o `test -f 'sequence.c' || echo '$(srcdir)/'`sequence.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-sequence.Tpo $(DEPDIR)/atoiindex-sequence.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sequence.c' object='atoiindex-sequence.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-sequence.o `test -f 'sequence.c' || echo '$(srcdir)/'`sequence.c
+
+atoiindex-sequence.obj: sequence.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-sequence.obj -MD -MP -MF $(DEPDIR)/atoiindex-sequence.Tpo -c -o atoiindex-sequence.obj `if test -f 'sequence.c'; then $(CYGPATH_W) 'sequence.c'; else $(CYGPATH_W) '$(srcdir)/sequence.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-sequence.Tpo $(DEPDIR)/atoiindex-sequence.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sequence.c' object='atoiindex-sequence.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-sequence.obj `if test -f 'sequence.c'; then $(CYGPATH_W) 'sequence.c'; else $(CYGPATH_W) '$(srcdir)/sequence.c'; fi`
+
+atoiindex-genome.o: genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-genome.o -MD -MP -MF $(DEPDIR)/atoiindex-genome.Tpo -c -o atoiindex-genome.o `test -f 'genome.c' || echo '$(srcdir)/'`genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-genome.Tpo $(DEPDIR)/atoiindex-genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome.c' object='atoiindex-genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-genome.o `test -f 'genome.c' || echo '$(srcdir)/'`genome.c
+
+atoiindex-genome.obj: genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-genome.obj -MD -MP -MF $(DEPDIR)/atoiindex-genome.Tpo -c -o atoiindex-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-genome.Tpo $(DEPDIR)/atoiindex-genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome.c' object='atoiindex-genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
+
+atoiindex-uintlist.o: uintlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-uintlist.o -MD -MP -MF $(DEPDIR)/atoiindex-uintlist.Tpo -c -o atoiindex-uintlist.o `test -f 'uintlist.c' || echo '$(srcdir)/'`uintlist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-uintlist.Tpo $(DEPDIR)/atoiindex-uintlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uintlist.c' object='atoiindex-uintlist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-uintlist.o `test -f 'uintlist.c' || echo '$(srcdir)/'`uintlist.c
+
+atoiindex-uintlist.obj: uintlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-uintlist.obj -MD -MP -MF $(DEPDIR)/atoiindex-uintlist.Tpo -c -o atoiindex-uintlist.obj `if test -f 'uintlist.c'; then $(CYGPATH_W) 'uintlist.c'; else $(CYGPATH_W) '$(srcdir)/uintlist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-uintlist.Tpo $(DEPDIR)/atoiindex-uintlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uintlist.c' object='atoiindex-uintlist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-uintlist.obj `if test -f 'uintlist.c'; then $(CYGPATH_W) 'uintlist.c'; else $(CYGPATH_W) '$(srcdir)/uintlist.c'; fi`
+
+atoiindex-intlist.o: intlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-intlist.o -MD -MP -MF $(DEPDIR)/atoiindex-intlist.Tpo -c -o atoiindex-intlist.o `test -f 'intlist.c' || echo '$(srcdir)/'`intlist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-intlist.Tpo $(DEPDIR)/atoiindex-intlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='intlist.c' object='atoiindex-intlist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-intlist.o `test -f 'intlist.c' || echo '$(srcdir)/'`intlist.c
+
+atoiindex-intlist.obj: intlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-intlist.obj -MD -MP -MF $(DEPDIR)/atoiindex-intlist.Tpo -c -o atoiindex-intlist.obj `if test -f 'intlist.c'; then $(CYGPATH_W) 'intlist.c'; else $(CYGPATH_W) '$(srcdir)/intlist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-intlist.Tpo $(DEPDIR)/atoiindex-intlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='intlist.c' object='atoiindex-intlist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-intlist.obj `if test -f 'intlist.c'; then $(CYGPATH_W) 'intlist.c'; else $(CYGPATH_W) '$(srcdir)/intlist.c'; fi`
+
+atoiindex-saca-k.o: saca-k.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-saca-k.o -MD -MP -MF $(DEPDIR)/atoiindex-saca-k.Tpo -c -o atoiindex-saca-k.o `test -f 'saca-k.c' || echo '$(srcdir)/'`saca-k.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-saca-k.Tpo $(DEPDIR)/atoiindex-saca-k.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='saca-k.c' object='atoiindex-saca-k.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-saca-k.o `test -f 'saca-k.c' || echo '$(srcdir)/'`saca-k.c
+
+atoiindex-saca-k.obj: saca-k.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-saca-k.obj -MD -MP -MF $(DEPDIR)/atoiindex-saca-k.Tpo -c -o atoiindex-saca-k.obj `if test -f 'saca-k.c'; then $(CYGPATH_W) 'saca-k.c'; else $(CYGPATH_W) '$(srcdir)/saca-k.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-saca-k.Tpo $(DEPDIR)/atoiindex-saca-k.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='saca-k.c' object='atoiindex-saca-k.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-saca-k.obj `if test -f 'saca-k.c'; then $(CYGPATH_W) 'saca-k.c'; else $(CYGPATH_W) '$(srcdir)/saca-k.c'; fi`
+
+atoiindex-uint8list.o: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-uint8list.o -MD -MP -MF $(DEPDIR)/atoiindex-uint8list.Tpo -c -o atoiindex-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-uint8list.Tpo $(DEPDIR)/atoiindex-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='atoiindex-uint8list.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+
+atoiindex-uint8list.obj: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-uint8list.obj -MD -MP -MF $(DEPDIR)/atoiindex-uint8list.Tpo -c -o atoiindex-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-uint8list.Tpo $(DEPDIR)/atoiindex-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='atoiindex-uint8list.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+
+atoiindex-bytecoding.o: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bytecoding.o -MD -MP -MF $(DEPDIR)/atoiindex-bytecoding.Tpo -c -o atoiindex-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bytecoding.Tpo $(DEPDIR)/atoiindex-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='atoiindex-bytecoding.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+
+atoiindex-bytecoding.obj: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-bytecoding.obj -MD -MP -MF $(DEPDIR)/atoiindex-bytecoding.Tpo -c -o atoiindex-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-bytecoding.Tpo $(DEPDIR)/atoiindex-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='atoiindex-bytecoding.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+
+atoiindex-sarray-write.o: sarray-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-sarray-write.o -MD -MP -MF $(DEPDIR)/atoiindex-sarray-write.Tpo -c -o atoiindex-sarray-write.o `test -f 'sarray-write.c' || echo '$(srcdir)/'`sarray-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-sarray-write.Tpo $(DEPDIR)/atoiindex-sarray-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-write.c' object='atoiindex-sarray-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-sarray-write.o `test -f 'sarray-write.c' || echo '$(srcdir)/'`sarray-write.c
+
+atoiindex-sarray-write.obj: sarray-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-sarray-write.obj -MD -MP -MF $(DEPDIR)/atoiindex-sarray-write.Tpo -c -o atoiindex-sarray-write.obj `if test -f 'sarray-write.c'; then $(CYGPATH_W) 'sarray-write.c'; else $(CYGPATH_W) '$(srcdir)/sarray-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-sarray-write.Tpo $(DEPDIR)/atoiindex-sarray-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-write.c' object='atoiindex-sarray-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -c -o atoiindex-sarray-write.obj `if test -f 'sarray-write.c'; then $(CYGPATH_W) 'sarray-write.c'; else $(CYGPATH_W) '$(srcdir)/sarray-write.c'; fi`
+
 atoiindex-list.o: list.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atoiindex_CFLAGS) $(CFLAGS) -MT atoiindex-list.o -MD -MP -MF $(DEPDIR)/atoiindex-list.Tpo -c -o atoiindex-list.o `test -f 'list.c' || echo '$(srcdir)/'`list.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/atoiindex-list.Tpo $(DEPDIR)/atoiindex-list.Po
@@ -2206,19 +2686,89 @@ cmetindex-compress.obj: compress.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
 
-cmetindex-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-genome_hr.o -MD -MP -MF $(DEPDIR)/cmetindex-genome_hr.Tpo -c -o cmetindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-genome_hr.Tpo $(DEPDIR)/cmetindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='cmetindex-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+cmetindex-compress-write.o: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-compress-write.o -MD -MP -MF $(DEPDIR)/cmetindex-compress-write.Tpo -c -o cmetindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-compress-write.Tpo $(DEPDIR)/cmetindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='cmetindex-compress-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+
+cmetindex-compress-write.obj: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-compress-write.obj -MD -MP -MF $(DEPDIR)/cmetindex-compress-write.Tpo -c -o cmetindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-compress-write.Tpo $(DEPDIR)/cmetindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='cmetindex-compress-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+
+cmetindex-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-popcount.o -MD -MP -MF $(DEPDIR)/cmetindex-popcount.Tpo -c -o cmetindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-popcount.Tpo $(DEPDIR)/cmetindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='cmetindex-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+cmetindex-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-popcount.obj -MD -MP -MF $(DEPDIR)/cmetindex-popcount.Tpo -c -o cmetindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-popcount.Tpo $(DEPDIR)/cmetindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='cmetindex-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+cmetindex-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-genome128_hr.o -MD -MP -MF $(DEPDIR)/cmetindex-genome128_hr.Tpo -c -o cmetindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-genome128_hr.Tpo $(DEPDIR)/cmetindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='cmetindex-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+cmetindex-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-genome128_hr.obj -MD -MP -MF $(DEPDIR)/cmetindex-genome128_hr.Tpo -c -o cmetindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-genome128_hr.Tpo $(DEPDIR)/cmetindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='cmetindex-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+cmetindex-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bitpack64-read.o -MD -MP -MF $(DEPDIR)/cmetindex-bitpack64-read.Tpo -c -o cmetindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bitpack64-read.Tpo $(DEPDIR)/cmetindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='cmetindex-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+cmetindex-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/cmetindex-bitpack64-read.Tpo -c -o cmetindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bitpack64-read.Tpo $(DEPDIR)/cmetindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='cmetindex-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+cmetindex-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/cmetindex-bitpack64-readtwo.Tpo -c -o cmetindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bitpack64-readtwo.Tpo $(DEPDIR)/cmetindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='cmetindex-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+cmetindex-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/cmetindex-bitpack64-readtwo.Tpo -c -o cmetindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bitpack64-readtwo.Tpo $(DEPDIR)/cmetindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='cmetindex-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+
+cmetindex-bitpack64-write.o: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bitpack64-write.o -MD -MP -MF $(DEPDIR)/cmetindex-bitpack64-write.Tpo -c -o cmetindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bitpack64-write.Tpo $(DEPDIR)/cmetindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='cmetindex-bitpack64-write.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
 
-cmetindex-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-genome_hr.obj -MD -MP -MF $(DEPDIR)/cmetindex-genome_hr.Tpo -c -o cmetindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-genome_hr.Tpo $(DEPDIR)/cmetindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='cmetindex-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+cmetindex-bitpack64-write.obj: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bitpack64-write.obj -MD -MP -MF $(DEPDIR)/cmetindex-bitpack64-write.Tpo -c -o cmetindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bitpack64-write.Tpo $(DEPDIR)/cmetindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='cmetindex-bitpack64-write.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
 
 cmetindex-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-indexdb.o -MD -MP -MF $(DEPDIR)/cmetindex-indexdb.Tpo -c -o cmetindex-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -2262,6 +2812,146 @@ cmetindex-cmet.obj: cmet.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-cmet.obj `if test -f 'cmet.c'; then $(CYGPATH_W) 'cmet.c'; else $(CYGPATH_W) '$(srcdir)/cmet.c'; fi`
 
+cmetindex-md5.o: md5.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-md5.o -MD -MP -MF $(DEPDIR)/cmetindex-md5.Tpo -c -o cmetindex-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-md5.Tpo $(DEPDIR)/cmetindex-md5.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='md5.c' object='cmetindex-md5.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
+
+cmetindex-md5.obj: md5.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-md5.obj -MD -MP -MF $(DEPDIR)/cmetindex-md5.Tpo -c -o cmetindex-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-md5.Tpo $(DEPDIR)/cmetindex-md5.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='md5.c' object='cmetindex-md5.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`
+
+cmetindex-bzip2.o: bzip2.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bzip2.o -MD -MP -MF $(DEPDIR)/cmetindex-bzip2.Tpo -c -o cmetindex-bzip2.o `test -f 'bzip2.c' || echo '$(srcdir)/'`bzip2.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bzip2.Tpo $(DEPDIR)/cmetindex-bzip2.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bzip2.c' object='cmetindex-bzip2.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bzip2.o `test -f 'bzip2.c' || echo '$(srcdir)/'`bzip2.c
+
+cmetindex-bzip2.obj: bzip2.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bzip2.obj -MD -MP -MF $(DEPDIR)/cmetindex-bzip2.Tpo -c -o cmetindex-bzip2.obj `if test -f 'bzip2.c'; then $(CYGPATH_W) 'bzip2.c'; else $(CYGPATH_W) '$(srcdir)/bzip2.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bzip2.Tpo $(DEPDIR)/cmetindex-bzip2.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bzip2.c' object='cmetindex-bzip2.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bzip2.obj `if test -f 'bzip2.c'; then $(CYGPATH_W) 'bzip2.c'; else $(CYGPATH_W) '$(srcdir)/bzip2.c'; fi`
+
+cmetindex-sequence.o: sequence.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-sequence.o -MD -MP -MF $(DEPDIR)/cmetindex-sequence.Tpo -c -o cmetindex-sequence.o `test -f 'sequence.c' || echo '$(srcdir)/'`sequence.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-sequence.Tpo $(DEPDIR)/cmetindex-sequence.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sequence.c' object='cmetindex-sequence.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-sequence.o `test -f 'sequence.c' || echo '$(srcdir)/'`sequence.c
+
+cmetindex-sequence.obj: sequence.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-sequence.obj -MD -MP -MF $(DEPDIR)/cmetindex-sequence.Tpo -c -o cmetindex-sequence.obj `if test -f 'sequence.c'; then $(CYGPATH_W) 'sequence.c'; else $(CYGPATH_W) '$(srcdir)/sequence.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-sequence.Tpo $(DEPDIR)/cmetindex-sequence.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sequence.c' object='cmetindex-sequence.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-sequence.obj `if test -f 'sequence.c'; then $(CYGPATH_W) 'sequence.c'; else $(CYGPATH_W) '$(srcdir)/sequence.c'; fi`
+
+cmetindex-genome.o: genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-genome.o -MD -MP -MF $(DEPDIR)/cmetindex-genome.Tpo -c -o cmetindex-genome.o `test -f 'genome.c' || echo '$(srcdir)/'`genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-genome.Tpo $(DEPDIR)/cmetindex-genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome.c' object='cmetindex-genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-genome.o `test -f 'genome.c' || echo '$(srcdir)/'`genome.c
+
+cmetindex-genome.obj: genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-genome.obj -MD -MP -MF $(DEPDIR)/cmetindex-genome.Tpo -c -o cmetindex-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-genome.Tpo $(DEPDIR)/cmetindex-genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome.c' object='cmetindex-genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
+
+cmetindex-uintlist.o: uintlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-uintlist.o -MD -MP -MF $(DEPDIR)/cmetindex-uintlist.Tpo -c -o cmetindex-uintlist.o `test -f 'uintlist.c' || echo '$(srcdir)/'`uintlist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-uintlist.Tpo $(DEPDIR)/cmetindex-uintlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uintlist.c' object='cmetindex-uintlist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-uintlist.o `test -f 'uintlist.c' || echo '$(srcdir)/'`uintlist.c
+
+cmetindex-uintlist.obj: uintlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-uintlist.obj -MD -MP -MF $(DEPDIR)/cmetindex-uintlist.Tpo -c -o cmetindex-uintlist.obj `if test -f 'uintlist.c'; then $(CYGPATH_W) 'uintlist.c'; else $(CYGPATH_W) '$(srcdir)/uintlist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-uintlist.Tpo $(DEPDIR)/cmetindex-uintlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uintlist.c' object='cmetindex-uintlist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-uintlist.obj `if test -f 'uintlist.c'; then $(CYGPATH_W) 'uintlist.c'; else $(CYGPATH_W) '$(srcdir)/uintlist.c'; fi`
+
+cmetindex-intlist.o: intlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-intlist.o -MD -MP -MF $(DEPDIR)/cmetindex-intlist.Tpo -c -o cmetindex-intlist.o `test -f 'intlist.c' || echo '$(srcdir)/'`intlist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-intlist.Tpo $(DEPDIR)/cmetindex-intlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='intlist.c' object='cmetindex-intlist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-intlist.o `test -f 'intlist.c' || echo '$(srcdir)/'`intlist.c
+
+cmetindex-intlist.obj: intlist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-intlist.obj -MD -MP -MF $(DEPDIR)/cmetindex-intlist.Tpo -c -o cmetindex-intlist.obj `if test -f 'intlist.c'; then $(CYGPATH_W) 'intlist.c'; else $(CYGPATH_W) '$(srcdir)/intlist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-intlist.Tpo $(DEPDIR)/cmetindex-intlist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='intlist.c' object='cmetindex-intlist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-intlist.obj `if test -f 'intlist.c'; then $(CYGPATH_W) 'intlist.c'; else $(CYGPATH_W) '$(srcdir)/intlist.c'; fi`
+
+cmetindex-saca-k.o: saca-k.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-saca-k.o -MD -MP -MF $(DEPDIR)/cmetindex-saca-k.Tpo -c -o cmetindex-saca-k.o `test -f 'saca-k.c' || echo '$(srcdir)/'`saca-k.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-saca-k.Tpo $(DEPDIR)/cmetindex-saca-k.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='saca-k.c' object='cmetindex-saca-k.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-saca-k.o `test -f 'saca-k.c' || echo '$(srcdir)/'`saca-k.c
+
+cmetindex-saca-k.obj: saca-k.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-saca-k.obj -MD -MP -MF $(DEPDIR)/cmetindex-saca-k.Tpo -c -o cmetindex-saca-k.obj `if test -f 'saca-k.c'; then $(CYGPATH_W) 'saca-k.c'; else $(CYGPATH_W) '$(srcdir)/saca-k.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-saca-k.Tpo $(DEPDIR)/cmetindex-saca-k.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='saca-k.c' object='cmetindex-saca-k.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-saca-k.obj `if test -f 'saca-k.c'; then $(CYGPATH_W) 'saca-k.c'; else $(CYGPATH_W) '$(srcdir)/saca-k.c'; fi`
+
+cmetindex-uint8list.o: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-uint8list.o -MD -MP -MF $(DEPDIR)/cmetindex-uint8list.Tpo -c -o cmetindex-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-uint8list.Tpo $(DEPDIR)/cmetindex-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='cmetindex-uint8list.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+
+cmetindex-uint8list.obj: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-uint8list.obj -MD -MP -MF $(DEPDIR)/cmetindex-uint8list.Tpo -c -o cmetindex-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-uint8list.Tpo $(DEPDIR)/cmetindex-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='cmetindex-uint8list.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+
+cmetindex-bytecoding.o: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bytecoding.o -MD -MP -MF $(DEPDIR)/cmetindex-bytecoding.Tpo -c -o cmetindex-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bytecoding.Tpo $(DEPDIR)/cmetindex-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='cmetindex-bytecoding.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+
+cmetindex-bytecoding.obj: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-bytecoding.obj -MD -MP -MF $(DEPDIR)/cmetindex-bytecoding.Tpo -c -o cmetindex-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-bytecoding.Tpo $(DEPDIR)/cmetindex-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='cmetindex-bytecoding.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+
+cmetindex-sarray-write.o: sarray-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-sarray-write.o -MD -MP -MF $(DEPDIR)/cmetindex-sarray-write.Tpo -c -o cmetindex-sarray-write.o `test -f 'sarray-write.c' || echo '$(srcdir)/'`sarray-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-sarray-write.Tpo $(DEPDIR)/cmetindex-sarray-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-write.c' object='cmetindex-sarray-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-sarray-write.o `test -f 'sarray-write.c' || echo '$(srcdir)/'`sarray-write.c
+
+cmetindex-sarray-write.obj: sarray-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-sarray-write.obj -MD -MP -MF $(DEPDIR)/cmetindex-sarray-write.Tpo -c -o cmetindex-sarray-write.obj `if test -f 'sarray-write.c'; then $(CYGPATH_W) 'sarray-write.c'; else $(CYGPATH_W) '$(srcdir)/sarray-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-sarray-write.Tpo $(DEPDIR)/cmetindex-sarray-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-write.c' object='cmetindex-sarray-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -c -o cmetindex-sarray-write.obj `if test -f 'sarray-write.c'; then $(CYGPATH_W) 'sarray-write.c'; else $(CYGPATH_W) '$(srcdir)/sarray-write.c'; fi`
+
 cmetindex-list.o: list.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cmetindex_CFLAGS) $(CFLAGS) -MT cmetindex-list.o -MD -MP -MF $(DEPDIR)/cmetindex-list.Tpo -c -o cmetindex-list.o `test -f 'list.c' || echo '$(srcdir)/'`list.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cmetindex-list.Tpo $(DEPDIR)/cmetindex-list.Po
@@ -2626,20 +3316,6 @@ get_genome-chrnum.obj: chrnum.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(get_genome_CFLAGS) $(CFLAGS) -c -o get_genome-chrnum.obj `if test -f 'chrnum.c'; then $(CYGPATH_W) 'chrnum.c'; else $(CYGPATH_W) '$(srcdir)/chrnum.c'; fi`
 
-get_genome-chrsubset.o: chrsubset.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(get_genome_CFLAGS) $(CFLAGS) -MT get_genome-chrsubset.o -MD -MP -MF $(DEPDIR)/get_genome-chrsubset.Tpo -c -o get_genome-chrsubset.o `test -f 'chrsubset.c' || echo '$(srcdir)/'`chrsubset.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/get_genome-chrsubset.Tpo $(DEPDIR)/get_genome-chrsubset.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='chrsubset.c' object='get_genome-chrsubset.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(get_genome_CFLAGS) $(CFLAGS) -c -o get_genome-chrsubset.o `test -f 'chrsubset.c' || echo '$(srcdir)/'`chrsubset.c
-
-get_genome-chrsubset.obj: chrsubset.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(get_genome_CFLAGS) $(CFLAGS) -MT get_genome-chrsubset.obj -MD -MP -MF $(DEPDIR)/get_genome-chrsubset.Tpo -c -o get_genome-chrsubset.obj `if test -f 'chrsubset.c'; then $(CYGPATH_W) 'chrsubset.c'; else $(CYGPATH_W) '$(srcdir)/chrsubset.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/get_genome-chrsubset.Tpo $(DEPDIR)/get_genome-chrsubset.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='chrsubset.c' object='get_genome-chrsubset.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(get_genome_CFLAGS) $(CFLAGS) -c -o get_genome-chrsubset.obj `if test -f 'chrsubset.c'; then $(CYGPATH_W) 'chrsubset.c'; else $(CYGPATH_W) '$(srcdir)/chrsubset.c'; fi`
-
 get_genome-datadir.o: datadir.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(get_genome_CFLAGS) $(CFLAGS) -MT get_genome-datadir.o -MD -MP -MF $(DEPDIR)/get_genome-datadir.Tpo -c -o get_genome-datadir.o `test -f 'datadir.c' || echo '$(srcdir)/'`datadir.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/get_genome-datadir.Tpo $(DEPDIR)/get_genome-datadir.Po
@@ -2990,6 +3666,20 @@ gmap-compress.obj: compress.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
 
+gmap-compress-write.o: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-compress-write.o -MD -MP -MF $(DEPDIR)/gmap-compress-write.Tpo -c -o gmap-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-compress-write.Tpo $(DEPDIR)/gmap-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='gmap-compress-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+
+gmap-compress-write.obj: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-compress-write.obj -MD -MP -MF $(DEPDIR)/gmap-compress-write.Tpo -c -o gmap-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-compress-write.Tpo $(DEPDIR)/gmap-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='gmap-compress-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+
 gmap-gbuffer.o: gbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-gbuffer.o -MD -MP -MF $(DEPDIR)/gmap-gbuffer.Tpo -c -o gmap-gbuffer.o `test -f 'gbuffer.c' || echo '$(srcdir)/'`gbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-gbuffer.Tpo $(DEPDIR)/gmap-gbuffer.Po
@@ -3018,19 +3708,47 @@ gmap-genome.obj: genome.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
 
-gmap-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome_hr.o -MD -MP -MF $(DEPDIR)/gmap-genome_hr.Tpo -c -o gmap-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-genome_hr.Tpo $(DEPDIR)/gmap-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gmap-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+gmap-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-popcount.o -MD -MP -MF $(DEPDIR)/gmap-popcount.Tpo -c -o gmap-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-popcount.Tpo $(DEPDIR)/gmap-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gmap-popcount.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
 
-gmap-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome_hr.obj -MD -MP -MF $(DEPDIR)/gmap-genome_hr.Tpo -c -o gmap-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-genome_hr.Tpo $(DEPDIR)/gmap-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gmap-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+gmap-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-popcount.obj -MD -MP -MF $(DEPDIR)/gmap-popcount.Tpo -c -o gmap-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-popcount.Tpo $(DEPDIR)/gmap-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gmap-popcount.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+gmap-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome128_hr.o -MD -MP -MF $(DEPDIR)/gmap-genome128_hr.Tpo -c -o gmap-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-genome128_hr.Tpo $(DEPDIR)/gmap-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gmap-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+gmap-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome128_hr.obj -MD -MP -MF $(DEPDIR)/gmap-genome128_hr.Tpo -c -o gmap-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-genome128_hr.Tpo $(DEPDIR)/gmap-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gmap-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+gmap-genome_sites.o: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome_sites.o -MD -MP -MF $(DEPDIR)/gmap-genome_sites.Tpo -c -o gmap-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-genome_sites.Tpo $(DEPDIR)/gmap-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gmap-genome_sites.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+
+gmap-genome_sites.obj: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome_sites.obj -MD -MP -MF $(DEPDIR)/gmap-genome_sites.Tpo -c -o gmap-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-genome_sites.Tpo $(DEPDIR)/gmap-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gmap-genome_sites.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
 
 gmap-genome-write.o: genome-write.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-genome-write.o -MD -MP -MF $(DEPDIR)/gmap-genome-write.Tpo -c -o gmap-genome-write.o `test -f 'genome-write.c' || echo '$(srcdir)/'`genome-write.c
@@ -3046,6 +3764,34 @@ gmap-genome-write.obj: genome-write.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-genome-write.obj `if test -f 'genome-write.c'; then $(CYGPATH_W) 'genome-write.c'; else $(CYGPATH_W) '$(srcdir)/genome-write.c'; fi`
 
+gmap-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-bitpack64-read.o -MD -MP -MF $(DEPDIR)/gmap-bitpack64-read.Tpo -c -o gmap-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-bitpack64-read.Tpo $(DEPDIR)/gmap-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gmap-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+gmap-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/gmap-bitpack64-read.Tpo -c -o gmap-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-bitpack64-read.Tpo $(DEPDIR)/gmap-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gmap-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+gmap-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/gmap-bitpack64-readtwo.Tpo -c -o gmap-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-bitpack64-readtwo.Tpo $(DEPDIR)/gmap-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gmap-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+gmap-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/gmap-bitpack64-readtwo.Tpo -c -o gmap-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-bitpack64-readtwo.Tpo $(DEPDIR)/gmap-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gmap-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+
 gmap-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-indexdb.o -MD -MP -MF $(DEPDIR)/gmap-indexdb.Tpo -c -o gmap-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-indexdb.Tpo $(DEPDIR)/gmap-indexdb.Po
@@ -3144,20 +3890,6 @@ gmap-chrnum.obj: chrnum.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-chrnum.obj `if test -f 'chrnum.c'; then $(CYGPATH_W) 'chrnum.c'; else $(CYGPATH_W) '$(srcdir)/chrnum.c'; fi`
 
-gmap-chrsubset.o: chrsubset.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-chrsubset.o -MD -MP -MF $(DEPDIR)/gmap-chrsubset.Tpo -c -o gmap-chrsubset.o `test -f 'chrsubset.c' || echo '$(srcdir)/'`chrsubset.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-chrsubset.Tpo $(DEPDIR)/gmap-chrsubset.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='chrsubset.c' object='gmap-chrsubset.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-chrsubset.o `test -f 'chrsubset.c' || echo '$(srcdir)/'`chrsubset.c
-
-gmap-chrsubset.obj: chrsubset.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-chrsubset.obj -MD -MP -MF $(DEPDIR)/gmap-chrsubset.Tpo -c -o gmap-chrsubset.obj `if test -f 'chrsubset.c'; then $(CYGPATH_W) 'chrsubset.c'; else $(CYGPATH_W) '$(srcdir)/chrsubset.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-chrsubset.Tpo $(DEPDIR)/gmap-chrsubset.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='chrsubset.c' object='gmap-chrsubset.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-chrsubset.obj `if test -f 'chrsubset.c'; then $(CYGPATH_W) 'chrsubset.c'; else $(CYGPATH_W) '$(srcdir)/chrsubset.c'; fi`
-
 gmap-uinttable.o: uinttable.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-uinttable.o -MD -MP -MF $(DEPDIR)/gmap-uinttable.Tpo -c -o gmap-uinttable.o `test -f 'uinttable.c' || echo '$(srcdir)/'`uinttable.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-uinttable.Tpo $(DEPDIR)/gmap-uinttable.Po
@@ -3312,20 +4044,6 @@ gmap-orderstat.obj: orderstat.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-orderstat.obj `if test -f 'orderstat.c'; then $(CYGPATH_W) 'orderstat.c'; else $(CYGPATH_W) '$(srcdir)/orderstat.c'; fi`
 
-gmap-oligoindex.o: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-oligoindex.o -MD -MP -MF $(DEPDIR)/gmap-oligoindex.Tpo -c -o gmap-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-oligoindex.Tpo $(DEPDIR)/gmap-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gmap-oligoindex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
-
-gmap-oligoindex.obj: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-oligoindex.obj -MD -MP -MF $(DEPDIR)/gmap-oligoindex.Tpo -c -o gmap-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-oligoindex.Tpo $(DEPDIR)/gmap-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gmap-oligoindex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
-
 gmap-oligoindex_hr.o: oligoindex_hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-oligoindex_hr.o -MD -MP -MF $(DEPDIR)/gmap-oligoindex_hr.Tpo -c -o gmap-oligoindex_hr.o `test -f 'oligoindex_hr.c' || echo '$(srcdir)/'`oligoindex_hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-oligoindex_hr.Tpo $(DEPDIR)/gmap-oligoindex_hr.Po
@@ -3410,6 +4128,20 @@ gmap-pairpool.obj: pairpool.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-pairpool.obj `if test -f 'pairpool.c'; then $(CYGPATH_W) 'pairpool.c'; else $(CYGPATH_W) '$(srcdir)/pairpool.c'; fi`
 
+gmap-cellpool.o: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-cellpool.o -MD -MP -MF $(DEPDIR)/gmap-cellpool.Tpo -c -o gmap-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-cellpool.Tpo $(DEPDIR)/gmap-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gmap-cellpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+
+gmap-cellpool.obj: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-cellpool.obj -MD -MP -MF $(DEPDIR)/gmap-cellpool.Tpo -c -o gmap-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-cellpool.Tpo $(DEPDIR)/gmap-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gmap-cellpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+
 gmap-stage2.o: stage2.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-stage2.o -MD -MP -MF $(DEPDIR)/gmap-stage2.Tpo -c -o gmap-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-stage2.Tpo $(DEPDIR)/gmap-stage2.Po
@@ -3424,6 +4156,20 @@ gmap-stage2.obj: stage2.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`
 
+gmap-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-doublelist.o -MD -MP -MF $(DEPDIR)/gmap-doublelist.Tpo -c -o gmap-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-doublelist.Tpo $(DEPDIR)/gmap-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gmap-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+gmap-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-doublelist.obj -MD -MP -MF $(DEPDIR)/gmap-doublelist.Tpo -c -o gmap-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-doublelist.Tpo $(DEPDIR)/gmap-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gmap-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 gmap-smooth.o: smooth.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-smooth.o -MD -MP -MF $(DEPDIR)/gmap-smooth.Tpo -c -o gmap-smooth.o `test -f 'smooth.c' || echo '$(srcdir)/'`smooth.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-smooth.Tpo $(DEPDIR)/gmap-smooth.Po
@@ -3438,6 +4184,20 @@ gmap-smooth.obj: smooth.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-smooth.obj `if test -f 'smooth.c'; then $(CYGPATH_W) 'smooth.c'; else $(CYGPATH_W) '$(srcdir)/smooth.c'; fi`
 
+gmap-splicestringpool.o: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-splicestringpool.o -MD -MP -MF $(DEPDIR)/gmap-splicestringpool.Tpo -c -o gmap-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-splicestringpool.Tpo $(DEPDIR)/gmap-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gmap-splicestringpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+
+gmap-splicestringpool.obj: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-splicestringpool.obj -MD -MP -MF $(DEPDIR)/gmap-splicestringpool.Tpo -c -o gmap-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-splicestringpool.Tpo $(DEPDIR)/gmap-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gmap-splicestringpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+
 gmap-splicetrie_build.o: splicetrie_build.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-splicetrie_build.o -MD -MP -MF $(DEPDIR)/gmap-splicetrie_build.Tpo -c -o gmap-splicetrie_build.o `test -f 'splicetrie_build.c' || echo '$(srcdir)/'`splicetrie_build.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-splicetrie_build.Tpo $(DEPDIR)/gmap-splicetrie_build.Po
@@ -3494,6 +4254,76 @@ gmap-dynprog.obj: dynprog.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog.obj `if test -f 'dynprog.c'; then $(CYGPATH_W) 'dynprog.c'; else $(CYGPATH_W) '$(srcdir)/dynprog.c'; fi`
 
+gmap-dynprog_simd.o: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_simd.o -MD -MP -MF $(DEPDIR)/gmap-dynprog_simd.Tpo -c -o gmap-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_simd.Tpo $(DEPDIR)/gmap-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gmap-dynprog_simd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+
+gmap-dynprog_simd.obj: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_simd.obj -MD -MP -MF $(DEPDIR)/gmap-dynprog_simd.Tpo -c -o gmap-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_simd.Tpo $(DEPDIR)/gmap-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gmap-dynprog_simd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+
+gmap-dynprog_single.o: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_single.o -MD -MP -MF $(DEPDIR)/gmap-dynprog_single.Tpo -c -o gmap-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_single.Tpo $(DEPDIR)/gmap-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gmap-dynprog_single.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+
+gmap-dynprog_single.obj: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_single.obj -MD -MP -MF $(DEPDIR)/gmap-dynprog_single.Tpo -c -o gmap-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_single.Tpo $(DEPDIR)/gmap-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gmap-dynprog_single.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+
+gmap-dynprog_genome.o: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_genome.o -MD -MP -MF $(DEPDIR)/gmap-dynprog_genome.Tpo -c -o gmap-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_genome.Tpo $(DEPDIR)/gmap-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gmap-dynprog_genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+
+gmap-dynprog_genome.obj: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_genome.obj -MD -MP -MF $(DEPDIR)/gmap-dynprog_genome.Tpo -c -o gmap-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_genome.Tpo $(DEPDIR)/gmap-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gmap-dynprog_genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+
+gmap-dynprog_cdna.o: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_cdna.o -MD -MP -MF $(DEPDIR)/gmap-dynprog_cdna.Tpo -c -o gmap-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_cdna.Tpo $(DEPDIR)/gmap-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gmap-dynprog_cdna.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+
+gmap-dynprog_cdna.obj: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_cdna.obj -MD -MP -MF $(DEPDIR)/gmap-dynprog_cdna.Tpo -c -o gmap-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_cdna.Tpo $(DEPDIR)/gmap-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gmap-dynprog_cdna.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+
+gmap-dynprog_end.o: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_end.o -MD -MP -MF $(DEPDIR)/gmap-dynprog_end.Tpo -c -o gmap-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_end.Tpo $(DEPDIR)/gmap-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gmap-dynprog_end.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+
+gmap-dynprog_end.obj: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-dynprog_end.obj -MD -MP -MF $(DEPDIR)/gmap-dynprog_end.Tpo -c -o gmap-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-dynprog_end.Tpo $(DEPDIR)/gmap-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gmap-dynprog_end.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+
 gmap-translation.o: translation.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-translation.o -MD -MP -MF $(DEPDIR)/gmap-translation.Tpo -c -o gmap-translation.o `test -f 'translation.c' || echo '$(srcdir)/'`translation.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-translation.Tpo $(DEPDIR)/gmap-translation.Po
@@ -3592,6 +4422,20 @@ gmap-inbuffer.obj: inbuffer.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-inbuffer.obj `if test -f 'inbuffer.c'; then $(CYGPATH_W) 'inbuffer.c'; else $(CYGPATH_W) '$(srcdir)/inbuffer.c'; fi`
 
+gmap-samheader.o: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-samheader.o -MD -MP -MF $(DEPDIR)/gmap-samheader.Tpo -c -o gmap-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-samheader.Tpo $(DEPDIR)/gmap-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gmap-samheader.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+
+gmap-samheader.obj: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-samheader.obj -MD -MP -MF $(DEPDIR)/gmap-samheader.Tpo -c -o gmap-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-samheader.Tpo $(DEPDIR)/gmap-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gmap-samheader.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -c -o gmap-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+
 gmap-outbuffer.o: outbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmap_CFLAGS) $(CFLAGS) -MT gmap-outbuffer.o -MD -MP -MF $(DEPDIR)/gmap-outbuffer.Tpo -c -o gmap-outbuffer.o `test -f 'outbuffer.c' || echo '$(srcdir)/'`outbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmap-outbuffer.Tpo $(DEPDIR)/gmap-outbuffer.Po
@@ -3956,19 +4800,19 @@ gmapindex-genomicpos.obj: genomicpos.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-genomicpos.obj `if test -f 'genomicpos.c'; then $(CYGPATH_W) 'genomicpos.c'; else $(CYGPATH_W) '$(srcdir)/genomicpos.c'; fi`
 
-gmapindex-compress.o: compress.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-compress.o -MD -MP -MF $(DEPDIR)/gmapindex-compress.Tpo -c -o gmapindex-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-compress.Tpo $(DEPDIR)/gmapindex-compress.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress.c' object='gmapindex-compress.o' libtool=no @AMDEPBACKSLASH@
+gmapindex-compress-write.o: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-compress-write.o -MD -MP -MF $(DEPDIR)/gmapindex-compress-write.Tpo -c -o gmapindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-compress-write.Tpo $(DEPDIR)/gmapindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='gmapindex-compress-write.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
 
-gmapindex-compress.obj: compress.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-compress.obj -MD -MP -MF $(DEPDIR)/gmapindex-compress.Tpo -c -o gmapindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-compress.Tpo $(DEPDIR)/gmapindex-compress.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress.c' object='gmapindex-compress.obj' libtool=no @AMDEPBACKSLASH@
+gmapindex-compress-write.obj: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-compress-write.obj -MD -MP -MF $(DEPDIR)/gmapindex-compress-write.Tpo -c -o gmapindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-compress-write.Tpo $(DEPDIR)/gmapindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='gmapindex-compress-write.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
 
 gmapindex-genome-write.o: genome-write.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-genome-write.o -MD -MP -MF $(DEPDIR)/gmapindex-genome-write.Tpo -c -o gmapindex-genome-write.o `test -f 'genome-write.c' || echo '$(srcdir)/'`genome-write.c
@@ -3984,19 +4828,103 @@ gmapindex-genome-write.obj: genome-write.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-genome-write.obj `if test -f 'genome-write.c'; then $(CYGPATH_W) 'genome-write.c'; else $(CYGPATH_W) '$(srcdir)/genome-write.c'; fi`
 
-gmapindex-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-genome_hr.o -MD -MP -MF $(DEPDIR)/gmapindex-genome_hr.Tpo -c -o gmapindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-genome_hr.Tpo $(DEPDIR)/gmapindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gmapindex-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+gmapindex-compress.o: compress.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-compress.o -MD -MP -MF $(DEPDIR)/gmapindex-compress.Tpo -c -o gmapindex-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-compress.Tpo $(DEPDIR)/gmapindex-compress.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress.c' object='gmapindex-compress.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c
+
+gmapindex-compress.obj: compress.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-compress.obj -MD -MP -MF $(DEPDIR)/gmapindex-compress.Tpo -c -o gmapindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-compress.Tpo $(DEPDIR)/gmapindex-compress.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress.c' object='gmapindex-compress.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
+
+gmapindex-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-popcount.o -MD -MP -MF $(DEPDIR)/gmapindex-popcount.Tpo -c -o gmapindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-popcount.Tpo $(DEPDIR)/gmapindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gmapindex-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+gmapindex-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-popcount.obj -MD -MP -MF $(DEPDIR)/gmapindex-popcount.Tpo -c -o gmapindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-popcount.Tpo $(DEPDIR)/gmapindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gmapindex-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+gmapindex-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-genome128_hr.o -MD -MP -MF $(DEPDIR)/gmapindex-genome128_hr.Tpo -c -o gmapindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-genome128_hr.Tpo $(DEPDIR)/gmapindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gmapindex-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+gmapindex-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-genome128_hr.obj -MD -MP -MF $(DEPDIR)/gmapindex-genome128_hr.Tpo -c -o gmapindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-genome128_hr.Tpo $(DEPDIR)/gmapindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gmapindex-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+gmapindex-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-read.o -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-read.Tpo -c -o gmapindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-read.Tpo $(DEPDIR)/gmapindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gmapindex-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
 
-gmapindex-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-genome_hr.obj -MD -MP -MF $(DEPDIR)/gmapindex-genome_hr.Tpo -c -o gmapindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-genome_hr.Tpo $(DEPDIR)/gmapindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gmapindex-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+gmapindex-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-read.Tpo -c -o gmapindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-read.Tpo $(DEPDIR)/gmapindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gmapindex-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+gmapindex-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-readtwo.Tpo -c -o gmapindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-readtwo.Tpo $(DEPDIR)/gmapindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gmapindex-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+gmapindex-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-readtwo.Tpo -c -o gmapindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-readtwo.Tpo $(DEPDIR)/gmapindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gmapindex-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+
+gmapindex-bitpack64-access.o: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-access.o -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-access.Tpo -c -o gmapindex-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-access.Tpo $(DEPDIR)/gmapindex-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='gmapindex-bitpack64-access.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+
+gmapindex-bitpack64-access.obj: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-access.obj -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-access.Tpo -c -o gmapindex-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-access.Tpo $(DEPDIR)/gmapindex-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='gmapindex-bitpack64-access.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+
+gmapindex-bitpack64-write.o: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-write.o -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-write.Tpo -c -o gmapindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-write.Tpo $(DEPDIR)/gmapindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='gmapindex-bitpack64-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+
+gmapindex-bitpack64-write.obj: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bitpack64-write.obj -MD -MP -MF $(DEPDIR)/gmapindex-bitpack64-write.Tpo -c -o gmapindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bitpack64-write.Tpo $(DEPDIR)/gmapindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='gmapindex-bitpack64-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
 
 gmapindex-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-indexdb.o -MD -MP -MF $(DEPDIR)/gmapindex-indexdb.Tpo -c -o gmapindex-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -4096,6 +5024,62 @@ gmapindex-segmentpos.obj: segmentpos.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-segmentpos.obj `if test -f 'segmentpos.c'; then $(CYGPATH_W) 'segmentpos.c'; else $(CYGPATH_W) '$(srcdir)/segmentpos.c'; fi`
 
+gmapindex-saca-k.o: saca-k.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-saca-k.o -MD -MP -MF $(DEPDIR)/gmapindex-saca-k.Tpo -c -o gmapindex-saca-k.o `test -f 'saca-k.c' || echo '$(srcdir)/'`saca-k.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-saca-k.Tpo $(DEPDIR)/gmapindex-saca-k.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='saca-k.c' object='gmapindex-saca-k.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-saca-k.o `test -f 'saca-k.c' || echo '$(srcdir)/'`saca-k.c
+
+gmapindex-saca-k.obj: saca-k.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-saca-k.obj -MD -MP -MF $(DEPDIR)/gmapindex-saca-k.Tpo -c -o gmapindex-saca-k.obj `if test -f 'saca-k.c'; then $(CYGPATH_W) 'saca-k.c'; else $(CYGPATH_W) '$(srcdir)/saca-k.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-saca-k.Tpo $(DEPDIR)/gmapindex-saca-k.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='saca-k.c' object='gmapindex-saca-k.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-saca-k.obj `if test -f 'saca-k.c'; then $(CYGPATH_W) 'saca-k.c'; else $(CYGPATH_W) '$(srcdir)/saca-k.c'; fi`
+
+gmapindex-uint8list.o: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-uint8list.o -MD -MP -MF $(DEPDIR)/gmapindex-uint8list.Tpo -c -o gmapindex-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-uint8list.Tpo $(DEPDIR)/gmapindex-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='gmapindex-uint8list.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+
+gmapindex-uint8list.obj: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-uint8list.obj -MD -MP -MF $(DEPDIR)/gmapindex-uint8list.Tpo -c -o gmapindex-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-uint8list.Tpo $(DEPDIR)/gmapindex-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='gmapindex-uint8list.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+
+gmapindex-bytecoding.o: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bytecoding.o -MD -MP -MF $(DEPDIR)/gmapindex-bytecoding.Tpo -c -o gmapindex-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bytecoding.Tpo $(DEPDIR)/gmapindex-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='gmapindex-bytecoding.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+
+gmapindex-bytecoding.obj: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-bytecoding.obj -MD -MP -MF $(DEPDIR)/gmapindex-bytecoding.Tpo -c -o gmapindex-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-bytecoding.Tpo $(DEPDIR)/gmapindex-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='gmapindex-bytecoding.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+
+gmapindex-sarray-write.o: sarray-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-sarray-write.o -MD -MP -MF $(DEPDIR)/gmapindex-sarray-write.Tpo -c -o gmapindex-sarray-write.o `test -f 'sarray-write.c' || echo '$(srcdir)/'`sarray-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-sarray-write.Tpo $(DEPDIR)/gmapindex-sarray-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-write.c' object='gmapindex-sarray-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-sarray-write.o `test -f 'sarray-write.c' || echo '$(srcdir)/'`sarray-write.c
+
+gmapindex-sarray-write.obj: sarray-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-sarray-write.obj -MD -MP -MF $(DEPDIR)/gmapindex-sarray-write.Tpo -c -o gmapindex-sarray-write.obj `if test -f 'sarray-write.c'; then $(CYGPATH_W) 'sarray-write.c'; else $(CYGPATH_W) '$(srcdir)/sarray-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-sarray-write.Tpo $(DEPDIR)/gmapindex-sarray-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-write.c' object='gmapindex-sarray-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -c -o gmapindex-sarray-write.obj `if test -f 'sarray-write.c'; then $(CYGPATH_W) 'sarray-write.c'; else $(CYGPATH_W) '$(srcdir)/sarray-write.c'; fi`
+
 gmapindex-gmapindex.o: gmapindex.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapindex_CFLAGS) $(CFLAGS) -MT gmapindex-gmapindex.o -MD -MP -MF $(DEPDIR)/gmapindex-gmapindex.Tpo -c -o gmapindex-gmapindex.o `test -f 'gmapindex.c' || echo '$(srcdir)/'`gmapindex.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapindex-gmapindex.Tpo $(DEPDIR)/gmapindex-gmapindex.Po
@@ -4390,6 +5374,20 @@ gmapl-compress.obj: compress.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
 
+gmapl-compress-write.o: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-compress-write.o -MD -MP -MF $(DEPDIR)/gmapl-compress-write.Tpo -c -o gmapl-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-compress-write.Tpo $(DEPDIR)/gmapl-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='gmapl-compress-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+
+gmapl-compress-write.obj: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-compress-write.obj -MD -MP -MF $(DEPDIR)/gmapl-compress-write.Tpo -c -o gmapl-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-compress-write.Tpo $(DEPDIR)/gmapl-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='gmapl-compress-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+
 gmapl-gbuffer.o: gbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-gbuffer.o -MD -MP -MF $(DEPDIR)/gmapl-gbuffer.Tpo -c -o gmapl-gbuffer.o `test -f 'gbuffer.c' || echo '$(srcdir)/'`gbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-gbuffer.Tpo $(DEPDIR)/gmapl-gbuffer.Po
@@ -4418,19 +5416,47 @@ gmapl-genome.obj: genome.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
 
-gmapl-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome_hr.o -MD -MP -MF $(DEPDIR)/gmapl-genome_hr.Tpo -c -o gmapl-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-genome_hr.Tpo $(DEPDIR)/gmapl-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gmapl-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+gmapl-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-popcount.o -MD -MP -MF $(DEPDIR)/gmapl-popcount.Tpo -c -o gmapl-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-popcount.Tpo $(DEPDIR)/gmapl-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gmapl-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+gmapl-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-popcount.obj -MD -MP -MF $(DEPDIR)/gmapl-popcount.Tpo -c -o gmapl-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-popcount.Tpo $(DEPDIR)/gmapl-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gmapl-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+gmapl-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome128_hr.o -MD -MP -MF $(DEPDIR)/gmapl-genome128_hr.Tpo -c -o gmapl-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-genome128_hr.Tpo $(DEPDIR)/gmapl-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gmapl-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
 
-gmapl-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome_hr.obj -MD -MP -MF $(DEPDIR)/gmapl-genome_hr.Tpo -c -o gmapl-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-genome_hr.Tpo $(DEPDIR)/gmapl-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gmapl-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+gmapl-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome128_hr.obj -MD -MP -MF $(DEPDIR)/gmapl-genome128_hr.Tpo -c -o gmapl-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-genome128_hr.Tpo $(DEPDIR)/gmapl-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gmapl-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+gmapl-genome_sites.o: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome_sites.o -MD -MP -MF $(DEPDIR)/gmapl-genome_sites.Tpo -c -o gmapl-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-genome_sites.Tpo $(DEPDIR)/gmapl-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gmapl-genome_sites.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+
+gmapl-genome_sites.obj: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome_sites.obj -MD -MP -MF $(DEPDIR)/gmapl-genome_sites.Tpo -c -o gmapl-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-genome_sites.Tpo $(DEPDIR)/gmapl-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gmapl-genome_sites.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
 
 gmapl-genome-write.o: genome-write.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-genome-write.o -MD -MP -MF $(DEPDIR)/gmapl-genome-write.Tpo -c -o gmapl-genome-write.o `test -f 'genome-write.c' || echo '$(srcdir)/'`genome-write.c
@@ -4446,6 +5472,34 @@ gmapl-genome-write.obj: genome-write.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-genome-write.obj `if test -f 'genome-write.c'; then $(CYGPATH_W) 'genome-write.c'; else $(CYGPATH_W) '$(srcdir)/genome-write.c'; fi`
 
+gmapl-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-bitpack64-read.o -MD -MP -MF $(DEPDIR)/gmapl-bitpack64-read.Tpo -c -o gmapl-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-bitpack64-read.Tpo $(DEPDIR)/gmapl-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gmapl-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+gmapl-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/gmapl-bitpack64-read.Tpo -c -o gmapl-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-bitpack64-read.Tpo $(DEPDIR)/gmapl-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gmapl-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+gmapl-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/gmapl-bitpack64-readtwo.Tpo -c -o gmapl-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-bitpack64-readtwo.Tpo $(DEPDIR)/gmapl-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gmapl-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+gmapl-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/gmapl-bitpack64-readtwo.Tpo -c -o gmapl-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-bitpack64-readtwo.Tpo $(DEPDIR)/gmapl-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gmapl-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+
 gmapl-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-indexdb.o -MD -MP -MF $(DEPDIR)/gmapl-indexdb.Tpo -c -o gmapl-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-indexdb.Tpo $(DEPDIR)/gmapl-indexdb.Po
@@ -4544,20 +5598,6 @@ gmapl-chrnum.obj: chrnum.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-chrnum.obj `if test -f 'chrnum.c'; then $(CYGPATH_W) 'chrnum.c'; else $(CYGPATH_W) '$(srcdir)/chrnum.c'; fi`
 
-gmapl-chrsubset.o: chrsubset.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-chrsubset.o -MD -MP -MF $(DEPDIR)/gmapl-chrsubset.Tpo -c -o gmapl-chrsubset.o `test -f 'chrsubset.c' || echo '$(srcdir)/'`chrsubset.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-chrsubset.Tpo $(DEPDIR)/gmapl-chrsubset.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='chrsubset.c' object='gmapl-chrsubset.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-chrsubset.o `test -f 'chrsubset.c' || echo '$(srcdir)/'`chrsubset.c
-
-gmapl-chrsubset.obj: chrsubset.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-chrsubset.obj -MD -MP -MF $(DEPDIR)/gmapl-chrsubset.Tpo -c -o gmapl-chrsubset.obj `if test -f 'chrsubset.c'; then $(CYGPATH_W) 'chrsubset.c'; else $(CYGPATH_W) '$(srcdir)/chrsubset.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-chrsubset.Tpo $(DEPDIR)/gmapl-chrsubset.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='chrsubset.c' object='gmapl-chrsubset.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-chrsubset.obj `if test -f 'chrsubset.c'; then $(CYGPATH_W) 'chrsubset.c'; else $(CYGPATH_W) '$(srcdir)/chrsubset.c'; fi`
-
 gmapl-uinttable.o: uinttable.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-uinttable.o -MD -MP -MF $(DEPDIR)/gmapl-uinttable.Tpo -c -o gmapl-uinttable.o `test -f 'uinttable.c' || echo '$(srcdir)/'`uinttable.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-uinttable.Tpo $(DEPDIR)/gmapl-uinttable.Po
@@ -4712,20 +5752,6 @@ gmapl-orderstat.obj: orderstat.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-orderstat.obj `if test -f 'orderstat.c'; then $(CYGPATH_W) 'orderstat.c'; else $(CYGPATH_W) '$(srcdir)/orderstat.c'; fi`
 
-gmapl-oligoindex.o: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-oligoindex.o -MD -MP -MF $(DEPDIR)/gmapl-oligoindex.Tpo -c -o gmapl-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-oligoindex.Tpo $(DEPDIR)/gmapl-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gmapl-oligoindex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
-
-gmapl-oligoindex.obj: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-oligoindex.obj -MD -MP -MF $(DEPDIR)/gmapl-oligoindex.Tpo -c -o gmapl-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-oligoindex.Tpo $(DEPDIR)/gmapl-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gmapl-oligoindex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
-
 gmapl-oligoindex_hr.o: oligoindex_hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-oligoindex_hr.o -MD -MP -MF $(DEPDIR)/gmapl-oligoindex_hr.Tpo -c -o gmapl-oligoindex_hr.o `test -f 'oligoindex_hr.c' || echo '$(srcdir)/'`oligoindex_hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-oligoindex_hr.Tpo $(DEPDIR)/gmapl-oligoindex_hr.Po
@@ -4810,6 +5836,20 @@ gmapl-pairpool.obj: pairpool.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-pairpool.obj `if test -f 'pairpool.c'; then $(CYGPATH_W) 'pairpool.c'; else $(CYGPATH_W) '$(srcdir)/pairpool.c'; fi`
 
+gmapl-cellpool.o: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-cellpool.o -MD -MP -MF $(DEPDIR)/gmapl-cellpool.Tpo -c -o gmapl-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-cellpool.Tpo $(DEPDIR)/gmapl-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gmapl-cellpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+
+gmapl-cellpool.obj: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-cellpool.obj -MD -MP -MF $(DEPDIR)/gmapl-cellpool.Tpo -c -o gmapl-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-cellpool.Tpo $(DEPDIR)/gmapl-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gmapl-cellpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+
 gmapl-stage2.o: stage2.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-stage2.o -MD -MP -MF $(DEPDIR)/gmapl-stage2.Tpo -c -o gmapl-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-stage2.Tpo $(DEPDIR)/gmapl-stage2.Po
@@ -4824,6 +5864,20 @@ gmapl-stage2.obj: stage2.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`
 
+gmapl-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-doublelist.o -MD -MP -MF $(DEPDIR)/gmapl-doublelist.Tpo -c -o gmapl-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-doublelist.Tpo $(DEPDIR)/gmapl-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gmapl-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+gmapl-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-doublelist.obj -MD -MP -MF $(DEPDIR)/gmapl-doublelist.Tpo -c -o gmapl-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-doublelist.Tpo $(DEPDIR)/gmapl-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gmapl-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 gmapl-smooth.o: smooth.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-smooth.o -MD -MP -MF $(DEPDIR)/gmapl-smooth.Tpo -c -o gmapl-smooth.o `test -f 'smooth.c' || echo '$(srcdir)/'`smooth.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-smooth.Tpo $(DEPDIR)/gmapl-smooth.Po
@@ -4838,6 +5892,20 @@ gmapl-smooth.obj: smooth.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-smooth.obj `if test -f 'smooth.c'; then $(CYGPATH_W) 'smooth.c'; else $(CYGPATH_W) '$(srcdir)/smooth.c'; fi`
 
+gmapl-splicestringpool.o: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-splicestringpool.o -MD -MP -MF $(DEPDIR)/gmapl-splicestringpool.Tpo -c -o gmapl-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-splicestringpool.Tpo $(DEPDIR)/gmapl-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gmapl-splicestringpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+
+gmapl-splicestringpool.obj: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-splicestringpool.obj -MD -MP -MF $(DEPDIR)/gmapl-splicestringpool.Tpo -c -o gmapl-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-splicestringpool.Tpo $(DEPDIR)/gmapl-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gmapl-splicestringpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+
 gmapl-splicetrie_build.o: splicetrie_build.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-splicetrie_build.o -MD -MP -MF $(DEPDIR)/gmapl-splicetrie_build.Tpo -c -o gmapl-splicetrie_build.o `test -f 'splicetrie_build.c' || echo '$(srcdir)/'`splicetrie_build.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-splicetrie_build.Tpo $(DEPDIR)/gmapl-splicetrie_build.Po
@@ -4894,6 +5962,76 @@ gmapl-dynprog.obj: dynprog.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog.obj `if test -f 'dynprog.c'; then $(CYGPATH_W) 'dynprog.c'; else $(CYGPATH_W) '$(srcdir)/dynprog.c'; fi`
 
+gmapl-dynprog_simd.o: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_simd.o -MD -MP -MF $(DEPDIR)/gmapl-dynprog_simd.Tpo -c -o gmapl-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_simd.Tpo $(DEPDIR)/gmapl-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gmapl-dynprog_simd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+
+gmapl-dynprog_simd.obj: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_simd.obj -MD -MP -MF $(DEPDIR)/gmapl-dynprog_simd.Tpo -c -o gmapl-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_simd.Tpo $(DEPDIR)/gmapl-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gmapl-dynprog_simd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+
+gmapl-dynprog_single.o: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_single.o -MD -MP -MF $(DEPDIR)/gmapl-dynprog_single.Tpo -c -o gmapl-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_single.Tpo $(DEPDIR)/gmapl-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gmapl-dynprog_single.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+
+gmapl-dynprog_single.obj: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_single.obj -MD -MP -MF $(DEPDIR)/gmapl-dynprog_single.Tpo -c -o gmapl-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_single.Tpo $(DEPDIR)/gmapl-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gmapl-dynprog_single.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+
+gmapl-dynprog_genome.o: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_genome.o -MD -MP -MF $(DEPDIR)/gmapl-dynprog_genome.Tpo -c -o gmapl-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_genome.Tpo $(DEPDIR)/gmapl-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gmapl-dynprog_genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+
+gmapl-dynprog_genome.obj: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_genome.obj -MD -MP -MF $(DEPDIR)/gmapl-dynprog_genome.Tpo -c -o gmapl-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_genome.Tpo $(DEPDIR)/gmapl-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gmapl-dynprog_genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+
+gmapl-dynprog_cdna.o: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_cdna.o -MD -MP -MF $(DEPDIR)/gmapl-dynprog_cdna.Tpo -c -o gmapl-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_cdna.Tpo $(DEPDIR)/gmapl-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gmapl-dynprog_cdna.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+
+gmapl-dynprog_cdna.obj: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_cdna.obj -MD -MP -MF $(DEPDIR)/gmapl-dynprog_cdna.Tpo -c -o gmapl-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_cdna.Tpo $(DEPDIR)/gmapl-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gmapl-dynprog_cdna.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+
+gmapl-dynprog_end.o: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_end.o -MD -MP -MF $(DEPDIR)/gmapl-dynprog_end.Tpo -c -o gmapl-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_end.Tpo $(DEPDIR)/gmapl-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gmapl-dynprog_end.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+
+gmapl-dynprog_end.obj: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-dynprog_end.obj -MD -MP -MF $(DEPDIR)/gmapl-dynprog_end.Tpo -c -o gmapl-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-dynprog_end.Tpo $(DEPDIR)/gmapl-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gmapl-dynprog_end.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+
 gmapl-translation.o: translation.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-translation.o -MD -MP -MF $(DEPDIR)/gmapl-translation.Tpo -c -o gmapl-translation.o `test -f 'translation.c' || echo '$(srcdir)/'`translation.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-translation.Tpo $(DEPDIR)/gmapl-translation.Po
@@ -4992,6 +6130,20 @@ gmapl-inbuffer.obj: inbuffer.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-inbuffer.obj `if test -f 'inbuffer.c'; then $(CYGPATH_W) 'inbuffer.c'; else $(CYGPATH_W) '$(srcdir)/inbuffer.c'; fi`
 
+gmapl-samheader.o: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-samheader.o -MD -MP -MF $(DEPDIR)/gmapl-samheader.Tpo -c -o gmapl-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-samheader.Tpo $(DEPDIR)/gmapl-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gmapl-samheader.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+
+gmapl-samheader.obj: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-samheader.obj -MD -MP -MF $(DEPDIR)/gmapl-samheader.Tpo -c -o gmapl-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-samheader.Tpo $(DEPDIR)/gmapl-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gmapl-samheader.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -c -o gmapl-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+
 gmapl-outbuffer.o: outbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gmapl_CFLAGS) $(CFLAGS) -MT gmapl-outbuffer.o -MD -MP -MF $(DEPDIR)/gmapl-outbuffer.Tpo -c -o gmapl-outbuffer.o `test -f 'outbuffer.c' || echo '$(srcdir)/'`outbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gmapl-outbuffer.Tpo $(DEPDIR)/gmapl-outbuffer.Po
@@ -5370,19 +6522,75 @@ gsnap-genome.obj: genome.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
 
-gsnap-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-genome_hr.o -MD -MP -MF $(DEPDIR)/gsnap-genome_hr.Tpo -c -o gsnap-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-genome_hr.Tpo $(DEPDIR)/gsnap-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gsnap-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+gsnap-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-popcount.o -MD -MP -MF $(DEPDIR)/gsnap-popcount.Tpo -c -o gsnap-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-popcount.Tpo $(DEPDIR)/gsnap-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gsnap-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+gsnap-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-popcount.obj -MD -MP -MF $(DEPDIR)/gsnap-popcount.Tpo -c -o gsnap-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-popcount.Tpo $(DEPDIR)/gsnap-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gsnap-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+gsnap-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-genome128_hr.o -MD -MP -MF $(DEPDIR)/gsnap-genome128_hr.Tpo -c -o gsnap-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-genome128_hr.Tpo $(DEPDIR)/gsnap-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gsnap-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+gsnap-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-genome128_hr.obj -MD -MP -MF $(DEPDIR)/gsnap-genome128_hr.Tpo -c -o gsnap-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-genome128_hr.Tpo $(DEPDIR)/gsnap-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gsnap-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+gsnap-genome_sites.o: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-genome_sites.o -MD -MP -MF $(DEPDIR)/gsnap-genome_sites.Tpo -c -o gsnap-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-genome_sites.Tpo $(DEPDIR)/gsnap-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gsnap-genome_sites.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+
+gsnap-genome_sites.obj: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-genome_sites.obj -MD -MP -MF $(DEPDIR)/gsnap-genome_sites.Tpo -c -o gsnap-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-genome_sites.Tpo $(DEPDIR)/gsnap-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gsnap-genome_sites.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+
+gsnap-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bitpack64-read.o -MD -MP -MF $(DEPDIR)/gsnap-bitpack64-read.Tpo -c -o gsnap-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bitpack64-read.Tpo $(DEPDIR)/gsnap-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gsnap-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+gsnap-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/gsnap-bitpack64-read.Tpo -c -o gsnap-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bitpack64-read.Tpo $(DEPDIR)/gsnap-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gsnap-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
 
-gsnap-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-genome_hr.obj -MD -MP -MF $(DEPDIR)/gsnap-genome_hr.Tpo -c -o gsnap-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-genome_hr.Tpo $(DEPDIR)/gsnap-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gsnap-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+gsnap-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/gsnap-bitpack64-readtwo.Tpo -c -o gsnap-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bitpack64-readtwo.Tpo $(DEPDIR)/gsnap-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gsnap-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+gsnap-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/gsnap-bitpack64-readtwo.Tpo -c -o gsnap-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bitpack64-readtwo.Tpo $(DEPDIR)/gsnap-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gsnap-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
 
 gsnap-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-indexdb.o -MD -MP -MF $(DEPDIR)/gsnap-indexdb.Tpo -c -o gsnap-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -5692,20 +6900,6 @@ gsnap-orderstat.obj: orderstat.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-orderstat.obj `if test -f 'orderstat.c'; then $(CYGPATH_W) 'orderstat.c'; else $(CYGPATH_W) '$(srcdir)/orderstat.c'; fi`
 
-gsnap-oligoindex.o: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-oligoindex.o -MD -MP -MF $(DEPDIR)/gsnap-oligoindex.Tpo -c -o gsnap-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-oligoindex.Tpo $(DEPDIR)/gsnap-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gsnap-oligoindex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
-
-gsnap-oligoindex.obj: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-oligoindex.obj -MD -MP -MF $(DEPDIR)/gsnap-oligoindex.Tpo -c -o gsnap-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-oligoindex.Tpo $(DEPDIR)/gsnap-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gsnap-oligoindex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
-
 gsnap-oligoindex_hr.o: oligoindex_hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-oligoindex_hr.o -MD -MP -MF $(DEPDIR)/gsnap-oligoindex_hr.Tpo -c -o gsnap-oligoindex_hr.o `test -f 'oligoindex_hr.c' || echo '$(srcdir)/'`oligoindex_hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-oligoindex_hr.Tpo $(DEPDIR)/gsnap-oligoindex_hr.Po
@@ -5720,6 +6914,20 @@ gsnap-oligoindex_hr.obj: oligoindex_hr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-oligoindex_hr.obj `if test -f 'oligoindex_hr.c'; then $(CYGPATH_W) 'oligoindex_hr.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex_hr.c'; fi`
 
+gsnap-cellpool.o: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-cellpool.o -MD -MP -MF $(DEPDIR)/gsnap-cellpool.Tpo -c -o gsnap-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-cellpool.Tpo $(DEPDIR)/gsnap-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gsnap-cellpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+
+gsnap-cellpool.obj: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-cellpool.obj -MD -MP -MF $(DEPDIR)/gsnap-cellpool.Tpo -c -o gsnap-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-cellpool.Tpo $(DEPDIR)/gsnap-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gsnap-cellpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+
 gsnap-stage2.o: stage2.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-stage2.o -MD -MP -MF $(DEPDIR)/gsnap-stage2.Tpo -c -o gsnap-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-stage2.Tpo $(DEPDIR)/gsnap-stage2.Po
@@ -5804,6 +7012,76 @@ gsnap-dynprog.obj: dynprog.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog.obj `if test -f 'dynprog.c'; then $(CYGPATH_W) 'dynprog.c'; else $(CYGPATH_W) '$(srcdir)/dynprog.c'; fi`
 
+gsnap-dynprog_simd.o: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_simd.o -MD -MP -MF $(DEPDIR)/gsnap-dynprog_simd.Tpo -c -o gsnap-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_simd.Tpo $(DEPDIR)/gsnap-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gsnap-dynprog_simd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+
+gsnap-dynprog_simd.obj: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_simd.obj -MD -MP -MF $(DEPDIR)/gsnap-dynprog_simd.Tpo -c -o gsnap-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_simd.Tpo $(DEPDIR)/gsnap-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gsnap-dynprog_simd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+
+gsnap-dynprog_single.o: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_single.o -MD -MP -MF $(DEPDIR)/gsnap-dynprog_single.Tpo -c -o gsnap-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_single.Tpo $(DEPDIR)/gsnap-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gsnap-dynprog_single.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+
+gsnap-dynprog_single.obj: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_single.obj -MD -MP -MF $(DEPDIR)/gsnap-dynprog_single.Tpo -c -o gsnap-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_single.Tpo $(DEPDIR)/gsnap-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gsnap-dynprog_single.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+
+gsnap-dynprog_genome.o: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_genome.o -MD -MP -MF $(DEPDIR)/gsnap-dynprog_genome.Tpo -c -o gsnap-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_genome.Tpo $(DEPDIR)/gsnap-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gsnap-dynprog_genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+
+gsnap-dynprog_genome.obj: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_genome.obj -MD -MP -MF $(DEPDIR)/gsnap-dynprog_genome.Tpo -c -o gsnap-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_genome.Tpo $(DEPDIR)/gsnap-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gsnap-dynprog_genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+
+gsnap-dynprog_cdna.o: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_cdna.o -MD -MP -MF $(DEPDIR)/gsnap-dynprog_cdna.Tpo -c -o gsnap-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_cdna.Tpo $(DEPDIR)/gsnap-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gsnap-dynprog_cdna.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+
+gsnap-dynprog_cdna.obj: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_cdna.obj -MD -MP -MF $(DEPDIR)/gsnap-dynprog_cdna.Tpo -c -o gsnap-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_cdna.Tpo $(DEPDIR)/gsnap-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gsnap-dynprog_cdna.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+
+gsnap-dynprog_end.o: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_end.o -MD -MP -MF $(DEPDIR)/gsnap-dynprog_end.Tpo -c -o gsnap-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_end.Tpo $(DEPDIR)/gsnap-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gsnap-dynprog_end.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+
+gsnap-dynprog_end.obj: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-dynprog_end.obj -MD -MP -MF $(DEPDIR)/gsnap-dynprog_end.Tpo -c -o gsnap-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-dynprog_end.Tpo $(DEPDIR)/gsnap-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gsnap-dynprog_end.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+
 gsnap-gbuffer.o: gbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-gbuffer.o -MD -MP -MF $(DEPDIR)/gsnap-gbuffer.Tpo -c -o gsnap-gbuffer.o `test -f 'gbuffer.c' || echo '$(srcdir)/'`gbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-gbuffer.Tpo $(DEPDIR)/gsnap-gbuffer.Po
@@ -5832,6 +7110,20 @@ gsnap-translation.obj: translation.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-translation.obj `if test -f 'translation.c'; then $(CYGPATH_W) 'translation.c'; else $(CYGPATH_W) '$(srcdir)/translation.c'; fi`
 
+gsnap-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-doublelist.o -MD -MP -MF $(DEPDIR)/gsnap-doublelist.Tpo -c -o gsnap-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-doublelist.Tpo $(DEPDIR)/gsnap-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gsnap-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+gsnap-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-doublelist.obj -MD -MP -MF $(DEPDIR)/gsnap-doublelist.Tpo -c -o gsnap-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-doublelist.Tpo $(DEPDIR)/gsnap-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gsnap-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 gsnap-smooth.o: smooth.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-smooth.o -MD -MP -MF $(DEPDIR)/gsnap-smooth.Tpo -c -o gsnap-smooth.o `test -f 'smooth.c' || echo '$(srcdir)/'`smooth.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-smooth.Tpo $(DEPDIR)/gsnap-smooth.Po
@@ -5874,6 +7166,20 @@ gsnap-stage3.obj: stage3.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-stage3.obj `if test -f 'stage3.c'; then $(CYGPATH_W) 'stage3.c'; else $(CYGPATH_W) '$(srcdir)/stage3.c'; fi`
 
+gsnap-splicestringpool.o: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-splicestringpool.o -MD -MP -MF $(DEPDIR)/gsnap-splicestringpool.Tpo -c -o gsnap-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-splicestringpool.Tpo $(DEPDIR)/gsnap-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gsnap-splicestringpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+
+gsnap-splicestringpool.obj: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-splicestringpool.obj -MD -MP -MF $(DEPDIR)/gsnap-splicestringpool.Tpo -c -o gsnap-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-splicestringpool.Tpo $(DEPDIR)/gsnap-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gsnap-splicestringpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+
 gsnap-splicetrie_build.o: splicetrie_build.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-splicetrie_build.o -MD -MP -MF $(DEPDIR)/gsnap-splicetrie_build.Tpo -c -o gsnap-splicetrie_build.o `test -f 'splicetrie_build.c' || echo '$(srcdir)/'`splicetrie_build.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-splicetrie_build.Tpo $(DEPDIR)/gsnap-splicetrie_build.Po
@@ -5902,6 +7208,76 @@ gsnap-splicetrie.obj: splicetrie.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-splicetrie.obj `if test -f 'splicetrie.c'; then $(CYGPATH_W) 'splicetrie.c'; else $(CYGPATH_W) '$(srcdir)/splicetrie.c'; fi`
 
+gsnap-splice.o: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-splice.o -MD -MP -MF $(DEPDIR)/gsnap-splice.Tpo -c -o gsnap-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-splice.Tpo $(DEPDIR)/gsnap-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='gsnap-splice.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+
+gsnap-splice.obj: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-splice.obj -MD -MP -MF $(DEPDIR)/gsnap-splice.Tpo -c -o gsnap-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-splice.Tpo $(DEPDIR)/gsnap-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='gsnap-splice.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+
+gsnap-indel.o: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-indel.o -MD -MP -MF $(DEPDIR)/gsnap-indel.Tpo -c -o gsnap-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-indel.Tpo $(DEPDIR)/gsnap-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='gsnap-indel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+
+gsnap-indel.obj: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-indel.obj -MD -MP -MF $(DEPDIR)/gsnap-indel.Tpo -c -o gsnap-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-indel.Tpo $(DEPDIR)/gsnap-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='gsnap-indel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+
+gsnap-bitpack64-access.o: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bitpack64-access.o -MD -MP -MF $(DEPDIR)/gsnap-bitpack64-access.Tpo -c -o gsnap-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bitpack64-access.Tpo $(DEPDIR)/gsnap-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='gsnap-bitpack64-access.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+
+gsnap-bitpack64-access.obj: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bitpack64-access.obj -MD -MP -MF $(DEPDIR)/gsnap-bitpack64-access.Tpo -c -o gsnap-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bitpack64-access.Tpo $(DEPDIR)/gsnap-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='gsnap-bitpack64-access.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+
+gsnap-bytecoding.o: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bytecoding.o -MD -MP -MF $(DEPDIR)/gsnap-bytecoding.Tpo -c -o gsnap-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bytecoding.Tpo $(DEPDIR)/gsnap-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='gsnap-bytecoding.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+
+gsnap-bytecoding.obj: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-bytecoding.obj -MD -MP -MF $(DEPDIR)/gsnap-bytecoding.Tpo -c -o gsnap-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-bytecoding.Tpo $(DEPDIR)/gsnap-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='gsnap-bytecoding.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+
+gsnap-sarray-read.o: sarray-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-sarray-read.o -MD -MP -MF $(DEPDIR)/gsnap-sarray-read.Tpo -c -o gsnap-sarray-read.o `test -f 'sarray-read.c' || echo '$(srcdir)/'`sarray-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-sarray-read.Tpo $(DEPDIR)/gsnap-sarray-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-read.c' object='gsnap-sarray-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-sarray-read.o `test -f 'sarray-read.c' || echo '$(srcdir)/'`sarray-read.c
+
+gsnap-sarray-read.obj: sarray-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-sarray-read.obj -MD -MP -MF $(DEPDIR)/gsnap-sarray-read.Tpo -c -o gsnap-sarray-read.obj `if test -f 'sarray-read.c'; then $(CYGPATH_W) 'sarray-read.c'; else $(CYGPATH_W) '$(srcdir)/sarray-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-sarray-read.Tpo $(DEPDIR)/gsnap-sarray-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-read.c' object='gsnap-sarray-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-sarray-read.obj `if test -f 'sarray-read.c'; then $(CYGPATH_W) 'sarray-read.c'; else $(CYGPATH_W) '$(srcdir)/sarray-read.c'; fi`
+
 gsnap-stage1hr.o: stage1hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-stage1hr.o -MD -MP -MF $(DEPDIR)/gsnap-stage1hr.Tpo -c -o gsnap-stage1hr.o `test -f 'stage1hr.c' || echo '$(srcdir)/'`stage1hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-stage1hr.Tpo $(DEPDIR)/gsnap-stage1hr.Po
@@ -5958,6 +7334,20 @@ gsnap-inbuffer.obj: inbuffer.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-inbuffer.obj `if test -f 'inbuffer.c'; then $(CYGPATH_W) 'inbuffer.c'; else $(CYGPATH_W) '$(srcdir)/inbuffer.c'; fi`
 
+gsnap-samheader.o: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-samheader.o -MD -MP -MF $(DEPDIR)/gsnap-samheader.Tpo -c -o gsnap-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-samheader.Tpo $(DEPDIR)/gsnap-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gsnap-samheader.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+
+gsnap-samheader.obj: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-samheader.obj -MD -MP -MF $(DEPDIR)/gsnap-samheader.Tpo -c -o gsnap-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-samheader.Tpo $(DEPDIR)/gsnap-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gsnap-samheader.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -c -o gsnap-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+
 gsnap-outbuffer.o: outbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnap_CFLAGS) $(CFLAGS) -MT gsnap-outbuffer.o -MD -MP -MF $(DEPDIR)/gsnap-outbuffer.Tpo -c -o gsnap-outbuffer.o `test -f 'outbuffer.c' || echo '$(srcdir)/'`outbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnap-outbuffer.Tpo $(DEPDIR)/gsnap-outbuffer.Po
@@ -6336,19 +7726,75 @@ gsnapl-genome.obj: genome.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
 
-gsnapl-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-genome_hr.o -MD -MP -MF $(DEPDIR)/gsnapl-genome_hr.Tpo -c -o gsnapl-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-genome_hr.Tpo $(DEPDIR)/gsnapl-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gsnapl-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+gsnapl-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-popcount.o -MD -MP -MF $(DEPDIR)/gsnapl-popcount.Tpo -c -o gsnapl-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-popcount.Tpo $(DEPDIR)/gsnapl-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gsnapl-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+gsnapl-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-popcount.obj -MD -MP -MF $(DEPDIR)/gsnapl-popcount.Tpo -c -o gsnapl-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-popcount.Tpo $(DEPDIR)/gsnapl-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='gsnapl-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+gsnapl-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-genome128_hr.o -MD -MP -MF $(DEPDIR)/gsnapl-genome128_hr.Tpo -c -o gsnapl-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-genome128_hr.Tpo $(DEPDIR)/gsnapl-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gsnapl-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+gsnapl-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-genome128_hr.obj -MD -MP -MF $(DEPDIR)/gsnapl-genome128_hr.Tpo -c -o gsnapl-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-genome128_hr.Tpo $(DEPDIR)/gsnapl-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='gsnapl-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+gsnapl-genome_sites.o: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-genome_sites.o -MD -MP -MF $(DEPDIR)/gsnapl-genome_sites.Tpo -c -o gsnapl-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-genome_sites.Tpo $(DEPDIR)/gsnapl-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gsnapl-genome_sites.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
 
-gsnapl-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-genome_hr.obj -MD -MP -MF $(DEPDIR)/gsnapl-genome_hr.Tpo -c -o gsnapl-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-genome_hr.Tpo $(DEPDIR)/gsnapl-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='gsnapl-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+gsnapl-genome_sites.obj: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-genome_sites.obj -MD -MP -MF $(DEPDIR)/gsnapl-genome_sites.Tpo -c -o gsnapl-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-genome_sites.Tpo $(DEPDIR)/gsnapl-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='gsnapl-genome_sites.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+
+gsnapl-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-bitpack64-read.o -MD -MP -MF $(DEPDIR)/gsnapl-bitpack64-read.Tpo -c -o gsnapl-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-bitpack64-read.Tpo $(DEPDIR)/gsnapl-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gsnapl-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+gsnapl-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/gsnapl-bitpack64-read.Tpo -c -o gsnapl-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-bitpack64-read.Tpo $(DEPDIR)/gsnapl-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='gsnapl-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+gsnapl-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/gsnapl-bitpack64-readtwo.Tpo -c -o gsnapl-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-bitpack64-readtwo.Tpo $(DEPDIR)/gsnapl-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gsnapl-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+gsnapl-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/gsnapl-bitpack64-readtwo.Tpo -c -o gsnapl-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-bitpack64-readtwo.Tpo $(DEPDIR)/gsnapl-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='gsnapl-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
 
 gsnapl-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-indexdb.o -MD -MP -MF $(DEPDIR)/gsnapl-indexdb.Tpo -c -o gsnapl-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -6658,20 +8104,6 @@ gsnapl-orderstat.obj: orderstat.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-orderstat.obj `if test -f 'orderstat.c'; then $(CYGPATH_W) 'orderstat.c'; else $(CYGPATH_W) '$(srcdir)/orderstat.c'; fi`
 
-gsnapl-oligoindex.o: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-oligoindex.o -MD -MP -MF $(DEPDIR)/gsnapl-oligoindex.Tpo -c -o gsnapl-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-oligoindex.Tpo $(DEPDIR)/gsnapl-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gsnapl-oligoindex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
-
-gsnapl-oligoindex.obj: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-oligoindex.obj -MD -MP -MF $(DEPDIR)/gsnapl-oligoindex.Tpo -c -o gsnapl-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-oligoindex.Tpo $(DEPDIR)/gsnapl-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='gsnapl-oligoindex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
-
 gsnapl-oligoindex_hr.o: oligoindex_hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-oligoindex_hr.o -MD -MP -MF $(DEPDIR)/gsnapl-oligoindex_hr.Tpo -c -o gsnapl-oligoindex_hr.o `test -f 'oligoindex_hr.c' || echo '$(srcdir)/'`oligoindex_hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-oligoindex_hr.Tpo $(DEPDIR)/gsnapl-oligoindex_hr.Po
@@ -6686,6 +8118,20 @@ gsnapl-oligoindex_hr.obj: oligoindex_hr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-oligoindex_hr.obj `if test -f 'oligoindex_hr.c'; then $(CYGPATH_W) 'oligoindex_hr.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex_hr.c'; fi`
 
+gsnapl-cellpool.o: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-cellpool.o -MD -MP -MF $(DEPDIR)/gsnapl-cellpool.Tpo -c -o gsnapl-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-cellpool.Tpo $(DEPDIR)/gsnapl-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gsnapl-cellpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+
+gsnapl-cellpool.obj: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-cellpool.obj -MD -MP -MF $(DEPDIR)/gsnapl-cellpool.Tpo -c -o gsnapl-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-cellpool.Tpo $(DEPDIR)/gsnapl-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='gsnapl-cellpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+
 gsnapl-stage2.o: stage2.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-stage2.o -MD -MP -MF $(DEPDIR)/gsnapl-stage2.Tpo -c -o gsnapl-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-stage2.Tpo $(DEPDIR)/gsnapl-stage2.Po
@@ -6770,6 +8216,76 @@ gsnapl-dynprog.obj: dynprog.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog.obj `if test -f 'dynprog.c'; then $(CYGPATH_W) 'dynprog.c'; else $(CYGPATH_W) '$(srcdir)/dynprog.c'; fi`
 
+gsnapl-dynprog_simd.o: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_simd.o -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_simd.Tpo -c -o gsnapl-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_simd.Tpo $(DEPDIR)/gsnapl-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gsnapl-dynprog_simd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+
+gsnapl-dynprog_simd.obj: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_simd.obj -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_simd.Tpo -c -o gsnapl-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_simd.Tpo $(DEPDIR)/gsnapl-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='gsnapl-dynprog_simd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+
+gsnapl-dynprog_single.o: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_single.o -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_single.Tpo -c -o gsnapl-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_single.Tpo $(DEPDIR)/gsnapl-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gsnapl-dynprog_single.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+
+gsnapl-dynprog_single.obj: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_single.obj -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_single.Tpo -c -o gsnapl-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_single.Tpo $(DEPDIR)/gsnapl-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='gsnapl-dynprog_single.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+
+gsnapl-dynprog_genome.o: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_genome.o -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_genome.Tpo -c -o gsnapl-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_genome.Tpo $(DEPDIR)/gsnapl-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gsnapl-dynprog_genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+
+gsnapl-dynprog_genome.obj: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_genome.obj -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_genome.Tpo -c -o gsnapl-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_genome.Tpo $(DEPDIR)/gsnapl-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='gsnapl-dynprog_genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+
+gsnapl-dynprog_cdna.o: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_cdna.o -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_cdna.Tpo -c -o gsnapl-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_cdna.Tpo $(DEPDIR)/gsnapl-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gsnapl-dynprog_cdna.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+
+gsnapl-dynprog_cdna.obj: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_cdna.obj -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_cdna.Tpo -c -o gsnapl-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_cdna.Tpo $(DEPDIR)/gsnapl-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='gsnapl-dynprog_cdna.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+
+gsnapl-dynprog_end.o: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_end.o -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_end.Tpo -c -o gsnapl-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_end.Tpo $(DEPDIR)/gsnapl-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gsnapl-dynprog_end.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+
+gsnapl-dynprog_end.obj: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-dynprog_end.obj -MD -MP -MF $(DEPDIR)/gsnapl-dynprog_end.Tpo -c -o gsnapl-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-dynprog_end.Tpo $(DEPDIR)/gsnapl-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='gsnapl-dynprog_end.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+
 gsnapl-gbuffer.o: gbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-gbuffer.o -MD -MP -MF $(DEPDIR)/gsnapl-gbuffer.Tpo -c -o gsnapl-gbuffer.o `test -f 'gbuffer.c' || echo '$(srcdir)/'`gbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-gbuffer.Tpo $(DEPDIR)/gsnapl-gbuffer.Po
@@ -6798,6 +8314,20 @@ gsnapl-translation.obj: translation.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-translation.obj `if test -f 'translation.c'; then $(CYGPATH_W) 'translation.c'; else $(CYGPATH_W) '$(srcdir)/translation.c'; fi`
 
+gsnapl-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-doublelist.o -MD -MP -MF $(DEPDIR)/gsnapl-doublelist.Tpo -c -o gsnapl-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-doublelist.Tpo $(DEPDIR)/gsnapl-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gsnapl-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+gsnapl-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-doublelist.obj -MD -MP -MF $(DEPDIR)/gsnapl-doublelist.Tpo -c -o gsnapl-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-doublelist.Tpo $(DEPDIR)/gsnapl-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='gsnapl-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 gsnapl-smooth.o: smooth.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-smooth.o -MD -MP -MF $(DEPDIR)/gsnapl-smooth.Tpo -c -o gsnapl-smooth.o `test -f 'smooth.c' || echo '$(srcdir)/'`smooth.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-smooth.Tpo $(DEPDIR)/gsnapl-smooth.Po
@@ -6840,6 +8370,20 @@ gsnapl-stage3.obj: stage3.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-stage3.obj `if test -f 'stage3.c'; then $(CYGPATH_W) 'stage3.c'; else $(CYGPATH_W) '$(srcdir)/stage3.c'; fi`
 
+gsnapl-splicestringpool.o: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-splicestringpool.o -MD -MP -MF $(DEPDIR)/gsnapl-splicestringpool.Tpo -c -o gsnapl-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-splicestringpool.Tpo $(DEPDIR)/gsnapl-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gsnapl-splicestringpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+
+gsnapl-splicestringpool.obj: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-splicestringpool.obj -MD -MP -MF $(DEPDIR)/gsnapl-splicestringpool.Tpo -c -o gsnapl-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-splicestringpool.Tpo $(DEPDIR)/gsnapl-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='gsnapl-splicestringpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+
 gsnapl-splicetrie_build.o: splicetrie_build.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-splicetrie_build.o -MD -MP -MF $(DEPDIR)/gsnapl-splicetrie_build.Tpo -c -o gsnapl-splicetrie_build.o `test -f 'splicetrie_build.c' || echo '$(srcdir)/'`splicetrie_build.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-splicetrie_build.Tpo $(DEPDIR)/gsnapl-splicetrie_build.Po
@@ -6868,6 +8412,48 @@ gsnapl-splicetrie.obj: splicetrie.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-splicetrie.obj `if test -f 'splicetrie.c'; then $(CYGPATH_W) 'splicetrie.c'; else $(CYGPATH_W) '$(srcdir)/splicetrie.c'; fi`
 
+gsnapl-splice.o: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-splice.o -MD -MP -MF $(DEPDIR)/gsnapl-splice.Tpo -c -o gsnapl-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-splice.Tpo $(DEPDIR)/gsnapl-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='gsnapl-splice.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+
+gsnapl-splice.obj: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-splice.obj -MD -MP -MF $(DEPDIR)/gsnapl-splice.Tpo -c -o gsnapl-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-splice.Tpo $(DEPDIR)/gsnapl-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='gsnapl-splice.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+
+gsnapl-indel.o: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-indel.o -MD -MP -MF $(DEPDIR)/gsnapl-indel.Tpo -c -o gsnapl-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-indel.Tpo $(DEPDIR)/gsnapl-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='gsnapl-indel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+
+gsnapl-indel.obj: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-indel.obj -MD -MP -MF $(DEPDIR)/gsnapl-indel.Tpo -c -o gsnapl-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-indel.Tpo $(DEPDIR)/gsnapl-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='gsnapl-indel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+
+gsnapl-bitpack64-access.o: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-bitpack64-access.o -MD -MP -MF $(DEPDIR)/gsnapl-bitpack64-access.Tpo -c -o gsnapl-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-bitpack64-access.Tpo $(DEPDIR)/gsnapl-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='gsnapl-bitpack64-access.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+
+gsnapl-bitpack64-access.obj: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-bitpack64-access.obj -MD -MP -MF $(DEPDIR)/gsnapl-bitpack64-access.Tpo -c -o gsnapl-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-bitpack64-access.Tpo $(DEPDIR)/gsnapl-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='gsnapl-bitpack64-access.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+
 gsnapl-stage1hr.o: stage1hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-stage1hr.o -MD -MP -MF $(DEPDIR)/gsnapl-stage1hr.Tpo -c -o gsnapl-stage1hr.o `test -f 'stage1hr.c' || echo '$(srcdir)/'`stage1hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-stage1hr.Tpo $(DEPDIR)/gsnapl-stage1hr.Po
@@ -6924,6 +8510,20 @@ gsnapl-inbuffer.obj: inbuffer.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-inbuffer.obj `if test -f 'inbuffer.c'; then $(CYGPATH_W) 'inbuffer.c'; else $(CYGPATH_W) '$(srcdir)/inbuffer.c'; fi`
 
+gsnapl-samheader.o: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-samheader.o -MD -MP -MF $(DEPDIR)/gsnapl-samheader.Tpo -c -o gsnapl-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-samheader.Tpo $(DEPDIR)/gsnapl-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gsnapl-samheader.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-samheader.o `test -f 'samheader.c' || echo '$(srcdir)/'`samheader.c
+
+gsnapl-samheader.obj: samheader.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-samheader.obj -MD -MP -MF $(DEPDIR)/gsnapl-samheader.Tpo -c -o gsnapl-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-samheader.Tpo $(DEPDIR)/gsnapl-samheader.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samheader.c' object='gsnapl-samheader.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -c -o gsnapl-samheader.obj `if test -f 'samheader.c'; then $(CYGPATH_W) 'samheader.c'; else $(CYGPATH_W) '$(srcdir)/samheader.c'; fi`
+
 gsnapl-outbuffer.o: outbuffer.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsnapl_CFLAGS) $(CFLAGS) -MT gsnapl-outbuffer.o -MD -MP -MF $(DEPDIR)/gsnapl-outbuffer.Tpo -c -o gsnapl-outbuffer.o `test -f 'outbuffer.c' || echo '$(srcdir)/'`outbuffer.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/gsnapl-outbuffer.Tpo $(DEPDIR)/gsnapl-outbuffer.Po
@@ -7652,6 +9252,20 @@ iit_store-access.obj: access.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iit_store_CFLAGS) $(CFLAGS) -c -o iit_store-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
 
+iit_store-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iit_store_CFLAGS) $(CFLAGS) -MT iit_store-doublelist.o -MD -MP -MF $(DEPDIR)/iit_store-doublelist.Tpo -c -o iit_store-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/iit_store-doublelist.Tpo $(DEPDIR)/iit_store-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='iit_store-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iit_store_CFLAGS) $(CFLAGS) -c -o iit_store-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+iit_store-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iit_store_CFLAGS) $(CFLAGS) -MT iit_store-doublelist.obj -MD -MP -MF $(DEPDIR)/iit_store-doublelist.Tpo -c -o iit_store-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/iit_store-doublelist.Tpo $(DEPDIR)/iit_store-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='iit_store-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iit_store_CFLAGS) $(CFLAGS) -c -o iit_store-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 iit_store-iit-write-univ.o: iit-write-univ.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iit_store_CFLAGS) $(CFLAGS) -MT iit_store-iit-write-univ.o -MD -MP -MF $(DEPDIR)/iit_store-iit-write-univ.Tpo -c -o iit_store-iit-write-univ.o `test -f 'iit-write-univ.c' || echo '$(srcdir)/'`iit-write-univ.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/iit_store-iit-write-univ.Tpo $(DEPDIR)/iit_store-iit-write-univ.Po
@@ -7988,19 +9602,89 @@ snpindex-compress.obj: compress.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`
 
-snpindex-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-genome_hr.o -MD -MP -MF $(DEPDIR)/snpindex-genome_hr.Tpo -c -o snpindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-genome_hr.Tpo $(DEPDIR)/snpindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='snpindex-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+snpindex-compress-write.o: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-compress-write.o -MD -MP -MF $(DEPDIR)/snpindex-compress-write.Tpo -c -o snpindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-compress-write.Tpo $(DEPDIR)/snpindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='snpindex-compress-write.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-compress-write.o `test -f 'compress-write.c' || echo '$(srcdir)/'`compress-write.c
 
-snpindex-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-genome_hr.obj -MD -MP -MF $(DEPDIR)/snpindex-genome_hr.Tpo -c -o snpindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-genome_hr.Tpo $(DEPDIR)/snpindex-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='snpindex-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+snpindex-compress-write.obj: compress-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-compress-write.obj -MD -MP -MF $(DEPDIR)/snpindex-compress-write.Tpo -c -o snpindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-compress-write.Tpo $(DEPDIR)/snpindex-compress-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='compress-write.c' object='snpindex-compress-write.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-compress-write.obj `if test -f 'compress-write.c'; then $(CYGPATH_W) 'compress-write.c'; else $(CYGPATH_W) '$(srcdir)/compress-write.c'; fi`
+
+snpindex-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-popcount.o -MD -MP -MF $(DEPDIR)/snpindex-popcount.Tpo -c -o snpindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-popcount.Tpo $(DEPDIR)/snpindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='snpindex-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+snpindex-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-popcount.obj -MD -MP -MF $(DEPDIR)/snpindex-popcount.Tpo -c -o snpindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-popcount.Tpo $(DEPDIR)/snpindex-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='snpindex-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+snpindex-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-genome128_hr.o -MD -MP -MF $(DEPDIR)/snpindex-genome128_hr.Tpo -c -o snpindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-genome128_hr.Tpo $(DEPDIR)/snpindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='snpindex-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+snpindex-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-genome128_hr.obj -MD -MP -MF $(DEPDIR)/snpindex-genome128_hr.Tpo -c -o snpindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-genome128_hr.Tpo $(DEPDIR)/snpindex-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='snpindex-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+snpindex-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-bitpack64-read.o -MD -MP -MF $(DEPDIR)/snpindex-bitpack64-read.Tpo -c -o snpindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-bitpack64-read.Tpo $(DEPDIR)/snpindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='snpindex-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+snpindex-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/snpindex-bitpack64-read.Tpo -c -o snpindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-bitpack64-read.Tpo $(DEPDIR)/snpindex-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='snpindex-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+snpindex-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/snpindex-bitpack64-readtwo.Tpo -c -o snpindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-bitpack64-readtwo.Tpo $(DEPDIR)/snpindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='snpindex-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+snpindex-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/snpindex-bitpack64-readtwo.Tpo -c -o snpindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-bitpack64-readtwo.Tpo $(DEPDIR)/snpindex-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='snpindex-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+
+snpindex-bitpack64-write.o: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-bitpack64-write.o -MD -MP -MF $(DEPDIR)/snpindex-bitpack64-write.Tpo -c -o snpindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-bitpack64-write.Tpo $(DEPDIR)/snpindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='snpindex-bitpack64-write.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-bitpack64-write.o `test -f 'bitpack64-write.c' || echo '$(srcdir)/'`bitpack64-write.c
+
+snpindex-bitpack64-write.obj: bitpack64-write.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-bitpack64-write.obj -MD -MP -MF $(DEPDIR)/snpindex-bitpack64-write.Tpo -c -o snpindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/snpindex-bitpack64-write.Tpo $(DEPDIR)/snpindex-bitpack64-write.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-write.c' object='snpindex-bitpack64-write.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -c -o snpindex-bitpack64-write.obj `if test -f 'bitpack64-write.c'; then $(CYGPATH_W) 'bitpack64-write.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-write.c'; fi`
 
 snpindex-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snpindex_CFLAGS) $(CFLAGS) -MT snpindex-indexdb.o -MD -MP -MF $(DEPDIR)/snpindex-indexdb.Tpo -c -o snpindex-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -8450,19 +10134,75 @@ uniqscan-genome.obj: genome.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
 
-uniqscan-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-genome_hr.o -MD -MP -MF $(DEPDIR)/uniqscan-genome_hr.Tpo -c -o uniqscan-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-genome_hr.Tpo $(DEPDIR)/uniqscan-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='uniqscan-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+uniqscan-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-popcount.o -MD -MP -MF $(DEPDIR)/uniqscan-popcount.Tpo -c -o uniqscan-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-popcount.Tpo $(DEPDIR)/uniqscan-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='uniqscan-popcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+
+uniqscan-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-popcount.obj -MD -MP -MF $(DEPDIR)/uniqscan-popcount.Tpo -c -o uniqscan-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-popcount.Tpo $(DEPDIR)/uniqscan-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='uniqscan-popcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+uniqscan-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-genome128_hr.o -MD -MP -MF $(DEPDIR)/uniqscan-genome128_hr.Tpo -c -o uniqscan-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-genome128_hr.Tpo $(DEPDIR)/uniqscan-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='uniqscan-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+uniqscan-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-genome128_hr.obj -MD -MP -MF $(DEPDIR)/uniqscan-genome128_hr.Tpo -c -o uniqscan-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-genome128_hr.Tpo $(DEPDIR)/uniqscan-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='uniqscan-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+uniqscan-genome_sites.o: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-genome_sites.o -MD -MP -MF $(DEPDIR)/uniqscan-genome_sites.Tpo -c -o uniqscan-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-genome_sites.Tpo $(DEPDIR)/uniqscan-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='uniqscan-genome_sites.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+
+uniqscan-genome_sites.obj: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-genome_sites.obj -MD -MP -MF $(DEPDIR)/uniqscan-genome_sites.Tpo -c -o uniqscan-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-genome_sites.Tpo $(DEPDIR)/uniqscan-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='uniqscan-genome_sites.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+
+uniqscan-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bitpack64-read.o -MD -MP -MF $(DEPDIR)/uniqscan-bitpack64-read.Tpo -c -o uniqscan-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bitpack64-read.Tpo $(DEPDIR)/uniqscan-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='uniqscan-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
 
-uniqscan-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-genome_hr.obj -MD -MP -MF $(DEPDIR)/uniqscan-genome_hr.Tpo -c -o uniqscan-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-genome_hr.Tpo $(DEPDIR)/uniqscan-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='uniqscan-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+uniqscan-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/uniqscan-bitpack64-read.Tpo -c -o uniqscan-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bitpack64-read.Tpo $(DEPDIR)/uniqscan-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='uniqscan-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+uniqscan-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/uniqscan-bitpack64-readtwo.Tpo -c -o uniqscan-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bitpack64-readtwo.Tpo $(DEPDIR)/uniqscan-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='uniqscan-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+uniqscan-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/uniqscan-bitpack64-readtwo.Tpo -c -o uniqscan-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bitpack64-readtwo.Tpo $(DEPDIR)/uniqscan-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='uniqscan-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
 
 uniqscan-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-indexdb.o -MD -MP -MF $(DEPDIR)/uniqscan-indexdb.Tpo -c -o uniqscan-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -8744,20 +10484,6 @@ uniqscan-orderstat.obj: orderstat.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-orderstat.obj `if test -f 'orderstat.c'; then $(CYGPATH_W) 'orderstat.c'; else $(CYGPATH_W) '$(srcdir)/orderstat.c'; fi`
 
-uniqscan-oligoindex.o: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-oligoindex.o -MD -MP -MF $(DEPDIR)/uniqscan-oligoindex.Tpo -c -o uniqscan-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-oligoindex.Tpo $(DEPDIR)/uniqscan-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='uniqscan-oligoindex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
-
-uniqscan-oligoindex.obj: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-oligoindex.obj -MD -MP -MF $(DEPDIR)/uniqscan-oligoindex.Tpo -c -o uniqscan-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-oligoindex.Tpo $(DEPDIR)/uniqscan-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='uniqscan-oligoindex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
-
 uniqscan-oligoindex_hr.o: oligoindex_hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-oligoindex_hr.o -MD -MP -MF $(DEPDIR)/uniqscan-oligoindex_hr.Tpo -c -o uniqscan-oligoindex_hr.o `test -f 'oligoindex_hr.c' || echo '$(srcdir)/'`oligoindex_hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-oligoindex_hr.Tpo $(DEPDIR)/uniqscan-oligoindex_hr.Po
@@ -8772,6 +10498,20 @@ uniqscan-oligoindex_hr.obj: oligoindex_hr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-oligoindex_hr.obj `if test -f 'oligoindex_hr.c'; then $(CYGPATH_W) 'oligoindex_hr.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex_hr.c'; fi`
 
+uniqscan-cellpool.o: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-cellpool.o -MD -MP -MF $(DEPDIR)/uniqscan-cellpool.Tpo -c -o uniqscan-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-cellpool.Tpo $(DEPDIR)/uniqscan-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='uniqscan-cellpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+
+uniqscan-cellpool.obj: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-cellpool.obj -MD -MP -MF $(DEPDIR)/uniqscan-cellpool.Tpo -c -o uniqscan-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-cellpool.Tpo $(DEPDIR)/uniqscan-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='uniqscan-cellpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+
 uniqscan-stage2.o: stage2.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-stage2.o -MD -MP -MF $(DEPDIR)/uniqscan-stage2.Tpo -c -o uniqscan-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-stage2.Tpo $(DEPDIR)/uniqscan-stage2.Po
@@ -8856,6 +10596,76 @@ uniqscan-dynprog.obj: dynprog.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog.obj `if test -f 'dynprog.c'; then $(CYGPATH_W) 'dynprog.c'; else $(CYGPATH_W) '$(srcdir)/dynprog.c'; fi`
 
+uniqscan-dynprog_simd.o: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_simd.o -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_simd.Tpo -c -o uniqscan-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_simd.Tpo $(DEPDIR)/uniqscan-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='uniqscan-dynprog_simd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+
+uniqscan-dynprog_simd.obj: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_simd.obj -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_simd.Tpo -c -o uniqscan-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_simd.Tpo $(DEPDIR)/uniqscan-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='uniqscan-dynprog_simd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+
+uniqscan-dynprog_single.o: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_single.o -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_single.Tpo -c -o uniqscan-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_single.Tpo $(DEPDIR)/uniqscan-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='uniqscan-dynprog_single.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+
+uniqscan-dynprog_single.obj: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_single.obj -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_single.Tpo -c -o uniqscan-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_single.Tpo $(DEPDIR)/uniqscan-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='uniqscan-dynprog_single.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+
+uniqscan-dynprog_genome.o: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_genome.o -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_genome.Tpo -c -o uniqscan-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_genome.Tpo $(DEPDIR)/uniqscan-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='uniqscan-dynprog_genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+
+uniqscan-dynprog_genome.obj: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_genome.obj -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_genome.Tpo -c -o uniqscan-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_genome.Tpo $(DEPDIR)/uniqscan-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='uniqscan-dynprog_genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+
+uniqscan-dynprog_cdna.o: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_cdna.o -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_cdna.Tpo -c -o uniqscan-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_cdna.Tpo $(DEPDIR)/uniqscan-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='uniqscan-dynprog_cdna.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+
+uniqscan-dynprog_cdna.obj: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_cdna.obj -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_cdna.Tpo -c -o uniqscan-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_cdna.Tpo $(DEPDIR)/uniqscan-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='uniqscan-dynprog_cdna.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+
+uniqscan-dynprog_end.o: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_end.o -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_end.Tpo -c -o uniqscan-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_end.Tpo $(DEPDIR)/uniqscan-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='uniqscan-dynprog_end.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+
+uniqscan-dynprog_end.obj: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-dynprog_end.obj -MD -MP -MF $(DEPDIR)/uniqscan-dynprog_end.Tpo -c -o uniqscan-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-dynprog_end.Tpo $(DEPDIR)/uniqscan-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='uniqscan-dynprog_end.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+
 uniqscan-translation.o: translation.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-translation.o -MD -MP -MF $(DEPDIR)/uniqscan-translation.Tpo -c -o uniqscan-translation.o `test -f 'translation.c' || echo '$(srcdir)/'`translation.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-translation.Tpo $(DEPDIR)/uniqscan-translation.Po
@@ -8870,6 +10680,20 @@ uniqscan-translation.obj: translation.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-translation.obj `if test -f 'translation.c'; then $(CYGPATH_W) 'translation.c'; else $(CYGPATH_W) '$(srcdir)/translation.c'; fi`
 
+uniqscan-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-doublelist.o -MD -MP -MF $(DEPDIR)/uniqscan-doublelist.Tpo -c -o uniqscan-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-doublelist.Tpo $(DEPDIR)/uniqscan-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='uniqscan-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+uniqscan-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-doublelist.obj -MD -MP -MF $(DEPDIR)/uniqscan-doublelist.Tpo -c -o uniqscan-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-doublelist.Tpo $(DEPDIR)/uniqscan-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='uniqscan-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 uniqscan-smooth.o: smooth.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-smooth.o -MD -MP -MF $(DEPDIR)/uniqscan-smooth.Tpo -c -o uniqscan-smooth.o `test -f 'smooth.c' || echo '$(srcdir)/'`smooth.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-smooth.Tpo $(DEPDIR)/uniqscan-smooth.Po
@@ -8912,6 +10736,20 @@ uniqscan-stage3.obj: stage3.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-stage3.obj `if test -f 'stage3.c'; then $(CYGPATH_W) 'stage3.c'; else $(CYGPATH_W) '$(srcdir)/stage3.c'; fi`
 
+uniqscan-splicestringpool.o: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-splicestringpool.o -MD -MP -MF $(DEPDIR)/uniqscan-splicestringpool.Tpo -c -o uniqscan-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-splicestringpool.Tpo $(DEPDIR)/uniqscan-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='uniqscan-splicestringpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+
+uniqscan-splicestringpool.obj: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-splicestringpool.obj -MD -MP -MF $(DEPDIR)/uniqscan-splicestringpool.Tpo -c -o uniqscan-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-splicestringpool.Tpo $(DEPDIR)/uniqscan-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='uniqscan-splicestringpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+
 uniqscan-splicetrie_build.o: splicetrie_build.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-splicetrie_build.o -MD -MP -MF $(DEPDIR)/uniqscan-splicetrie_build.Tpo -c -o uniqscan-splicetrie_build.o `test -f 'splicetrie_build.c' || echo '$(srcdir)/'`splicetrie_build.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-splicetrie_build.Tpo $(DEPDIR)/uniqscan-splicetrie_build.Po
@@ -8940,6 +10778,76 @@ uniqscan-splicetrie.obj: splicetrie.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-splicetrie.obj `if test -f 'splicetrie.c'; then $(CYGPATH_W) 'splicetrie.c'; else $(CYGPATH_W) '$(srcdir)/splicetrie.c'; fi`
 
+uniqscan-splice.o: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-splice.o -MD -MP -MF $(DEPDIR)/uniqscan-splice.Tpo -c -o uniqscan-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-splice.Tpo $(DEPDIR)/uniqscan-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='uniqscan-splice.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+
+uniqscan-splice.obj: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-splice.obj -MD -MP -MF $(DEPDIR)/uniqscan-splice.Tpo -c -o uniqscan-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-splice.Tpo $(DEPDIR)/uniqscan-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='uniqscan-splice.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+
+uniqscan-indel.o: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-indel.o -MD -MP -MF $(DEPDIR)/uniqscan-indel.Tpo -c -o uniqscan-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-indel.Tpo $(DEPDIR)/uniqscan-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='uniqscan-indel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+
+uniqscan-indel.obj: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-indel.obj -MD -MP -MF $(DEPDIR)/uniqscan-indel.Tpo -c -o uniqscan-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-indel.Tpo $(DEPDIR)/uniqscan-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='uniqscan-indel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+
+uniqscan-bitpack64-access.o: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bitpack64-access.o -MD -MP -MF $(DEPDIR)/uniqscan-bitpack64-access.Tpo -c -o uniqscan-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bitpack64-access.Tpo $(DEPDIR)/uniqscan-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='uniqscan-bitpack64-access.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+
+uniqscan-bitpack64-access.obj: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bitpack64-access.obj -MD -MP -MF $(DEPDIR)/uniqscan-bitpack64-access.Tpo -c -o uniqscan-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bitpack64-access.Tpo $(DEPDIR)/uniqscan-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='uniqscan-bitpack64-access.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+
+uniqscan-bytecoding.o: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bytecoding.o -MD -MP -MF $(DEPDIR)/uniqscan-bytecoding.Tpo -c -o uniqscan-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bytecoding.Tpo $(DEPDIR)/uniqscan-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='uniqscan-bytecoding.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bytecoding.o `test -f 'bytecoding.c' || echo '$(srcdir)/'`bytecoding.c
+
+uniqscan-bytecoding.obj: bytecoding.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-bytecoding.obj -MD -MP -MF $(DEPDIR)/uniqscan-bytecoding.Tpo -c -o uniqscan-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-bytecoding.Tpo $(DEPDIR)/uniqscan-bytecoding.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bytecoding.c' object='uniqscan-bytecoding.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-bytecoding.obj `if test -f 'bytecoding.c'; then $(CYGPATH_W) 'bytecoding.c'; else $(CYGPATH_W) '$(srcdir)/bytecoding.c'; fi`
+
+uniqscan-sarray-read.o: sarray-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-sarray-read.o -MD -MP -MF $(DEPDIR)/uniqscan-sarray-read.Tpo -c -o uniqscan-sarray-read.o `test -f 'sarray-read.c' || echo '$(srcdir)/'`sarray-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-sarray-read.Tpo $(DEPDIR)/uniqscan-sarray-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-read.c' object='uniqscan-sarray-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-sarray-read.o `test -f 'sarray-read.c' || echo '$(srcdir)/'`sarray-read.c
+
+uniqscan-sarray-read.obj: sarray-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-sarray-read.obj -MD -MP -MF $(DEPDIR)/uniqscan-sarray-read.Tpo -c -o uniqscan-sarray-read.obj `if test -f 'sarray-read.c'; then $(CYGPATH_W) 'sarray-read.c'; else $(CYGPATH_W) '$(srcdir)/sarray-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-sarray-read.Tpo $(DEPDIR)/uniqscan-sarray-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sarray-read.c' object='uniqscan-sarray-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -c -o uniqscan-sarray-read.obj `if test -f 'sarray-read.c'; then $(CYGPATH_W) 'sarray-read.c'; else $(CYGPATH_W) '$(srcdir)/sarray-read.c'; fi`
+
 uniqscan-stage1hr.o: stage1hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscan_CFLAGS) $(CFLAGS) -MT uniqscan-stage1hr.o -MD -MP -MF $(DEPDIR)/uniqscan-stage1hr.Tpo -c -o uniqscan-stage1hr.o `test -f 'stage1hr.c' || echo '$(srcdir)/'`stage1hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscan-stage1hr.Tpo $(DEPDIR)/uniqscan-stage1hr.Po
@@ -9164,6 +11072,20 @@ uniqscanl-uintlist.obj: uintlist.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-uintlist.obj `if test -f 'uintlist.c'; then $(CYGPATH_W) 'uintlist.c'; else $(CYGPATH_W) '$(srcdir)/uintlist.c'; fi`
 
+uniqscanl-uint8list.o: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-uint8list.o -MD -MP -MF $(DEPDIR)/uniqscanl-uint8list.Tpo -c -o uniqscanl-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-uint8list.Tpo $(DEPDIR)/uniqscanl-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='uniqscanl-uint8list.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-uint8list.o `test -f 'uint8list.c' || echo '$(srcdir)/'`uint8list.c
+
+uniqscanl-uint8list.obj: uint8list.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-uint8list.obj -MD -MP -MF $(DEPDIR)/uniqscanl-uint8list.Tpo -c -o uniqscanl-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-uint8list.Tpo $(DEPDIR)/uniqscanl-uint8list.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='uint8list.c' object='uniqscanl-uint8list.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-uint8list.obj `if test -f 'uint8list.c'; then $(CYGPATH_W) 'uint8list.c'; else $(CYGPATH_W) '$(srcdir)/uint8list.c'; fi`
+
 uniqscanl-stopwatch.o: stopwatch.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-stopwatch.o -MD -MP -MF $(DEPDIR)/uniqscanl-stopwatch.Tpo -c -o uniqscanl-stopwatch.o `test -f 'stopwatch.c' || echo '$(srcdir)/'`stopwatch.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-stopwatch.Tpo $(DEPDIR)/uniqscanl-stopwatch.Po
@@ -9318,19 +11240,75 @@ uniqscanl-genome.obj: genome.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome.obj `if test -f 'genome.c'; then $(CYGPATH_W) 'genome.c'; else $(CYGPATH_W) '$(srcdir)/genome.c'; fi`
 
-uniqscanl-genome_hr.o: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-genome_hr.o -MD -MP -MF $(DEPDIR)/uniqscanl-genome_hr.Tpo -c -o uniqscanl-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-genome_hr.Tpo $(DEPDIR)/uniqscanl-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='uniqscanl-genome_hr.o' libtool=no @AMDEPBACKSLASH@
+uniqscanl-popcount.o: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-popcount.o -MD -MP -MF $(DEPDIR)/uniqscanl-popcount.Tpo -c -o uniqscanl-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-popcount.Tpo $(DEPDIR)/uniqscanl-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='uniqscanl-popcount.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome_hr.o `test -f 'genome_hr.c' || echo '$(srcdir)/'`genome_hr.c
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-popcount.o `test -f 'popcount.c' || echo '$(srcdir)/'`popcount.c
 
-uniqscanl-genome_hr.obj: genome_hr.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-genome_hr.obj -MD -MP -MF $(DEPDIR)/uniqscanl-genome_hr.Tpo -c -o uniqscanl-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-genome_hr.Tpo $(DEPDIR)/uniqscanl-genome_hr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_hr.c' object='uniqscanl-genome_hr.obj' libtool=no @AMDEPBACKSLASH@
+uniqscanl-popcount.obj: popcount.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-popcount.obj -MD -MP -MF $(DEPDIR)/uniqscanl-popcount.Tpo -c -o uniqscanl-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-popcount.Tpo $(DEPDIR)/uniqscanl-popcount.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='popcount.c' object='uniqscanl-popcount.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome_hr.obj `if test -f 'genome_hr.c'; then $(CYGPATH_W) 'genome_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome_hr.c'; fi`
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-popcount.obj `if test -f 'popcount.c'; then $(CYGPATH_W) 'popcount.c'; else $(CYGPATH_W) '$(srcdir)/popcount.c'; fi`
+
+uniqscanl-genome128_hr.o: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-genome128_hr.o -MD -MP -MF $(DEPDIR)/uniqscanl-genome128_hr.Tpo -c -o uniqscanl-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-genome128_hr.Tpo $(DEPDIR)/uniqscanl-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='uniqscanl-genome128_hr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome128_hr.o `test -f 'genome128_hr.c' || echo '$(srcdir)/'`genome128_hr.c
+
+uniqscanl-genome128_hr.obj: genome128_hr.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-genome128_hr.obj -MD -MP -MF $(DEPDIR)/uniqscanl-genome128_hr.Tpo -c -o uniqscanl-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-genome128_hr.Tpo $(DEPDIR)/uniqscanl-genome128_hr.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome128_hr.c' object='uniqscanl-genome128_hr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome128_hr.obj `if test -f 'genome128_hr.c'; then $(CYGPATH_W) 'genome128_hr.c'; else $(CYGPATH_W) '$(srcdir)/genome128_hr.c'; fi`
+
+uniqscanl-genome_sites.o: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-genome_sites.o -MD -MP -MF $(DEPDIR)/uniqscanl-genome_sites.Tpo -c -o uniqscanl-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-genome_sites.Tpo $(DEPDIR)/uniqscanl-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='uniqscanl-genome_sites.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome_sites.o `test -f 'genome_sites.c' || echo '$(srcdir)/'`genome_sites.c
+
+uniqscanl-genome_sites.obj: genome_sites.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-genome_sites.obj -MD -MP -MF $(DEPDIR)/uniqscanl-genome_sites.Tpo -c -o uniqscanl-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-genome_sites.Tpo $(DEPDIR)/uniqscanl-genome_sites.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='genome_sites.c' object='uniqscanl-genome_sites.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-genome_sites.obj `if test -f 'genome_sites.c'; then $(CYGPATH_W) 'genome_sites.c'; else $(CYGPATH_W) '$(srcdir)/genome_sites.c'; fi`
+
+uniqscanl-bitpack64-read.o: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-bitpack64-read.o -MD -MP -MF $(DEPDIR)/uniqscanl-bitpack64-read.Tpo -c -o uniqscanl-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-bitpack64-read.Tpo $(DEPDIR)/uniqscanl-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='uniqscanl-bitpack64-read.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-bitpack64-read.o `test -f 'bitpack64-read.c' || echo '$(srcdir)/'`bitpack64-read.c
+
+uniqscanl-bitpack64-read.obj: bitpack64-read.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-bitpack64-read.obj -MD -MP -MF $(DEPDIR)/uniqscanl-bitpack64-read.Tpo -c -o uniqscanl-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-bitpack64-read.Tpo $(DEPDIR)/uniqscanl-bitpack64-read.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-read.c' object='uniqscanl-bitpack64-read.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-bitpack64-read.obj `if test -f 'bitpack64-read.c'; then $(CYGPATH_W) 'bitpack64-read.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-read.c'; fi`
+
+uniqscanl-bitpack64-readtwo.o: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-bitpack64-readtwo.o -MD -MP -MF $(DEPDIR)/uniqscanl-bitpack64-readtwo.Tpo -c -o uniqscanl-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-bitpack64-readtwo.Tpo $(DEPDIR)/uniqscanl-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='uniqscanl-bitpack64-readtwo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-bitpack64-readtwo.o `test -f 'bitpack64-readtwo.c' || echo '$(srcdir)/'`bitpack64-readtwo.c
+
+uniqscanl-bitpack64-readtwo.obj: bitpack64-readtwo.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-bitpack64-readtwo.obj -MD -MP -MF $(DEPDIR)/uniqscanl-bitpack64-readtwo.Tpo -c -o uniqscanl-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-bitpack64-readtwo.Tpo $(DEPDIR)/uniqscanl-bitpack64-readtwo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-readtwo.c' object='uniqscanl-bitpack64-readtwo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-bitpack64-readtwo.obj `if test -f 'bitpack64-readtwo.c'; then $(CYGPATH_W) 'bitpack64-readtwo.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-readtwo.c'; fi`
 
 uniqscanl-indexdb.o: indexdb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-indexdb.o -MD -MP -MF $(DEPDIR)/uniqscanl-indexdb.Tpo -c -o uniqscanl-indexdb.o `test -f 'indexdb.c' || echo '$(srcdir)/'`indexdb.c
@@ -9612,20 +11590,6 @@ uniqscanl-orderstat.obj: orderstat.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-orderstat.obj `if test -f 'orderstat.c'; then $(CYGPATH_W) 'orderstat.c'; else $(CYGPATH_W) '$(srcdir)/orderstat.c'; fi`
 
-uniqscanl-oligoindex.o: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-oligoindex.o -MD -MP -MF $(DEPDIR)/uniqscanl-oligoindex.Tpo -c -o uniqscanl-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-oligoindex.Tpo $(DEPDIR)/uniqscanl-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='uniqscanl-oligoindex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-oligoindex.o `test -f 'oligoindex.c' || echo '$(srcdir)/'`oligoindex.c
-
-uniqscanl-oligoindex.obj: oligoindex.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-oligoindex.obj -MD -MP -MF $(DEPDIR)/uniqscanl-oligoindex.Tpo -c -o uniqscanl-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-oligoindex.Tpo $(DEPDIR)/uniqscanl-oligoindex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='oligoindex.c' object='uniqscanl-oligoindex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-oligoindex.obj `if test -f 'oligoindex.c'; then $(CYGPATH_W) 'oligoindex.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex.c'; fi`
-
 uniqscanl-oligoindex_hr.o: oligoindex_hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-oligoindex_hr.o -MD -MP -MF $(DEPDIR)/uniqscanl-oligoindex_hr.Tpo -c -o uniqscanl-oligoindex_hr.o `test -f 'oligoindex_hr.c' || echo '$(srcdir)/'`oligoindex_hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-oligoindex_hr.Tpo $(DEPDIR)/uniqscanl-oligoindex_hr.Po
@@ -9640,6 +11604,20 @@ uniqscanl-oligoindex_hr.obj: oligoindex_hr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-oligoindex_hr.obj `if test -f 'oligoindex_hr.c'; then $(CYGPATH_W) 'oligoindex_hr.c'; else $(CYGPATH_W) '$(srcdir)/oligoindex_hr.c'; fi`
 
+uniqscanl-cellpool.o: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-cellpool.o -MD -MP -MF $(DEPDIR)/uniqscanl-cellpool.Tpo -c -o uniqscanl-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-cellpool.Tpo $(DEPDIR)/uniqscanl-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='uniqscanl-cellpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-cellpool.o `test -f 'cellpool.c' || echo '$(srcdir)/'`cellpool.c
+
+uniqscanl-cellpool.obj: cellpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-cellpool.obj -MD -MP -MF $(DEPDIR)/uniqscanl-cellpool.Tpo -c -o uniqscanl-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-cellpool.Tpo $(DEPDIR)/uniqscanl-cellpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cellpool.c' object='uniqscanl-cellpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-cellpool.obj `if test -f 'cellpool.c'; then $(CYGPATH_W) 'cellpool.c'; else $(CYGPATH_W) '$(srcdir)/cellpool.c'; fi`
+
 uniqscanl-stage2.o: stage2.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-stage2.o -MD -MP -MF $(DEPDIR)/uniqscanl-stage2.Tpo -c -o uniqscanl-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-stage2.Tpo $(DEPDIR)/uniqscanl-stage2.Po
@@ -9724,6 +11702,76 @@ uniqscanl-dynprog.obj: dynprog.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog.obj `if test -f 'dynprog.c'; then $(CYGPATH_W) 'dynprog.c'; else $(CYGPATH_W) '$(srcdir)/dynprog.c'; fi`
 
+uniqscanl-dynprog_simd.o: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_simd.o -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_simd.Tpo -c -o uniqscanl-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_simd.Tpo $(DEPDIR)/uniqscanl-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='uniqscanl-dynprog_simd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_simd.o `test -f 'dynprog_simd.c' || echo '$(srcdir)/'`dynprog_simd.c
+
+uniqscanl-dynprog_simd.obj: dynprog_simd.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_simd.obj -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_simd.Tpo -c -o uniqscanl-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_simd.Tpo $(DEPDIR)/uniqscanl-dynprog_simd.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_simd.c' object='uniqscanl-dynprog_simd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_simd.obj `if test -f 'dynprog_simd.c'; then $(CYGPATH_W) 'dynprog_simd.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_simd.c'; fi`
+
+uniqscanl-dynprog_single.o: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_single.o -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_single.Tpo -c -o uniqscanl-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_single.Tpo $(DEPDIR)/uniqscanl-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='uniqscanl-dynprog_single.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_single.o `test -f 'dynprog_single.c' || echo '$(srcdir)/'`dynprog_single.c
+
+uniqscanl-dynprog_single.obj: dynprog_single.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_single.obj -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_single.Tpo -c -o uniqscanl-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_single.Tpo $(DEPDIR)/uniqscanl-dynprog_single.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_single.c' object='uniqscanl-dynprog_single.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_single.obj `if test -f 'dynprog_single.c'; then $(CYGPATH_W) 'dynprog_single.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_single.c'; fi`
+
+uniqscanl-dynprog_genome.o: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_genome.o -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_genome.Tpo -c -o uniqscanl-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_genome.Tpo $(DEPDIR)/uniqscanl-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='uniqscanl-dynprog_genome.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_genome.o `test -f 'dynprog_genome.c' || echo '$(srcdir)/'`dynprog_genome.c
+
+uniqscanl-dynprog_genome.obj: dynprog_genome.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_genome.obj -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_genome.Tpo -c -o uniqscanl-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_genome.Tpo $(DEPDIR)/uniqscanl-dynprog_genome.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_genome.c' object='uniqscanl-dynprog_genome.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_genome.obj `if test -f 'dynprog_genome.c'; then $(CYGPATH_W) 'dynprog_genome.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_genome.c'; fi`
+
+uniqscanl-dynprog_cdna.o: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_cdna.o -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_cdna.Tpo -c -o uniqscanl-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_cdna.Tpo $(DEPDIR)/uniqscanl-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='uniqscanl-dynprog_cdna.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_cdna.o `test -f 'dynprog_cdna.c' || echo '$(srcdir)/'`dynprog_cdna.c
+
+uniqscanl-dynprog_cdna.obj: dynprog_cdna.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_cdna.obj -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_cdna.Tpo -c -o uniqscanl-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_cdna.Tpo $(DEPDIR)/uniqscanl-dynprog_cdna.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_cdna.c' object='uniqscanl-dynprog_cdna.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_cdna.obj `if test -f 'dynprog_cdna.c'; then $(CYGPATH_W) 'dynprog_cdna.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_cdna.c'; fi`
+
+uniqscanl-dynprog_end.o: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_end.o -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_end.Tpo -c -o uniqscanl-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_end.Tpo $(DEPDIR)/uniqscanl-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='uniqscanl-dynprog_end.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_end.o `test -f 'dynprog_end.c' || echo '$(srcdir)/'`dynprog_end.c
+
+uniqscanl-dynprog_end.obj: dynprog_end.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-dynprog_end.obj -MD -MP -MF $(DEPDIR)/uniqscanl-dynprog_end.Tpo -c -o uniqscanl-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-dynprog_end.Tpo $(DEPDIR)/uniqscanl-dynprog_end.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dynprog_end.c' object='uniqscanl-dynprog_end.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-dynprog_end.obj `if test -f 'dynprog_end.c'; then $(CYGPATH_W) 'dynprog_end.c'; else $(CYGPATH_W) '$(srcdir)/dynprog_end.c'; fi`
+
 uniqscanl-translation.o: translation.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-translation.o -MD -MP -MF $(DEPDIR)/uniqscanl-translation.Tpo -c -o uniqscanl-translation.o `test -f 'translation.c' || echo '$(srcdir)/'`translation.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-translation.Tpo $(DEPDIR)/uniqscanl-translation.Po
@@ -9738,6 +11786,20 @@ uniqscanl-translation.obj: translation.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-translation.obj `if test -f 'translation.c'; then $(CYGPATH_W) 'translation.c'; else $(CYGPATH_W) '$(srcdir)/translation.c'; fi`
 
+uniqscanl-doublelist.o: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-doublelist.o -MD -MP -MF $(DEPDIR)/uniqscanl-doublelist.Tpo -c -o uniqscanl-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-doublelist.Tpo $(DEPDIR)/uniqscanl-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='uniqscanl-doublelist.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-doublelist.o `test -f 'doublelist.c' || echo '$(srcdir)/'`doublelist.c
+
+uniqscanl-doublelist.obj: doublelist.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-doublelist.obj -MD -MP -MF $(DEPDIR)/uniqscanl-doublelist.Tpo -c -o uniqscanl-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-doublelist.Tpo $(DEPDIR)/uniqscanl-doublelist.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='doublelist.c' object='uniqscanl-doublelist.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-doublelist.obj `if test -f 'doublelist.c'; then $(CYGPATH_W) 'doublelist.c'; else $(CYGPATH_W) '$(srcdir)/doublelist.c'; fi`
+
 uniqscanl-smooth.o: smooth.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-smooth.o -MD -MP -MF $(DEPDIR)/uniqscanl-smooth.Tpo -c -o uniqscanl-smooth.o `test -f 'smooth.c' || echo '$(srcdir)/'`smooth.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-smooth.Tpo $(DEPDIR)/uniqscanl-smooth.Po
@@ -9780,6 +11842,20 @@ uniqscanl-stage3.obj: stage3.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-stage3.obj `if test -f 'stage3.c'; then $(CYGPATH_W) 'stage3.c'; else $(CYGPATH_W) '$(srcdir)/stage3.c'; fi`
 
+uniqscanl-splicestringpool.o: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-splicestringpool.o -MD -MP -MF $(DEPDIR)/uniqscanl-splicestringpool.Tpo -c -o uniqscanl-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-splicestringpool.Tpo $(DEPDIR)/uniqscanl-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='uniqscanl-splicestringpool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-splicestringpool.o `test -f 'splicestringpool.c' || echo '$(srcdir)/'`splicestringpool.c
+
+uniqscanl-splicestringpool.obj: splicestringpool.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-splicestringpool.obj -MD -MP -MF $(DEPDIR)/uniqscanl-splicestringpool.Tpo -c -o uniqscanl-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-splicestringpool.Tpo $(DEPDIR)/uniqscanl-splicestringpool.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splicestringpool.c' object='uniqscanl-splicestringpool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-splicestringpool.obj `if test -f 'splicestringpool.c'; then $(CYGPATH_W) 'splicestringpool.c'; else $(CYGPATH_W) '$(srcdir)/splicestringpool.c'; fi`
+
 uniqscanl-splicetrie_build.o: splicetrie_build.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-splicetrie_build.o -MD -MP -MF $(DEPDIR)/uniqscanl-splicetrie_build.Tpo -c -o uniqscanl-splicetrie_build.o `test -f 'splicetrie_build.c' || echo '$(srcdir)/'`splicetrie_build.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-splicetrie_build.Tpo $(DEPDIR)/uniqscanl-splicetrie_build.Po
@@ -9808,6 +11884,48 @@ uniqscanl-splicetrie.obj: splicetrie.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-splicetrie.obj `if test -f 'splicetrie.c'; then $(CYGPATH_W) 'splicetrie.c'; else $(CYGPATH_W) '$(srcdir)/splicetrie.c'; fi`
 
+uniqscanl-splice.o: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-splice.o -MD -MP -MF $(DEPDIR)/uniqscanl-splice.Tpo -c -o uniqscanl-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-splice.Tpo $(DEPDIR)/uniqscanl-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='uniqscanl-splice.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-splice.o `test -f 'splice.c' || echo '$(srcdir)/'`splice.c
+
+uniqscanl-splice.obj: splice.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-splice.obj -MD -MP -MF $(DEPDIR)/uniqscanl-splice.Tpo -c -o uniqscanl-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-splice.Tpo $(DEPDIR)/uniqscanl-splice.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='splice.c' object='uniqscanl-splice.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-splice.obj `if test -f 'splice.c'; then $(CYGPATH_W) 'splice.c'; else $(CYGPATH_W) '$(srcdir)/splice.c'; fi`
+
+uniqscanl-indel.o: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-indel.o -MD -MP -MF $(DEPDIR)/uniqscanl-indel.Tpo -c -o uniqscanl-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-indel.Tpo $(DEPDIR)/uniqscanl-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='uniqscanl-indel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-indel.o `test -f 'indel.c' || echo '$(srcdir)/'`indel.c
+
+uniqscanl-indel.obj: indel.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-indel.obj -MD -MP -MF $(DEPDIR)/uniqscanl-indel.Tpo -c -o uniqscanl-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-indel.Tpo $(DEPDIR)/uniqscanl-indel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='indel.c' object='uniqscanl-indel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-indel.obj `if test -f 'indel.c'; then $(CYGPATH_W) 'indel.c'; else $(CYGPATH_W) '$(srcdir)/indel.c'; fi`
+
+uniqscanl-bitpack64-access.o: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-bitpack64-access.o -MD -MP -MF $(DEPDIR)/uniqscanl-bitpack64-access.Tpo -c -o uniqscanl-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-bitpack64-access.Tpo $(DEPDIR)/uniqscanl-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='uniqscanl-bitpack64-access.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-bitpack64-access.o `test -f 'bitpack64-access.c' || echo '$(srcdir)/'`bitpack64-access.c
+
+uniqscanl-bitpack64-access.obj: bitpack64-access.c
+ at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-bitpack64-access.obj -MD -MP -MF $(DEPDIR)/uniqscanl-bitpack64-access.Tpo -c -o uniqscanl-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-bitpack64-access.Tpo $(DEPDIR)/uniqscanl-bitpack64-access.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='bitpack64-access.c' object='uniqscanl-bitpack64-access.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -c -o uniqscanl-bitpack64-access.obj `if test -f 'bitpack64-access.c'; then $(CYGPATH_W) 'bitpack64-access.c'; else $(CYGPATH_W) '$(srcdir)/bitpack64-access.c'; fi`
+
 uniqscanl-stage1hr.o: stage1hr.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uniqscanl_CFLAGS) $(CFLAGS) -MT uniqscanl-stage1hr.o -MD -MP -MF $(DEPDIR)/uniqscanl-stage1hr.Tpo -c -o uniqscanl-stage1hr.o `test -f 'stage1hr.c' || echo '$(srcdir)/'`stage1hr.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/uniqscanl-stage1hr.Tpo $(DEPDIR)/uniqscanl-stage1hr.Po
diff --git a/src/access.c b/src/access.c
index cc152c8..a1f8c05 100644
--- a/src/access.c
+++ b/src/access.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: access.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: access.c 129929 2014-03-13 03:27:49Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -181,8 +181,35 @@ Access_fileio_rw (char *filename) {
 
 #ifndef WORDS_BIGENDIAN
 /* Needed as a test on Macintosh machines */
+static unsigned char
+first_nonzero_char (size_t *i, char *filename) {
+  size_t len;
+  FILE *fp;
+  unsigned char value = 0;
+  void *p;
+
+  len = (size_t) Access_filesize(filename);
+
+  if ((fp = FOPEN_READ_BINARY(filename)) == NULL) {
+    fprintf(stderr,"Error: can't open file %s with fopen\n",filename);
+    exit(9);
+  } else {
+    *i = 0;
+    p = (void *) &value;
+    while ((size_t) *i < len && fread(p,sizeof(unsigned char),1,fp) > 0 &&
+	   value == 0) {
+      *i += 1;
+    }
+    if (value == 0) {
+      *i = -1;
+    }
+    fclose(fp);
+    return value;
+  }
+}
+
 static UINT4
-first_nonzero (int *i, char *filename) {
+first_nonzero_uint (size_t *i, char *filename) {
   size_t len;
   FILE *fp;
   UINT4 value = 0;
@@ -207,6 +234,33 @@ first_nonzero (int *i, char *filename) {
     return value;
   }
 }
+
+static UINT8
+first_nonzero_uint8 (size_t *i, char *filename) {
+  size_t len;
+  FILE *fp;
+  UINT8 value = 0;
+  void *p;
+
+  len = (size_t) Access_filesize(filename);
+
+  if ((fp = FOPEN_READ_BINARY(filename)) == NULL) {
+    fprintf(stderr,"Error: can't open file %s with fopen\n",filename);
+    exit(9);
+  } else {
+    *i = 0;
+    p = (void *) &value;
+    while ((size_t) *i < len && fread(p,sizeof(UINT8),1,fp) > 0 &&
+	   value == 0) {
+      *i += 1;
+    }
+    if (value == 0) {
+      *i = -1;
+    }
+    fclose(fp);
+    return value;
+  }
+}
 #endif
 
 
@@ -218,11 +272,17 @@ Access_allocated (size_t *len, double *seconds, char *filename, size_t eltsize)
   void *memory;
   FILE *fp;
   Stopwatch_T stopwatch;
-  UINT4 value;
+  unsigned char value1;
+  UINT4 value4;
+  UINT8 value8;
   void *p;
-  int i;
+  size_t i;
 
   *len = (size_t) Access_filesize(filename);
+  if (*len == 0) {
+    *seconds = 0.0;
+    return (void *) NULL;
+  }
 
   if ((fp = FOPEN_READ_BINARY(filename)) == NULL) {
     fprintf(stderr,"Error: can't open file %s with fopen\n",filename);
@@ -231,7 +291,9 @@ Access_allocated (size_t *len, double *seconds, char *filename, size_t eltsize)
 
   Stopwatch_start(stopwatch = Stopwatch_new());
   memory = (void *) MALLOC(*len);
-  if (eltsize == 4) {
+  if (eltsize == 1) {
+    FREAD_CHARS(memory,(*len)/eltsize,fp);
+  } else if (eltsize == 4) {
     FREAD_UINTS(memory,(*len)/eltsize,fp);
   } else if (eltsize == 8) {
     FREAD_UINT8S(memory,(*len)/eltsize,fp);
@@ -242,25 +304,84 @@ Access_allocated (size_t *len, double *seconds, char *filename, size_t eltsize)
   fclose(fp);
 
 #ifndef WORDS_BIGENDIAN
-  if (eltsize == 4) {
-    /* Test if Macintosh fread failure occurs.  Not sure if this occurs on 64-bit Macs. */
-    value = first_nonzero(&i,filename);
-    if (i >= 0 && ((UINT4 *) memory)[i] != value) {
-      fprintf(stderr,"single fread command failed (observed on Macs with -B 3 or greater on large genomes)...reading file in smaller batches...");
+  if (eltsize == 1) {
+    /* Test if Macintosh fread failure occurs.  Apple bug ID 6434977 */
+    value1 = first_nonzero_char(&i,filename);
+    if (((unsigned char *) memory)[i] != value1) {
+      fprintf(stderr,"single fread command failed (observed on Macs with -B 3 or greater on large genomes)");
+#if 0
+      fprintf(stderr,"...reading file in smaller batches...");
       fp = FOPEN_READ_BINARY(filename);
 
-      for (i = 0; i < (int) ((*len)/eltsize); i += FREAD_BATCH) {
+      for (i = 0; i < (*len)/eltsize; i += FREAD_BATCH) {
+	p = (void *) &(((unsigned char *) memory)[i]);
+	fread(p,sizeof(unsigned char),FREAD_BATCH,fp);
+      }
+
+      if (i < (*len)/eltsize) {
+	p = (void *) &(((unsigned char *) memory)[i]);
+	fread(p,sizeof(unsigned char),(*len)/eltsize - i,fp);
+      }
+
+      fclose(fp);
+#else
+      fprintf(stderr,"...unable to handle this value of --batch on your machine\n");
+      exit(9);
+#endif
+    }
+
+  } else if (eltsize == 4) {
+    /* Test if Macintosh fread failure occurs.  Apple bug ID 6434977 */
+    value4 = first_nonzero_uint(&i,filename);
+    if (((UINT4 *) memory)[i] != value4) {
+      fprintf(stderr,"single fread command failed (observed on Macs with -B 3 or greater on large genomes)");
+#if 0
+      fprintf(stderr,"...reading file in smaller batches...");
+      fp = FOPEN_READ_BINARY(filename);
+
+      for (i = 0; i < (*len)/eltsize; i += FREAD_BATCH) {
 	p = (void *) &(((UINT4 *) memory)[i]);
 	fread(p,sizeof(UINT4),FREAD_BATCH,fp);
       }
 
-      if (i < (int) (*len)/eltsize) {
+      if (i < (*len)/eltsize) {
 	p = (void *) &(((UINT4 *) memory)[i]);
 	fread(p,sizeof(UINT4),(*len)/eltsize - i,fp);
       }
 
       fclose(fp);
+#else
+      fprintf(stderr,"...unable to handle this value of --batch on your machine\n");
+      exit(9);
+#endif
     }
+
+  } else if (eltsize == 8) {
+    /* Test if Macintosh fread failure occurs.  Apple bug ID 6434977 */
+    value8 = first_nonzero_uint8(&i,filename);
+    if (((UINT8 *) memory)[i] != value8) {
+      fprintf(stderr,"single fread command failed (observed on Macs with -B 3 or greater on large genomes)");
+#if 0
+      fprintf(stderr,"...reading file in smaller batches...");
+      fp = FOPEN_READ_BINARY(filename);
+
+      for (i = 0; i < (*len)/eltsize; i += FREAD_BATCH) {
+	p = (void *) &(((UINT8 *) memory)[i]);
+	fread(p,sizeof(UINT8),FREAD_BATCH,fp);
+      }
+
+      if (i < (*len)/eltsize) {
+	p = (void *) &(((UINT8 *) memory)[i]);
+	fread(p,sizeof(UINT8),(*len)/eltsize - i,fp);
+      }
+
+      fclose(fp);
+#else
+      fprintf(stderr,"...unable to handle this value of --batch on your machine\n");
+      exit(9);
+#endif
+    }
+
   }
 #endif
 
@@ -320,16 +441,12 @@ Access_mmap (int *fd, size_t *len, char *filename, size_t eltsize, bool randomp)
 #endif
 
   if ((*len = length = Access_filesize(filename)) == 0U) {
-    fprintf(stderr,"Error: file %s is empty\n",filename);
-    exit(9);
-  } 
-
-  if ((*fd = open(filename,O_RDONLY,0764)) < 0) {
+    fprintf(stderr,"Warning: file %s is empty\n",filename);
+    memory = NULL;
+  } else if ((*fd = open(filename,O_RDONLY,0764)) < 0) {
     fprintf(stderr,"Error: can't open file %s with open for reading\n",filename);
     exit(9);
-  }
-
-  if (sizeof(size_t) <= 4 && length > MAX32BIT) {
+  } else if (sizeof(size_t) <= 4 && length > MAX32BIT) {
     debug(printf("Too big to mmap\n"));
     *len = 0;
     memory = NULL;
@@ -648,6 +765,9 @@ Access_mmap_and_preload (int *fd, size_t *len, int *npages, double *seconds, cha
       for (i = 0; i < totalindices; i += indicesperpage) {
 	if (((char *) memory)[i] == 0) {
 	  nzero++;
+	  if (i % 10000 == 0) {
+	    fprintf(stderr,",");
+	  }
 	} else {
 	  npos++;
 	}
diff --git a/src/atoiindex.c b/src/atoiindex.c
index 7c37a98..d677b53 100644
--- a/src/atoiindex.c
+++ b/src/atoiindex.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: atoiindex.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: atoiindex.c 133760 2014-04-20 05:16:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -49,6 +49,7 @@ static char rcsid[] = "$Id: atoiindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "fopen.h"
 #include "access.h"
 #include "types.h"		/* For Positionsptr_T, Oligospace_T, and Storedoligomer_T */
+#include "mode.h"
 
 #include "atoi.h"
 
@@ -57,10 +58,18 @@ static char rcsid[] = "$Id: atoiindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "iit-read-univ.h"
 #include "indexdb.h"
 #include "indexdb-write.h"
+#include "genome.h"
+#include "genome128_hr.h"
+#include "bytecoding.h"
+#include "sarray-write.h"
+#include "bitpack64-write.h"
 #include "datadir.h"
 #include "getopt.h"
 
 
+#define POSITIONS8_HIGH_SHIFT 32
+#define POSITIONS8_LOW_MASK 0xFFFFFFFF
+
 #ifdef DEBUG
 #define debug(x) x
 #else
@@ -73,13 +82,13 @@ static char *user_sourcedir = NULL;
 static char *user_destdir = NULL;
 static char *dbroot = NULL;
 static char *dbversion = NULL;
-static int offsetscomp_basesize = 12;
-static int required_basesize = 0;
+static int compression_type;
 static int index1part = 15;
 static int required_index1part = 0;
 static int index1interval;
 static int required_interval = 0;
 
+static bool build_suffix_array_p = true;
 static char *snps_root = NULL;
 
 
@@ -87,7 +96,6 @@ static struct option long_options[] = {
   /* Input options */
   {"sourcedir", required_argument, 0, 'F'},	/* user_sourcedir */
   {"destdir", required_argument, 0, 'D'},	/* user_destdir */
-  {"basesize", required_argument, 0, 'b'}, /* required_basesize */
   {"kmer", required_argument, 0, 'k'}, /* required_index1part */
   {"sampling", required_argument, 0, 'q'}, /* required_interval */
   {"db", required_argument, 0, 'd'}, /* dbroot */
@@ -283,12 +291,36 @@ compute_offsets_tc (Positionsptr_T *oldoffsets, Oligospace_T oligospace, Storedo
 
 
 static void
-compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
-	    FILE *positions_fp, Positionsptr_T *oldoffsets,
+sort_8mers (unsigned char *positions8_high, UINT4 *positions8_low, Positionsptr_T npositions) {
+  UINT8 *positions8;
+  Positionsptr_T i;
+
+  positions8 = (UINT8 *) MALLOC(npositions*sizeof(UINT8));
+  for (i = 0; i < npositions; i++) {
+    positions8[i] = ((UINT8) positions8_high[i] << 32) + positions8_low[i];
+  }
+  qsort(positions8,npositions,sizeof(UINT8),UINT8_compare);
+  for (i = 0; i < npositions; i++) {
+    positions8_high[i] = positions8[i] >> POSITIONS8_HIGH_SHIFT;
+    positions8_low[i] = positions8[i] & POSITIONS8_LOW_MASK;
+  }
+  return;
+}
+
+
+/*                                       G  C  G  T */
+static unsigned char ag_conversion[4] = {2, 1, 2, 3};
+static char AG_CHARTABLE[4] = {'G','C','G','T'};
+
+
+static void
+compute_ag (char *pointers_filename, char *offsets_filename,
+	    FILE *positions_high_fp, FILE *positions_low_fp, Positionsptr_T *oldoffsets,
 	    UINT8 *oldpositions8, UINT4 *oldpositions4,
 	    Oligospace_T oligospace, Storedoligomer_T mask,
 	    bool coord_values_8p) {
-  UINT8 *positions8;
+  unsigned char *positions8_high;
+  UINT4 *positions8_low;
   UINT4 *positions4;
   Positionsptr_T *snpoffsets, j;
   Oligospace_T oligoi, oligok, reduced;
@@ -305,10 +337,12 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
     exit(9);
 
   } else if (coord_values_8p == true) {
-    fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT8));
+    fprintf(stderr,"Trying to allocate %u*(%d+%d) bytes of memory...",
+	    preunique_totalcounts,(int) sizeof(unsigned char),(int) sizeof(UINT4));
     positions4 = (UINT4 *) NULL;
-    positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT8));
-    if (positions8 == NULL) {
+    positions8_high = (unsigned char *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(unsigned char));
+    positions8_low = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
+    if (positions8_high == NULL || positions8_low == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
       exit(9);
     } else {
@@ -317,7 +351,8 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
 
   } else {
     fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT4));
-    positions8 = (UINT8 *) NULL;
+    positions8_high = (unsigned char *) NULL;
+    positions8_low = (UINT4 *) NULL;
     positions4 = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
     if (positions4 == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
@@ -346,7 +381,8 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]);
+	positions8_high[pointers[reduced]/*++*/] = Bigendian_convert_uint8(oldpositions8[j]) >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]) & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = Bigendian_convert_uint(oldoffsets[oligoi]); j < Bigendian_convert_uint(oldoffsets[oligoi+1]); j++) {
@@ -370,7 +406,8 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = oldpositions8[j];
+	positions8_high[pointers[reduced]/*++*/] = oldpositions8[j] >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = oldpositions8[j] & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = oldoffsets[oligoi]; j < oldoffsets[oligoi+1]; j++) {
@@ -408,16 +445,24 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
       block_start = offsets[oligoi];
       block_end = offsets[oligoi+1];
       if ((npositions = block_end - block_start) > 0) {
-	qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare);
+	/* qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare); */
+	sort_8mers(&(positions8_high[block_start]),&(positions8_low[block_start]),npositions);
 	if (snps_root == NULL) {
-	  FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp);
+	  /* FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp); */
+	  FWRITE_CHARS(&(positions8_high[block_start]),npositions,positions_high_fp);
+	  FWRITE_UINTS(&(positions8_low[block_start]),npositions,positions_low_fp);
+
 	} else {
-	  FWRITE_UINT8(positions8[block_start],positions_fp);
+	  /* FWRITE_UINT8(positions8[block_start],positions_fp); */
+	  FWRITE_CHAR(positions8_high[block_start],positions_high_fp);
+	  FWRITE_UINT(positions8_low[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
-	    if (positions8[j] == positions8[j-1]) {
+	    if (positions8_high[j] == positions8_high[j-1] && positions8_low[j] == positions8_low[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT8(positions8[j],positions_fp);
+	      /* FWRITE_UINT8(positions8[j],positions_fp); */
+	      FWRITE_CHAR(positions8_high[j],positions_high_fp);
+	      FWRITE_UINT(positions8_low[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -437,14 +482,14 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
       if ((npositions = block_end - block_start) > 0) {
 	qsort(&(positions4[block_start]),npositions,sizeof(UINT4),UINT4_compare);
 	if (snps_root == NULL) {
-	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_fp);
+	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_low_fp);
 	} else {
-	  FWRITE_UINT(positions4[block_start],positions_fp);
+	  FWRITE_UINT(positions4[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
 	    if (positions4[j] == positions4[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT(positions4[j],positions_fp);
+	      FWRITE_UINT(positions4[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -458,21 +503,24 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
   fprintf(stderr,"done\n");
 
   if (snps_root == NULL) {
-#ifdef PRE_GAMMAS
-    FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-#else
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,offsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
-#endif
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,offsets,oligospace);
+    } else {
+      abort();
+    }
   } else {
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,snpoffsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,snpoffsets,oligospace);
+    } else {
+      abort();
+    }
     FREE(snpoffsets);
   }
 
   FREE(offsets);
   if (coord_values_8p == true) {
-    FREE(positions8);
+    FREE(positions8_high);
+    FREE(positions8_low);
   } else {
     FREE(positions4);
   }
@@ -480,13 +528,19 @@ compute_ag (char *gammaptrs_filename, char *offsetscomp_filename,
   return;
 }
 
+
+/*                                       A  C  G  C */
+static unsigned char tc_conversion[4] = {0, 1, 2, 1};
+static char TC_CHARTABLE[4] = {'A','C','G','C'};
+
 static void
-compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
-	    FILE *positions_fp, Positionsptr_T *oldoffsets,
+compute_tc (char *pointers_filename, char *offsets_filename,
+	    FILE *positions_high_fp, FILE *positions_low_fp, Positionsptr_T *oldoffsets,
 	    UINT8 *oldpositions8, UINT4 *oldpositions4,
 	    Oligospace_T oligospace, Storedoligomer_T mask,
 	    bool coord_values_8p) {
-  UINT8 *positions8;
+  unsigned char *positions8_high;
+  UINT4 *positions8_low;
   UINT4 *positions4;
   Positionsptr_T *snpoffsets, j;
   Oligospace_T oligoi, oligok, reduced;
@@ -503,10 +557,12 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
     exit(9);
 
   } else if (coord_values_8p == true) {
-    fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT8));
+    fprintf(stderr,"Trying to allocate %u*(%d+%d) bytes of memory...",
+	    preunique_totalcounts,(int) sizeof(unsigned char),(int) sizeof(UINT4));
     positions4 = (UINT4 *) NULL;
-    positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT8));
-    if (positions8 == NULL) {
+    positions8_high = (unsigned char *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(unsigned char));
+    positions8_low = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
+    if (positions8_high == NULL || positions8_low == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
       exit(9);
     } else {
@@ -515,7 +571,8 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
 
   } else {
     fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT4));
-    positions8 = (UINT8 *) NULL;
+    positions8_high = (unsigned char *) NULL;
+    positions8_low = (UINT4 *) NULL;
     positions4 = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
     if (positions4 == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
@@ -545,7 +602,8 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]);
+	positions8_high[pointers[reduced]/*++*/] = Bigendian_convert_uint8(oldpositions8[j]) >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]) & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = Bigendian_convert_uint(oldoffsets[oligoi]); j < Bigendian_convert_uint(oldoffsets[oligoi+1]); j++) {
@@ -569,7 +627,8 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = oldpositions8[j];
+	positions8_high[pointers[reduced]/*++*/] = oldpositions8[j] >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = oldpositions8[j] & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = oldoffsets[oligoi]; j < oldoffsets[oligoi+1]; j++) {
@@ -607,16 +666,24 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
       block_start = offsets[oligoi];
       block_end = offsets[oligoi+1];
       if ((npositions = block_end - block_start) > 0) {
-	qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare);
+	/* qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare); */
+	sort_8mers(&(positions8_high[block_start]),&(positions8_low[block_start]),npositions);
 	if (snps_root == NULL) {
-	  FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp);
+	  /* FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp); */
+	  FWRITE_CHARS(&(positions8_high[block_start]),npositions,positions_high_fp);
+	  FWRITE_UINTS(&(positions8_low[block_start]),npositions,positions_low_fp);
+
 	} else {
-	  FWRITE_UINT8(positions8[block_start],positions_fp);
+	  /* FWRITE_UINT8(positions8[block_start],positions_fp); */
+	  FWRITE_CHAR(positions8_high[block_start],positions_high_fp);
+	  FWRITE_UINT(positions8_low[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
-	    if (positions8[j] == positions8[j-1]) {
+	    if (positions8_high[j] == positions8_high[j-1] && positions8_low[j] == positions8_low[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT8(positions8[j],positions_fp);
+	      /* FWRITE_UINT8(positions8[j],positions_fp); */
+	      FWRITE_CHAR(positions8_high[j],positions_high_fp);
+	      FWRITE_UINT(positions8_low[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -636,14 +703,14 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
       if ((npositions = block_end - block_start) > 0) {
 	qsort(&(positions4[block_start]),npositions,sizeof(UINT4),UINT4_compare);
 	if (snps_root == NULL) {
-	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_fp);
+	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_low_fp);
 	} else {
-	  FWRITE_UINT(positions4[block_start],positions_fp);
+	  FWRITE_UINT(positions4[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
 	    if (positions4[j] == positions4[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT(positions4[j],positions_fp);
+	      FWRITE_UINT(positions4[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -657,21 +724,24 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
   fprintf(stderr,"done\n");
 
   if (snps_root == NULL) {
-#ifdef PRE_GAMMAS
-    FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-#else
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,offsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
-#endif
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,offsets,oligospace);
+    } else {
+      abort();
+    }
   } else {
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,snpoffsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,snpoffsets,oligospace);
+    } else {
+      abort();
+    }
     FREE(snpoffsets);
   }
 
   FREE(offsets);
   if (coord_values_8p == true) {
-    FREE(positions8);
+    FREE(positions8_high);
+    FREE(positions8_low);
   } else {
     FREE(positions4);
   }
@@ -687,21 +757,43 @@ compute_tc (char *gammaptrs_filename, char *offsetscomp_filename,
 int
 main (int argc, char *argv[]) {
   char *sourcedir = NULL, *destdir = NULL, *filename, *fileroot;
-  char *gammaptrs_filename, *offsetscomp_filename, *positions_filename,
-    *gammaptrs_basename_ptr, *offsetscomp_basename_ptr, *positions_basename_ptr,
-    *gammaptrs_index1info_ptr, *offsetscomp_index1info_ptr, *positions_index1info_ptr;
-  char *new_gammaptrs_filename, *new_offsetscomp_filename;
+  Filenames_T filenames;
+  char *new_pointers_filename, *new_offsets_filename;
   Univ_IIT_T chromosome_iit;
   Positionsptr_T *ref_offsets;
+  size_t totalcounts, i;
   Storedoligomer_T mask;
+  unsigned char *ref_positions8_high;
+  UINT4 *ref_positions8_low;
   UINT8 *ref_positions8;
   UINT4 *ref_positions4;
   Oligospace_T oligospace;
   bool coord_values_8p;
 
-  FILE *positions_fp, *ref_positions_fp;
-  int ref_positions_fd;
-  size_t ref_positions_len;
+  /* For suffix array */
+  Univcoord_T genomelength;
+  char *sarrayfile, *lcpexcfile, *lcpguidefile;
+  char *childexcfile, *childguidefile;
+  char *lcpchilddcfile;
+  char *indexijptrsfile, *indexijcompfile;
+  Genome_T genomecomp, genomebits;
+  unsigned char *gbuffer;
+  UINT4 *SA, *lcp, *child;
+  UINT4 nbytes;
+
+  unsigned char *discrim_chars;
+  unsigned char *lcp_bytes;
+  UINT4 *lcp_guide, *lcp_exceptions;
+  int n_lcp_exceptions;
+
+  int sa_fd;
+  size_t sa_len, lcpguide_len, lcpexc_len;
+  double seconds;
+
+
+  FILE *positions_high_fp, *positions_low_fp;
+  int ref_positions_high_fd, ref_positions_low_fd;
+  size_t ref_positions_high_len, ref_positions_low_len;
 #ifndef HAVE_MMAP
   double seconds;
 #endif
@@ -712,7 +804,7 @@ main (int argc, char *argv[]) {
   int long_option_index = 0;
   const char *long_name;
 
-  while ((opt = getopt_long(argc,argv,"F:D:d:b:k:q:v:",
+  while ((opt = getopt_long(argc,argv,"F:D:d:k:q:v:",
 			    long_options,&long_option_index)) != -1) {
     switch (opt) {
     case 0: 
@@ -733,7 +825,6 @@ main (int argc, char *argv[]) {
     case 'F': user_sourcedir = optarg; break;
     case 'D': user_destdir = optarg; break;
     case 'd': dbroot = optarg; break;
-    case 'b': required_basesize = atoi(optarg); break;
     case 'k': required_index1part = atoi(optarg); break;
     case 'q': required_interval = atoi(optarg); break;
     case 'v': snps_root = optarg; break;
@@ -762,46 +853,77 @@ main (int argc, char *argv[]) {
   } else {
     coord_values_8p = Univ_IIT_coord_values_8p(chromosome_iit);
   }
+  genomelength = Univ_IIT_genomelength(chromosome_iit,/*with_circular_alias_p*/true);
   Univ_IIT_free(&chromosome_iit);
   FREE(filename);
 
 
-  Indexdb_get_filenames(&gammaptrs_filename,&offsetscomp_filename,&positions_filename,
-			&gammaptrs_basename_ptr,&offsetscomp_basename_ptr,&positions_basename_ptr,
-			&gammaptrs_index1info_ptr,&offsetscomp_index1info_ptr,&positions_index1info_ptr,
-			&offsetscomp_basesize,&index1part,&index1interval,
-			sourcedir,fileroot,IDX_FILESUFFIX,snps_root,
-			required_basesize,required_index1part,required_interval);
+  filenames = Indexdb_get_filenames(&compression_type,&index1part,&index1interval,
+				    sourcedir,fileroot,IDX_FILESUFFIX,snps_root,
+				    required_index1part,required_interval,
+				    /*offsets_only_p*/false);
 
   mask = ~(~0UL << 2*index1part);
   oligospace = power(4,index1part);
 
   /* Read offsets */
-  ref_offsets = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,offsetscomp_basesize,index1part);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    ref_offsets = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,index1part);
+  } else {
+    abort();
+  }
 
   /* Read positions */
-  if ((ref_positions_fp = FOPEN_READ_BINARY(positions_filename)) == NULL) {
-    fprintf(stderr,"Can't open file %s\n",positions_filename);
+#if 0
+  if ((ref_positions_fp = FOPEN_READ_BINARY(filenames->positions_low_filename)) == NULL) {
+    fprintf(stderr,"Can't open file %s\n",filenames->positions_low_filename);
     exit(9);
+  } else {
+    fclose(ref_positions_fp);
   }
+#endif
 
-#ifdef HAVE_MMAP
   if (coord_values_8p == true) {
-    ref_positions8 = (UINT8 *) Access_mmap(&ref_positions_fd,&ref_positions_len,
-					   positions_filename,sizeof(UINT8),/*randomp*/false);
-  } else {
-    ref_positions4 = (UINT4 *) Access_mmap(&ref_positions_fd,&ref_positions_len,
-					   positions_filename,sizeof(UINT4),/*randomp*/false);
-  }
+#ifdef HAVE_MMAP
+    ref_positions8_high = (unsigned char *) Access_mmap(&ref_positions_high_fd,&ref_positions_high_len,
+							filenames->positions_high_filename,sizeof(unsigned char),/*randomp*/false);
+    ref_positions8_low = (UINT4 *) Access_mmap(&ref_positions_low_fd,&ref_positions_low_len,
+					       filenames->positions_low_filename,sizeof(UINT4),/*randomp*/false);
 #else
-  if (coord_values_8p == true) {
-    ref_positions8 = (UINT8 *) Access_allocated(&ref_positions_len,&seconds,
-						positions_filename,sizeof(UINT8));
+    ref_positions8_high = (unsigned char *) Access_allocated(&ref_positions_high_len,&seconds,
+							     filenames->positions_high_filename,sizeof(unsigned char));
+    ref_positions8_low = (UINT4 *) Access_allocated(&ref_positions_low_len,&seconds,
+						     filenames->positions_low_filename,sizeof(UINT4));
+#endif
+    /* Unpack */
+    totalcounts = ref_positions_high_len/sizeof(unsigned char);
+    if (totalcounts > 4294967295) {
+      fprintf(stderr,"Program not yet designed to handle huge genomes\n");
+      abort();
+    }
+    ref_positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT8));
+    for (i = 0; i < totalcounts; i++) {
+      ref_positions8[i] = ((UINT8) ref_positions8_high[i] << 32) + ref_positions8_low[i];
+    }
+#ifdef HAVE_MMAP
+    munmap((void *) ref_positions8_high,ref_positions_high_len);
+    munmap((void *) ref_positions8_low,ref_positions_low_len);
+    close(ref_positions_high_fd);
+    close(ref_positions_low_fd);
+#else
+    FREE(ref_positions8_high);
+    FREE(ref_positions8_low);
+#endif
+
   } else {
-    ref_positions4 = (UINT4 *) Access_allocated(&ref_positions_len,&seconds,
-						positions_filename,sizeof(UINT4));
-  }
+#ifdef HAVE_MMAP
+    ref_positions4 = (UINT4 *) Access_mmap(&ref_positions_low_fd,&ref_positions_low_len,
+					   filenames->positions_low_filename,sizeof(UINT4),/*randomp*/false);
+#else
+    ref_positions4 = (UINT4 *) Access_allocated(&ref_positions_low_len,&seconds,
+						filenames->positions_low_filename,sizeof(UINT4));
 #endif
+  }
 
 
   /* Open AG output files */
@@ -812,97 +934,306 @@ main (int argc, char *argv[]) {
   }
   fprintf(stderr,"Writing atoi index files to %s\n",destdir);
 
-  if (index1part == offsetscomp_basesize) {
-    new_gammaptrs_filename = (char *) NULL;
-  } else {
-    new_gammaptrs_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-					     strlen(".")+strlen("a2iag")+strlen(gammaptrs_index1info_ptr)+1,sizeof(char));
-    sprintf(new_gammaptrs_filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",gammaptrs_index1info_ptr);
-  }
+  new_pointers_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					  strlen(".")+strlen("a2iag")+strlen(filenames->pointers_index1info_ptr)+1,sizeof(char));
+  sprintf(new_pointers_filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",filenames->pointers_index1info_ptr);
 
-  new_offsetscomp_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("a2iag")+strlen(offsetscomp_index1info_ptr)+1,sizeof(char));
-  sprintf(new_offsetscomp_filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",offsetscomp_index1info_ptr);
+  new_offsets_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			     strlen(".")+strlen("a2iag")+strlen(filenames->offsets_index1info_ptr)+1,sizeof(char));
+  sprintf(new_offsets_filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",filenames->offsets_index1info_ptr);
 
 
+  if (coord_values_8p == true) {
+    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			       strlen(".")+strlen("a2iag")+strlen(filenames->positions_high_index1info_ptr)+1,sizeof(char));
+    sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",filenames->positions_high_index1info_ptr);
+    
+    if ((positions_high_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+      fprintf(stderr,"Can't open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+  }
+
   filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("a2iag")+strlen(positions_index1info_ptr)+1,sizeof(char));
-  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",positions_index1info_ptr);
+			     strlen(".")+strlen("a2iag")+strlen(filenames->positions_low_index1info_ptr)+1,sizeof(char));
+  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"a2iag",filenames->positions_low_index1info_ptr);
 
-  if ((positions_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+  if ((positions_low_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
     fprintf(stderr,"Can't open file %s for writing\n",filename);
     exit(9);
   }
   FREE(filename);
 
   /* Compute and write AG files */
-  compute_ag(new_gammaptrs_filename,new_offsetscomp_filename,
-	     positions_fp,ref_offsets,ref_positions8,ref_positions4,
+  if (build_suffix_array_p == true) {
+    fprintf(stderr,"Building suffix array for AG\n");
+    sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.sarray")+1,sizeof(char));
+    sprintf(sarrayfile,"%s/%s.a2iag.sarray",destdir,fileroot);
+    genomecomp = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+    gbuffer = (unsigned char *) CALLOC(genomelength+1,sizeof(unsigned char));
+    Genome_fill_buffer_int_string(genomecomp,/*left*/0,/*length*/genomelength,gbuffer,ag_conversion);
+    gbuffer[genomelength] = 0;	/* Tried N/X, but SACA_K fails */
+    Sarray_write_array_from_genome(sarrayfile,gbuffer,genomelength);
+
+    /* Bucket array */
+    indexijptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.saindex64meta")+1,sizeof(char));
+    sprintf(indexijptrsfile,"%s/%s.a2iag.saindex64meta",destdir,fileroot);
+    indexijcompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.saindex64strm")+1,sizeof(char));
+    sprintf(indexijcompfile,"%s/%s.a2iag.saindex64strm",destdir,fileroot);
+    Sarray_write_index_interleaved(indexijptrsfile,indexijcompfile,
+				   sarrayfile,genomecomp,genomelength,/*compressp*/true,AG_CHARTABLE);
+    FREE(indexijcompfile);
+    FREE(indexijptrsfile);
+
+    SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/false);
+    FREE(sarrayfile);
+
+#if 0
+    /* Not needed if we already have gbuffer */
+    /* Required for computing LCP, but uses non-SIMD instructions */
+    genomebits = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+    Genome_hr_setup(Genome_blocks(genomebits),/*snp_blocks*/NULL,
+		    /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/false,
+		    /*mode*/ATOI_STRANDED);
+#endif
+
+    lcp = Sarray_compute_lcp_from_genome(SA,gbuffer,/*n*/genomelength);
+    FREE(gbuffer);
+#if 0
+    Genome_free(&genomebits);
+#endif
+
+    /* Write lcp exceptions/guide, but return lcp_bytes */
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.a2iag.salcpexc",destdir,fileroot);
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.a2iag.salcpguide1024",destdir,fileroot);
+
+    lcp_bytes = Bytecoding_write_exceptions_only(lcpexcfile,lcpguidefile,lcp,genomelength,/*guide_interval*/1024);
+
+    FREE(lcpguidefile);
+    FREE(lcpexcfile);
+
+    FREE(lcp);			/* Use lcp_bytes, which are more memory-efficient than lcp */
+
+
+    /* DC array */
+    /* Assume we have lcp_bytes already in memory.  Don't need to use guide for speed. */
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.a2iag.salcpguide1024",destdir,fileroot);
+    lcp_guide = (UINT4 *) Access_allocated(&lcpguide_len,&seconds,lcpguidefile,sizeof(UINT4));
+    FREE(lcpguidefile);
+
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.a2iag.salcpexc",destdir,fileroot);
+    lcp_exceptions = (UINT4 *) Access_allocated(&lcpexc_len,&seconds,lcpexcfile,sizeof(UINT4));
+    n_lcp_exceptions = lcpexc_len/(sizeof(UINT4) + sizeof(UINT4));
+    FREE(lcpexcfile);
+
+    /* Compute discriminating chars (DC) array */
+    discrim_chars = Sarray_discriminating_chars(&nbytes,SA,genomecomp,lcp_bytes,lcp_guide,
+						lcp_exceptions,/*guide_interval*/1024,/*n*/genomelength,
+						AG_CHARTABLE);
+    munmap((void *) SA,sa_len);
+    close(sa_fd);
+
+    fprintf(stderr,"Building child array\n");
+    /* Compute child array (relative values) */
+    child = Sarray_compute_child(lcp_bytes,lcp_guide,lcp_exceptions,/*n*/genomelength);
+    FREE(lcp_exceptions);
+    FREE(lcp_guide);
+
+    /* Write combined lcpchilddc file */
+    lcpchilddcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.salcpchilddc")+1,sizeof(char));
+    sprintf(lcpchilddcfile,"%s/%s.a2iag.salcpchilddc",destdir,fileroot);
+    childexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.sachildexc")+1,sizeof(char));
+    sprintf(childexcfile,"%s/%s.a2iag.sachildexc",destdir,fileroot);
+    childguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2iag.sachildguide1024")+1,sizeof(char));
+    sprintf(childguidefile,"%s/%s.a2iag.sachildguide1024",destdir,fileroot);
+    Bytecoding_write_lcpchilddc(lcpchilddcfile,childexcfile,childguidefile,child,
+				discrim_chars,lcp_bytes,genomelength,/*guide_interval*/1024);
+    FREE(childguidefile);
+    FREE(childexcfile);
+    FREE(lcpchilddcfile);
+    
+    FREE(child);
+    FREE(discrim_chars);
+    FREE(lcp_bytes);
+  }
+
+  compute_ag(new_pointers_filename,new_offsets_filename,
+	     positions_high_fp,positions_low_fp,ref_offsets,ref_positions8,ref_positions4,
 	     oligospace,mask,coord_values_8p);
-  fclose(positions_fp);
-  FREE(new_offsetscomp_filename);
-  if (index1part != offsetscomp_basesize) {
-    FREE(new_gammaptrs_filename);
+  if (coord_values_8p == true) {
+    fclose(positions_high_fp);
   }
+  fclose(positions_low_fp);
+  FREE(new_offsets_filename);
+  FREE(new_pointers_filename);
 
 
   /* Open TC output files */
-  if (index1part == offsetscomp_basesize) {
-    new_gammaptrs_filename = (char *) NULL;
-  } else {
-    new_gammaptrs_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-					     strlen(".")+strlen("a2itc")+strlen(gammaptrs_index1info_ptr)+1,sizeof(char));
-    sprintf(new_gammaptrs_filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",gammaptrs_index1info_ptr);
-  }
+  new_pointers_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					  strlen(".")+strlen("a2itc")+strlen(filenames->pointers_index1info_ptr)+1,sizeof(char));
+  sprintf(new_pointers_filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",filenames->pointers_index1info_ptr);
 
-  new_offsetscomp_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("a2itc")+strlen(offsetscomp_index1info_ptr)+1,sizeof(char));
-  sprintf(new_offsetscomp_filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",offsetscomp_index1info_ptr);
+  new_offsets_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			     strlen(".")+strlen("a2itc")+strlen(filenames->offsets_index1info_ptr)+1,sizeof(char));
+  sprintf(new_offsets_filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",filenames->offsets_index1info_ptr);
 
 
+  if (coord_values_8p == true) {
+    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			       strlen(".")+strlen("a2itc")+strlen(filenames->positions_high_index1info_ptr)+1,sizeof(char));
+    sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",filenames->positions_high_index1info_ptr);
+    
+    if ((positions_high_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+      fprintf(stderr,"Can't open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+  }
+
   filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("a2itc")+strlen(positions_index1info_ptr)+1,sizeof(char));
-  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",positions_index1info_ptr);
+			     strlen(".")+strlen("a2itc")+strlen(filenames->positions_low_index1info_ptr)+1,sizeof(char));
+  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"a2itc",filenames->positions_low_index1info_ptr);
 
-  if ((positions_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+  if ((positions_low_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
     fprintf(stderr,"Can't open file %s for writing\n",filename);
     exit(9);
   }
   FREE(filename);
 
   /* Compute and write TC files */
-  compute_tc(new_gammaptrs_filename,new_offsetscomp_filename,
-	     positions_fp,ref_offsets,ref_positions8,ref_positions4,
+  if (build_suffix_array_p == true) {
+    fprintf(stderr,"Building suffix array for TC\n");
+    sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.sarray")+1,sizeof(char));
+    sprintf(sarrayfile,"%s/%s.a2itc.sarray",destdir,fileroot);
+    /* Already have genomecomp open */
+    gbuffer = (unsigned char *) CALLOC(genomelength+1,sizeof(unsigned char));
+    Genome_fill_buffer_int_string(genomecomp,/*left*/0,/*length*/genomelength,gbuffer,tc_conversion);
+    gbuffer[genomelength] = 0;	/* Tried N/X, but SACA_K fails */
+    Sarray_write_array_from_genome(sarrayfile,gbuffer,genomelength);
+
+    /* Bucket array */
+    indexijptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.saindex64meta")+1,sizeof(char));
+    sprintf(indexijptrsfile,"%s/%s.a2itc.saindex64meta",destdir,fileroot);
+    indexijcompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.saindex64strm")+1,sizeof(char));
+    sprintf(indexijcompfile,"%s/%s.a2itc.saindex64strm",destdir,fileroot);
+    Sarray_write_index_interleaved(indexijptrsfile,indexijcompfile,
+				   sarrayfile,genomecomp,genomelength,/*compressp*/true,TC_CHARTABLE);
+    FREE(indexijcompfile);
+    FREE(indexijptrsfile);
+
+    SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/false);
+    FREE(sarrayfile);
+
+#if 0
+    /* Not needed if we already have gbuffer */
+    /* Required for computing LCP, but uses non-SIMD instructions */
+    genomebits = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+    Genome_hr_setup(Genome_blocks(genomebits),/*snp_blocks*/NULL,
+		    /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/false,
+		    /*mode*/ATOI_STRANDED);
+#endif
+
+    lcp = Sarray_compute_lcp_from_genome(SA,gbuffer,/*n*/genomelength);
+    FREE(gbuffer);
+#if 0
+    Genome_free(&genomebits);
+#endif
+
+    /* Write lcp exceptions/guide, but return lcp_bytes */
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.a2itc.salcpexc",destdir,fileroot);
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.a2itc.salcpguide1024",destdir,fileroot);
+
+    lcp_bytes = Bytecoding_write_exceptions_only(lcpexcfile,lcpguidefile,lcp,genomelength,/*guide_interval*/1024);
+
+    FREE(lcpguidefile);
+    FREE(lcpexcfile);
+
+    FREE(lcp);			/* Use lcp_bytes, which are more memory-efficient than lcp */
+
+
+    /* DC array */
+    /* Assume we have lcp_bytes already in memory.  Don't need to use guide for speed. */
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.a2itc.salcpguide1024",destdir,fileroot);
+    lcp_guide = (UINT4 *) Access_allocated(&lcpguide_len,&seconds,lcpguidefile,sizeof(UINT4));
+    FREE(lcpguidefile);
+
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.a2itc.salcpexc",destdir,fileroot);
+    lcp_exceptions = (UINT4 *) Access_allocated(&lcpexc_len,&seconds,lcpexcfile,sizeof(UINT4));
+    n_lcp_exceptions = lcpexc_len/(sizeof(UINT4) + sizeof(UINT4));
+    FREE(lcpexcfile);
+
+    /* Compute discriminating chars (DC) array */
+    discrim_chars = Sarray_discriminating_chars(&nbytes,SA,genomecomp,lcp_bytes,lcp_guide,
+						lcp_exceptions,/*guide_interval*/1024,/*n*/genomelength,
+						TC_CHARTABLE);
+    munmap((void *) SA,sa_len);
+    close(sa_fd);
+
+    fprintf(stderr,"Building child array\n");
+    /* Compute child array (relative values) */
+    child = Sarray_compute_child(lcp_bytes,lcp_guide,lcp_exceptions,/*n*/genomelength);
+    FREE(lcp_exceptions);
+    FREE(lcp_guide);
+
+    /* Write combined lcpchilddc file */
+    lcpchilddcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.salcpchilddc")+1,sizeof(char));
+    sprintf(lcpchilddcfile,"%s/%s.a2itc.salcpchilddc",destdir,fileroot);
+    childexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.sachildexc")+1,sizeof(char));
+    sprintf(childexcfile,"%s/%s.a2itc.sachildexc",destdir,fileroot);
+    childguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".a2itc.sachildguide1024")+1,sizeof(char));
+    sprintf(childguidefile,"%s/%s.a2itc.sachildguide1024",destdir,fileroot);
+    Bytecoding_write_lcpchilddc(lcpchilddcfile,childexcfile,childguidefile,child,
+				discrim_chars,lcp_bytes,genomelength,/*guide_interval*/1024);
+    FREE(childguidefile);
+    FREE(childexcfile);
+    FREE(lcpchilddcfile);
+    
+    FREE(child);
+    FREE(discrim_chars);
+    FREE(lcp_bytes);
+
+    Genome_free(&genomecomp);
+  }
+
+  compute_tc(new_pointers_filename,new_offsets_filename,
+	     positions_high_fp,positions_low_fp,ref_offsets,ref_positions8,ref_positions4,
 	     oligospace,mask,coord_values_8p);
-  fclose(positions_fp);
-  FREE(new_offsetscomp_filename);
-  if (index1part != offsetscomp_basesize) {
-    FREE(new_gammaptrs_filename);
+  if (coord_values_8p == true) {
+    fclose(positions_high_fp);
   }
+  fclose(positions_low_fp);
+  FREE(new_offsets_filename);
+  FREE(new_pointers_filename);
 
 
 
   /* Clean up */
   FREE(ref_offsets);
 
-#ifdef HAVE_MMAP
-  if (coord_values_8p == true) {
-    munmap((void *) ref_positions8,ref_positions_len);
-  } else {
-    munmap((void *) ref_positions4,ref_positions_len);
-  }
-  close(ref_positions_fd);
-#else
   if (coord_values_8p == true) {
     FREE(ref_positions8);
   } else {
+#ifdef HAVE_MMAP
+    munmap((void *) ref_positions4,ref_positions_low_len);
+    close(ref_positions_low_fd);
+#else
     FREE(ref_positions4);
-  }
 #endif
+  }
 
-  FREE(positions_filename);
-  FREE(offsetscomp_filename);
-  FREE(gammaptrs_filename);
+  Filenames_free(&filenames);
 
   FREE(dbversion);
   FREE(fileroot);
@@ -932,9 +1263,6 @@ Usage: atoiindex [OPTIONS...] -d <genome>\n\
   -k, --kmer=INT                 kmer size to use in genome database (allowed values: 16 or less).\n\
                                    If not specified, the program will find the highest available\n\
                                    kmer size in the genome database\n\
-  -b, --basesize=INT             Base size to use in genome database.  If not specified, the program\n\
-                                   will find the highest available base size in the genome database\n\
-                                   within selected k-mer size\n\
   -q, --sampling=INT             Sampling to use in genome database.  If not specified, the program\n\
                                    will find the smallest available sampling value in the genome database\n\
                                    within selected basesize and k-mer size\n\
diff --git a/src/bitpack64-access.c b/src/bitpack64-access.c
new file mode 100644
index 0000000..c4621dd
--- /dev/null
+++ b/src/bitpack64-access.c
@@ -0,0 +1,2135 @@
+static char rcsid[] = "$Id: bitpack64-access.c 132144 2014-04-02 16:02:28Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "bitpack64-access.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+
+#define BLOCKSIZE 64
+
+/* Vertical access is slightly more efficient than horizontal */
+
+#ifdef HORIZONTAL
+#define WORD_INCR 1		/* 1 for horizontal; 4 for vertical */
+#else
+#define WORD_INCR 4
+#endif
+
+
+static UINT4
+access_00 (const UINT4 *in) {
+  return 0U;
+}
+
+
+
+static UINT4
+access_02_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_01 (const UINT4 *in) {
+  return ( (*in) >>  2  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_02 (const UINT4 *in) {
+  return ( (*in) >>  4  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_03 (const UINT4 *in) {
+  return ( (*in) >>  6  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_04 (const UINT4 *in) {
+  return ( (*in) >>  8  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_05 (const UINT4 *in) {
+  return ( (*in) >>  10  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_06 (const UINT4 *in) {
+  return ( (*in) >>  12  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_07 (const UINT4 *in) {
+  return ( (*in) >>  14  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_08 (const UINT4 *in) {
+  return ( (*in) >>  16  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_09 (const UINT4 *in) {
+  return ( (*in) >>  18  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_10 (const UINT4 *in) {
+  return ( (*in) >>  20  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_11 (const UINT4 *in) {
+  return ( (*in) >>  22  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_12 (const UINT4 *in) {
+  return ( (*in) >>  24  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_13 (const UINT4 *in) {
+  return ( (*in) >>  26  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_14 (const UINT4 *in) {
+  return ( (*in) >>  28  )   % (1U << 2 ) ;
+}
+
+static UINT4
+access_02_15 (const UINT4 *in) {
+  return ( (*in) >>  30  )   % (1U << 2 ) ;
+}
+
+
+
+static UINT4
+access_04_00 (const UINT4 *in) {
+  return ( (*in) >> 0 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_01 (const UINT4 *in) {
+  return ( (*in) >> 4 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_02 (const UINT4 *in) {
+  return ( (*in) >> 8 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_03 (const UINT4 *in) {
+  return ( (*in) >> 12 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_04 (const UINT4 *in) {
+  return ( (*in) >> 16 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_05 (const UINT4 *in) {
+  return ( (*in) >> 20 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_06 (const UINT4 *in) {
+  return ( (*in) >> 24 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_07 (const UINT4 *in) {
+  return ( (*in) >> 28 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_08 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_09 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 4 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_10 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 8 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_11 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 12 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_12 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_13 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 20 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_14 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 24 )   % (1U << 4 ) ;
+}
+
+static UINT4
+access_04_15 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 28 )   % (1U << 4 ) ;
+}
+
+
+static UINT4
+access_06_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_01 (const UINT4 *in) {
+  return ( (*in) >>  6  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_02 (const UINT4 *in) {
+  return ( (*in) >>  12  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_03 (const UINT4 *in) {
+  return ( (*in) >>  18  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_04 (const UINT4 *in) {
+  return ( (*in) >>  24  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_05 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  30  )   % (1U << 6 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 6 - 4 );
+  return out;
+}
+
+static UINT4
+access_06_06 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_07 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  10  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_08 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  16  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_09 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  22  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 6 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 6 - 2 );
+  return out;
+}
+
+static UINT4
+access_06_11 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_12 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_13 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  14  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_14 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  20  )   % (1U << 6 ) ;
+}
+
+static UINT4
+access_06_15 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  26  )   % (1U << 6 ) ;
+}
+
+
+static UINT4
+access_08_00 (const UINT4 *in) {
+  return ( (*in) >> 0 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_01 (const UINT4 *in) {
+  return ( (*in) >> 8 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_02 (const UINT4 *in) {
+  return ( (*in) >> 16 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_03 (const UINT4 *in) {
+  return ( (*in) >> 24 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_04 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_05 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 8 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_06 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_07 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 24 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_08 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_09 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >> 8 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_10 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_11 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >> 24 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_12 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_13 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >> 8 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_14 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 8 ) ;
+}
+
+static UINT4
+access_08_15 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >> 24 )   % (1U << 8 ) ;
+}
+
+
+static UINT4
+access_10_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_01 (const UINT4 *in) {
+  return ( (*in) >>  10  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_02 (const UINT4 *in) {
+  return ( (*in) >>  20  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_03 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  30  )   % (1U << 10 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 10 - 8 );
+  return out;
+}
+
+static UINT4
+access_10_04 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_05 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  18  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_06 (const UINT4 *in) {
+  UINT4 out;
+  
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 10 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 6 ))<<( 10 - 6 );
+  return out;
+}
+
+static UINT4
+access_10_07 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  6  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_08 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  16  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  26  )   % (1U << 10 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 10 - 4 );
+  return out;
+}
+
+static UINT4
+access_10_10 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_11 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  14  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_12 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 10 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 10 - 2 );
+  return out;
+}
+
+static UINT4
+access_10_13 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_14 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  12  )   % (1U << 10 ) ;
+}
+
+static UINT4
+access_10_15 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  22  )   % (1U << 10 ) ;
+}
+
+
+static UINT4
+access_12_00 (const UINT4 *in) {
+    return ( (*in) >>  0  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_01 (const UINT4 *in) {
+  return ( (*in) >>  12  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_02 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  24  )   % (1U << 12 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 12 - 4 );
+  return out;
+}
+
+static UINT4
+access_12_03 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_04 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  16  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_05 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 12 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 12 - 8 );
+  return out;
+}
+
+static UINT4
+access_12_06 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_07 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  20  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_08 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  0  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_09 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  12  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 12 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 12 - 4 );
+  return out;
+}
+
+static UINT4
+access_12_11 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_12 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  16  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 12 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 12 - 8 );
+  return out;
+}
+
+static UINT4
+access_12_14 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 12 ) ;
+}
+
+static UINT4
+access_12_15 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >>  20  )   % (1U << 12 ) ;
+}
+
+
+static UINT4
+access_14_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_01 (const UINT4 *in) {
+  return ( (*in) >>  14  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_02 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  28  )   % (1U << 14 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 10 ))<<( 14 - 10 );
+  return out;
+}
+
+static UINT4
+access_14_03 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  10  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_04 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 14 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 6 ))<<( 14 - 6 );
+  return out;
+}
+
+static UINT4
+access_14_05 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  6  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_06 (const UINT4 *in) {
+  UINT4 out;
+  in += 2 * WORD_INCR;
+
+  out = ( (*in) >>  20  )   % (1U << 14 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 14 - 2 );
+  return out;
+}
+
+static UINT4
+access_14_07 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_08 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  16  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  30  )   % (1U << 14 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 14 - 12 );
+  return out;
+}
+
+static UINT4
+access_14_10 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  12  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_11 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  26  )   % (1U << 14 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 14 - 8 );
+  return out;
+}
+
+static UINT4
+access_14_12 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  22  )   % (1U << 14 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 14 - 4 );
+  return out;
+}
+
+static UINT4
+access_14_14 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 14 ) ;
+}
+
+static UINT4
+access_14_15 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  18  )   % (1U << 14 ) ;
+}
+
+
+static UINT4
+access_16_00 (const UINT4 *in) {
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_01 (const UINT4 *in) {
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_02 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_03 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_04 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_05 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_06 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_07 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_08 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_09 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_10 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_11 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_12 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_13 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_14 (const UINT4 *in) {
+  in += 7 * WORD_INCR;
+  return ( (*in) >> 0 )   % (1U << 16 ) ;
+}
+
+static UINT4
+access_16_15 (const UINT4 *in) {
+  in += 7 * WORD_INCR;
+  return ( (*in) >> 16 )   % (1U << 16 ) ;
+}
+
+
+static UINT4
+access_18_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  18  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 18 - 4 );
+  return out;
+}
+
+static UINT4
+access_18_02 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_03 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  22  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 18 - 8 );
+  return out;
+}
+
+static UINT4
+access_18_04 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_05 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  26  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 18 - 12 );
+  return out;
+}
+
+static UINT4
+access_18_06 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  12  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_07 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  30  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 18 - 16 );
+  return out;
+}
+
+static UINT4
+access_18_08 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 18 - 2 );
+  return out;
+}
+
+static UINT4
+access_18_09 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 6 ))<<( 18 - 6 );
+  return out;
+}
+
+static UINT4
+access_18_11 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  6  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_12 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 6 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 10 ))<<( 18 - 10 );
+  return out;
+}
+
+static UINT4
+access_18_13 (const UINT4 *in) {
+  in += 7 * WORD_INCR;
+  return ( (*in) >>  10  )   % (1U << 18 ) ;
+}
+
+static UINT4
+access_18_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 18 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 14 ))<<( 18 - 14 );
+  return out;
+}
+
+static UINT4
+access_18_15 (const UINT4 *in) {
+  in += 8 * WORD_INCR;
+  return ( (*in) >>  14  )   % (1U << 18 ) ;
+}
+
+
+static UINT4
+access_20_00 (const UINT4 *in) {
+    return ( (*in) >>  0  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  20  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 20 - 8 );
+  return out;
+}
+
+static UINT4
+access_20_02 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_03 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 20 - 16 );
+  return out;
+}
+
+static UINT4
+access_20_04 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 20 - 4 );
+  return out;
+}
+
+static UINT4
+access_20_05 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_06 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 20 - 12 );
+  return out;
+}
+
+static UINT4
+access_20_07 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  12  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_08 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >>  0  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 20 - 8 );
+  return out;
+}
+
+static UINT4
+access_20_10 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_11 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 6 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 20 - 16 );
+  return out;
+}
+
+static UINT4
+access_20_12 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 20 - 4 );
+  return out;
+}
+
+static UINT4
+access_20_13 (const UINT4 *in) {
+  in += 8 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 20 ) ;
+}
+
+static UINT4
+access_20_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 8 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 20 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 20 - 12 );
+  return out;
+}
+
+static UINT4
+access_20_15 (const UINT4 *in) {
+  in += 9 * WORD_INCR;
+  return ( (*in) >>  12  )   % (1U << 20 ) ;
+}
+
+
+static UINT4
+access_22_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 22 ) ;
+}
+
+static UINT4
+access_22_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  22  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 22 - 12 );
+  return out;
+}
+
+static UINT4
+access_22_02 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  12  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 22 - 2 );
+  return out;
+}
+
+static UINT4
+access_22_03 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 22 ) ;
+}
+
+static UINT4
+access_22_04 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 14 ))<<( 22 - 14 );
+  return out;
+}
+
+static UINT4
+access_22_05 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  14  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 22 - 4 );
+  return out;
+}
+
+static UINT4
+access_22_06 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 22 ) ;
+}
+
+static UINT4
+access_22_07 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  26  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 22 - 16 );
+  return out;
+}
+
+static UINT4
+access_22_08 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 6 ))<<( 22 - 6 );
+  return out;
+}
+
+static UINT4
+access_22_09 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  6  )   % (1U << 22 ) ;
+}
+
+static UINT4
+access_22_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 6 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 18 ))<<( 22 - 18 );
+  return out;
+}
+
+static UINT4
+access_22_11 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  18  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 22 - 8 );
+  return out;
+}
+
+static UINT4
+access_22_12 (const UINT4 *in) {
+  in += 8 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 22 ) ;
+}
+
+static UINT4
+access_22_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 8 * WORD_INCR;
+  out = ( (*in) >>  30  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 20 ))<<( 22 - 20 );
+  return out;
+}
+
+static UINT4
+access_22_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 9 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 22 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 10 ))<<( 22 - 10 );
+  return out;
+}
+
+static UINT4
+access_22_15 (const UINT4 *in) {
+  in += 10 * WORD_INCR;
+  return ( (*in) >>  10  )   % (1U << 22 ) ;
+}
+
+
+
+static UINT4
+access_24_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  24  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+  return out;
+}
+
+static UINT4
+access_24_02 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+  return out;
+}
+
+static UINT4
+access_24_03 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_04 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return ( (*in) >>  0  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_05 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+  return out;
+}
+
+static UINT4
+access_24_06 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+  return out;
+}
+
+static UINT4
+access_24_07 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_08 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  0  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 6 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+  return out;
+}
+
+static UINT4
+access_24_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+  return out;
+}
+
+static UINT4
+access_24_11 (const UINT4 *in) {
+  in += 8 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_12 (const UINT4 *in) {
+  in += 9 * WORD_INCR;
+  return ( (*in) >>  0  )   % (1U << 24 ) ;
+}
+
+static UINT4
+access_24_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 9 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+  return out;
+}
+
+static UINT4
+access_24_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 10 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 24 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+  return out;
+}
+
+static UINT4
+access_24_15 (const UINT4 *in) {
+  in += 11 * WORD_INCR;
+  return ( (*in) >>  8  )   % (1U << 24 ) ;
+}
+
+
+
+static UINT4
+access_26_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 26 ) ;
+}
+
+static UINT4
+access_26_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  26  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 20 ))<<( 26 - 20 );
+  return out;
+}
+
+static UINT4
+access_26_02 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 14 ))<<( 26 - 14 );
+  return out;
+}
+
+static UINT4
+access_26_03 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  14  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 26 - 8 );
+  return out;
+}
+
+static UINT4
+access_26_04 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  8  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 26 - 2 );
+  return out;
+}
+
+static UINT4
+access_26_05 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 26 ) ;
+}
+
+static UINT4
+access_26_06 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 22 ))<<( 26 - 22 );
+  return out;
+}
+
+static UINT4
+access_26_07 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  22  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 26 - 16 );
+  return out;
+}
+
+static UINT4
+access_26_08 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 6 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 10 ))<<( 26 - 10 );
+  return out;
+}
+
+static UINT4
+access_26_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  10  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 26 - 4 );
+  return out;
+}
+
+static UINT4
+access_26_10 (const UINT4 *in) {
+  in += 8 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 26 ) ;
+}
+
+static UINT4
+access_26_11 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 8 * WORD_INCR;
+  out = ( (*in) >>  30  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 24 ))<<( 26 - 24 );
+  return out;
+}
+
+static UINT4
+access_26_12 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 9 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 18 ))<<( 26 - 18 );
+  return out;
+}
+
+static UINT4
+access_26_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 10 * WORD_INCR;
+  out = ( (*in) >>  18  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 26 - 12 );
+  return out;
+}
+
+static UINT4
+access_26_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 11 * WORD_INCR;
+  out = ( (*in) >>  12  )   % (1U << 26 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 6 ))<<( 26 - 6 );
+  return out;
+}
+
+static UINT4
+access_26_15 (const UINT4 *in) {
+  in += 12 * WORD_INCR;
+  return ( (*in) >>  6  )   % (1U << 26 ) ;
+}
+
+
+static UINT4
+access_28_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 28 ) ;
+}
+
+static UINT4
+access_28_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  28  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 24 ))<<( 28 - 24 );
+  return out;
+}
+
+static UINT4
+access_28_02 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 20 ))<<( 28 - 20 );
+  return out;
+}
+
+static UINT4
+access_28_03 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 28 - 16 );
+  return out;
+}
+
+static UINT4
+access_28_04 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 28 - 12 );
+  return out;
+}
+
+static UINT4
+access_28_05 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  12  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 28 - 8 );
+  return out;
+}
+
+static UINT4
+access_28_06 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  8  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 28 - 4 );
+  return out;
+}
+
+static UINT4
+access_28_07 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 28 ) ;
+}
+
+static UINT4
+access_28_08 (const UINT4 *in) {
+  in += 7 * WORD_INCR;
+  return ( (*in) >>  0  )   % (1U << 28 ) ;
+}
+
+static UINT4
+access_28_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 24 ))<<( 28 - 24 );
+  return out;
+}
+
+static UINT4
+access_28_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 8 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 20 ))<<( 28 - 20 );
+  return out;
+}
+
+static UINT4
+access_28_11 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 9 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 28 - 16 );
+  return out;
+}
+
+static UINT4
+access_28_12 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 10 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 28 - 12 );
+  return out;
+}
+
+static UINT4
+access_28_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 11 * WORD_INCR;
+  out = ( (*in) >>  12  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 28 - 8 );
+  return out;
+}
+
+static UINT4
+access_28_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 12 * WORD_INCR;
+  out = ( (*in) >>  8  )   % (1U << 28 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 28 - 4 );
+  return out;
+}
+
+static UINT4
+access_28_15 (const UINT4 *in) {
+  in += 13 * WORD_INCR;
+  return ( (*in) >>  4  )   % (1U << 28 ) ;
+}
+
+
+static UINT4
+access_30_00 (const UINT4 *in) {
+  return ( (*in) >>  0  )   % (1U << 30 ) ;
+}
+
+static UINT4
+access_30_01 (const UINT4 *in) {
+  UINT4 out;
+
+  out = ( (*in) >>  30  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 28 ))<<( 30 - 28 );
+  return out;
+}
+
+static UINT4
+access_30_02 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 1 * WORD_INCR;
+  out = ( (*in) >>  28  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 26 ))<<( 30 - 26 );
+  return out;
+}
+
+static UINT4
+access_30_03 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 2 * WORD_INCR;
+  out = ( (*in) >>  26  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 24 ))<<( 30 - 24 );
+  return out;
+}
+
+static UINT4
+access_30_04 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 3 * WORD_INCR;
+  out = ( (*in) >>  24  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 22 ))<<( 30 - 22 );
+  return out;
+}
+
+static UINT4
+access_30_05 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 4 * WORD_INCR;
+  out = ( (*in) >>  22  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 20 ))<<( 30 - 20 );
+  return out;
+}
+
+static UINT4
+access_30_06 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 5 * WORD_INCR;
+  out = ( (*in) >>  20  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 18 ))<<( 30 - 18 );
+  return out;
+}
+
+static UINT4
+access_30_07 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 6 * WORD_INCR;
+  out = ( (*in) >>  18  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 16 ))<<( 30 - 16 );
+  return out;
+}
+
+static UINT4
+access_30_08 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 7 * WORD_INCR;
+  out = ( (*in) >>  16  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 14 ))<<( 30 - 14 );
+  return out;
+}
+
+static UINT4
+access_30_09 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 8 * WORD_INCR;
+  out = ( (*in) >>  14  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 12 ))<<( 30 - 12 );
+  return out;
+}
+
+static UINT4
+access_30_10 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 9 * WORD_INCR;
+  out = ( (*in) >>  12  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 10 ))<<( 30 - 10 );
+  return out;
+}
+
+static UINT4
+access_30_11 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 10 * WORD_INCR;
+  out = ( (*in) >>  10  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 8 ))<<( 30 - 8 );
+  return out;
+}
+
+static UINT4
+access_30_12 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 11 * WORD_INCR;
+  out = ( (*in) >>  8  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 6 ))<<( 30 - 6 );
+  return out;
+}
+
+static UINT4
+access_30_13 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 12 * WORD_INCR;
+  out = ( (*in) >>  6  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 4 ))<<( 30 - 4 );
+  return out;
+}
+
+static UINT4
+access_30_14 (const UINT4 *in) {
+  UINT4 out;
+
+  in += 13 * WORD_INCR;
+  out = ( (*in) >>  4  )   % (1U << 30 ) ;
+  in += 1 * WORD_INCR;
+  out |= ((*in) % (1U<< 2 ))<<( 30 - 2 );
+  return out;
+}
+
+static UINT4
+access_30_15 (const UINT4 *in) {
+  in += 14 * WORD_INCR;
+  return ( (*in) >>  2  )   % (1U << 30 ) ;
+}
+
+
+static UINT4
+access_32_00 (const UINT4 *in) {
+  return *in;
+}
+
+static UINT4
+access_32_01 (const UINT4 *in) {
+  in += 1 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_02 (const UINT4 *in) {
+  in += 2 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_03 (const UINT4 *in) {
+  in += 3 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_04 (const UINT4 *in) {
+  in += 4 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_05 (const UINT4 *in) {
+  in += 5 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_06 (const UINT4 *in) {
+  in += 6 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_07 (const UINT4 *in) {
+  in += 7 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_08 (const UINT4 *in) {
+  in += 8 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_09 (const UINT4 *in) {
+  in += 9 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_10 (const UINT4 *in) {
+  in += 10 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_11 (const UINT4 *in) {
+  in += 11 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_12 (const UINT4 *in) {
+  in += 12 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_13 (const UINT4 *in) {
+  in += 13 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_14 (const UINT4 *in) {
+  in += 14 * WORD_INCR;
+  return *in;
+}
+
+static UINT4
+access_32_15 (const UINT4 *in) {
+  in += 15 * WORD_INCR;
+  return *in;
+}
+
+
+
+typedef UINT4 (*Accessor_T) (const UINT4 *);
+
+static Accessor_T accessor_table[272] =
+  {access_00, access_00, access_00, access_00,
+   access_00, access_00, access_00, access_00,
+   access_00, access_00, access_00, access_00,
+   access_00, access_00, access_00, access_00,
+
+   access_02_00, access_02_01, access_02_02, access_02_03,
+   access_02_04, access_02_05, access_02_06, access_02_07,
+   access_02_08, access_02_09, access_02_10, access_02_11,
+   access_02_12, access_02_13, access_02_14, access_02_15,
+
+   access_04_00, access_04_01, access_04_02, access_04_03,
+   access_04_04, access_04_05, access_04_06, access_04_07,
+   access_04_08, access_04_09, access_04_10, access_04_11,
+   access_04_12, access_04_13, access_04_14, access_04_15,
+
+   access_06_00, access_06_01, access_06_02, access_06_03,
+   access_06_04, access_06_05, access_06_06, access_06_07,
+   access_06_08, access_06_09, access_06_10, access_06_11,
+   access_06_12, access_06_13, access_06_14, access_06_15,
+
+   access_08_00, access_08_01, access_08_02, access_08_03,
+   access_08_04, access_08_05, access_08_06, access_08_07,
+   access_08_08, access_08_09, access_08_10, access_08_11,
+   access_08_12, access_08_13, access_08_14, access_08_15,
+
+   access_10_00, access_10_01, access_10_02, access_10_03,
+   access_10_04, access_10_05, access_10_06, access_10_07,
+   access_10_08, access_10_09, access_10_10, access_10_11,
+   access_10_12, access_10_13, access_10_14, access_10_15,
+
+   access_12_00, access_12_01, access_12_02, access_12_03,
+   access_12_04, access_12_05, access_12_06, access_12_07,
+   access_12_08, access_12_09, access_12_10, access_12_11,
+   access_12_12, access_12_13, access_12_14, access_12_15,
+
+   access_14_00, access_14_01, access_14_02, access_14_03,
+   access_14_04, access_14_05, access_14_06, access_14_07,
+   access_14_08, access_14_09, access_14_10, access_14_11,
+   access_14_12, access_14_13, access_14_14, access_14_15,
+
+   access_16_00, access_16_01, access_16_02, access_16_03,
+   access_16_04, access_16_05, access_16_06, access_16_07,
+   access_16_08, access_16_09, access_16_10, access_16_11,
+   access_16_12, access_16_13, access_16_14, access_16_15,
+
+   access_18_00, access_18_01, access_18_02, access_18_03,
+   access_18_04, access_18_05, access_18_06, access_18_07,
+   access_18_08, access_18_09, access_18_10, access_18_11,
+   access_18_12, access_18_13, access_18_14, access_18_15,
+
+   access_20_00, access_20_01, access_20_02, access_20_03,
+   access_20_04, access_20_05, access_20_06, access_20_07,
+   access_20_08, access_20_09, access_20_10, access_20_11,
+   access_20_12, access_20_13, access_20_14, access_20_15,
+
+   access_22_00, access_22_01, access_22_02, access_22_03,
+   access_22_04, access_22_05, access_22_06, access_22_07,
+   access_22_08, access_22_09, access_22_10, access_22_11,
+   access_22_12, access_22_13, access_22_14, access_22_15,
+
+   access_24_00, access_24_01, access_24_02, access_24_03,
+   access_24_04, access_24_05, access_24_06, access_24_07,
+   access_24_08, access_24_09, access_24_10, access_24_11,
+   access_24_12, access_24_13, access_24_14, access_24_15,
+
+   access_26_00, access_26_01, access_26_02, access_26_03,
+   access_26_04, access_26_05, access_26_06, access_26_07,
+   access_26_08, access_26_09, access_26_10, access_26_11,
+   access_26_12, access_26_13, access_26_14, access_26_15,
+
+   access_28_00, access_28_01, access_28_02, access_28_03,
+   access_28_04, access_28_05, access_28_06, access_28_07,
+   access_28_08, access_28_09, access_28_10, access_28_11,
+   access_28_12, access_28_13, access_28_14, access_28_15,
+
+   access_30_00, access_30_01, access_30_02, access_30_03,
+   access_30_04, access_30_05, access_30_06, access_30_07,
+   access_30_08, access_30_09, access_30_10, access_30_11,
+   access_30_12, access_30_13, access_30_14, access_30_15,
+
+   access_32_00, access_32_01, access_32_02, access_32_03,
+   access_32_04, access_32_05, access_32_06, access_32_07,
+   access_32_08, access_32_09, access_32_10, access_32_11,
+   access_32_12, access_32_13, access_32_14, access_32_15,
+  };
+  
+
+
+#define DIRECT_METAINFO_SIZE 1
+
+#ifdef HORIZONTAL
+
+UINT4
+Bitpack64_access (UINT4 position, UINT4 *ptrs, UINT4 *comp) {
+  UINT4 *info, start;
+  int nwritten, remainder;
+  UINT4 *bitpack;
+  int index, row;
+#ifdef DEBUG
+  int packsize, i;
+#endif
+
+  info = &(ptrs[position/BLOCKSIZE * DIRECT_METAINFO_SIZE]);
+  start = info[0];
+  bitpack = (UINT4 *) &(comp[start*4]);
+  nwritten = info[1] - start;	/* In 128-bit registers */
+
+  remainder = position % BLOCKSIZE;
+  index = nwritten*16 + remainder % 16;
+  row = (remainder / 16) * (packsize / 2);   /* Complexity of this calculation makes horizontal format slower */
+
+#ifdef DEBUG
+  packsize = nwritten*2;
+  printf("Entered Bitpack64_access with position %u, packsize %d, remainder %d, row %d, index %d\n",
+	 position,packsize,remainder,row,index);
+  printf("bitpack:\n");
+  for (i = 0; i < nwritten*4; i += 4) {
+    printf("%08X %08X %08X %08X\n",bitpack[i],bitpack[i+1],bitpack[i+2],bitpack[i+3]);
+  }
+  printf("\n");
+#endif
+  
+  return (accessor_table[index])(&(bitpack[row]));
+}
+
+#else
+
+UINT4
+Bitpack64_access (UINT4 position, UINT4 *ptrs, UINT4 *comp) {
+  UINT4 *info, start;
+  int nwritten, remainder;
+  UINT4 *bitpack;
+  int index, column;
+#ifdef DEBUG
+  int packsize, i;
+#endif
+
+  info = &(ptrs[position/BLOCKSIZE * DIRECT_METAINFO_SIZE]);
+  start = info[0];
+  bitpack = (UINT4 *) &(comp[start*4]);
+  nwritten = info[1] - start;	/* In 128-bit registers */
+
+  remainder = position % BLOCKSIZE;
+  index = nwritten*16 + remainder/4;
+  column = remainder % 4;
+
+#ifdef DEBUG
+  packsize = nwritten*2;
+  printf("Entered Bitpack64_access with position %u, packsize %d, remainder %d, column %d, index %d\n",
+	 position,packsize,remainder,column,index);
+  printf("bitpack:\n");
+  for (i = 0; i < nwritten*4; i += 4) {
+    printf("%08X %08X %08X %08X\n",bitpack[i],bitpack[i+1],bitpack[i+2],bitpack[i+3]);
+  }
+  printf("\n");
+#endif
+
+  return (accessor_table[index])(&(bitpack[column]));
+}
+
+#endif
+
diff --git a/src/bitpack64-access.h b/src/bitpack64-access.h
new file mode 100644
index 0000000..11a7597
--- /dev/null
+++ b/src/bitpack64-access.h
@@ -0,0 +1,9 @@
+#ifndef BITPACK64_ACCESS_INCLUDED
+#define BITPACK64_ACCESS_INCLUDED
+#include "types.h"
+
+/* For reading direct-coded bitstreams */
+extern UINT4
+Bitpack64_access (UINT4 position, UINT4 *ptrs, UINT4 *comp);
+
+#endif
diff --git a/src/bitpack64-read.c b/src/bitpack64-read.c
new file mode 100644
index 0000000..cb37d91
--- /dev/null
+++ b/src/bitpack64-read.c
@@ -0,0 +1,14517 @@
+static char rcsid[] = "$Id: bitpack64-read.c 132467 2014-04-06 01:31:26Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "bitpack64-read.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+
+#define POSITIONS_PAGE 4294967296 /* 2^32 */
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+
+/* #define ALLOW_ODD_PACKSIZES 1 */
+
+/* Two ideas for branch-free code:
+   BRANCH_FREE_ROW_SUM simplifies the summation of the difference values to always add 4 values.
+   BRANCH_FREE_QTR_BLOCK avoids having if statements based on the quarter-block.
+
+   If BRANCH_FREE_QTR_BLOCK is selected, then BRANCH_FREE_ROW_SUM must also be selected, so
+
+   Case 1: BRANCH_FREE_ROW_SUM 0, BRANCH_FREE_QTR_BLOCK 0
+   Case 2: BRANCH_FREE_ROW_SUM 1, BRANCH_FREE_QTR_BLOCK 0
+   Case 3: BRANCH_FREE_ROW_SUM 1, BRANCH_FREE_QTR_BLOCK 1
+
+   Note that BRANCH_FREE_QTR_BLOCK can be tricky for 8-byte quantities, e.g.,
+   in Bitpack64_offsetptr_huge.  Would therefore recommend it be turned off.
+*/
+
+
+/* #define BRANCH_FREE_ROW_SUM 1 */
+/* #define BRANCH_FREE_QTR_BLOCK 1 */
+
+#ifdef HAVE_SSE2
+#ifdef DEBUG
+/* For debugging */
+static void
+print_vector_hex (__m128i x) {
+  UINT4 *s = (UINT4 *) &x;
+
+  printf("%08X %08X %08X %08X\n",s[0],s[1],s[2],s[3]);
+  return;
+}
+
+static void
+print_vector (__m128i x) {
+  UINT4 *s = (UINT4 *) &x;
+
+  printf("%u %u %u %u\n",s[0],s[1],s[2],s[3]);
+  return;
+}
+#endif
+#endif
+
+
+#if 0
+#ifdef HAVE_SSE2
+#ifdef ALLOW_ODD_PACKSIZES
+static __m128i mask1, mask2, mask3, mask4, mask5, mask6, mask7, mask8,
+  mask9, mask10, mask11, mask12, mask13, mask14, mask15, mask16,
+  mask17, mask18, mask19, mask20, mask21, mask22, mask23, mask24,
+  mask25, mask26, mask27, mask28, mask29, mask30, mask31;
+#else
+static __m128i mask2, mask4, mask6, mask8, mask10, mask12, mask14, mask16,
+  mask18, mask20, mask22, mask24, mask26, mask28, mask30;
+#endif
+#endif
+#endif
+
+
+#define BLOCKSIZE 64
+
+#if 0
+void
+Bitpack64_read_setup () {
+
+#ifdef HAVE_SSE2
+#ifdef ALLOW_ODD_PACKSIZES
+  mask1 = _mm_set1_epi32(1U);
+  mask3 =  _mm_set1_epi32(7U);
+  mask5 =  _mm_set1_epi32(31U);
+  mask7 =  _mm_set1_epi32(127U);
+  mask9 =  _mm_set1_epi32(511U);
+  mask11 =  _mm_set1_epi32(2047U);
+  mask13 =  _mm_set1_epi32(8191U);
+  mask15 =  _mm_set1_epi32(32767U);
+  mask17 =  _mm_set1_epi32(131071U);
+  mask19 =  _mm_set1_epi32(524287U);
+  mask21 =  _mm_set1_epi32(2097151U);
+  mask23 =  _mm_set1_epi32(8388607U);
+  mask25 =  _mm_set1_epi32(33554431U);
+  mask27 =  _mm_set1_epi32(134217727U);
+  mask29 =  _mm_set1_epi32(536870911U);
+  mask31 =  _mm_set1_epi32(2147483647U);
+#endif
+  mask2 = _mm_set1_epi32(3U);
+  mask4 =  _mm_set1_epi32(15U);
+  mask6 =  _mm_set1_epi32(63U);
+  mask8 =  _mm_set1_epi32(255U);
+  mask10 =  _mm_set1_epi32(1023U);
+  mask12 =  _mm_set1_epi32(4095U);
+  mask14 =  _mm_set1_epi32(16383U);
+  mask16 =  _mm_set1_epi32(65535U);
+  mask18 =  _mm_set1_epi32(262143U);
+  mask20 =  _mm_set1_epi32(1048575U);
+  mask22 =  _mm_set1_epi32(4194303U);
+  mask24 =  _mm_set1_epi32(16777215U);
+  mask26 =  _mm_set1_epi32(67108863U);
+  mask28 =  _mm_set1_epi32(268435455U);
+  mask30 =  _mm_set1_epi32(1073741823U);
+#endif
+
+  return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_00 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i total = _mm_set1_epi32(0U);
+
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+
+  return;
+}
+
+/* Handles the case where remainder == 64 => column 3, row -1 */
+static void
+unpack_00_0 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i zero = _mm_set1_epi32(0U);
+  _mm_store_si128(out++, zero); /* dummy */
+#endif
+
+  /* _mm_store_si128(out++, zero); -- Not needed, since row == -1 */
+
+  return;
+}
+
+
+static void
+unpack_00_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i zero = _mm_set1_epi32(0U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+  _mm_store_si128(out++, zero); /* dummy */
+#endif
+
+  _mm_store_si128(out++, zero);
+
+  return;
+}
+
+static void
+unpack_00_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i zero = _mm_set1_epi32(0U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+  out++;			/* dummy */
+#endif
+
+  _mm_store_si128(out++, zero);
+  _mm_store_si128(out++, zero);
+
+  return;
+}
+
+
+#else
+static void
+unpack_00 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  int i;
+
+  for (i = 0; i < BLOCKSIZE; i++) {
+    *out++ = 0;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_01 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask1 = _mm_set1_epi32(1U);
+
+    OutReg = _mm_and_si128( InReg , mask1);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,15) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_02_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    OutReg = _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_02_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_02_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    InReg = _mm_load_si128(in);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,26) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_02_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,26) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+
+static void
+unpack_02 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 2 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_03 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask3 =  _mm_set1_epi32(7U);
+
+    OutReg = _mm_and_si128( InReg , mask3);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,21) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,27) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 3-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 3 - 1), mask3));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_04_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    OutReg = _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_04_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_04_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_04_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_04 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  UINT4 outer, inwordpointer;
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    for (outer = 0; outer < 2 ; outer++) {
+      for (inwordpointer = 0; inwordpointer < 32; inwordpointer +=  4) {
+	*(out++) = ( (*in) >> inwordpointer )   % (1U << 4 ) ;
+      }
+      in += 4;
+    }
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_05 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i  mask5 =  _mm_set1_epi32(31U);
+
+    OutReg = _mm_and_si128( InReg , mask5);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,25) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask3), 5-3));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 5 - 3), mask5));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,23) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 5-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 5 - 1), mask5));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_06_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    OutReg = _mm_and_si128( InReg , mask6);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 6-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 4), mask6));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_06_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i InReg;
+  __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 6-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 4), mask6));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 6-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_06_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 6-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 6-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+
+}
+
+static void
+unpack_06_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_06 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 6 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 6 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 6 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 6 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 6 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_07 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask7 =  _mm_set1_epi32(127U);
+
+    OutReg = _mm_and_si128( InReg , mask7);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,21) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask3), 7-3));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 7 - 3), mask7));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,17) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 7-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 7 - 6), mask7));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 7-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 7 - 2), mask7));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_08_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_08_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_08_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_08_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_08_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_08 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  UINT4 outer, inwordpointer;
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    for (outer = 0; outer < 4; outer++) {
+      for (inwordpointer = 0; inwordpointer < 32; inwordpointer += 8) {
+	*(out++) = ( (*in) >> inwordpointer )   % (1U << 8 ) ;
+      }
+      in += 4;
+    }
+  }
+
+  return;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_09 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask9 =  _mm_set1_epi32(511U);
+
+    OutReg = _mm_and_si128( InReg , mask9);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 9-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 4), mask9));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 9-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 8), mask9));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,17) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask3), 9-3));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 3), mask9));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,21) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask7), 9-7));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 7), mask9));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_10_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    OutReg = _mm_and_si128( InReg , mask10);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 10-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 8), mask10));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 10-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_10_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask10);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 10-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 8), mask10));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 10-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 10-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 10-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 4), mask10));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 10-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_10_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 10-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 4), mask10));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 10-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 10-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_10 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 10 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 10 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 10 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 10 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 10 ) ;
+    out++;
+
+  }
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_11 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask11 =  _mm_set1_epi32(2047U);
+
+    OutReg = _mm_and_si128( InReg , mask11);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 11-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 1), mask11));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 11-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 2), mask11));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask3), 11-3));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 3), mask11));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 11-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 4), mask11));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask5), 11-5));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 5), mask11));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_12_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    OutReg = _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 12-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 12-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_12_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 12-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 12-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 12-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 12-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 12-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_12_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 12-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 12-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 12-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_12 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 12 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 12 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 12 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 12 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 12 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 12 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_13 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask13 =  _mm_set1_epi32(8191U);
+
+    OutReg = _mm_and_si128( InReg , mask13);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask7), 13-7));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 7), mask13));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 13-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 1), mask13));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 13-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 8), mask13));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 13-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 2), mask13));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask9), 13-9));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 9), mask13));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask3), 13-3));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 3), mask13));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_14_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    OutReg = _mm_and_si128( InReg , mask14);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 14-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 14-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 14-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_14_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask14);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask14);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 14-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 14-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 14-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 14-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 14-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 14-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 14-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 12), mask14));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 14-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 8), mask14));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 14-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 4), mask14));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_14_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 14-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 12), mask14));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 14-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 8), mask14));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 14-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 4), mask14));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_14 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 14 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 14 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 14 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 14 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 14 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 14 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 14 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_15 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask15 =  _mm_set1_epi32(32767U);
+
+    OutReg = _mm_and_si128( InReg , mask15);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask13), 15-13));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 13), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask11), 15-11));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 11), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask9), 15-9));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 9), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask7), 15-7));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 7), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask5), 15-5));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 5), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask3), 15-3));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 3), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 15-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 1), mask15));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_16_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_16_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_16_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_16 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  UINT4 outer, inwordpointer;
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    for (outer = 0; outer < 8; outer++) {
+      for(inwordpointer =  0; inwordpointer <32; inwordpointer += 16) {
+	*(out++) = ( (*in) >> inwordpointer )   % (1U << 16 ) ;
+      }
+      in += 4;
+    }
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_17 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask17 =  _mm_set1_epi32(131071U);
+
+    OutReg = _mm_and_si128( InReg , mask17);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 17-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 2), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 17-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 4), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 17-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 6), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 17-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 8), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 17-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 10), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 17-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 12), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 17-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 14), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 17-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 16), mask17));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_18_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    OutReg = _mm_and_si128( InReg , mask18);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 18-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 4), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 18-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 8), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 18-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 12), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 18-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 16), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_18_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 18-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 4), mask18));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 18-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 8), mask18));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 18-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 12), mask18));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 18-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 16), mask18));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 18-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#endif
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 18-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 18-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 18-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_18_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 18-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 18-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 18-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 18-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 18-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 18-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 18-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 18-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_18 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 18 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 18 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 18 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 18 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 18 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 18 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 18 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 18 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 18 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_19 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask19 =  _mm_set1_epi32(524287U);
+
+    OutReg = _mm_and_si128( InReg , mask19);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 19-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 6), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 19-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 12), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 19-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 18), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask5), 19-5));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 5), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask11), 19-11));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 11), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask17), 19-17));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 17), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 19-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 4), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 19-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 10), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 19-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 16), mask19));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_20_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    OutReg = _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 20-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 20-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 20-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 20-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_20_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 20-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 20-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+
+}
+
+static void
+unpack_20_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 20-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 20-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 20-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 20-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg = _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 20-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 20-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 20-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 20-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_20_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 20-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+} 
+
+static void
+unpack_20_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 20-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+
+} 
+
+static void
+unpack_20_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 20-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 20-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 20-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 20-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_20 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 20 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 20 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 20 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 20 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 20 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 20 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 20 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 20 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 20 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 20 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_21 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask21 =  _mm_set1_epi32(2097151U);
+
+    OutReg = _mm_and_si128( InReg , mask21);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 21-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 10), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 21-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 20), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask9), 21-9));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 9), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask19), 21-19));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 19), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 21-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 8), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 21-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 18), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask7), 21-7));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 7), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask17), 21-17));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 17), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 21-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 6), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 21-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 16), mask21));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_22_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    OutReg = _mm_and_si128( InReg , mask22);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 22-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 12), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 22-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 22-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 22-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 4), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 22-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 16), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_22_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask22);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask22);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 22-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 12), mask22));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 22-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 22-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask22);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 22-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 22-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 22-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 4), mask22));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 22-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 16), mask22));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 22-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#endif
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 22-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 22-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 8), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 22-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 20), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 22-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_22_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 22-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 22-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 22-18));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 22-18));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 22-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 8), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 22-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 20), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 22-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 22-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_22 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 22 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 22 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 22 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 22 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 22 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 22 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 18 ))<<( 22 - 18 );
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 22 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 22 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 22 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 22 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_23 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask23 =  _mm_set1_epi32(8388607U);
+
+    OutReg = _mm_and_si128( InReg , mask23);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 23-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 14), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask5), 23-5));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 5), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask19), 23-19));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 19), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 23-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 10), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 23-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 1), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask15), 23-15));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 15), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,15) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 23-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 6), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 23-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 20), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask11), 23-11));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 11), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,11) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 23-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 2), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 23-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 16), mask23));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_24_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_24_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_24_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 24-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 10;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 10;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 24-8));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_24 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_25 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask25 =  _mm_set1_epi32(33554431U);
+
+    OutReg = _mm_and_si128( InReg , mask25);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 25-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 18), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask11), 25-11));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 11), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,11) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 25-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 4), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask25);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 25-22));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 22), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask15), 25-15));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 15), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,15) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 25-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 8), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask1), 25-1));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 1), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask25);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask19), 25-19));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 19), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 25-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 12), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask5), 25-5));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 5), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask25);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask23), 25-23));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 23), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 25-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 16), mask25));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_26_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    OutReg = _mm_and_si128( InReg , mask26);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 26-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 20), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 26-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 26-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 8), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 26-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask26);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 26-22));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 26-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 16), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_26_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask26);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask26);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 26-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 20), mask26));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 26-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 26-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 26-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 8), mask26));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;    
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 26-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;    
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 26-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask26);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;    
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 26-22));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;    
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 26-22));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 26-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 16), mask26));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 26-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#endif
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 26-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 4), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 26-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 24), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 26-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 26-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 12), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 26-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_26_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 26-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 26-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 26-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 4), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 26-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 24), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 26-18));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 26-18));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 26-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 12), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 11;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 26-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 11;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 26-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_26 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 26 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 26 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 26 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 26 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 26 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 26 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 22 ))<<( 26 - 22 );
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 26 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 26 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 26 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 26 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 26 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 18 ))<<( 26 - 18 );
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 26 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 26 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 26 ) ;
+    out++;
+  }
+  
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_27 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask27 =  _mm_set1_epi32(134217727U);
+
+    OutReg = _mm_and_si128( InReg , mask27);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 27-22));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 22), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask17), 27-17));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 17), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 27-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 12), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask7), 27-7));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 7), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,7) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 27-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 2), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask27);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 27-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 24), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask19), 27-19));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 19), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 27-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 14), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask9), 27-9));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 9), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,9) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 27-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 4), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask27);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask26), 27-26));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 26), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask21), 27-21));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 21), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 27-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 16), mask27));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_28_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    OutReg = _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 28-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 28-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 28-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 28-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 28-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 28-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_28_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 28-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 28-20));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 28-20));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 28-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 28-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 28-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 28-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 28-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 28-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 28-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 28-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 28-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 28-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 28-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 28-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_28_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 28-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 28-20));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 28-20));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 28-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 10;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 28-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 10;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 28-12));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 28-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 12;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 28-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 12;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 28-4));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_28 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 28 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 28 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 28 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 28 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 28 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 28 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 28 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 28 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 28 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 28 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 28 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 28 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 28 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 28 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 28 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 28 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_29 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask29 =  _mm_set1_epi32(536870911U);
+
+    OutReg = _mm_and_si128( InReg , mask29);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask26), 29-26));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 26), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask23), 29-23));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 23), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 29-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 20), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask17), 29-17));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 17), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 29-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 14), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask11), 29-11));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 11), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,11) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 29-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 8), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask5), 29-5));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 5), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,5) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 29-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 2), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask29);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask28), 29-28));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 28), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask25), 29-25));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 25), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 29-22));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 22), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask19), 29-19));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 19), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 29-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 16), mask29));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_30_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    OutReg = _mm_and_si128( InReg , mask30);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask28), 30-28));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 28), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask26), 30-26));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 30-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 24), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 30-22));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 30-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 20), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 30-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 30-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 16), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_30_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask30);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(in);
+
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask30);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask28), 30-28));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 28), mask30));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask26), 30-26));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    InReg = _mm_load_si128(++in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask26), 30-26));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 30-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 24), mask30));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 30-22));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 30-22));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 30-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 20), mask30));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 30-18));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 30-18));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 30-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 16), mask30));
+#endif
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 30-14));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#endif
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 30-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 12), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 30-10));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 30-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 8), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 30-6));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 30-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 4), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 30-2));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,2) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_30_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 30-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask14), 30-14));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask12), 30-12));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 12), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 30-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask10), 30-10));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask8), 30-8));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 8), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 11;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 30-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 11;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask6), 30-6));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask4), 30-4));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 4), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 13;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 30-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 13;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask2), 30-2));
+#else
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,2) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_30 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 30 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 28 ))<<( 30 - 28 );
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 26 ))<<( 30 - 26 );
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 30 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 22 ))<<( 30 - 22 );
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 30 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 18 ))<<( 30 - 18 );
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 30 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 30 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 30 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 30 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 30 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 30 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 30 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 30 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 30 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_31 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask31 =  _mm_set1_epi32(2147483647U);
+
+    OutReg = _mm_and_si128( InReg , mask31);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask30), 31-30));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 30), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask29), 31-29));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 29), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask28), 31-28));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 28), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask27), 31-27));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 27), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask26), 31-26));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 26), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask25), 31-25));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 25), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask24), 31-24));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 24), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask23), 31-23));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 23), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask22), 31-22));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 22), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask21), 31-21));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 21), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask20), 31-20));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 20), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask19), 31-19));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 19), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask18), 31-18));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 18), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask17), 31-17));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 17), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef MULTIMASK
+    OutReg = _mm_or_si128(OutReg, _mm_slli_epi32(_mm_and_si128(InReg, mask16), 31-16));
+#else
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 16), mask31));
+#endif
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_32_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i OutReg;
+
+    OutReg = _mm_load_si128(in++);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_32_fwd_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 2;
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 2;
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 4;
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 4;
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 6;
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 6;
+
+    total = _mm_load_si128(in++);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i OutReg;
+
+    in += 8;
+
+    OutReg = _mm_load_si128(in++);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_32_rev_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 8;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 8;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(in++));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 10;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 10;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(in++));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 12;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 12;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(in++));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    __m128i dummy = _mm_set1_epi32(0U);
+    _mm_store_si128(out++, dummy);
+#endif
+
+    in += 14;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+#ifdef BRANCH_FREE_ROW_SUM
+    out++;			/* dummy */
+#endif
+
+    in += 14;
+
+    total = _mm_load_si128(in++);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(in++));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(in++));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+
+#else
+static void
+unpack_32 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifndef BRANCH_FREE_ROW_SUM
+
+#ifdef PARTIAL_BRANCH_ROW_SUM
+
+#define assign_sum_fwd(x,offset0,diffs,row) switch (row) {	\
+  case -1: x = offset0; break;					\
+  case 0: x = offset0 + diffs[0]; break;			\
+  case 1: x = offset0 + diffs[0] + diffs[1]; break;			\
+  case 2: x = offset0 + diffs[0] + diffs[1] + diffs[2]; break;		\
+  default: x = offset0 + diffs[row-3] + diffs[row-2] + diffs[row-1] + diffs[row]; \
+  }
+
+#define assign_sum_rev(x,offset1,diffs,row) switch (row) {	\
+  case -1: x = offset1; break;					\
+  case 0: x = offset1 - diffs[0]; break;			\
+  case 1: x = offset1 - diffs[0] - diffs[1]; break;			\
+  case 2: x = offset1 - diffs[0] - diffs[1] - diffs[2]; break;		\
+  default: x = offset1 - diffs[row-3] - diffs[row-2] - diffs[row-1] - diffs[row]; \
+  }
+
+#define return_sum_fwd(offset0,diffs,row) switch (row) {	\
+  case -1: return offset0;					\
+  case 0: return offset0 + diffs[0];				\
+  case 1: return offset0 + diffs[0] + diffs[1];			\
+  case 2: return offset0 + diffs[0] + diffs[1] + diffs[2];		\
+  default: return offset0 + diffs[row-3] + diffs[row-2] + diffs[row-1] + diffs[row]; \
+  }
+
+#define return_sum_rev(offset1,diffs,row) switch (row) {	\
+  case -1: return offset1;					\
+  case 0: return offset1 - diffs[0];				\
+  case 1: return offset1 - diffs[0] - diffs[1];			\
+  case 2: return offset1 - diffs[0] - diffs[1] - diffs[2];		\
+  default: return offset1 - diffs[row-3] - diffs[row-2] - diffs[row-1] - diffs[row]; \
+  }
+
+#else
+
+#define assign_sum_fwd(x,offset0,diffs,row) switch (row) {	\
+  case -1: x = offset0; break;						\
+  case 0: x = offset0 + diffs[0]; break;				\
+  case 1: x = offset0 + diffs[0] + diffs[1]; break;			\
+  case 2: x = offset0 + diffs[0] + diffs[1] + diffs[2]; break;		\
+  case 3: x = offset0 + diffs[0] + diffs[1] + diffs[2] + diffs[3]; break; \
+  case 4: x = offset0 + diffs[1] + diffs[2] + diffs[3] + diffs[4]; break; \
+  case 5: x = offset0 + diffs[2] + diffs[3] + diffs[4] + diffs[5]; break; \
+  case 6: x = offset0 + diffs[3] + diffs[4] + diffs[5] + diffs[6]; break; \
+  case 7: x = offset0 + diffs[4] + diffs[5] + diffs[6] + diffs[7]; break; \
+  default: abort();							\
+  }
+
+#define assign_sum_rev(x,offset1,diffs,row) switch (row) {	\
+  case -1: x = offset1; break;						\
+  case 0: x = offset1 - diffs[0]; break;				\
+  case 1: x = offset1 - diffs[0] - diffs[1]; break;			\
+  case 2: x = offset1 - diffs[0] - diffs[1] - diffs[2]; break;		\
+  case 3: x = offset1 - diffs[0] - diffs[1] - diffs[2] - diffs[3]; break; \
+  case 4: x = offset1 - diffs[1] - diffs[2] - diffs[3] - diffs[4]; break; \
+  case 5: x = offset1 - diffs[2] - diffs[3] - diffs[4] - diffs[5]; break; \
+  case 6: x = offset1 - diffs[3] - diffs[4] - diffs[5] - diffs[6]; break; \
+  case 7: x = offset1 - diffs[4] - diffs[5] - diffs[6] - diffs[7]; break; \
+  default: abort();							\
+  }
+
+#define return_sum_fwd(offset0,diffs,row) switch (row) {	\
+  case -1: return offset0; break;					\
+  case 0: return offset0 + diffs[0]; break;				\
+  case 1: return offset0 + diffs[0] + diffs[1]; break;			\
+  case 2: return offset0 + diffs[0] + diffs[1] + diffs[2]; break;	\
+  case 3: return offset0 + diffs[0] + diffs[1] + diffs[2] + diffs[3]; break; \
+  case 4: return offset0 + diffs[1] + diffs[2] + diffs[3] + diffs[4]; break; \
+  case 5: return offset0 + diffs[2] + diffs[3] + diffs[4] + diffs[5]; break; \
+  case 6: return offset0 + diffs[3] + diffs[4] + diffs[5] + diffs[6]; break; \
+  case 7: return offset0 + diffs[4] + diffs[5] + diffs[6] + diffs[7]; break; \
+  default: abort();							\
+  }
+
+#define return_sum_rev(offset1,diffs,row) switch (row) {	\
+  case -1: return offset1; break;					\
+  case 0: return offset1 - diffs[0]; break;				\
+  case 1: return offset1 - diffs[0] - diffs[1]; break;			\
+  case 2: return offset1 - diffs[0] - diffs[1] - diffs[2]; break;	\
+  case 3: return offset1 - diffs[0] - diffs[1] - diffs[2] - diffs[3]; break; \
+  case 4: return offset1 - diffs[1] - diffs[2] - diffs[3] - diffs[4]; break; \
+  case 5: return offset1 - diffs[2] - diffs[3] - diffs[4] - diffs[5]; break; \
+  case 6: return offset1 - diffs[3] - diffs[4] - diffs[5] - diffs[6]; break; \
+  case 7: return offset1 - diffs[4] - diffs[5] - diffs[6] - diffs[7]; break; \
+  default: abort();							\
+  }
+
+#endif
+
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+vertical_order_fwd (UINT4 *vertical, UINT4 *columnar) {
+
+  vertical[0] = columnar[0];		/* remainder 1 */
+  vertical[4] = columnar[1];		/* remainder 5 */
+  vertical[8] = columnar[2];		/* remainder 9 */
+  vertical[12] = columnar[3];		/* remainder 13 */
+  vertical[16] = columnar[4];		/* remainder 17 */
+  vertical[20] = columnar[5];		/* remainder 21 */
+  vertical[24] = columnar[6];		/* remainder 25 */
+  vertical[28] = columnar[7];		/* remainder 29 */
+
+  vertical[1] = columnar[8];		/* remainder 2 */
+  vertical[5] = columnar[9];		/* remainder 6 */
+  vertical[9] = columnar[10];		/* remainder 10 */
+  vertical[13] = columnar[11];		/* remainder 14 */
+  vertical[17] = columnar[12];		/* remainder 18 */
+  vertical[21] = columnar[13];		/* remainder 22 */
+  vertical[25] = columnar[14];		/* remainder 26 */
+  vertical[29] = columnar[15];		/* remainder 30 */
+
+  vertical[2] = columnar[16];		/* remainder 3 */
+  vertical[6] = columnar[17];		/* remainder 7 */
+  vertical[10] = columnar[18];		/* remainder 11 */
+  vertical[14] = columnar[19];		/* remainder 15 */
+  vertical[18] = columnar[20];		/* remainder 19 */
+  vertical[22] = columnar[21];		/* remainder 23 */
+  vertical[26] = columnar[22];		/* remainder 27 */
+  vertical[30] = columnar[23];		/* remainder 31 */
+
+  vertical[3] = columnar[24];		/* remainder 4 */
+  vertical[7] = columnar[25];		/* remainder 8 */
+  vertical[11] = columnar[26];		/* remainder 12 */
+  vertical[15] = columnar[27];		/* remainder 16 */
+  vertical[19] = columnar[28];		/* remainder 20 */
+  vertical[23] = columnar[29];		/* remainder 24 */
+  vertical[27] = columnar[30];		/* remainder 28 */
+  vertical[31] = columnar[31];		/* remainder 32 */
+
+  return;
+}
+
+static void
+vertical_order_rev (UINT4 *vertical, UINT4 *columnar) {
+
+  vertical[0] = columnar[0];		/* remainder 63 */
+  vertical[4] = columnar[1];		/* remainder 59 */
+  vertical[8] = columnar[2];		/* remainder 55 */
+  vertical[12] = columnar[3];		/* remainder 51 */
+  vertical[16] = columnar[4];		/* remainder 47 */
+  vertical[20] = columnar[5];		/* remainder 43 */
+  vertical[24] = columnar[6];		/* remainder 39 */
+  vertical[28] = columnar[7];		/* remainder 35 */
+
+  vertical[1] = columnar[8];		/* remainder 62 */
+  vertical[5] = columnar[9];		/* remainder 58 */
+  vertical[9] = columnar[10];		/* remainder 54 */
+  vertical[13] = columnar[11];		/* remainder 50 */
+  vertical[17] = columnar[12];		/* remainder 46 */
+  vertical[21] = columnar[13];		/* remainder 42 */
+  vertical[25] = columnar[14];		/* remainder 38 */
+  vertical[29] = columnar[15];		/* remainder 34 */
+
+  vertical[2] = columnar[16];		/* remainder 61 */
+  vertical[6] = columnar[17];		/* remainder 57 */
+  vertical[10] = columnar[18];		/* remainder 53 */
+  vertical[14] = columnar[19];		/* remainder 49 */
+  vertical[18] = columnar[20];		/* remainder 45 */
+  vertical[22] = columnar[21];		/* remainder 41 */
+  vertical[26] = columnar[22];		/* remainder 37 */
+  vertical[30] = columnar[23];		/* remainder 33 */
+
+  vertical[3] = columnar[24];		/* remainder 60 */
+  vertical[7] = columnar[25];		/* remainder 56 */
+  vertical[11] = columnar[26];		/* remainder 52 */
+  vertical[15] = columnar[27];		/* remainder 48 */
+  vertical[19] = columnar[28];		/* remainder 44 */
+  vertical[23] = columnar[29];		/* remainder 40 */
+  vertical[27] = columnar[30];		/* remainder 36 */
+  vertical[31] = columnar[31];		/* remainder 32 */
+
+  return;
+}
+
+#if defined(HAVE_64_BIT) && (defined(UTILITYP) || defined(LARGE_GENOMES))
+static void
+vertical_order_huge_fwd (UINT8 *vertical, UINT4 *columnar) {
+
+  vertical[0] = (UINT8) columnar[0];		/* remainder 1 */
+  vertical[4] = (UINT8) columnar[1];		/* remainder 5 */
+  vertical[8] = (UINT8) columnar[2];		/* remainder 9 */
+  vertical[12] = (UINT8) columnar[3];		/* remainder 13 */
+  vertical[16] = (UINT8) columnar[4];		/* remainder 17 */
+  vertical[20] = (UINT8) columnar[5];		/* remainder 21 */
+  vertical[24] = (UINT8) columnar[6];		/* remainder 25 */
+  vertical[28] = (UINT8) columnar[7];		/* remainder 29 */
+
+  vertical[1] = (UINT8) columnar[8];		/* remainder 2 */
+  vertical[5] = (UINT8) columnar[9];		/* remainder 6 */
+  vertical[9] = (UINT8) columnar[10];		/* remainder 10 */
+  vertical[13] = (UINT8) columnar[11];		/* remainder 14 */
+  vertical[17] = (UINT8) columnar[12];		/* remainder 18 */
+  vertical[21] = (UINT8) columnar[13];		/* remainder 22 */
+  vertical[25] = (UINT8) columnar[14];		/* remainder 26 */
+  vertical[29] = (UINT8) columnar[15];		/* remainder 30 */
+
+  vertical[2] = (UINT8) columnar[16];		/* remainder 3 */
+  vertical[6] = (UINT8) columnar[17];		/* remainder 7 */
+  vertical[10] = (UINT8) columnar[18];		/* remainder 11 */
+  vertical[14] = (UINT8) columnar[19];		/* remainder 15 */
+  vertical[18] = (UINT8) columnar[20];		/* remainder 19 */
+  vertical[22] = (UINT8) columnar[21];		/* remainder 23 */
+  vertical[26] = (UINT8) columnar[22];		/* remainder 27 */
+  vertical[30] = (UINT8) columnar[23];		/* remainder 31 */
+
+  vertical[3] = (UINT8) columnar[24];		/* remainder 4 */
+  vertical[7] = (UINT8) columnar[25];		/* remainder 8 */
+  vertical[11] = (UINT8) columnar[26];		/* remainder 12 */
+  vertical[15] = (UINT8) columnar[27];		/* remainder 16 */
+  vertical[19] = (UINT8) columnar[28];		/* remainder 20 */
+  vertical[23] = (UINT8) columnar[29];		/* remainder 24 */
+  vertical[27] = (UINT8) columnar[30];		/* remainder 28 */
+  vertical[31] = (UINT8) columnar[31];		/* remainder 32 */
+
+  return;
+}
+#endif
+
+#if defined(HAVE_64_BIT) && (defined(UTILITYP) || defined(LARGE_GENOMES))
+static void
+vertical_order_huge_rev (UINT8 *vertical, UINT4 *columnar) {
+
+  vertical[0] = (UINT8) columnar[0];		/* remainder 63 */
+  vertical[4] = (UINT8) columnar[1];		/* remainder 59 */
+  vertical[8] = (UINT8) columnar[2];		/* remainder 55 */
+  vertical[12] = (UINT8) columnar[3];		/* remainder 51 */
+  vertical[16] = (UINT8) columnar[4];		/* remainder 47 */
+  vertical[20] = (UINT8) columnar[5];		/* remainder 43 */
+  vertical[24] = (UINT8) columnar[6];		/* remainder 39 */
+  vertical[28] = (UINT8) columnar[7];		/* remainder 35 */
+
+  vertical[1] = (UINT8) columnar[8];		/* remainder 62 */
+  vertical[5] = (UINT8) columnar[9];		/* remainder 58 */
+  vertical[9] = (UINT8) columnar[10];		/* remainder 54 */
+  vertical[13] = (UINT8) columnar[11];		/* remainder 50 */
+  vertical[17] = (UINT8) columnar[12];		/* remainder 46 */
+  vertical[21] = (UINT8) columnar[13];		/* remainder 42 */
+  vertical[25] = (UINT8) columnar[14];		/* remainder 38 */
+  vertical[29] = (UINT8) columnar[15];		/* remainder 34 */
+
+  vertical[2] = (UINT8) columnar[16];		/* remainder 61 */
+  vertical[6] = (UINT8) columnar[17];		/* remainder 57 */
+  vertical[10] = (UINT8) columnar[18];		/* remainder 53 */
+  vertical[14] = (UINT8) columnar[19];		/* remainder 49 */
+  vertical[18] = (UINT8) columnar[20];		/* remainder 45 */
+  vertical[22] = (UINT8) columnar[21];		/* remainder 41 */
+  vertical[26] = (UINT8) columnar[22];		/* remainder 37 */
+  vertical[30] = (UINT8) columnar[23];		/* remainder 33 */
+
+  vertical[3] = (UINT8) columnar[24];		/* remainder 60 */
+  vertical[7] = (UINT8) columnar[25];		/* remainder 56 */
+  vertical[11] = (UINT8) columnar[26];		/* remainder 52 */
+  vertical[15] = (UINT8) columnar[27];		/* remainder 48 */
+  vertical[19] = (UINT8) columnar[28];		/* remainder 44 */
+  vertical[23] = (UINT8) columnar[29];		/* remainder 40 */
+  vertical[27] = (UINT8) columnar[30];		/* remainder 36 */
+  vertical[31] = (UINT8) columnar[31];		/* remainder 32 */
+
+  return;
+}
+#endif
+
+#else
+
+static void
+vertical_order (UINT4 *vertical, UINT4 *columnar) {
+
+  vertical[0] = columnar[0];		/* remainder 1 */
+  vertical[4] = columnar[1];		/* remainder 5 */
+  vertical[8] = columnar[2];		/* remainder 9 */
+  vertical[12] = columnar[3];		/* remainder 13 */
+  vertical[16] = columnar[4];		/* remainder 17 */
+  vertical[20] = columnar[5];		/* remainder 21 */
+  vertical[24] = columnar[6];		/* remainder 25 */
+  vertical[28] = columnar[7];		/* remainder 29 */
+
+  vertical[1] = columnar[8];		/* remainder 2 */
+  vertical[5] = columnar[9];		/* remainder 6 */
+  vertical[9] = columnar[10];		/* remainder 10 */
+  vertical[13] = columnar[11];		/* remainder 14 */
+  vertical[17] = columnar[12];		/* remainder 18 */
+  vertical[21] = columnar[13];		/* remainder 22 */
+  vertical[25] = columnar[14];		/* remainder 26 */
+  vertical[29] = columnar[15];		/* remainder 30 */
+
+  vertical[2] = columnar[16];		/* remainder 3 */
+  vertical[6] = columnar[17];		/* remainder 7 */
+  vertical[10] = columnar[18];		/* remainder 11 */
+  vertical[14] = columnar[19];		/* remainder 15 */
+  vertical[18] = columnar[20];		/* remainder 19 */
+  vertical[22] = columnar[21];		/* remainder 23 */
+  vertical[26] = columnar[22];		/* remainder 27 */
+  vertical[30] = columnar[23];		/* remainder 31 */
+
+  vertical[3] = columnar[24];		/* remainder 4 */
+  vertical[7] = columnar[25];		/* remainder 8 */
+  vertical[11] = columnar[26];		/* remainder 12 */
+  vertical[15] = columnar[27];		/* remainder 16 */
+  vertical[19] = columnar[28];		/* remainder 20 */
+  vertical[23] = columnar[29];		/* remainder 24 */
+  vertical[27] = columnar[30];		/* remainder 28 */
+  vertical[31] = columnar[31];		/* remainder 32 */
+
+  vertical[32] = columnar[32];		/* remainder 63 */
+  vertical[36] = columnar[33];		/* remainder 59 */
+  vertical[40] = columnar[34];		/* remainder 55 */
+  vertical[44] = columnar[35];		/* remainder 51 */
+  vertical[48] = columnar[36];		/* remainder 47 */
+  vertical[52] = columnar[37];		/* remainder 43 */
+  vertical[56] = columnar[38];		/* remainder 39 */
+  vertical[60] = columnar[39];		/* remainder 35 */
+
+  vertical[33] = columnar[40];		/* remainder 62 */
+  vertical[37] = columnar[41];		/* remainder 58 */
+  vertical[41] = columnar[42];		/* remainder 54 */
+  vertical[45] = columnar[43];		/* remainder 50 */
+  vertical[49] = columnar[44];		/* remainder 46 */
+  vertical[53] = columnar[45];		/* remainder 42 */
+  vertical[57] = columnar[46];		/* remainder 38 */
+  vertical[61] = columnar[47];		/* remainder 34 */
+
+  vertical[34] = columnar[48];		/* remainder 61 */
+  vertical[38] = columnar[49];		/* remainder 57 */
+  vertical[42] = columnar[50];		/* remainder 53 */
+  vertical[46] = columnar[51];		/* remainder 49 */
+  vertical[50] = columnar[52];		/* remainder 45 */
+  vertical[54] = columnar[53];		/* remainder 41 */
+  vertical[58] = columnar[54];		/* remainder 37 */
+  vertical[62] = columnar[55];		/* remainder 33 */
+
+  vertical[35] = columnar[56];		/* remainder 60 */
+  vertical[39] = columnar[57];		/* remainder 56 */
+  vertical[43] = columnar[58];		/* remainder 52 */
+  vertical[47] = columnar[59];		/* remainder 48 */
+  vertical[51] = columnar[60];		/* remainder 44 */
+  vertical[55] = columnar[61];		/* remainder 40 */
+  vertical[59] = columnar[62];		/* remainder 36 */
+  vertical[63] = columnar[63];		/* remainder 32 */
+
+  return;
+}
+
+static void
+vertical_order_huge (UINT8 *vertical, UINT4 *columnar) {
+
+  vertical[0] = (UINT8) columnar[0];		/* remainder 1 */
+  vertical[4] = (UINT8) columnar[1];		/* remainder 5 */
+  vertical[8] = (UINT8) columnar[2];		/* remainder 9 */
+  vertical[12] = (UINT8) columnar[3];		/* remainder 13 */
+  vertical[16] = (UINT8) columnar[4];		/* remainder 17 */
+  vertical[20] = (UINT8) columnar[5];		/* remainder 21 */
+  vertical[24] = (UINT8) columnar[6];		/* remainder 25 */
+  vertical[28] = (UINT8) columnar[7];		/* remainder 29 */
+
+  vertical[1] = (UINT8) columnar[8];		/* remainder 2 */
+  vertical[5] = (UINT8) columnar[9];		/* remainder 6 */
+  vertical[9] = (UINT8) columnar[10];		/* remainder 10 */
+  vertical[13] = (UINT8) columnar[11];		/* remainder 14 */
+  vertical[17] = (UINT8) columnar[12];		/* remainder 18 */
+  vertical[21] = (UINT8) columnar[13];		/* remainder 22 */
+  vertical[25] = (UINT8) columnar[14];		/* remainder 26 */
+  vertical[29] = (UINT8) columnar[15];		/* remainder 30 */
+
+  vertical[2] = (UINT8) columnar[16];		/* remainder 3 */
+  vertical[6] = (UINT8) columnar[17];		/* remainder 7 */
+  vertical[10] = (UINT8) columnar[18];		/* remainder 11 */
+  vertical[14] = (UINT8) columnar[19];		/* remainder 15 */
+  vertical[18] = (UINT8) columnar[20];		/* remainder 19 */
+  vertical[22] = (UINT8) columnar[21];		/* remainder 23 */
+  vertical[26] = (UINT8) columnar[22];		/* remainder 27 */
+  vertical[30] = (UINT8) columnar[23];		/* remainder 31 */
+
+  vertical[3] = (UINT8) columnar[24];		/* remainder 4 */
+  vertical[7] = (UINT8) columnar[25];		/* remainder 8 */
+  vertical[11] = (UINT8) columnar[26];		/* remainder 12 */
+  vertical[15] = (UINT8) columnar[27];		/* remainder 16 */
+  vertical[19] = (UINT8) columnar[28];		/* remainder 20 */
+  vertical[23] = (UINT8) columnar[29];		/* remainder 24 */
+  vertical[27] = (UINT8) columnar[30];		/* remainder 28 */
+  vertical[31] = (UINT8) columnar[31];		/* remainder 32 */
+
+  vertical[32] = (UINT8) columnar[32];		/* remainder 63 */
+  vertical[36] = (UINT8) columnar[33];		/* remainder 59 */
+  vertical[40] = (UINT8) columnar[34];		/* remainder 55 */
+  vertical[44] = (UINT8) columnar[35];		/* remainder 51 */
+  vertical[48] = (UINT8) columnar[36];		/* remainder 47 */
+  vertical[52] = (UINT8) columnar[37];		/* remainder 43 */
+  vertical[56] = (UINT8) columnar[38];		/* remainder 39 */
+  vertical[60] = (UINT8) columnar[39];		/* remainder 35 */
+
+  vertical[33] = (UINT8) columnar[40];		/* remainder 62 */
+  vertical[37] = (UINT8) columnar[41];		/* remainder 58 */
+  vertical[41] = (UINT8) columnar[42];		/* remainder 54 */
+  vertical[45] = (UINT8) columnar[43];		/* remainder 50 */
+  vertical[49] = (UINT8) columnar[44];		/* remainder 46 */
+  vertical[53] = (UINT8) columnar[45];		/* remainder 42 */
+  vertical[57] = (UINT8) columnar[46];		/* remainder 38 */
+  vertical[61] = (UINT8) columnar[47];		/* remainder 34 */
+
+  vertical[34] = (UINT8) columnar[48];		/* remainder 61 */
+  vertical[38] = (UINT8) columnar[49];		/* remainder 57 */
+  vertical[42] = (UINT8) columnar[50];		/* remainder 53 */
+  vertical[46] = (UINT8) columnar[51];		/* remainder 49 */
+  vertical[50] = (UINT8) columnar[52];		/* remainder 45 */
+  vertical[54] = (UINT8) columnar[53];		/* remainder 41 */
+  vertical[58] = (UINT8) columnar[54];		/* remainder 37 */
+  vertical[62] = (UINT8) columnar[55];		/* remainder 33 */
+
+  vertical[35] = (UINT8) columnar[56];		/* remainder 60 */
+  vertical[39] = (UINT8) columnar[57];		/* remainder 56 */
+  vertical[43] = (UINT8) columnar[58];		/* remainder 52 */
+  vertical[47] = (UINT8) columnar[59];		/* remainder 48 */
+  vertical[51] = (UINT8) columnar[60];		/* remainder 44 */
+  vertical[55] = (UINT8) columnar[61];		/* remainder 40 */
+  vertical[59] = (UINT8) columnar[62];		/* remainder 36 */
+  vertical[63] = (UINT8) columnar[63];		/* remainder 32 */
+
+  return;
+}
+
+#endif
+
+
+
+#ifdef HAVE_SSE2
+typedef void (*Unpacker_T) (__m128i* __restrict__, const __m128i* __restrict__);
+#else
+typedef void (*Unpacker_T) (UINT4* __restrict__, const UINT4* __restrict__);
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static Unpacker_T unpacker_table[33] =
+  {unpack_00,
+   unpack_01, unpack_02, unpack_03, unpack_04,
+   unpack_05, unpack_06, unpack_07, unpack_08,
+   unpack_09, unpack_10, unpack_11, unpack_12,
+   unpack_13, unpack_14, unpack_15, unpack_16,
+   unpack_17, unpack_18, unpack_19, unpack_20,
+   unpack_21, unpack_22, unpack_23, unpack_24,
+   unpack_25, unpack_26, unpack_27, unpack_28,
+   unpack_29, unpack_30, unpack_31, unpack_32};
+#else
+#ifdef HAVE_SSE2
+static Unpacker_T unpacker_all_table[34] =
+  {unpack_00, unpack_00,
+   unpack_02_fwd, unpack_02_rev, unpack_04_fwd, unpack_04_rev,
+   unpack_06_fwd, unpack_06_rev, unpack_08_fwd, unpack_08_rev,
+   unpack_10_fwd, unpack_10_rev, unpack_12_fwd, unpack_12_rev,
+   unpack_14_fwd, unpack_14_rev, unpack_16_fwd, unpack_16_rev,
+   unpack_18_fwd, unpack_18_rev, unpack_20_fwd, unpack_20_rev,
+   unpack_22_fwd, unpack_22_rev, unpack_24_fwd, unpack_24_rev,
+   unpack_26_fwd, unpack_26_rev, unpack_28_fwd, unpack_28_rev,
+   unpack_30_fwd, unpack_30_rev, unpack_32_fwd, unpack_32_rev};
+
+/* Entry 16 in each packsize handles remainder == 64 => quarter_block == 4, column 3, row -1 */
+static Unpacker_T unpacker_table[17][17] = 
+  {{unpack_00_1, unpack_00_2, unpack_00_2, unpack_00_1,
+    unpack_00_1, unpack_00_2, unpack_00_2, unpack_00_1,
+    unpack_00_1, unpack_00_2, unpack_00_2, unpack_00_1,
+    unpack_00_1, unpack_00_2, unpack_00_2, unpack_00_1,
+    unpack_00_0},
+
+   {unpack_02_fwd_1, unpack_02_fwd_2, unpack_02_rev_2, unpack_02_rev_1,
+    unpack_02_fwd_3, unpack_02_fwd_4, unpack_02_rev_4, unpack_02_rev_3,
+    unpack_02_fwd_5, unpack_02_fwd_6, unpack_02_rev_6, unpack_02_rev_5, 
+    unpack_02_fwd_7, unpack_02_fwd_8, unpack_02_rev_8, unpack_02_rev_7,
+    unpack_00_0},
+
+   {unpack_04_fwd_1, unpack_04_fwd_2, unpack_04_rev_2, unpack_04_rev_1,
+    unpack_04_fwd_3, unpack_04_fwd_4, unpack_04_rev_4, unpack_04_rev_3,
+    unpack_04_fwd_5, unpack_04_fwd_6, unpack_04_rev_6, unpack_04_rev_5, 
+    unpack_04_fwd_7, unpack_04_fwd_8, unpack_04_rev_8, unpack_04_rev_7,
+    unpack_00_0},
+
+   {unpack_06_fwd_1, unpack_06_fwd_2, unpack_06_rev_2, unpack_06_rev_1,
+    unpack_06_fwd_3, unpack_06_fwd_4, unpack_06_rev_4, unpack_06_rev_3,
+    unpack_06_fwd_5, unpack_06_fwd_6, unpack_06_rev_6, unpack_06_rev_5, 
+    unpack_06_fwd_7, unpack_06_fwd_8, unpack_06_rev_8, unpack_06_rev_7,
+    unpack_00_0},
+
+   {unpack_08_fwd_1, unpack_08_fwd_2, unpack_08_rev_2, unpack_08_rev_1,
+    unpack_08_fwd_3, unpack_08_fwd_4, unpack_08_rev_4, unpack_08_rev_3,
+    unpack_08_fwd_5, unpack_08_fwd_6, unpack_08_rev_6, unpack_08_rev_5, 
+    unpack_08_fwd_7, unpack_08_fwd_8, unpack_08_rev_8, unpack_08_rev_7,
+    unpack_00_0},
+
+   {unpack_10_fwd_1, unpack_10_fwd_2, unpack_10_rev_2, unpack_10_rev_1,
+    unpack_10_fwd_3, unpack_10_fwd_4, unpack_10_rev_4, unpack_10_rev_3,
+    unpack_10_fwd_5, unpack_10_fwd_6, unpack_10_rev_6, unpack_10_rev_5, 
+    unpack_10_fwd_7, unpack_10_fwd_8, unpack_10_rev_8, unpack_10_rev_7,
+    unpack_00_0},
+
+   {unpack_12_fwd_1, unpack_12_fwd_2, unpack_12_rev_2, unpack_12_rev_1,
+    unpack_12_fwd_3, unpack_12_fwd_4, unpack_12_rev_4, unpack_12_rev_3,
+    unpack_12_fwd_5, unpack_12_fwd_6, unpack_12_rev_6, unpack_12_rev_5, 
+    unpack_12_fwd_7, unpack_12_fwd_8, unpack_12_rev_8, unpack_12_rev_7,
+    unpack_00_0},
+
+   {unpack_14_fwd_1, unpack_14_fwd_2, unpack_14_rev_2, unpack_14_rev_1,
+    unpack_14_fwd_3, unpack_14_fwd_4, unpack_14_rev_4, unpack_14_rev_3,
+    unpack_14_fwd_5, unpack_14_fwd_6, unpack_14_rev_6, unpack_14_rev_5, 
+    unpack_14_fwd_7, unpack_14_fwd_8, unpack_14_rev_8, unpack_14_rev_7,
+    unpack_00_0},
+
+   {unpack_16_fwd_1, unpack_16_fwd_2, unpack_16_rev_2, unpack_16_rev_1,
+    unpack_16_fwd_3, unpack_16_fwd_4, unpack_16_rev_4, unpack_16_rev_3,
+    unpack_16_fwd_5, unpack_16_fwd_6, unpack_16_rev_6, unpack_16_rev_5, 
+    unpack_16_fwd_7, unpack_16_fwd_8, unpack_16_rev_8, unpack_16_rev_7,
+    unpack_00_0},
+
+   {unpack_18_fwd_1, unpack_18_fwd_2, unpack_18_rev_2, unpack_18_rev_1,
+    unpack_18_fwd_3, unpack_18_fwd_4, unpack_18_rev_4, unpack_18_rev_3,
+    unpack_18_fwd_5, unpack_18_fwd_6, unpack_18_rev_6, unpack_18_rev_5, 
+    unpack_18_fwd_7, unpack_18_fwd_8, unpack_18_rev_8, unpack_18_rev_7,
+    unpack_00_0},
+
+   {unpack_20_fwd_1, unpack_20_fwd_2, unpack_20_rev_2, unpack_20_rev_1,
+    unpack_20_fwd_3, unpack_20_fwd_4, unpack_20_rev_4, unpack_20_rev_3,
+    unpack_20_fwd_5, unpack_20_fwd_6, unpack_20_rev_6, unpack_20_rev_5, 
+    unpack_20_fwd_7, unpack_20_fwd_8, unpack_20_rev_8, unpack_20_rev_7,
+    unpack_00_0},
+
+   {unpack_22_fwd_1, unpack_22_fwd_2, unpack_22_rev_2, unpack_22_rev_1,
+    unpack_22_fwd_3, unpack_22_fwd_4, unpack_22_rev_4, unpack_22_rev_3,
+    unpack_22_fwd_5, unpack_22_fwd_6, unpack_22_rev_6, unpack_22_rev_5, 
+    unpack_22_fwd_7, unpack_22_fwd_8, unpack_22_rev_8, unpack_22_rev_7,
+    unpack_00_0},
+
+   {unpack_24_fwd_1, unpack_24_fwd_2, unpack_24_rev_2, unpack_24_rev_1,
+    unpack_24_fwd_3, unpack_24_fwd_4, unpack_24_rev_4, unpack_24_rev_3,
+    unpack_24_fwd_5, unpack_24_fwd_6, unpack_24_rev_6, unpack_24_rev_5, 
+    unpack_24_fwd_7, unpack_24_fwd_8, unpack_24_rev_8, unpack_24_rev_7,
+    unpack_00_0},
+
+   {unpack_26_fwd_1, unpack_26_fwd_2, unpack_26_rev_2, unpack_26_rev_1,
+    unpack_26_fwd_3, unpack_26_fwd_4, unpack_26_rev_4, unpack_26_rev_3,
+    unpack_26_fwd_5, unpack_26_fwd_6, unpack_26_rev_6, unpack_26_rev_5, 
+    unpack_26_fwd_7, unpack_26_fwd_8, unpack_26_rev_8, unpack_26_rev_7,
+    unpack_00_0},
+
+   {unpack_28_fwd_1, unpack_28_fwd_2, unpack_28_rev_2, unpack_28_rev_1,
+    unpack_28_fwd_3, unpack_28_fwd_4, unpack_28_rev_4, unpack_28_rev_3,
+    unpack_28_fwd_5, unpack_28_fwd_6, unpack_28_rev_6, unpack_28_rev_5, 
+    unpack_28_fwd_7, unpack_28_fwd_8, unpack_28_rev_8, unpack_28_rev_7,
+    unpack_00_0},
+
+   {unpack_30_fwd_1, unpack_30_fwd_2, unpack_30_rev_2, unpack_30_rev_1,
+    unpack_30_fwd_3, unpack_30_fwd_4, unpack_30_rev_4, unpack_30_rev_3,
+    unpack_30_fwd_5, unpack_30_fwd_6, unpack_30_rev_6, unpack_30_rev_5, 
+    unpack_30_fwd_7, unpack_30_fwd_8, unpack_30_rev_8, unpack_30_rev_7,
+    unpack_00_0},
+
+   {unpack_32_fwd_1, unpack_32_fwd_2, unpack_32_rev_2, unpack_32_rev_1,
+    unpack_32_fwd_3, unpack_32_fwd_4, unpack_32_rev_4, unpack_32_rev_3,
+    unpack_32_fwd_5, unpack_32_fwd_6, unpack_32_rev_6, unpack_32_rev_5, 
+    unpack_32_fwd_7, unpack_32_fwd_8, unpack_32_rev_8, unpack_32_rev_7,
+    unpack_00_0},
+
+};
+   
+#else
+static Unpacker_T unpacker_all_table[33] =
+  {unpack_00,
+   unpack_00, unpack_02, unpack_00, unpack_04,
+   unpack_00, unpack_06, unpack_00, unpack_08,
+   unpack_00, unpack_10, unpack_00, unpack_12,
+   unpack_00, unpack_14, unpack_00, unpack_16,
+   unpack_00, unpack_18, unpack_00, unpack_20,
+   unpack_00, unpack_22, unpack_00, unpack_24,
+   unpack_00, unpack_26, unpack_00, unpack_28,
+   unpack_00, unpack_30, unpack_00, unpack_32};
+#endif
+#endif
+
+
+#define DIFFERENTIAL_METAINFO_SIZE 2
+#define PAIRED_METAINFO_SIZE 3
+
+#define get_column(s) (s) & 3 /* Not s % 4, which fails on negative values */
+#define get_row(s) (s) >> 2 /* Not s / 4, which fails on negative values */
+
+
+#if 0
+/* Use Bitpack64_read_two instead */
+
+/* bitpackpages: A list of b-mers (12-mers by default), ending with -1U */
+UINT4
+Bitpack64_offsetptr (UINT4 *end0, Storedoligomer_T oligo, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten, packsize_div2;
+  int delta, remainder0, remainder1, quarter_block_0, quarter_block_1, column, row;
+#ifdef HAVE_SSE2
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i diffs[3];
+#else
+  __m128i diffs[2];
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT4 psums[5];		/* Need 5 to handle case where remainder == 64 */
+#else
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+#else
+  UINT4 ptr;
+  int k, i;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+#endif
+#ifdef DEBUG
+  UINT4 offsets[BLOCKSIZE+1];
+#endif
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * DIFFERENTIAL_METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_offsetptr with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  /* packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten);
+
+  remainder0 = oligo % BLOCKSIZE;
+  remainder1 = remainder0 + 1;
+  if (remainder1 == 32) {
+    /* For the case (31,32), treat 32 as being in the first half-block.  Otherwise, 32 is in the second half-block */
+    quarter_block_0 = quarter_block_1 = 1;
+  } else {
+    quarter_block_0 = remainder0 / 16;
+    quarter_block_1 = remainder1 / 16;
+  }
+
+  debug(Bitpack64_block_offsets(offsets,oligo,bitpackptrs,bitpackcomp));
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+  psums[0] = psums[1] = info[1];
+  psums[2] = psums[3] = psums[4] = info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+  delta = 31 - abs(remainder1 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+  
+  (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+  *end0 = psums[quarter_block_1] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+
+
+  delta = 31 - abs(remainder0 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+  (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+  return psums[quarter_block_0] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+
+#else
+
+  /* Don't have to handle remainder == 0 as a special case for obtaining
+     ascending[n], if we use " <= n" in Bitpack64_write_differential */
+
+  if (quarter_block_1 <= 1) {
+    delta = remainder1 - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    *end0 = info[1] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    assign_sum_fwd(*end0,info[1],_diffs,row);
+#endif
+
+  } else {
+    delta = 63 - remainder1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    *end0 = info[DIFFERENTIAL_METAINFO_SIZE+1] - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    assign_sum_rev(*end0,info[DIFFERENTIAL_METAINFO_SIZE+1],_diffs,row);
+#endif
+  }
+
+  if (quarter_block_0 <= 1) {
+    delta = remainder0 - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    return info[1] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    return_sum_fwd(info[1],_diffs,row);
+#endif
+
+  } else {
+    delta = 63 - remainder0;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    return info[DIFFERENTIAL_METAINFO_SIZE+1] - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    return_sum_rev(info[DIFFERENTIAL_METAINFO_SIZE+1],_diffs,row);
+#endif
+  }
+
+#endif
+
+#else  /* HAVE_SSE2 */
+
+  offset0 = info[1];
+  offset1 = info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+#ifdef DEBUG
+  printf("oligo: %08X, remainder %d, offset0 %lu, offset1 %lu\n",
+	 oligo,oligo % BLOCKSIZE,info[1],info[DIFFERENTIAL_METAINFO_SIZE+1]);
+  printf("bitpack:\n");
+
+  for (i = 1; i <= BLOCKSIZE; i++) {
+    printf("%d ",diffs[i]);
+    if (i % (BLOCKSIZE/4) == 0) {
+      printf("\n");
+    } else if (i % (BLOCKSIZE/8) == 0) {
+      printf("| ");
+    }
+  }
+  printf("\n");
+  printf("end of diffs\n");
+#endif  
+
+  if ((remainder = oligo % BLOCKSIZE) == 0) {
+    ptr = offset0;
+
+  } else if (remainder <= 16) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  remainder++;
+  if (remainder == 64) {
+    *end0 = offset1;
+
+  } else if (remainder <= 16) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+  } else {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif	/* HAVE_SSE2 */
+
+}
+#endif
+
+
+#if 0
+/* Use Bitpack64_read_two_huge instead */
+
+/* bitpackpages: A list of b-mers (12-mers by default), ending with -1U */
+UINT8
+Bitpack64_offsetptr_huge (UINT8 *end0, Storedoligomer_T oligo,
+			  UINT4 *bitpackpages, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten;
+  UINT8 offset0, offset1;
+  UINT4 packsize_div2;
+  int delta, remainder0, remainder1, quarter_block_0, quarter_block_1, column, row;
+#ifdef HAVE_SSE2
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i diffs[3];
+#else
+  __m128i diffs[2];
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT8 psums[5];		/* Need 5 to handle case where remainder == 64 */
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+#else
+  UINT4 ptr;
+  int column, row, k, i;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+#endif
+  UINT4 *pageptr;
+#ifdef DEBUG
+  UINT4 offsets[BLOCKSIZE+1];
+#endif
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * DIFFERENTIAL_METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_offsetptr_huge with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  if (bitpackpages == NULL) {
+    offset0 = info[1];
+    offset1 = info[DIFFERENTIAL_METAINFO_SIZE+1];
+  } else {
+    offset0 = 0UL;
+    pageptr = bitpackpages;
+    while (bmer >= *pageptr) {
+      offset0 += POSITIONS_PAGE;
+      pageptr++;
+    }
+
+    offset1 = offset0;
+    if (bmer + 1 >= *pageptr) {
+      offset1 += POSITIONS_PAGE;
+      /* pageptr++; */
+    }
+
+    offset0 += info[1];
+    offset1 += info[DIFFERENTIAL_METAINFO_SIZE+1];
+  }
+
+  /* packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten);
+
+  remainder0 = oligo % BLOCKSIZE;
+  remainder1 = remainder0 + 1;
+  if (remainder1 == 32) {
+    /* For the case (31,32), treat 32 as being in the first half-block.  Otherwise, 32 is in the second half-block */
+    quarter_block_0 = quarter_block_1 = 1;
+  } else {
+    quarter_block_0 = remainder0 / 16;
+    quarter_block_1 = remainder1 / 16;
+  }
+
+  debug(Bitpack64_block_offsets(offsets,oligo,bitpackptrs,bitpackcomp));
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+  psums[0] = psums[1] = offset0;
+  psums[2] = psums[3] = psums[4] = offset1;
+
+  delta = 31 - abs(remainder1 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+  
+  (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+  *end0 = psums[quarter_block_1] + (INT4) (_diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4]);
+
+
+  delta = 31 - abs(remainder0 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+  (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+  return psums[quarter_block_0] + (INT4) (_diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4]);
+
+#else
+
+  if (quarter_block_1 <= 1) {
+    delta = remainder1 - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    *end0 = offset0 + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    assign_sum_fwd(*end0,offset0,_diffs,row);
+#endif
+
+  } else {
+    delta = 63 - remainder1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    *end0 = offset1 - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    assign_sum_rev(*end0,offset1,_diffs,row);
+#endif
+  }
+
+  if (quarter_block_0 <= 1) {
+    delta = remainder0 - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    return offset0 + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    return_sum_fwd(offset0,_diffs,row);
+#endif
+
+  } else {
+    delta = 63 - remainder0;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    return offset1 - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    return_sum_rev(offset1,_diffs,row);
+#endif
+  }
+
+#endif
+
+
+#else  /* HAVE_SSE2 */
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+#ifdef DEBUG
+  printf("oligo: %08X, remainder %d, offset0 %lu, offset1 %lu\n",
+	 oligo,oligo % BLOCKSIZE,info[1],info[DIFFERENTIAL_METAINFO_SIZE+1]);
+  printf("bitpack:\n");
+
+  for (i = 1; i <= BLOCKSIZE; i++) {
+    printf("%d ",diffs[i]);
+    if (i % (BLOCKSIZE/4) == 0) {
+      printf("\n");
+    } else if (i % (BLOCKSIZE/8) == 0) {
+      printf("| ");
+    }
+  }
+  printf("\n");
+  printf("end of diffs\n");
+#endif  
+
+  if ((remainder = oligo % BLOCKSIZE) == 0) {
+    ptr = offset0;
+
+  } else if (remainder <= 16) {
+    /* Compute necessary cumulative sums */
+    ptr = offset0 = info[1];
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    /* Compute necessary cumulative sums */
+    ptr = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  remainder++;
+  if (remainder == 64) {
+    *end0 = offset1;
+
+  } else if (remainder <= 16) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+  } else {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif	/* HAVE_SSE2 */
+}
+#endif
+
+
+#if 0
+/* bitpackpages: A list of b-mers (12-mers by default), ending with -1U */
+UINT4
+Bitpack64_offsetptr_paired (UINT4 *end0, Storedoligomer_T oligo, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  UINT4 ptr0;
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten, packsize_div2;
+  int delta, remainder, quarter_block, column, row;
+#ifdef HAVE_SSE2
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i diffs[3];
+#else
+  __m128i diffs[2];
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT4 psums[5];		/* Need 5 to handle case where remainder == 64 */
+#else
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+#else
+  UINT4 ptr;
+  int k, i;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+#endif
+#ifdef DEBUG
+  UINT4 offsets[BLOCKSIZE+1];
+#endif
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * PAIRED_METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_offsetptr_paired with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  /* packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[2] - nwritten);
+
+  remainder = oligo % BLOCKSIZE;
+  if (remainder == 31) {
+    /* For the case (31,32), treat 32 as being in the first half-block.  Otherwise, 32 is in the second half-block */
+    quarter_block = 1;
+  } else {
+    quarter_block = remainder / 16;
+  }
+
+  debug(Bitpack64_block_offsets(offsets,oligo,bitpackptrs,bitpackcomp));
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+  if (quarter_block <= 1) {
+    delta = remainder - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    ptr0 = info[1] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    assign_sum_fwd(ptr0,info[1],_diffs,row);
+#endif
+
+  } else {
+    delta = 63 - remainder;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    ptr0 = info[PAIRED_METAINFO_SIZE+1] - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    assign_sum_rev(ptr0,info[PAIRED_METAINFO_SIZE+1],_diffs,row);
+#endif
+  }
+
+  *end0 = ptr0 + Bitpack64_access_dispatch(bitpack,/*nwritten*/info[PAIRED_METAINFO_SIZE]-info[2],
+					   remainder);
+
+  return ptr0;
+
+#else  /* HAVE_SSE2 */
+
+  offset0 = info[1];
+  offset1 = info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+#ifdef DEBUG
+  printf("oligo: %08X, remainder %d, offset0 %lu, offset1 %lu\n",
+	 oligo,oligo % BLOCKSIZE,info[1],info[DIFFERENTIAL_METAINFO_SIZE+1]);
+  printf("bitpack:\n");
+
+  for (i = 1; i <= BLOCKSIZE; i++) {
+    printf("%d ",diffs[i]);
+    if (i % (BLOCKSIZE/4) == 0) {
+      printf("\n");
+    } else if (i % (BLOCKSIZE/8) == 0) {
+      printf("| ");
+    }
+  }
+  printf("\n");
+  printf("end of diffs\n");
+#endif  
+
+  if ((remainder = oligo % BLOCKSIZE) == 0) {
+    ptr = offset0;
+
+  } else if (remainder <= 16) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  remainder++;
+  if (remainder == 64) {
+    *end0 = offset1;
+
+  } else if (remainder <= 16) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+  } else {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif	/* HAVE_SSE2 */
+
+}
+#endif
+
+
+
+/* Needed for poly-T to avoid computing on metablock after the last
+   one to find end0 */
+UINT4
+Bitpack64_read_one (Storedoligomer_T oligo, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten, packsize_div2;
+  int delta, remainder, quarter_block, column, row;
+#ifdef HAVE_SSE2
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i diffs[3];
+#else
+  __m128i diffs[2];
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT4 psums[4];
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+#else
+  UINT4 ptr;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+  int k, i;
+#endif
+#ifdef DEBUG
+  UINT4 offsets[BLOCKSIZE+1];
+#endif
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * DIFFERENTIAL_METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_read_one with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  /* packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten);
+
+  remainder = oligo % BLOCKSIZE;
+  quarter_block = remainder / 16;
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+  psums[0] = psums[1] = info[1];
+  psums[2] = psums[3] = info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+  delta = 31 - abs(remainder - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+  (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+  return psums[quarter_block] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+
+#else
+
+  if (quarter_block <= 1) {
+    delta = remainder - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    return info[1] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    return_sum_fwd(info[1],_diffs,row);
+#endif
+
+  } else {
+    delta = 63 - remainder;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef BRANCH_FREE_ROW_SUM
+    return info[DIFFERENTIAL_METAINFO_SIZE+1] - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    return_sum_rev(info[DIFFERENTIAL_METAINFO_SIZE+1],_diffs,row);
+#endif
+  }
+
+#endif
+
+#else
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+  if (remainder <= 16) {
+    ptr = /*offset0*/info[1];
+
+    delta = remainder - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    ptr = /*offset0*/info[1];
+
+    delta = remainder - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = /*offset1*/info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+    delta = 63 - remainder;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = /*offset1*/info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+    delta = 63 - remainder;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif	/* HAVE_SSE2 */
+}
+
+
+/* Needed for poly-T to avoid computing on metablock after the last
+   one to find end0 */
+UINT8
+Bitpack64_read_one_huge (Storedoligomer_T oligo, UINT4 *bitpackpages,
+			 UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  UINT4 *pageptr;
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten, packsize_div2;
+  UINT8 offset0, offset1;
+  int delta, remainder, quarter_block, column, row;
+#ifdef HAVE_SSE2
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i diffs[3];
+#else
+  __m128i diffs[2];
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT8 psums[4];
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+#else
+  UINT8 ptr;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+  int k;
+#endif
+  int i;
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * DIFFERENTIAL_METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_read_one_huge with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  /* packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten);
+
+#ifdef DEBUG
+  printf("bitpack (for packsize %d):\n",packsize_div2*2);
+  for (i = 0; i < packsize_div2; i++) {
+    print_vector_hex(bitpack[i]);
+  }
+  printf("\n");
+#endif  
+
+  remainder = oligo % BLOCKSIZE;
+  quarter_block = remainder / 16;
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+  if (bitpackpages == NULL) {
+    offset0 = info[1];
+    offset1 = info[DIFFERENTIAL_METAINFO_SIZE+1];
+  } else {
+    offset0 = 0UL;
+    pageptr = bitpackpages;
+    while (bmer >= *pageptr) {
+      offset0 += POSITIONS_PAGE;
+      pageptr++;
+    }
+
+    offset1 = offset0;
+    if (bmer + 1 >= *pageptr) {
+      offset1 += POSITIONS_PAGE;
+      pageptr++;
+    }
+
+    offset0 += info[1];
+    offset1 += info[DIFFERENTIAL_METAINFO_SIZE+1];
+  }
+  debug(printf("offset0 = %lu, offset1 = %lu\n",offset0,offset1));
+
+  psums[0] = psums[1] = offset0;
+  psums[2] = psums[3] = offset1;
+
+  delta = 31 - abs(remainder - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+  (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef DEBUG
+  printf("%d %d %d %d\n",_diffs[0],_diffs[1],_diffs[2],_diffs[3]);
+  printf("%d %d %d %d\n",_diffs[4],_diffs[5],_diffs[6],_diffs[7]);
+  printf("%d %d %d %d\n",_diffs[8],_diffs[9],_diffs[10],_diffs[11]);
+  printf("%d %d %d %d\n",_diffs[12],_diffs[13],_diffs[14],_diffs[15]);
+#endif
+
+  debug(printf("Returning %lu + %d + %d + %d + %d\n",
+	       psums[quarter_block],_diffs[row+1],_diffs[row+2],_diffs[row+3],_diffs[row+4]));
+  return psums[quarter_block] + (INT4) (_diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4]);
+
+#else
+
+  if (quarter_block <= 1) {
+    offset0 = (UINT8) info[1];
+    if (bitpackpages != NULL) {
+      pageptr = bitpackpages;
+      while (bmer >= *pageptr) {
+	offset0 += POSITIONS_PAGE;
+	pageptr++;
+      }
+    }
+
+    delta = remainder - 1;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef DEBUG
+    printf("%u %u %u %u\n",_diffs[0],_diffs[1],_diffs[2],_diffs[3]);
+    printf("%u %u %u %u\n",_diffs[4],_diffs[5],_diffs[6],_diffs[7]);
+    printf("%u %u %u %u\n",_diffs[8],_diffs[9],_diffs[10],_diffs[11]);
+    printf("%u %u %u %u\n",_diffs[12],_diffs[13],_diffs[14],_diffs[15]);
+#endif
+
+#ifdef BRANCH_FREE_ROW_SUM
+    return offset0 + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+#else
+    return_sum_fwd(offset0,_diffs,row);
+#endif
+
+  } else {
+    offset1 = (UINT8) info[DIFFERENTIAL_METAINFO_SIZE+1];
+    if (bitpackpages != NULL) {
+      pageptr = bitpackpages;
+      while (bmer + 1 >= *pageptr) {
+	offset1 += POSITIONS_PAGE;
+	pageptr++;
+      }
+    }
+
+    delta = 63 - remainder;
+    column = get_column(delta);
+    row = get_row(delta);
+    debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block,delta,column,row));
+
+    (unpacker_table[packsize_div2][column*4 + quarter_block])(diffs,bitpack);
+#ifdef DEBUG
+    printf("%u %u %u %u\n",_diffs[0],_diffs[1],_diffs[2],_diffs[3]);
+    printf("%u %u %u %u\n",_diffs[4],_diffs[5],_diffs[6],_diffs[7]);
+    printf("%u %u %u %u\n",_diffs[8],_diffs[9],_diffs[10],_diffs[11]);
+    printf("%u %u %u %u\n",_diffs[12],_diffs[13],_diffs[14],_diffs[15]);
+#endif
+
+#ifdef BRANCH_FREE_ROW_SUM
+    return offset1 - _diffs[row+1] - _diffs[row+2] - _diffs[row+3] - _diffs[row+4];
+#else
+    return_sum_rev(offset1,_diffs,row);
+#endif
+  }
+
+#endif
+
+#else
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+  if ((remainder = oligo % BLOCKSIZE) == 0) {
+    ptr = /*offset0*/info[1];
+
+  } else if (remainder <= 16) {
+    ptr = /*offset0*/info[1];
+    if (bitpackpages != NULL) {
+      pageptr = bitpackpages;
+      while (bmer+1 >= *pageptr) {
+	ptr += POSITIONS_PAGE;
+	pageptr++;
+      }
+    }
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    ptr = /*offset0*/info[1];
+    if (bitpackpages != NULL) {
+      pageptr = bitpackpages;
+      while (bmer+1 >= *pageptr) {
+	ptr += POSITIONS_PAGE;
+	pageptr++;
+      }
+    }
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = /*offset1*/info[DIFFERENTIAL_METAINFO_SIZE+1];
+    if (bitpackpages != NULL) {
+      pageptr = bitpackpages;
+      while (bmer+1 >= *pageptr) {
+	ptr += POSITIONS_PAGE;
+	pageptr++;
+      }
+    }
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = /*offset1*/info[DIFFERENTIAL_METAINFO_SIZE+1];
+    if (bitpackpages != NULL) {
+      pageptr = bitpackpages;
+      while (bmer+1 >= *pageptr) {
+	ptr += POSITIONS_PAGE;
+	pageptr++;
+      }
+    }
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif
+}
+
+
+#ifndef PMAP
+/* Unpack all offsets.  Can treat offset0 as a special case */
+void
+Bitpack64_block_offsets (UINT4 *offsets, Storedoligomer_T oligo,
+			 UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  UINT4 *info, nwritten;
+  UINT4 offset0, offset1, temp;
+  int packsize, k;
+#ifdef HAVE_SSE2
+  __m128i diffs[8], *bitpack;
+  UINT4 *_diffs;
+#else
+  int column, row;
+  UINT4 diffs[BLOCKSIZE], columnar[BLOCKSIZE], *bitpack, *vertical;
+#endif
+#ifdef DEBUG
+  int i;
+#endif
+
+
+  info = &(bitpackptrs[oligo/BLOCKSIZE * DIFFERENTIAL_METAINFO_SIZE]);
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+  offset0 = info[1];
+  offset1 = info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+  packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2;
+
+#ifdef DEBUG
+  printf("oligo: %08X, nwritten %u, offset0 %lu, offset1 %lu, packsize %d\n",
+	 oligo,nwritten,offset0,offset1,packsize);
+#endif
+
+#ifdef HAVE_SSE2
+#ifdef DEBUG
+  printf("bitpack:\n");
+  for (i = 0; i < packsize/2; i++) {
+    print_vector_hex(bitpack[i]);
+  }
+  printf("\n");
+#endif  
+
+  _diffs = (UINT4 *) &(diffs[0]);
+
+  /* Unpack fwd 32 cumulative sums under SIMD */
+  (unpacker_all_table[packsize])(&(diffs[0]),bitpack);
+  vertical_order_fwd(&(offsets[1]),_diffs);
+
+  /* Unpack rev 32 cumulative sums under SIMD */
+  (unpacker_all_table[packsize+1])(&(diffs[0]),bitpack);
+  vertical_order_rev(&(offsets[33]),_diffs);
+
+#ifdef DEBUG
+  printf("%u\n",offsets[i]);
+  for (i = 1; i <= BLOCKSIZE; i += 4) {
+    printf("%u %u %u %u\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("end of diffs vertical\n");
+#endif
+
+
+#else
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize])(&(diffs[0]),bitpack);
+
+#ifdef DEBUG
+  for (i = 0; i < BLOCKSIZE i += 16) {
+    printf("%u %u %u %u ",diffs[i],diffs[i+1],diffs[i+2],diffs[i+3]);
+    printf("%u %u %u %u ",diffs[i+4],diffs[i+5],diffs[i+6],diffs[i+7]);
+    printf("%u %u %u %u ",diffs[i+8],diffs[i+9],diffs[i+10],diffs[i+11]);
+    printf("%u %u %u %u\n",diffs[i+12],diffs[i+13],diffs[i+14],diffs[i+15]);
+  }
+  printf("end of diffs horizontal (because non-SIMD unpackers are horizontal)\n");
+#endif
+
+  /* Convert to columnar */
+  vertical = &(diffs[0]);
+  for (column = 0; column < 4; column++) {
+    k = column;
+    for (row = 0; row < BLOCKSIZE/4; row++) {
+      columnar[k] = *vertical++;
+      k += 4;
+    }
+  }
+
+  /* Convert to vertical, shifting by 1 */
+  vertical_order(&(offsets[1]),columnar);
+
+#ifdef DEBUG
+  printf("%u\n",offset0);
+  for (i = 1; i <= BLOCKSIZE; i += 4) {
+    printf("%u %u %u %u\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("end of diffs vertical\n");
+#endif
+
+#endif	/* HAVE_SSE2 */
+
+  /* Perform cumulative sum */
+  offsets[0] = offset0;
+  offsets[1] += offset0;
+  offsets[2] += offset0;
+  offsets[3] += offset0;
+  offsets[4] += offset0;
+  for (k = 5; k <= 32; k++) {
+    offsets[k] += offsets[k-4];
+  }
+
+  /* Skip offsets[33] through offsets[36] */
+  for (k = 37; k <= BLOCKSIZE; k++) {
+    offsets[k] += offsets[k-4];
+  }
+
+  /* Now swap offsets */
+  for (k = 33; k <= 48; k++) {
+    temp = offsets[96-k];
+    offsets[96-k] = offset1 - offsets[k];
+    offsets[k] = offset1 - temp;
+  }
+  offsets[64] = offset1;
+
+
+#ifdef DEBUG
+  printf("%u\n",offsets[0]);
+  for (i = 1; i <= 32; i += 4) {
+    printf("%u %u %u %u\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("\n");
+  for (i = 33; i <= 64; i += 4) {
+    printf("%u %u %u %u\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("end of offsets\n");
+#endif
+
+  return;
+}
+#endif
+
+
+#ifndef PMAP
+#if defined(HAVE_64_BIT) && (defined(UTILITYP) || defined(LARGE_GENOMES))
+/* Unpack all offsets.  Can treat offset0 as a special case */
+void
+Bitpack64_block_offsets_huge (UINT8 *offsets, Storedoligomer_T oligo,
+			      UINT4 *bitpackpages, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  UINT4 *pageptr;
+  UINT4 *info, nwritten;
+  Storedoligomer_T bmer;
+  UINT8 offset0, offset1, temp;
+  int packsize, k;
+#ifdef HAVE_SSE2
+  __m128i diffs[8], *bitpack;
+  UINT4 *_diffs;
+#else
+  int column, row;
+  UINT4 diffs[BLOCKSIZE], columnar[BLOCKSIZE], *bitpack, *vertical;
+#endif
+#ifdef DEBUG
+  int i;
+#endif
+
+  bmer = oligo/BLOCKSIZE;
+
+  info = &(bitpackptrs[bmer * DIFFERENTIAL_METAINFO_SIZE]);
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  offset0 = offset1 = 0UL;
+  pageptr = bitpackpages;
+  while (bmer >= *pageptr) {
+    offset0 += POSITIONS_PAGE;
+    pageptr++;
+  }
+
+  offset1 = offset0;
+  if (bmer+1 >= *pageptr) {
+    offset1 += POSITIONS_PAGE;
+  }
+
+  offset0 += info[1];
+  offset1 += info[DIFFERENTIAL_METAINFO_SIZE+1];
+
+  packsize = (info[DIFFERENTIAL_METAINFO_SIZE] - nwritten)*2;
+
+
+#ifdef DEBUG
+  printf("oligo: %08X, nwritten %u, offset0 %lu, offset1 %lu, packsize %d\n",
+	 oligo,nwritten,offset0,offset1,packsize);
+#endif
+
+#ifdef HAVE_SSE2
+#ifdef DEBUG
+  printf("bitpack:\n");
+  for (i = 0; i < packsize/2; i++) {
+    print_vector_hex(bitpack[i]);
+  }
+  printf("\n");
+#endif
+
+  _diffs = (UINT4 *) &(diffs[0]);
+
+  /* Unpack fwd 32 cumulative sums under SIMD */
+  (unpacker_all_table[packsize])(&(diffs[0]),bitpack);
+  vertical_order_huge_fwd(&(offsets[1]),_diffs);
+
+  /* Unpack rev 32 cumulative sums under SIMD */
+  (unpacker_all_table[packsize+1])(&(diffs[0]),bitpack);
+  vertical_order_huge_rev(&(offsets[33]),_diffs);
+
+#ifdef DEBUG
+  printf("%lu\n",offsets[i]);
+  for (i = 1; i <= 64; i += 4) {
+    printf("%lu %lu %lu %lu\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("end of diffs vertical\n");
+#endif
+
+
+#else
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize])(&(diffs[0]),bitpack);
+
+#ifdef DEBUG
+  for (i = 0; i < 64; i += 16) {
+    printf("%u %u %u %u ",diffs[i],diffs[i+1],diffs[i+2],diffs[i+3]);
+    printf("%u %u %u %u ",diffs[i+4],diffs[i+5],diffs[i+6],diffs[i+7]);
+    printf("%u %u %u %u ",diffs[i+8],diffs[i+9],diffs[i+10],diffs[i+11]);
+    printf("%u %u %u %u\n",diffs[i+12],diffs[i+13],diffs[i+14],diffs[i+15]);
+  }
+  printf("end of diffs horizontal (because non-SIMD unpackers are horizontal)\n");
+#endif
+
+  /* Convert to columnar */
+  vertical = &(diffs[0]);
+  for (column = 0; column < 4; column++) {
+    k = column;
+    for (row = 0; row < 16; row++) {
+      columnar[k] = (UINT8) *vertical++;
+      k += 4;
+    }
+  }
+
+  /* Convert to vertical, shifting by 1 */
+  vertical_order_huge(&(offsets[1]),columnar);
+
+#ifdef DEBUG
+  printf("%lu\n",offset0);
+  for (i = 1; i <= 64; i += 4) {
+    printf("%lu %lu %lu %lu\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("end of diffs vertical\n");
+#endif
+
+#endif	/* HAVE_SSE2 */
+
+  /* Perform cumulative sum */
+  offsets[0] = offset0;
+  offsets[1] += offset0;
+  offsets[2] += offset0;
+  offsets[3] += offset0;
+  offsets[4] += offset0;
+  for (k = 5; k <= 32; k++) {
+    offsets[k] += offsets[k-4];
+  }
+
+  /* Skip offsets[33] through offsets[36] */
+  for (k = 37; k <= 64; k++) {
+    offsets[k] += offsets[k-4];
+  }
+
+  /* Now swap offsets */
+  for (k = 33; k <= 48; k++) {
+    temp = offsets[96-k];
+    offsets[96-k] = offset1 - offsets[k];
+    offsets[k] = offset1 - temp;
+  }
+  offsets[64] = offset1;
+
+
+#ifdef DEBUG
+  printf("%lu\n",offsets[0]);
+  for (i = 1; i <= 32; i += 4) {
+    printf("%lu %lu %lu %lu\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("\n");
+  for (i = 33; i <= 64; i += 4) {
+    printf("%lu %lu %lu %lu\n",offsets[i],offsets[i+1],offsets[i+2],offsets[i+3]);
+  }
+  printf("end of offsets\n");
+#endif
+
+  return;
+}
+#endif
+#endif
diff --git a/src/bitpack64-read.h b/src/bitpack64-read.h
new file mode 100644
index 0000000..c892bbd
--- /dev/null
+++ b/src/bitpack64-read.h
@@ -0,0 +1,30 @@
+#ifndef BITPACK64_READ_INCLUDED
+#define BITPACK64_READ_INCLUDED
+#include "types.h"
+
+/* For reading differential-coded bitstreams */
+
+extern UINT4
+Bitpack64_read_one (Storedoligomer_T oligo,
+		    UINT4 *bitpackptrs, UINT4 *bitpackcomp);
+
+extern UINT8
+Bitpack64_read_one_huge (Storedoligomer_T oligo, UINT4 *bitpackpages,
+			 UINT4 *bitpackptrs, UINT4 *bitpackcomp);
+
+#ifndef PMAP
+extern void
+Bitpack64_block_offsets (UINT4 *offsets, Storedoligomer_T oligo,
+			 UINT4 *bitpackptrs, UINT4 *bitpackcomp);
+#endif
+
+
+#ifndef PMAP
+#if defined(HAVE_64_BIT) && (defined(UTILITYP) || defined(LARGE_GENOMES))
+extern void
+Bitpack64_block_offsets_huge (UINT8 *offsets, Storedoligomer_T oligo,
+			      UINT4 *bitpackpages, UINT4 *bitpackptrs, UINT4 *bitpackcomp);
+#endif
+#endif
+
+#endif
diff --git a/src/bitpack64-readtwo.c b/src/bitpack64-readtwo.c
new file mode 100644
index 0000000..8f942e6
--- /dev/null
+++ b/src/bitpack64-readtwo.c
@@ -0,0 +1,14242 @@
+static char rcsid[] = "$Id: bitpack64-readtwo.c 132472 2014-04-06 02:02:52Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "bitpack64-readtwo.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+
+#define POSITIONS_PAGE 4294967296 /* 2^32 */
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+
+/* #define ALLOW_ODD_PACKSIZES 1 */
+
+/* Two ideas for branch-free code:
+   BRANCH_FREE_ROW_SUM simplifies the summation of the difference values to always add 4 values.
+   BRANCH_FREE_QTR_BLOCK avoids having if statements based on the quarter-block.
+
+   If BRANCH_FREE_QTR_BLOCK is selected, then BRANCH_FREE_ROW_SUM must also be selected, so
+
+   Case 1: BRANCH_FREE_ROW_SUM 0, BRANCH_FREE_QTR_BLOCK 0
+   Case 2: BRANCH_FREE_ROW_SUM 1, BRANCH_FREE_QTR_BLOCK 0
+   Case 3: BRANCH_FREE_ROW_SUM 1, BRANCH_FREE_QTR_BLOCK 1
+
+   Note that BRANCH_FREE_QTR_BLOCK can be tricky for 8-byte quantities, e.g.,
+   in Bitpack64_read_one_huge.  Would therefore recommend it be turned off.
+*/
+
+/* #define BRANCH_FREE_ROW_SUM 1 -- Not supported here */
+/* #define BRANCH_FREE_QTR_BLOCK 1 */
+
+#ifdef HAVE_SSE2
+#ifdef DEBUG
+/* For debugging */
+static void
+print_vector_hex (__m128i x) {
+  UINT4 *s = (UINT4 *) &x;
+
+  printf("%08X %08X %08X %08X\n",s[0],s[1],s[2],s[3]);
+  return;
+}
+
+static void
+print_vector (__m128i x) {
+  UINT4 *s = (UINT4 *) &x;
+
+  printf("%u %u %u %u\n",s[0],s[1],s[2],s[3]);
+  return;
+}
+#endif
+#endif
+
+
+#if 0
+#ifdef HAVE_SSE2
+#ifdef ALLOW_ODD_PACKSIZES
+static __m128i mask1, mask2, mask3, mask4, mask5, mask6, mask7, mask8,
+  mask9, mask10, mask11, mask12, mask13, mask14, mask15, mask16,
+  mask17, mask18, mask19, mask20, mask21, mask22, mask23, mask24,
+  mask25, mask26, mask27, mask28, mask29, mask30, mask31;
+#else
+static __m128i mask2, mask4, mask6, mask8, mask10, mask12, mask14, mask16,
+  mask18, mask20, mask22, mask24, mask26, mask28, mask30;
+#endif
+#endif
+#endif
+
+
+#define BLOCKSIZE 64
+
+#if 0
+void
+Bitpack64_read_setup () {
+
+#ifdef HAVE_SSE2
+#ifdef ALLOW_ODD_PACKSIZES
+  mask1 = _mm_set1_epi32(1U);
+  mask3 =  _mm_set1_epi32(7U);
+  mask5 =  _mm_set1_epi32(31U);
+  mask7 =  _mm_set1_epi32(127U);
+  mask9 =  _mm_set1_epi32(511U);
+  mask11 =  _mm_set1_epi32(2047U);
+  mask13 =  _mm_set1_epi32(8191U);
+  mask15 =  _mm_set1_epi32(32767U);
+  mask17 =  _mm_set1_epi32(131071U);
+  mask19 =  _mm_set1_epi32(524287U);
+  mask21 =  _mm_set1_epi32(2097151U);
+  mask23 =  _mm_set1_epi32(8388607U);
+  mask25 =  _mm_set1_epi32(33554431U);
+  mask27 =  _mm_set1_epi32(134217727U);
+  mask29 =  _mm_set1_epi32(536870911U);
+  mask31 =  _mm_set1_epi32(2147483647U);
+#endif
+  mask2 = _mm_set1_epi32(3U);
+  mask4 =  _mm_set1_epi32(15U);
+  mask6 =  _mm_set1_epi32(63U);
+  mask8 =  _mm_set1_epi32(255U);
+  mask10 =  _mm_set1_epi32(1023U);
+  mask12 =  _mm_set1_epi32(4095U);
+  mask14 =  _mm_set1_epi32(16383U);
+  mask16 =  _mm_set1_epi32(65535U);
+  mask18 =  _mm_set1_epi32(262143U);
+  mask20 =  _mm_set1_epi32(1048575U);
+  mask22 =  _mm_set1_epi32(4194303U);
+  mask24 =  _mm_set1_epi32(16777215U);
+  mask26 =  _mm_set1_epi32(67108863U);
+  mask28 =  _mm_set1_epi32(268435455U);
+  mask30 =  _mm_set1_epi32(1073741823U);
+#endif
+
+  return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_00 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i total = _mm_set1_epi32(0U);
+
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+  _mm_store_si128(out++, total);
+
+  return;
+}
+
+/* Handles the case where remainder == 64 => column 3, row -1 */
+static void
+unpack_00_0 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+
+  /* _mm_store_si128(out++, zero); -- Not needed, since row == -1 */
+
+  return;
+}
+
+
+static void
+unpack_00_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i zero = _mm_set1_epi32(0U);
+
+  /* 1 */
+  _mm_store_si128(out++, zero);
+
+  /* Skip row */
+  out++;
+
+  /* 3 */
+  _mm_store_si128(out++, zero);
+
+  return;
+}
+
+static void
+unpack_00_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i zero = _mm_set1_epi32(0U);
+
+  /* 2 */
+  _mm_store_si128(out++, zero);
+  _mm_store_si128(out++, zero);
+
+  /* 4 */
+  _mm_store_si128(out++, zero);
+  _mm_store_si128(out++, zero);
+
+  return;
+}
+
+
+#else
+static void
+unpack_00 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  int i;
+
+  for (i = 0; i < BLOCKSIZE; i++) {
+    *out++ = 0;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_01 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask1 = _mm_set1_epi32(1U);
+
+    OutReg = _mm_and_si128( InReg , mask1);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask1);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,15) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_02_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    OutReg = _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_02_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_02_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 5 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 6 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 7 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 1 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 8 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 2 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask2);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask2);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    InReg = _mm_load_si128(in);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,26) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_02_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,26) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 5 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 6 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,26) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 7 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 1 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_02_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask2 = _mm_set1_epi32(3U);
+
+    /* 8 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,28) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 2 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask2);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+
+static void
+unpack_02 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 2 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 2 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_03 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask3 =  _mm_set1_epi32(7U);
+
+    OutReg = _mm_and_si128( InReg , mask3);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,21) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,27) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 3 - 1), mask3));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask3);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_04_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    OutReg = _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_04_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 5 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 6 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 7 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 8 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 2 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_04_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_and_si128( InReg , mask4);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_04_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 1 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 2 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_04_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 1 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    return;
+}
+
+static void
+unpack_04_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask4 = _mm_set1_epi32(15U);
+
+    /* 8 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 2 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask4);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_04 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  UINT4 outer, inwordpointer;
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    for (outer = 0; outer < 2 ; outer++) {
+      for (inwordpointer = 0; inwordpointer < 32; inwordpointer +=  4) {
+	*(out++) = ( (*in) >> inwordpointer )   % (1U << 4 ) ;
+      }
+      in += 4;
+    }
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_05 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i  mask5 =  _mm_set1_epi32(31U);
+
+    OutReg = _mm_and_si128( InReg , mask5);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,25) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 5 - 3), mask5));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,23) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 5 - 1), mask5));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask5);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_06_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    OutReg = _mm_and_si128( InReg , mask6);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 4), mask6));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_06_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+  __m128i InReg;
+  __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask6);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 4), mask6));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 5 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 6 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 4), mask6));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask6);
+    _mm_store_si128(&(out[2]), total);
+
+    /* 7 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask6);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+    /* 8 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask6);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask6);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_06_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 1 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 2 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 6 - 2), mask6));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 5 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 6 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+
+}
+
+static void
+unpack_06_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    /* 7 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_06_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask6 =  _mm_set1_epi32(63U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+    /* 8 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask6);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_06 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 6 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 6 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 6 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 6 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 6 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 6 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_07 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask7 =  _mm_set1_epi32(127U);
+
+    OutReg = _mm_and_si128( InReg , mask7);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,21) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 7 - 3), mask7));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,17) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,24) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 7 - 6), mask7));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 7 - 2), mask7));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask7);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_08_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_08_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_08_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(&(out[2]), total);
+
+    /* 7 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+    /* 8 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+static void
+unpack_08_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_08_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 1 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 2 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 3 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 4 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 5 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 6 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 1 first */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    /* 7 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_08_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask8 =  _mm_set1_epi32(255U);
+
+    /* 2 first */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask8);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_08 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  UINT4 outer, inwordpointer;
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    for (outer = 0; outer < 4; outer++) {
+      for (inwordpointer = 0; inwordpointer < 32; inwordpointer += 8) {
+	*(out++) = ( (*in) >> inwordpointer )   % (1U << 8 ) ;
+      }
+      in += 4;
+    }
+  }
+
+  return;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_09 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask9 =  _mm_set1_epi32(511U);
+
+    OutReg = _mm_and_si128( InReg , mask9);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 4), mask9));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,22) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 8), mask9));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,17) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 3), mask9));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,21) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 9 - 7), mask9));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask9);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_10_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    OutReg = _mm_and_si128( InReg , mask10);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 8), mask10));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_10_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask10);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 8), mask10));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,20) , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 8), mask10));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask10);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,18) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask10);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask10);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 6), mask10));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask10);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 4), mask10));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_10_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 1 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 2 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 4), mask10));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 3 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 4 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 5 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 6 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 2), mask10));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 1 first */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_10_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask10 =  _mm_set1_epi32(1023U);
+
+    /* 2 first */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 10 - 4), mask10));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask10);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_10 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 10 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 10 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 10 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 10 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 10 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 10 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 10 ) ;
+    out++;
+
+  }
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_11 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask11 =  _mm_set1_epi32(2047U);
+
+    OutReg = _mm_and_si128( InReg , mask11);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 1), mask11));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 2), mask11));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 3), mask11));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 4), mask11));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 11 - 5), mask11));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask11);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_12_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    OutReg = _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_12_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask12);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_12_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 1 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 2 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 3 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 4 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 4), mask12));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 5 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 6 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 12 - 8), mask12));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 1 first */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_12_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask12 =  _mm_set1_epi32(4095U);
+
+    /* 2 first */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask12);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_12 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 12 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 12 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 12 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 12 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 12 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 12 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 12 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 12 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_13 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask13 =  _mm_set1_epi32(8191U);
+
+    OutReg = _mm_and_si128( InReg , mask13);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 7), mask13));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 1), mask13));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 8), mask13));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 2), mask13));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 9), mask13));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 13 - 3), mask13));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask13);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_14_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    OutReg = _mm_and_si128( InReg , mask14);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_14_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask14);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask14);
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 3 */
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 4 */
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 10), mask14));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 6), mask14));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask14);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask14);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 2), mask14));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask14);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 12), mask14));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 8), mask14));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 4), mask14));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_14_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 1 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 2 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 12), mask14));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 8), mask14));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 3 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 4 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 8), mask14));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 4), mask14));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 5 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 6 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 4), mask14));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 1 first */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_14_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask14 =  _mm_set1_epi32(16383U);
+
+    /* 2 first */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,16) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 14 - 12), mask14));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask14);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_14 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 14 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 14 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 14 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 14 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 14 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 14 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 14 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 14 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 14 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_15 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask15 =  _mm_set1_epi32(32767U);
+
+    OutReg = _mm_and_si128( InReg , mask15);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,15) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 13), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,13) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 11), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 9), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 7), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 5), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 3), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,3) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 15 - 1), mask15));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask15);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_16_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_16_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 5 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 6 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask16);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_16_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 1 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 2 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 3 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 4 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 5 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 6 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 1 first */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_16_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask16 =  _mm_set1_epi32(65535U);
+
+    /* 2 first */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    /* InReg = _mm_load_si128(++in); */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask16);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_16 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  UINT4 outer, inwordpointer;
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    for (outer = 0; outer < 8; outer++) {
+      for(inwordpointer =  0; inwordpointer <32; inwordpointer += 16) {
+	*(out++) = ( (*in) >> inwordpointer )   % (1U << 16 ) ;
+      }
+      in += 4;
+    }
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_17 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask17 =  _mm_set1_epi32(131071U);
+
+    OutReg = _mm_and_si128( InReg , mask17);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 2), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 4), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 6), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 8), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 10), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 12), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 14), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,14) , mask17);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 17 - 16), mask17));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_18_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    OutReg = _mm_and_si128( InReg , mask18);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 4), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 8), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 12), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 16), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_18_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask18);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 4), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 8), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 8), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 12), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 5 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 6 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 12), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 16), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask18);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask18);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 4), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+
+    /* 8 second */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask18);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 16), mask18));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask18);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_18_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 1 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 2 */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    return;
+}
+
+static void
+unpack_18_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 3 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 4 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 6), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 5 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 6 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 10), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 1 first */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (7 - 5);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_18_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask18 =  _mm_set1_epi32(262143U);
+
+    /* 2 first */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 2), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask18);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (7 - 5);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 18 - 14), mask18));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_18 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 18 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 18 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 18 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 18 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 18 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 18 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 18 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 18 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 18 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 18 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 18 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_19 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask19 =  _mm_set1_epi32(524287U);
+
+    OutReg = _mm_and_si128( InReg , mask19);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 6), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 12), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,12) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 18), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 5), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 11), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,11) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 17), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 4), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 10), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask19);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 19 - 16), mask19));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_20_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    OutReg = _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_20_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    return;
+
+}
+
+static void
+unpack_20_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 5 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 6 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (3 - 1);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg = _mm_and_si128( InReg , mask20);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_20_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 1 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 2 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+} 
+
+static void
+unpack_20_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 3 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 4 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 16), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+
+} 
+
+static void
+unpack_20_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 5 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 6 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 4), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 1 first */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (8 - 5);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_20_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask20 =  _mm_set1_epi32(1048575U);
+
+    /* 2 first */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask20);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 8), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (8 - 6);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 20 - 12), mask20));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_20 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 20 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 20 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 20 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 20 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 20 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 20 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 20 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 20 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 20 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 20 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 20 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 20 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_21 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask21 =  _mm_set1_epi32(2097151U);
+
+    OutReg = _mm_and_si128( InReg , mask21);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 10), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,10) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 20), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 9), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,9) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 19), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 8), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 18), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 7), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,7) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 17), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 6), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask21);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 21 - 16), mask21));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_22_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    OutReg = _mm_and_si128( InReg , mask22);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 12), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 4), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 16), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_22_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask22);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask22);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 12), mask22));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask22);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 2), mask22));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask22);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 4), mask22));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 5 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 6 */
+    in += 2;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 14), mask22));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 4), mask22));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 16), mask22));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask22);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (4 - 0);
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask22);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 12), mask22));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (4 - 1);
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask22);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 16), mask22));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 8), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 20), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_22_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 1 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 2 */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 8), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    return;
+}
+
+static void
+unpack_22_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 3 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 4 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 18), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 8), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 20), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 5 */
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 6 */
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,8) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 20), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 1 first */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (9 - 6);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_22_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask22 =  _mm_set1_epi32(4194303U);
+
+    /* 2 first */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 6), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask22);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (9 - 6);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 22 - 10), mask22));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_22 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 22 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 22 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 22 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 22 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 22 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 22 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 18 ))<<( 22 - 18 );
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 22 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 22 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 22 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 22 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 22 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 22 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_23 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask23 =  _mm_set1_epi32(8388607U);
+
+    OutReg = _mm_and_si128( InReg , mask23);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 14), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 5), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 19), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 10), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 1), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 15), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,15) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 6), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,6) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 20), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 11), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,11) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 2), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask23);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 23 - 16), mask23));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_24_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_24_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 5 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 6 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 4;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (4 - 1);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128( InReg , mask24);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_24_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 1 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 2 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 3 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 4 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 5 */
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 6 */
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 1 first */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (10 - 6);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_24_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask24 =  _mm_set1_epi32(16777215U);
+
+    /* 2 first */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask24);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 16), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (10 - 7);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 24 - 8), mask24));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_24 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 24 ) ;
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 24 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 24 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 24 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 24 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_25 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask25 =  _mm_set1_epi32(33554431U);
+
+    OutReg = _mm_and_si128( InReg , mask25);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 18), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 11), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,11) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 4), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask25);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 22), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 15), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,15) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 8), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 1), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,1) , mask25);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 19), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 12), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 5), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,5) , mask25);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 23), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 25 - 16), mask25));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_26_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    OutReg = _mm_and_si128( InReg , mask26);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 20), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 8), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask26);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 16), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_26_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask26);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask26);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 20), mask26));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 8), mask26));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 14), mask26));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 8), mask26));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask26);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 5 */
+    in += 3;    
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 6 */
+    in += 3;    
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 2), mask26));
+    _mm_store_si128(out++, total);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask26);
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 16), mask26));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+    return;
+}
+
+static void
+unpack_26_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask26);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 4;    
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask26);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 20), mask26));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (4 - 1);    
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 22), mask26));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 16), mask26));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 4), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 24), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 12), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_26_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 1 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 2 */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 4), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 24), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 3 */
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 4 */
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask26);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 24), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 12), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 5 */
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 6 */
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 18), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 12), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 1 first */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (11 - 7);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_26_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask26 =  _mm_set1_epi32(67108863U);
+
+    /* 2 first */
+    in += 6;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 10), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 4), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (11 - 8);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 26 - 6), mask26));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_26 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 26 ) ;
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 26 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 26 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 26 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 26 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 26 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 22 ))<<( 26 - 22 );
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 26 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 26 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 26 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 26 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 26 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 18 ))<<( 26 - 18 );
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 26 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 26 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 26 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 26 ) ;
+    out++;
+  }
+  
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_27 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask27 =  _mm_set1_epi32(134217727U);
+
+    OutReg = _mm_and_si128( InReg , mask27);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 22), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 17), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 12), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 7), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,7) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 2), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask27);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 24), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 19), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 14), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 9), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,9) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 4), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,4) , mask27);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 26), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 21), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 27 - 16), mask27));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_28_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    OutReg = _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_28_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 5 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 6 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 1 first  */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (5 - 1);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg = _mm_and_si128( InReg , mask28);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_28_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 1 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 2 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+    return;
+}
+
+static void
+unpack_28_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 3 */
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 4 */
+    in += 8;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 20), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 16), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 5 */
+    in += 10;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 6 */
+    in += 10;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 12), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 8), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 1 first */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (12 - 7);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_28_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask28 =  _mm_set1_epi32(268435455U);
+
+    /* 2 first */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask28);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 24), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (12 - 8);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 28 - 4), mask28));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+#else
+static void
+unpack_28 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 28 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 28 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 28 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 28 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 28 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 28 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 28 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 28 ) ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   % (1U << 28 ) ;
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 28 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 28 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 28 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 28 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 28 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 28 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 28 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 28 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_29 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask29 =  _mm_set1_epi32(536870911U);
+
+    OutReg = _mm_and_si128( InReg , mask29);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 26), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 23), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 20), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 17), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 14), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 11), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,11) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 8), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 5), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,5) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 2), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_and_si128(  _mm_srli_epi32(InReg,2) , mask29);
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 28), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 25), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 22), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 19), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 29 - 16), mask29));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_30_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    OutReg = _mm_and_si128( InReg , mask30);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 28), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 24), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 20), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 16), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_30_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 1 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask30);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 2 */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask30);
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 28), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 24), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 4 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 26), mask30));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 24), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 20), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 5 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 6 */
+    in += 3;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 22), mask30));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 20), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 16), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 1 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask30);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 5;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 2 first */
+    InReg = _mm_load_si128(in);
+
+    total = /* OutReg = */ _mm_and_si128( InReg , mask30);
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 28), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (5 - 1);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 18), mask30));
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 16), mask30));
+    total = _mm_add_epi32(total, OutReg);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 12), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 8), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 4), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,2) ;
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_30_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 1 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 2 */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 12), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 8), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+    return;
+}
+
+static void
+unpack_30_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 3 */
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 4 */
+    in += 9;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,12) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 10), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,10) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 8), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 4), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 5 */
+    in += 11;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    InReg = _mm_load_si128(++in);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 6 */
+    in += 11;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,8) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 6), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,6) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 4), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,2) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 1 first */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (13 - 8);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_30_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg;
+    __m128i OutReg, total;
+    const __m128i mask30 =  _mm_set1_epi32(1073741823U);
+
+    /* 2 first */
+    in += 7;
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,16) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 14), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+    OutReg =   _mm_srli_epi32(InReg,14) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 12), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (13 - 9);
+    InReg = _mm_load_si128(in);
+
+    OutReg =   _mm_srli_epi32(InReg,4) ;
+    InReg = _mm_load_si128(++in);
+
+    total = /* OutReg = */ _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 30 - 2), mask30));
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+    OutReg =   _mm_srli_epi32(InReg,2) ;
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, OutReg);
+#else
+    total = _mm_add_epi32(total, OutReg);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+#else
+static void
+unpack_30 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   % (1U << 30 ) ;
+    out++;
+    *out = ( (*in) >>  30  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 28 ))<<( 30 - 28 );
+    out++;
+    *out = ( (*in) >>  28  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 26 ))<<( 30 - 26 );
+    out++;
+    *out = ( (*in) >>  26  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 24 ))<<( 30 - 24 );
+    out++;
+    *out = ( (*in) >>  24  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 22 ))<<( 30 - 22 );
+    out++;
+    *out = ( (*in) >>  22  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 20 ))<<( 30 - 20 );
+    out++;
+    *out = ( (*in) >>  20  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 18 ))<<( 30 - 18 );
+    out++;
+    *out = ( (*in) >>  18  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 16 ))<<( 30 - 16 );
+    out++;
+    *out = ( (*in) >>  16  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 14 ))<<( 30 - 14 );
+    out++;
+    *out = ( (*in) >>  14  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 12 ))<<( 30 - 12 );
+    out++;
+    *out = ( (*in) >>  12  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 10 ))<<( 30 - 10 );
+    out++;
+    *out = ( (*in) >>  10  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 8 ))<<( 30 - 8 );
+    out++;
+    *out = ( (*in) >>  8  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 6 ))<<( 30 - 6 );
+    out++;
+    *out = ( (*in) >>  6  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 4 ))<<( 30 - 4 );
+    out++;
+    *out = ( (*in) >>  4  )   % (1U << 30 ) ;
+    in += 4;
+    *out |= ((*in) % (1U<< 2 ))<<( 30 - 2 );
+    out++;
+    *out = ( (*in) >>  2  )   % (1U << 30 ) ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static void
+unpack_31 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i InReg = _mm_load_si128(in);
+    __m128i OutReg;
+    const __m128i mask31 =  _mm_set1_epi32(2147483647U);
+
+    OutReg = _mm_and_si128( InReg , mask31);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,31) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 30), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,30) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 29), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,29) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 28), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,28) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 27), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,27) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 26), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,26) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 25), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,25) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 24), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,24) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 23), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,23) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 22), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,22) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 21), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,21) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 20), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,20) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 19), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,19) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 18), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,18) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 17), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg =   _mm_srli_epi32(InReg,17) ;
+    InReg = _mm_load_si128(++in);
+
+    OutReg = _mm_or_si128(OutReg, _mm_and_si128(_mm_slli_epi32(InReg, 31 - 16), mask31));
+    /* total = _mm_add_epi32(total, OutReg); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+static void
+unpack_32_fwd (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i OutReg;
+
+    OutReg = _mm_load_si128(in++);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_32_fwd_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 1 */
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    in += 2;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 2 */
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    /* 4 */
+    total = _mm_load_si128(++in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 3 */
+    in += 2;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    in += 2;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 4 */
+    in += 2;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    /* 6 */
+    total = _mm_load_si128(++in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 5 */
+    in += 4;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    in += 2;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 6 */
+    in += 4;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    /* 8 */
+    total = _mm_load_si128(++in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 1 first */
+    total = _mm_load_si128(in);
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += 6;
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_fwd_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 2 first */
+    total = _mm_load_si128(in);
+    _mm_store_si128(&(out[2]), total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (6 - 1);
+    total = _mm_load_si128(in);
+    _mm_store_si128(out++, total);
+
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i OutReg;
+
+    in += 8;
+
+    OutReg = _mm_load_si128(in++);
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    OutReg = _mm_load_si128(in++);
+    /* total = _mm_add_epi32(total, _mm_load_si128(in++)); */
+    _mm_store_si128(out++, OutReg);
+
+    return;
+}
+
+static void
+unpack_32_rev_1_3 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 1 */
+    in += 8;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 3 */
+    in += 2;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_2_4 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 2 */
+    in += 8;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 4 */
+    total = _mm_load_si128(++in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_3_5 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 3 */
+    in += 10;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 5 */
+    in += 2;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_4_6 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 4 */
+    in += 10;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 6 */
+    total = _mm_load_si128(++in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_5_7 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 5 */
+    in += 12;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    /* Skip row */
+    out++;
+
+    /* 7 */
+    in += 2;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_6_8 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 6 */
+    in += 12;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+
+    /* 8 */
+    total = _mm_load_si128(++in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_7_1 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 1 first */
+    in += 8;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+
+    /* 7 second */
+    in += (14 - 8);
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(dummy,total);
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+static void
+unpack_32_rev_8_2 (__m128i* __restrict__ out, const __m128i* __restrict__ in) {
+    __m128i total;
+
+    /* 2 first */
+    in += 8;
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(&(out[2]), total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(&(out[3]), total);
+
+
+    /* 8 second */
+    in += (14 - 9);
+    total = _mm_load_si128(in);
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(_mm_set1_epi32(0U),total);
+#endif
+    _mm_store_si128(out++, total);
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+    total = _mm_sub_epi32(total, _mm_load_si128(++in));
+#else
+    total = _mm_add_epi32(total, _mm_load_si128(++in));
+#endif
+    _mm_store_si128(out++, total);
+
+    return;
+}
+
+
+
+#else
+static void
+unpack_32 (UINT4* __restrict__ out, const UINT4* __restrict__ in) {
+  unsigned int column;
+  const UINT4 *bitpack = in;
+
+  for (column = 0; column < 4; column++) {
+    in = &(bitpack[column]);
+
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    in += 4;
+    out++;
+    *out = ( (*in) >>  0  )   ;
+    out++;
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef PARTIAL_BRANCH_ROW_SUM
+
+#define assign_sum_fwd(x,offset0,diffs,row) switch (row) {	\
+  case -1: x = offset0; break;					\
+  case 0: x = offset0 + diffs[0]; break;			\
+  case 1: x = offset0 + diffs[0] + diffs[1]; break;			\
+  case 2: x = offset0 + diffs[0] + diffs[1] + diffs[2]; break;		\
+  default: x = offset0 + diffs[row-3] + diffs[row-2] + diffs[row-1] + diffs[row]; \
+  }
+
+#define assign_sum_rev(x,offset1,diffs,row) switch (row) {	\
+  case -1: x = offset1; break;					\
+  case 0: x = offset1 - diffs[0]; break;			\
+  case 1: x = offset1 - diffs[0] - diffs[1]; break;			\
+  case 2: x = offset1 - diffs[0] - diffs[1] - diffs[2]; break;		\
+  default: x = offset1 - diffs[row-3] - diffs[row-2] - diffs[row-1] - diffs[row]; \
+  }
+
+#define return_sum_fwd(offset0,diffs,row) switch (row) {	\
+  case -1: return offset0;					\
+  case 0: return offset0 + diffs[0];				\
+  case 1: return offset0 + diffs[0] + diffs[1];			\
+  case 2: return offset0 + diffs[0] + diffs[1] + diffs[2];		\
+  default: return offset0 + diffs[row-3] + diffs[row-2] + diffs[row-1] + diffs[row]; \
+  }
+
+#define return_sum_rev(offset1,diffs,row) switch (row) {	\
+  case -1: return offset1;					\
+  case 0: return offset1 - diffs[0];				\
+  case 1: return offset1 - diffs[0] - diffs[1];			\
+  case 2: return offset1 - diffs[0] - diffs[1] - diffs[2];		\
+  default: return offset1 - diffs[row-3] - diffs[row-2] - diffs[row-1] - diffs[row]; \
+  }
+
+#else
+
+#define assign_sum_fwd(x,offset0,diffs,row) switch (row) {	\
+  case -1: x = offset0; break;						\
+  case 0: x = offset0 + diffs[0]; break;				\
+  case 1: x = offset0 + diffs[0] + diffs[1]; break;			\
+  case 2: x = offset0 + diffs[0] + diffs[1] + diffs[2]; break;		\
+  case 3: x = offset0 + diffs[0] + diffs[1] + diffs[2] + diffs[3]; break; \
+  case 4: x = offset0 + diffs[1] + diffs[2] + diffs[3] + diffs[4]; break; \
+  case 5: x = offset0 + diffs[2] + diffs[3] + diffs[4] + diffs[5]; break; \
+  case 6: x = offset0 + diffs[3] + diffs[4] + diffs[5] + diffs[6]; break; \
+  case 7: x = offset0 + diffs[4] + diffs[5] + diffs[6] + diffs[7]; break; \
+  default: abort();							\
+  }
+
+#define assign_sum_rev(x,offset1,diffs,row) switch (row) {	\
+  case -1: x = offset1; break;						\
+  case 0: x = offset1 - diffs[0]; break;				\
+  case 1: x = offset1 - diffs[0] - diffs[1]; break;			\
+  case 2: x = offset1 - diffs[0] - diffs[1] - diffs[2]; break;		\
+  case 3: x = offset1 - diffs[0] - diffs[1] - diffs[2] - diffs[3]; break; \
+  case 4: x = offset1 - diffs[1] - diffs[2] - diffs[3] - diffs[4]; break; \
+  case 5: x = offset1 - diffs[2] - diffs[3] - diffs[4] - diffs[5]; break; \
+  case 6: x = offset1 - diffs[3] - diffs[4] - diffs[5] - diffs[6]; break; \
+  case 7: x = offset1 - diffs[4] - diffs[5] - diffs[6] - diffs[7]; break; \
+  default: abort();							\
+  }
+
+#define return_sum_fwd(offset0,diffs,row) switch (row) {	\
+  case -1: return offset0; break;					\
+  case 0: return offset0 + diffs[0]; break;				\
+  case 1: return offset0 + diffs[0] + diffs[1]; break;			\
+  case 2: return offset0 + diffs[0] + diffs[1] + diffs[2]; break;	\
+  case 3: return offset0 + diffs[0] + diffs[1] + diffs[2] + diffs[3]; break; \
+  case 4: return offset0 + diffs[1] + diffs[2] + diffs[3] + diffs[4]; break; \
+  case 5: return offset0 + diffs[2] + diffs[3] + diffs[4] + diffs[5]; break; \
+  case 6: return offset0 + diffs[3] + diffs[4] + diffs[5] + diffs[6]; break; \
+  case 7: return offset0 + diffs[4] + diffs[5] + diffs[6] + diffs[7]; break; \
+  default: abort();							\
+  }
+
+#define return_sum_rev(offset1,diffs,row) switch (row) {	\
+  case -1: return offset1; break;					\
+  case 0: return offset1 - diffs[0]; break;				\
+  case 1: return offset1 - diffs[0] - diffs[1]; break;			\
+  case 2: return offset1 - diffs[0] - diffs[1] - diffs[2]; break;	\
+  case 3: return offset1 - diffs[0] - diffs[1] - diffs[2] - diffs[3]; break; \
+  case 4: return offset1 - diffs[1] - diffs[2] - diffs[3] - diffs[4]; break; \
+  case 5: return offset1 - diffs[2] - diffs[3] - diffs[4] - diffs[5]; break; \
+  case 6: return offset1 - diffs[3] - diffs[4] - diffs[5] - diffs[6]; break; \
+  case 7: return offset1 - diffs[4] - diffs[5] - diffs[6] - diffs[7]; break; \
+  default: abort();							\
+  }
+
+#endif
+
+
+#ifdef HAVE_SSE2
+static void
+vertical_order_fwd (UINT4 *vertical, UINT4 *columnar) {
+
+  vertical[0] = columnar[0];		/* remainder 1 */
+  vertical[4] = columnar[1];		/* remainder 5 */
+  vertical[8] = columnar[2];		/* remainder 9 */
+  vertical[12] = columnar[3];		/* remainder 13 */
+  vertical[16] = columnar[4];		/* remainder 17 */
+  vertical[20] = columnar[5];		/* remainder 21 */
+  vertical[24] = columnar[6];		/* remainder 25 */
+  vertical[28] = columnar[7];		/* remainder 29 */
+
+  vertical[1] = columnar[8];		/* remainder 2 */
+  vertical[5] = columnar[9];		/* remainder 6 */
+  vertical[9] = columnar[10];		/* remainder 10 */
+  vertical[13] = columnar[11];		/* remainder 14 */
+  vertical[17] = columnar[12];		/* remainder 18 */
+  vertical[21] = columnar[13];		/* remainder 22 */
+  vertical[25] = columnar[14];		/* remainder 26 */
+  vertical[29] = columnar[15];		/* remainder 30 */
+
+  vertical[2] = columnar[16];		/* remainder 3 */
+  vertical[6] = columnar[17];		/* remainder 7 */
+  vertical[10] = columnar[18];		/* remainder 11 */
+  vertical[14] = columnar[19];		/* remainder 15 */
+  vertical[18] = columnar[20];		/* remainder 19 */
+  vertical[22] = columnar[21];		/* remainder 23 */
+  vertical[26] = columnar[22];		/* remainder 27 */
+  vertical[30] = columnar[23];		/* remainder 31 */
+
+  vertical[3] = columnar[24];		/* remainder 4 */
+  vertical[7] = columnar[25];		/* remainder 8 */
+  vertical[11] = columnar[26];		/* remainder 12 */
+  vertical[15] = columnar[27];		/* remainder 16 */
+  vertical[19] = columnar[28];		/* remainder 20 */
+  vertical[23] = columnar[29];		/* remainder 24 */
+  vertical[27] = columnar[30];		/* remainder 28 */
+  vertical[31] = columnar[31];		/* remainder 32 */
+
+  return;
+}
+
+static void
+vertical_order_rev (UINT4 *vertical, UINT4 *columnar) {
+
+  vertical[0] = columnar[0];		/* remainder 63 */
+  vertical[4] = columnar[1];		/* remainder 59 */
+  vertical[8] = columnar[2];		/* remainder 55 */
+  vertical[12] = columnar[3];		/* remainder 51 */
+  vertical[16] = columnar[4];		/* remainder 47 */
+  vertical[20] = columnar[5];		/* remainder 43 */
+  vertical[24] = columnar[6];		/* remainder 39 */
+  vertical[28] = columnar[7];		/* remainder 35 */
+
+  vertical[1] = columnar[8];		/* remainder 62 */
+  vertical[5] = columnar[9];		/* remainder 58 */
+  vertical[9] = columnar[10];		/* remainder 54 */
+  vertical[13] = columnar[11];		/* remainder 50 */
+  vertical[17] = columnar[12];		/* remainder 46 */
+  vertical[21] = columnar[13];		/* remainder 42 */
+  vertical[25] = columnar[14];		/* remainder 38 */
+  vertical[29] = columnar[15];		/* remainder 34 */
+
+  vertical[2] = columnar[16];		/* remainder 61 */
+  vertical[6] = columnar[17];		/* remainder 57 */
+  vertical[10] = columnar[18];		/* remainder 53 */
+  vertical[14] = columnar[19];		/* remainder 49 */
+  vertical[18] = columnar[20];		/* remainder 45 */
+  vertical[22] = columnar[21];		/* remainder 41 */
+  vertical[26] = columnar[22];		/* remainder 37 */
+  vertical[30] = columnar[23];		/* remainder 33 */
+
+  vertical[3] = columnar[24];		/* remainder 60 */
+  vertical[7] = columnar[25];		/* remainder 56 */
+  vertical[11] = columnar[26];		/* remainder 52 */
+  vertical[15] = columnar[27];		/* remainder 48 */
+  vertical[19] = columnar[28];		/* remainder 44 */
+  vertical[23] = columnar[29];		/* remainder 40 */
+  vertical[27] = columnar[30];		/* remainder 36 */
+  vertical[31] = columnar[31];		/* remainder 32 */
+
+  return;
+}
+
+static void
+vertical_order_huge_fwd (UINT8 *vertical, UINT4 *columnar) {
+
+  vertical[0] = (UINT8) columnar[0];		/* remainder 1 */
+  vertical[4] = (UINT8) columnar[1];		/* remainder 5 */
+  vertical[8] = (UINT8) columnar[2];		/* remainder 9 */
+  vertical[12] = (UINT8) columnar[3];		/* remainder 13 */
+  vertical[16] = (UINT8) columnar[4];		/* remainder 17 */
+  vertical[20] = (UINT8) columnar[5];		/* remainder 21 */
+  vertical[24] = (UINT8) columnar[6];		/* remainder 25 */
+  vertical[28] = (UINT8) columnar[7];		/* remainder 29 */
+
+  vertical[1] = (UINT8) columnar[8];		/* remainder 2 */
+  vertical[5] = (UINT8) columnar[9];		/* remainder 6 */
+  vertical[9] = (UINT8) columnar[10];		/* remainder 10 */
+  vertical[13] = (UINT8) columnar[11];		/* remainder 14 */
+  vertical[17] = (UINT8) columnar[12];		/* remainder 18 */
+  vertical[21] = (UINT8) columnar[13];		/* remainder 22 */
+  vertical[25] = (UINT8) columnar[14];		/* remainder 26 */
+  vertical[29] = (UINT8) columnar[15];		/* remainder 30 */
+
+  vertical[2] = (UINT8) columnar[16];		/* remainder 3 */
+  vertical[6] = (UINT8) columnar[17];		/* remainder 7 */
+  vertical[10] = (UINT8) columnar[18];		/* remainder 11 */
+  vertical[14] = (UINT8) columnar[19];		/* remainder 15 */
+  vertical[18] = (UINT8) columnar[20];		/* remainder 19 */
+  vertical[22] = (UINT8) columnar[21];		/* remainder 23 */
+  vertical[26] = (UINT8) columnar[22];		/* remainder 27 */
+  vertical[30] = (UINT8) columnar[23];		/* remainder 31 */
+
+  vertical[3] = (UINT8) columnar[24];		/* remainder 4 */
+  vertical[7] = (UINT8) columnar[25];		/* remainder 8 */
+  vertical[11] = (UINT8) columnar[26];		/* remainder 12 */
+  vertical[15] = (UINT8) columnar[27];		/* remainder 16 */
+  vertical[19] = (UINT8) columnar[28];		/* remainder 20 */
+  vertical[23] = (UINT8) columnar[29];		/* remainder 24 */
+  vertical[27] = (UINT8) columnar[30];		/* remainder 28 */
+  vertical[31] = (UINT8) columnar[31];		/* remainder 32 */
+
+  return;
+}
+
+static void
+vertical_order_huge_rev (UINT8 *vertical, UINT4 *columnar) {
+
+  vertical[0] = (UINT8) columnar[0];		/* remainder 63 */
+  vertical[4] = (UINT8) columnar[1];		/* remainder 59 */
+  vertical[8] = (UINT8) columnar[2];		/* remainder 55 */
+  vertical[12] = (UINT8) columnar[3];		/* remainder 51 */
+  vertical[16] = (UINT8) columnar[4];		/* remainder 47 */
+  vertical[20] = (UINT8) columnar[5];		/* remainder 43 */
+  vertical[24] = (UINT8) columnar[6];		/* remainder 39 */
+  vertical[28] = (UINT8) columnar[7];		/* remainder 35 */
+
+  vertical[1] = (UINT8) columnar[8];		/* remainder 62 */
+  vertical[5] = (UINT8) columnar[9];		/* remainder 58 */
+  vertical[9] = (UINT8) columnar[10];		/* remainder 54 */
+  vertical[13] = (UINT8) columnar[11];		/* remainder 50 */
+  vertical[17] = (UINT8) columnar[12];		/* remainder 46 */
+  vertical[21] = (UINT8) columnar[13];		/* remainder 42 */
+  vertical[25] = (UINT8) columnar[14];		/* remainder 38 */
+  vertical[29] = (UINT8) columnar[15];		/* remainder 34 */
+
+  vertical[2] = (UINT8) columnar[16];		/* remainder 61 */
+  vertical[6] = (UINT8) columnar[17];		/* remainder 57 */
+  vertical[10] = (UINT8) columnar[18];		/* remainder 53 */
+  vertical[14] = (UINT8) columnar[19];		/* remainder 49 */
+  vertical[18] = (UINT8) columnar[20];		/* remainder 45 */
+  vertical[22] = (UINT8) columnar[21];		/* remainder 41 */
+  vertical[26] = (UINT8) columnar[22];		/* remainder 37 */
+  vertical[30] = (UINT8) columnar[23];		/* remainder 33 */
+
+  vertical[3] = (UINT8) columnar[24];		/* remainder 60 */
+  vertical[7] = (UINT8) columnar[25];		/* remainder 56 */
+  vertical[11] = (UINT8) columnar[26];		/* remainder 52 */
+  vertical[15] = (UINT8) columnar[27];		/* remainder 48 */
+  vertical[19] = (UINT8) columnar[28];		/* remainder 44 */
+  vertical[23] = (UINT8) columnar[29];		/* remainder 40 */
+  vertical[27] = (UINT8) columnar[30];		/* remainder 36 */
+  vertical[31] = (UINT8) columnar[31];		/* remainder 32 */
+
+  return;
+}
+
+#else
+
+#if 0
+static void
+vertical_order (UINT4 *vertical, UINT4 *columnar) {
+
+  vertical[0] = columnar[0];		/* remainder 1 */
+  vertical[4] = columnar[1];		/* remainder 5 */
+  vertical[8] = columnar[2];		/* remainder 9 */
+  vertical[12] = columnar[3];		/* remainder 13 */
+  vertical[16] = columnar[4];		/* remainder 17 */
+  vertical[20] = columnar[5];		/* remainder 21 */
+  vertical[24] = columnar[6];		/* remainder 25 */
+  vertical[28] = columnar[7];		/* remainder 29 */
+
+  vertical[1] = columnar[8];		/* remainder 2 */
+  vertical[5] = columnar[9];		/* remainder 6 */
+  vertical[9] = columnar[10];		/* remainder 10 */
+  vertical[13] = columnar[11];		/* remainder 14 */
+  vertical[17] = columnar[12];		/* remainder 18 */
+  vertical[21] = columnar[13];		/* remainder 22 */
+  vertical[25] = columnar[14];		/* remainder 26 */
+  vertical[29] = columnar[15];		/* remainder 30 */
+
+  vertical[2] = columnar[16];		/* remainder 3 */
+  vertical[6] = columnar[17];		/* remainder 7 */
+  vertical[10] = columnar[18];		/* remainder 11 */
+  vertical[14] = columnar[19];		/* remainder 15 */
+  vertical[18] = columnar[20];		/* remainder 19 */
+  vertical[22] = columnar[21];		/* remainder 23 */
+  vertical[26] = columnar[22];		/* remainder 27 */
+  vertical[30] = columnar[23];		/* remainder 31 */
+
+  vertical[3] = columnar[24];		/* remainder 4 */
+  vertical[7] = columnar[25];		/* remainder 8 */
+  vertical[11] = columnar[26];		/* remainder 12 */
+  vertical[15] = columnar[27];		/* remainder 16 */
+  vertical[19] = columnar[28];		/* remainder 20 */
+  vertical[23] = columnar[29];		/* remainder 24 */
+  vertical[27] = columnar[30];		/* remainder 28 */
+  vertical[31] = columnar[31];		/* remainder 32 */
+
+  vertical[32] = columnar[32];		/* remainder 63 */
+  vertical[36] = columnar[33];		/* remainder 59 */
+  vertical[40] = columnar[34];		/* remainder 55 */
+  vertical[44] = columnar[35];		/* remainder 51 */
+  vertical[48] = columnar[36];		/* remainder 47 */
+  vertical[52] = columnar[37];		/* remainder 43 */
+  vertical[56] = columnar[38];		/* remainder 39 */
+  vertical[60] = columnar[39];		/* remainder 35 */
+
+  vertical[33] = columnar[40];		/* remainder 62 */
+  vertical[37] = columnar[41];		/* remainder 58 */
+  vertical[41] = columnar[42];		/* remainder 54 */
+  vertical[45] = columnar[43];		/* remainder 50 */
+  vertical[49] = columnar[44];		/* remainder 46 */
+  vertical[53] = columnar[45];		/* remainder 42 */
+  vertical[57] = columnar[46];		/* remainder 38 */
+  vertical[61] = columnar[47];		/* remainder 34 */
+
+  vertical[34] = columnar[48];		/* remainder 61 */
+  vertical[38] = columnar[49];		/* remainder 57 */
+  vertical[42] = columnar[50];		/* remainder 53 */
+  vertical[46] = columnar[51];		/* remainder 49 */
+  vertical[50] = columnar[52];		/* remainder 45 */
+  vertical[54] = columnar[53];		/* remainder 41 */
+  vertical[58] = columnar[54];		/* remainder 37 */
+  vertical[62] = columnar[55];		/* remainder 33 */
+
+  vertical[35] = columnar[56];		/* remainder 60 */
+  vertical[39] = columnar[57];		/* remainder 56 */
+  vertical[43] = columnar[58];		/* remainder 52 */
+  vertical[47] = columnar[59];		/* remainder 48 */
+  vertical[51] = columnar[60];		/* remainder 44 */
+  vertical[55] = columnar[61];		/* remainder 40 */
+  vertical[59] = columnar[62];		/* remainder 36 */
+  vertical[63] = columnar[63];		/* remainder 32 */
+
+  return;
+}
+#endif
+
+#if 0
+static void
+vertical_order_huge (UINT8 *vertical, UINT4 *columnar) {
+
+  vertical[0] = (UINT8) columnar[0];		/* remainder 1 */
+  vertical[4] = (UINT8) columnar[1];		/* remainder 5 */
+  vertical[8] = (UINT8) columnar[2];		/* remainder 9 */
+  vertical[12] = (UINT8) columnar[3];		/* remainder 13 */
+  vertical[16] = (UINT8) columnar[4];		/* remainder 17 */
+  vertical[20] = (UINT8) columnar[5];		/* remainder 21 */
+  vertical[24] = (UINT8) columnar[6];		/* remainder 25 */
+  vertical[28] = (UINT8) columnar[7];		/* remainder 29 */
+
+  vertical[1] = (UINT8) columnar[8];		/* remainder 2 */
+  vertical[5] = (UINT8) columnar[9];		/* remainder 6 */
+  vertical[9] = (UINT8) columnar[10];		/* remainder 10 */
+  vertical[13] = (UINT8) columnar[11];		/* remainder 14 */
+  vertical[17] = (UINT8) columnar[12];		/* remainder 18 */
+  vertical[21] = (UINT8) columnar[13];		/* remainder 22 */
+  vertical[25] = (UINT8) columnar[14];		/* remainder 26 */
+  vertical[29] = (UINT8) columnar[15];		/* remainder 30 */
+
+  vertical[2] = (UINT8) columnar[16];		/* remainder 3 */
+  vertical[6] = (UINT8) columnar[17];		/* remainder 7 */
+  vertical[10] = (UINT8) columnar[18];		/* remainder 11 */
+  vertical[14] = (UINT8) columnar[19];		/* remainder 15 */
+  vertical[18] = (UINT8) columnar[20];		/* remainder 19 */
+  vertical[22] = (UINT8) columnar[21];		/* remainder 23 */
+  vertical[26] = (UINT8) columnar[22];		/* remainder 27 */
+  vertical[30] = (UINT8) columnar[23];		/* remainder 31 */
+
+  vertical[3] = (UINT8) columnar[24];		/* remainder 4 */
+  vertical[7] = (UINT8) columnar[25];		/* remainder 8 */
+  vertical[11] = (UINT8) columnar[26];		/* remainder 12 */
+  vertical[15] = (UINT8) columnar[27];		/* remainder 16 */
+  vertical[19] = (UINT8) columnar[28];		/* remainder 20 */
+  vertical[23] = (UINT8) columnar[29];		/* remainder 24 */
+  vertical[27] = (UINT8) columnar[30];		/* remainder 28 */
+  vertical[31] = (UINT8) columnar[31];		/* remainder 32 */
+
+  vertical[32] = (UINT8) columnar[32];		/* remainder 63 */
+  vertical[36] = (UINT8) columnar[33];		/* remainder 59 */
+  vertical[40] = (UINT8) columnar[34];		/* remainder 55 */
+  vertical[44] = (UINT8) columnar[35];		/* remainder 51 */
+  vertical[48] = (UINT8) columnar[36];		/* remainder 47 */
+  vertical[52] = (UINT8) columnar[37];		/* remainder 43 */
+  vertical[56] = (UINT8) columnar[38];		/* remainder 39 */
+  vertical[60] = (UINT8) columnar[39];		/* remainder 35 */
+
+  vertical[33] = (UINT8) columnar[40];		/* remainder 62 */
+  vertical[37] = (UINT8) columnar[41];		/* remainder 58 */
+  vertical[41] = (UINT8) columnar[42];		/* remainder 54 */
+  vertical[45] = (UINT8) columnar[43];		/* remainder 50 */
+  vertical[49] = (UINT8) columnar[44];		/* remainder 46 */
+  vertical[53] = (UINT8) columnar[45];		/* remainder 42 */
+  vertical[57] = (UINT8) columnar[46];		/* remainder 38 */
+  vertical[61] = (UINT8) columnar[47];		/* remainder 34 */
+
+  vertical[34] = (UINT8) columnar[48];		/* remainder 61 */
+  vertical[38] = (UINT8) columnar[49];		/* remainder 57 */
+  vertical[42] = (UINT8) columnar[50];		/* remainder 53 */
+  vertical[46] = (UINT8) columnar[51];		/* remainder 49 */
+  vertical[50] = (UINT8) columnar[52];		/* remainder 45 */
+  vertical[54] = (UINT8) columnar[53];		/* remainder 41 */
+  vertical[58] = (UINT8) columnar[54];		/* remainder 37 */
+  vertical[62] = (UINT8) columnar[55];		/* remainder 33 */
+
+  vertical[35] = (UINT8) columnar[56];		/* remainder 60 */
+  vertical[39] = (UINT8) columnar[57];		/* remainder 56 */
+  vertical[43] = (UINT8) columnar[58];		/* remainder 52 */
+  vertical[47] = (UINT8) columnar[59];		/* remainder 48 */
+  vertical[51] = (UINT8) columnar[60];		/* remainder 44 */
+  vertical[55] = (UINT8) columnar[61];		/* remainder 40 */
+  vertical[59] = (UINT8) columnar[62];		/* remainder 36 */
+  vertical[63] = (UINT8) columnar[63];		/* remainder 32 */
+
+  return;
+}
+#endif
+
+#endif
+
+
+
+#ifdef HAVE_SSE2
+typedef void (*Unpacker_T) (__m128i* __restrict__, const __m128i* __restrict__);
+#else
+typedef void (*Unpacker_T) (UINT4* __restrict__, const UINT4* __restrict__);
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+static Unpacker_T unpacker_table[33] =
+  {unpack_00,
+   unpack_01, unpack_02, unpack_03, unpack_04,
+   unpack_05, unpack_06, unpack_07, unpack_08,
+   unpack_09, unpack_10, unpack_11, unpack_12,
+   unpack_13, unpack_14, unpack_15, unpack_16,
+   unpack_17, unpack_18, unpack_19, unpack_20,
+   unpack_21, unpack_22, unpack_23, unpack_24,
+   unpack_25, unpack_26, unpack_27, unpack_28,
+   unpack_29, unpack_30, unpack_31, unpack_32};
+#else
+#ifdef HAVE_SSE2
+static Unpacker_T unpacker_all_table[34] =
+  {unpack_00, unpack_00,
+   unpack_02_fwd, unpack_02_rev, unpack_04_fwd, unpack_04_rev,
+   unpack_06_fwd, unpack_06_rev, unpack_08_fwd, unpack_08_rev,
+   unpack_10_fwd, unpack_10_rev, unpack_12_fwd, unpack_12_rev,
+   unpack_14_fwd, unpack_14_rev, unpack_16_fwd, unpack_16_rev,
+   unpack_18_fwd, unpack_18_rev, unpack_20_fwd, unpack_20_rev,
+   unpack_22_fwd, unpack_22_rev, unpack_24_fwd, unpack_24_rev,
+   unpack_26_fwd, unpack_26_rev, unpack_28_fwd, unpack_28_rev,
+   unpack_30_fwd, unpack_30_rev, unpack_32_fwd, unpack_32_rev};
+
+/* Entry 16 in each packsize handles remainder == 64 => quarter_block == 4, column 3, row -1 */
+static Unpacker_T unpacker_table[17][17] = 
+  {{unpack_00_1_3, unpack_00_2_4, unpack_00_2_4, unpack_00_1_3,
+    unpack_00_1_3, unpack_00_2_4, unpack_00_2_4, unpack_00_1_3,
+    unpack_00_1_3, unpack_00_2_4, unpack_00_2_4, unpack_00_1_3,
+    unpack_00_1_3, unpack_00_2_4, unpack_00_2_4, unpack_00_1_3,
+    unpack_00_0},
+
+   {unpack_02_fwd_1_3, unpack_02_fwd_2_4, unpack_02_rev_2_4, unpack_02_rev_1_3,
+    unpack_02_fwd_3_5, unpack_02_fwd_4_6, unpack_02_rev_4_6, unpack_02_rev_3_5,
+    unpack_02_fwd_5_7, unpack_02_fwd_6_8, unpack_02_rev_6_8, unpack_02_rev_5_7, 
+    unpack_02_fwd_7_1, unpack_02_fwd_8_2, unpack_02_rev_8_2, unpack_02_rev_7_1,
+    unpack_00_0},
+
+   {unpack_04_fwd_1_3, unpack_04_fwd_2_4, unpack_04_rev_2_4, unpack_04_rev_1_3,
+    unpack_04_fwd_3_5, unpack_04_fwd_4_6, unpack_04_rev_4_6, unpack_04_rev_3_5,
+    unpack_04_fwd_5_7, unpack_04_fwd_6_8, unpack_04_rev_6_8, unpack_04_rev_5_7, 
+    unpack_04_fwd_7_1, unpack_04_fwd_8_2, unpack_04_rev_8_2, unpack_04_rev_7_1,
+    unpack_00_0},
+
+   {unpack_06_fwd_1_3, unpack_06_fwd_2_4, unpack_06_rev_2_4, unpack_06_rev_1_3,
+    unpack_06_fwd_3_5, unpack_06_fwd_4_6, unpack_06_rev_4_6, unpack_06_rev_3_5,
+    unpack_06_fwd_5_7, unpack_06_fwd_6_8, unpack_06_rev_6_8, unpack_06_rev_5_7, 
+    unpack_06_fwd_7_1, unpack_06_fwd_8_2, unpack_06_rev_8_2, unpack_06_rev_7_1,
+    unpack_00_0},
+
+   {unpack_08_fwd_1_3, unpack_08_fwd_2_4, unpack_08_rev_2_4, unpack_08_rev_1_3,
+    unpack_08_fwd_3_5, unpack_08_fwd_4_6, unpack_08_rev_4_6, unpack_08_rev_3_5,
+    unpack_08_fwd_5_7, unpack_08_fwd_6_8, unpack_08_rev_6_8, unpack_08_rev_5_7, 
+    unpack_08_fwd_7_1, unpack_08_fwd_8_2, unpack_08_rev_8_2, unpack_08_rev_7_1,
+    unpack_00_0},
+
+   {unpack_10_fwd_1_3, unpack_10_fwd_2_4, unpack_10_rev_2_4, unpack_10_rev_1_3,
+    unpack_10_fwd_3_5, unpack_10_fwd_4_6, unpack_10_rev_4_6, unpack_10_rev_3_5,
+    unpack_10_fwd_5_7, unpack_10_fwd_6_8, unpack_10_rev_6_8, unpack_10_rev_5_7, 
+    unpack_10_fwd_7_1, unpack_10_fwd_8_2, unpack_10_rev_8_2, unpack_10_rev_7_1,
+    unpack_00_0},
+
+   {unpack_12_fwd_1_3, unpack_12_fwd_2_4, unpack_12_rev_2_4, unpack_12_rev_1_3,
+    unpack_12_fwd_3_5, unpack_12_fwd_4_6, unpack_12_rev_4_6, unpack_12_rev_3_5,
+    unpack_12_fwd_5_7, unpack_12_fwd_6_8, unpack_12_rev_6_8, unpack_12_rev_5_7, 
+    unpack_12_fwd_7_1, unpack_12_fwd_8_2, unpack_12_rev_8_2, unpack_12_rev_7_1,
+    unpack_00_0},
+
+   {unpack_14_fwd_1_3, unpack_14_fwd_2_4, unpack_14_rev_2_4, unpack_14_rev_1_3,
+    unpack_14_fwd_3_5, unpack_14_fwd_4_6, unpack_14_rev_4_6, unpack_14_rev_3_5,
+    unpack_14_fwd_5_7, unpack_14_fwd_6_8, unpack_14_rev_6_8, unpack_14_rev_5_7, 
+    unpack_14_fwd_7_1, unpack_14_fwd_8_2, unpack_14_rev_8_2, unpack_14_rev_7_1,
+    unpack_00_0},
+
+   {unpack_16_fwd_1_3, unpack_16_fwd_2_4, unpack_16_rev_2_4, unpack_16_rev_1_3,
+    unpack_16_fwd_3_5, unpack_16_fwd_4_6, unpack_16_rev_4_6, unpack_16_rev_3_5,
+    unpack_16_fwd_5_7, unpack_16_fwd_6_8, unpack_16_rev_6_8, unpack_16_rev_5_7, 
+    unpack_16_fwd_7_1, unpack_16_fwd_8_2, unpack_16_rev_8_2, unpack_16_rev_7_1,
+    unpack_00_0},
+
+   {unpack_18_fwd_1_3, unpack_18_fwd_2_4, unpack_18_rev_2_4, unpack_18_rev_1_3,
+    unpack_18_fwd_3_5, unpack_18_fwd_4_6, unpack_18_rev_4_6, unpack_18_rev_3_5,
+    unpack_18_fwd_5_7, unpack_18_fwd_6_8, unpack_18_rev_6_8, unpack_18_rev_5_7, 
+    unpack_18_fwd_7_1, unpack_18_fwd_8_2, unpack_18_rev_8_2, unpack_18_rev_7_1,
+    unpack_00_0},
+
+   {unpack_20_fwd_1_3, unpack_20_fwd_2_4, unpack_20_rev_2_4, unpack_20_rev_1_3,
+    unpack_20_fwd_3_5, unpack_20_fwd_4_6, unpack_20_rev_4_6, unpack_20_rev_3_5,
+    unpack_20_fwd_5_7, unpack_20_fwd_6_8, unpack_20_rev_6_8, unpack_20_rev_5_7, 
+    unpack_20_fwd_7_1, unpack_20_fwd_8_2, unpack_20_rev_8_2, unpack_20_rev_7_1,
+    unpack_00_0},
+
+   {unpack_22_fwd_1_3, unpack_22_fwd_2_4, unpack_22_rev_2_4, unpack_22_rev_1_3,
+    unpack_22_fwd_3_5, unpack_22_fwd_4_6, unpack_22_rev_4_6, unpack_22_rev_3_5,
+    unpack_22_fwd_5_7, unpack_22_fwd_6_8, unpack_22_rev_6_8, unpack_22_rev_5_7, 
+    unpack_22_fwd_7_1, unpack_22_fwd_8_2, unpack_22_rev_8_2, unpack_22_rev_7_1,
+    unpack_00_0},
+
+   {unpack_24_fwd_1_3, unpack_24_fwd_2_4, unpack_24_rev_2_4, unpack_24_rev_1_3,
+    unpack_24_fwd_3_5, unpack_24_fwd_4_6, unpack_24_rev_4_6, unpack_24_rev_3_5,
+    unpack_24_fwd_5_7, unpack_24_fwd_6_8, unpack_24_rev_6_8, unpack_24_rev_5_7, 
+    unpack_24_fwd_7_1, unpack_24_fwd_8_2, unpack_24_rev_8_2, unpack_24_rev_7_1,
+    unpack_00_0},
+
+   {unpack_26_fwd_1_3, unpack_26_fwd_2_4, unpack_26_rev_2_4, unpack_26_rev_1_3,
+    unpack_26_fwd_3_5, unpack_26_fwd_4_6, unpack_26_rev_4_6, unpack_26_rev_3_5,
+    unpack_26_fwd_5_7, unpack_26_fwd_6_8, unpack_26_rev_6_8, unpack_26_rev_5_7, 
+    unpack_26_fwd_7_1, unpack_26_fwd_8_2, unpack_26_rev_8_2, unpack_26_rev_7_1,
+    unpack_00_0},
+
+   {unpack_28_fwd_1_3, unpack_28_fwd_2_4, unpack_28_rev_2_4, unpack_28_rev_1_3,
+    unpack_28_fwd_3_5, unpack_28_fwd_4_6, unpack_28_rev_4_6, unpack_28_rev_3_5,
+    unpack_28_fwd_5_7, unpack_28_fwd_6_8, unpack_28_rev_6_8, unpack_28_rev_5_7, 
+    unpack_28_fwd_7_1, unpack_28_fwd_8_2, unpack_28_rev_8_2, unpack_28_rev_7_1,
+    unpack_00_0},
+
+   {unpack_30_fwd_1_3, unpack_30_fwd_2_4, unpack_30_rev_2_4, unpack_30_rev_1_3,
+    unpack_30_fwd_3_5, unpack_30_fwd_4_6, unpack_30_rev_4_6, unpack_30_rev_3_5,
+    unpack_30_fwd_5_7, unpack_30_fwd_6_8, unpack_30_rev_6_8, unpack_30_rev_5_7, 
+    unpack_30_fwd_7_1, unpack_30_fwd_8_2, unpack_30_rev_8_2, unpack_30_rev_7_1,
+    unpack_00_0},
+
+   {unpack_32_fwd_1_3, unpack_32_fwd_2_4, unpack_32_rev_2_4, unpack_32_rev_1_3,
+    unpack_32_fwd_3_5, unpack_32_fwd_4_6, unpack_32_rev_4_6, unpack_32_rev_3_5,
+    unpack_32_fwd_5_7, unpack_32_fwd_6_8, unpack_32_rev_6_8, unpack_32_rev_5_7, 
+    unpack_32_fwd_7_1, unpack_32_fwd_8_2, unpack_32_rev_8_2, unpack_32_rev_7_1,
+    unpack_00_0},
+
+};
+   
+#else
+static Unpacker_T unpacker_all_table[33] =
+  {unpack_00,
+   unpack_00, unpack_02, unpack_00, unpack_04,
+   unpack_00, unpack_06, unpack_00, unpack_08,
+   unpack_00, unpack_10, unpack_00, unpack_12,
+   unpack_00, unpack_14, unpack_00, unpack_16,
+   unpack_00, unpack_18, unpack_00, unpack_20,
+   unpack_00, unpack_22, unpack_00, unpack_24,
+   unpack_00, unpack_26, unpack_00, unpack_28,
+   unpack_00, unpack_30, unpack_00, unpack_32};
+#endif
+#endif
+
+
+#define METAINFO_SIZE 2
+
+#define get_column(s) (s) & 3 /* Not s % 4, which fails on negative values */
+#define get_row(s) (s) >> 2 /* Not s / 4, which fails on negative values */
+
+
+#ifndef LARGE_GENOMES
+/* bitpackpages: A list of b-mers (12-mers by default), ending with -1U */
+UINT4
+Bitpack64_read_two (UINT4 *end0, Storedoligomer_T oligo, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten, packsize_div2;
+  int remainder0, remainder1, column;
+#ifdef HAVE_SSE2
+  __m128i diffs[4];  /* Need to provide space for 8 rows (or 2 128-bit registers) for ptr and for end0 */
+  int delta, row0, row1;
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT4 psums[5];		/* Need 5 to handle case where remainder == 64 */
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+
+#else
+  UINT4 offset0, offset1;
+  UINT4 ptr;
+  int remainder, row, k, i;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+#endif
+#ifdef DEBUG
+  UINT4 offsets[BLOCKSIZE+1];
+#endif
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_read_two with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];		/* In 128-bit registers */
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  /* packsize = (info[METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[METAINFO_SIZE] - nwritten);
+
+  remainder0 = oligo % BLOCKSIZE;
+  remainder1 = remainder0 + 1;
+
+  debug(Bitpack64_block_offsets(offsets,oligo,bitpackptrs,bitpackcomp));
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+  psums[0] = psums[1] = info[1];
+  psums[2] = psums[3] = psums[4] = info[METAINFO_SIZE+1];
+
+  delta = 31 - abs(remainder1 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+  
+  (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+  *end0 = psums[quarter_block_1] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+
+
+  delta = 31 - abs(remainder0 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+  (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+  return psums[quarter_block_0] + _diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4];
+
+#else
+
+  if (remainder0 < 16) {
+    /* Quarter-block 0 */
+    delta = remainder0 - 1;
+    column = get_column(delta);
+    row0 = get_row(delta);
+    row1 = get_row(delta + 1);
+    (unpacker_table[packsize_div2][column*4 + 0])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    assign_sum_fwd(*end0,info[1],_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    return_sum_fwd(info[1],_diffs,row0);
+
+  } else if (remainder0 < 32) {
+    /* Quarter-block 1 */
+    delta = remainder0 - 1;
+    column = get_column(delta);
+    row0 = get_row(delta);
+    row1 = get_row(delta + 1);
+    (unpacker_table[packsize_div2][column*4 + 1])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    assign_sum_fwd(*end0,info[1],_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    return_sum_fwd(info[1],_diffs,row0);
+
+  } else if (remainder0 < 48) {
+    /* Quarter-block 2 */
+    delta = 63 - remainder1;
+    column = get_column(delta);
+    row1 = get_row(delta);
+    row0 = get_row(delta + 1);
+    (unpacker_table[packsize_div2][column*4 + 2])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    assign_sum_rev(*end0,info[METAINFO_SIZE+1],_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    return_sum_rev(info[METAINFO_SIZE+1],_diffs,row0);
+
+  } else {
+    /* Quarter-block 3 */
+    delta = 63 - remainder1;
+    column = get_column(delta);
+    row1 = get_row(delta);
+    row0 = get_row(delta + 1);
+    (unpacker_table[packsize_div2][column*4 + 3])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    assign_sum_rev(*end0,info[METAINFO_SIZE+1],_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    return_sum_rev(info[METAINFO_SIZE+1],_diffs,row0);
+  }
+
+#endif
+
+#else  /* HAVE_SSE2 */
+
+  offset0 = info[1];
+  offset1 = info[METAINFO_SIZE+1];
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+#ifdef DEBUG
+  printf("oligo: %08X, remainder %d, offset0 %lu, offset1 %lu\n",
+	 oligo,oligo % BLOCKSIZE,info[1],info[METAINFO_SIZE+1]);
+  printf("bitpack:\n");
+
+  for (i = 1; i <= BLOCKSIZE; i++) {
+    printf("%d ",diffs[i]);
+    if (i % (BLOCKSIZE/4) == 0) {
+      printf("\n");
+    } else if (i % (BLOCKSIZE/8) == 0) {
+      printf("| ");
+    }
+  }
+  printf("\n");
+  printf("end of diffs\n");
+#endif  
+
+  if ((remainder = oligo % BLOCKSIZE) == 0) {
+    ptr = offset0;
+
+  } else if (remainder <= 16) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  remainder++;
+  if (remainder == 64) {
+    *end0 = offset1;
+
+  } else if (remainder <= 16) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+  } else {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif	/* HAVE_SSE2 */
+
+}
+#endif
+
+
+#ifdef LARGE_GENOMES
+/* bitpackpages: A list of b-mers (12-mers by default), ending with -1U */
+UINT8
+Bitpack64_read_two_huge (UINT8 *end0, Storedoligomer_T oligo,
+			 UINT4 *bitpackpages, UINT4 *bitpackptrs, UINT4 *bitpackcomp) {
+  Storedoligomer_T bmer;
+  UINT4 *info, nwritten;
+  UINT8 offset0, offset1;
+  UINT4 packsize_div2;
+  int remainder0, remainder1, column;
+#ifdef HAVE_SSE2
+  int delta, row0, row1;
+#ifdef BRANCH_FREE_ROW_SUM
+  __m128i diffs[3];
+#else
+  __m128i diffs[4];  /* Need to provide space for 8 rows (or 2 128-bit registers) for ptr and for end0 */
+#endif
+#ifdef BRANCH_FREE_QTR_BLOCK
+  UINT8 psums[5];		/* Need 5 to handle case where remainder == 64 */
+#endif
+  __m128i *bitpack;
+  UINT4 *_diffs;
+
+#else
+  UINT4 ptr;
+  int remainder, row, k, i;
+  UINT4 diffs[BLOCKSIZE+1], *bitpack;
+#endif
+  UINT4 *pageptr;
+#ifdef DEBUG
+  UINT4 offsets[BLOCKSIZE+1];
+#endif
+
+
+  bmer = oligo/BLOCKSIZE;
+  info = &(bitpackptrs[bmer * METAINFO_SIZE]);
+
+  debug(printf("Entered Bitpack64_read_two_huge with oligo %u => bmer %u\n",oligo,bmer));
+
+  nwritten = info[0];
+#ifdef HAVE_SSE2  
+  bitpack = (__m128i *) &(bitpackcomp[nwritten*4]);
+#else
+  bitpack = (UINT4 *) &(bitpackcomp[nwritten*4]);
+#endif
+
+  offset0 = (UINT8) info[1];
+  offset1 = (UINT8) info[METAINFO_SIZE+1];
+  debug(printf("offsets are %llu, %llu\n",offset0,offset1));
+
+  if (bitpackpages != NULL) {
+    pageptr = bitpackpages;
+    debug(printf("  compare bmer %u with pageptr %u\n",bmer,*pageptr));
+    while (bmer >= *pageptr) {
+      offset0 += POSITIONS_PAGE;
+      offset1 += POSITIONS_PAGE;
+      pageptr++;
+    }
+
+    if (bmer + 1 >= *pageptr) {
+      offset1 += POSITIONS_PAGE;
+      /* pageptr++; */
+    }
+  }
+  debug(printf("offsets are %llu, %llu\n",offset0,offset1));
+
+
+  /* packsize = (info[METAINFO_SIZE] - nwritten)*2; */
+  packsize_div2 = (info[METAINFO_SIZE] - nwritten);
+
+  remainder0 = oligo % BLOCKSIZE;
+  remainder1 = remainder0 + 1;
+
+  /* debug(Bitpack64_block_offsets_huge(offsets,oligo,bitpackpages,bitpackptrs,bitpackcomp)); */
+
+#ifdef HAVE_SSE2
+  _diffs = (UINT4 *) diffs;	/* Assumes a dummy register in diffs[0] */
+
+#ifdef BRANCH_FREE_QTR_BLOCK
+  psums[0] = psums[1] = offset0;
+  psums[2] = psums[3] = psums[4] = offset1;
+
+  delta = 31 - abs(remainder1 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_1,delta,column,row));
+  
+  (unpacker_table[packsize_div2][column*4 + quarter_block_1])(diffs,bitpack);
+  *end0 = psums[quarter_block_1] + (INT4) (_diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4]);
+
+
+  delta = 31 - abs(remainder0 - 32);
+  column = get_column(delta);
+  row = get_row(delta);
+  debug(printf("quarter-block %d, delta %d, column %d, row %d\n",quarter_block_0,delta,column,row));
+
+  (unpacker_table[packsize_div2][column*4 + quarter_block_0])(diffs,bitpack);
+  return psums[quarter_block_0] + (INT4) (_diffs[row+1] + _diffs[row+2] + _diffs[row+3] + _diffs[row+4]);
+
+#else
+
+  if (remainder0 < 16) {
+    /* Quarter-block 0 */
+    delta = remainder0 - 1;
+    column = get_column(delta);
+    row0 = get_row(delta);
+    row1 = get_row(delta + 1);
+    debug(printf("quarter_block 0, remainder %d, delta %d, column %d, row %d\n",remainder0,delta,column,row0));
+    (unpacker_table[packsize_div2][column*4 + 0])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    assign_sum_fwd(*end0,offset0,_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    return_sum_fwd(offset0,_diffs,row0);
+
+  } else if (remainder0 < 32) {
+    /* Quarter-block 1 */
+    delta = remainder0 - 1;
+    column = get_column(delta);
+    row0 = get_row(delta);
+    row1 = get_row(delta + 1);
+    debug(printf("quarter_block 1, remainder %d, delta %d, column %d, row %d\n",remainder0,delta,column,row0));
+    (unpacker_table[packsize_div2][column*4 + 1])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    assign_sum_fwd(*end0,offset0,_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    return_sum_fwd(offset0,_diffs,row0);
+
+  } else if (remainder0 < 48) {
+    /* Quarter-block 2 */
+    delta = 63 - remainder1;
+    column = get_column(delta);
+    row1 = get_row(delta);
+    row0 = get_row(delta + 1);
+    debug(printf("quarter_block 2, remainder %d, delta %d, column %d, row %d\n",remainder0,delta,column,row0));
+    (unpacker_table[packsize_div2][column*4 + 2])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    assign_sum_rev(*end0,offset1,_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    return_sum_rev(offset1,_diffs,row0);
+
+  } else {
+    /* Quarter-block 3 */
+    delta = 63 - remainder1;
+    column = get_column(delta);
+    row1 = get_row(delta);
+    row0 = get_row(delta + 1);
+    debug(printf("quarter_block 3, remainder %d, delta %d, column %d, row %d\n",remainder0,delta,column,row0));
+    (unpacker_table[packsize_div2][column*4 + 3])(diffs,bitpack);
+
+    _diffs = (UINT4 *) &(diffs[0]);
+    assign_sum_rev(*end0,offset1,_diffs,row1);
+
+    _diffs = (UINT4 *) &(diffs[2]);
+    return_sum_rev(offset1,_diffs,row0);
+  }
+#endif
+
+#else  /* HAVE_SSE2 */
+
+  /* Unpack all 64 diffs for non-SIMD */
+  (unpacker_all_table[packsize_div2*2])(&(diffs[1]),bitpack);
+
+#ifdef DEBUG
+  printf("oligo: %08X, remainder %d, offset0 %lu, offset1 %lu\n",
+	 oligo,oligo % BLOCKSIZE,info[1],info[METAINFO_SIZE+1]);
+  printf("bitpack:\n");
+
+  for (i = 1; i <= BLOCKSIZE; i++) {
+    printf("%d ",diffs[i]);
+    if (i % (BLOCKSIZE/4) == 0) {
+      printf("\n");
+    } else if (i % (BLOCKSIZE/8) == 0) {
+      printf("| ");
+    }
+  }
+  printf("\n");
+  printf("end of diffs\n");
+#endif  
+
+  if ((remainder = oligo % BLOCKSIZE) == 0) {
+    ptr = offset0;
+
+  } else if (remainder <= 16) {
+    ptr = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    ptr = offset0;
+
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      ptr += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+
+  } else {
+    ptr = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      ptr -= diffs[k];
+    }
+  }
+
+  remainder++;
+  if (remainder == 64) {
+    *end0 = offset1;
+
+  } else if (remainder <= 16) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 32) {
+    /* Compute necessary cumulative sums */
+    *end0 = offset0;
+
+    /* Add 1 for start at diffs[1], and 1 to leave the first element intact */
+    diffs[0] = 0;
+    column = (remainder - 1) % 4; /* Goes from 0 to 3 */
+    row = (remainder - 1) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+    
+    for (k = column*2 + 1, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+    for (k = column*2 + 2; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Adding diffs[%d] = %u\n",k,diffs[k]));
+      *end0 += diffs[k];
+    }
+
+  } else if (remainder <= 48) {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i < 4; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+    for (k = column*2 + 10; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+
+  } else {
+    *end0 = offset1;
+
+    column = (63 - remainder) % 4; /* Goes from 0 to 3.  Assert remainder < 64 */
+    row = (63 - remainder) / 4;
+    debug(printf("column %d, row %d\n",column,row));
+
+    for (k = column*2 + 9, i = 0; i <= row; k += BLOCKSIZE/4, i++) {
+      debug(printf("Subtracting diffs[%d] = %u\n",k,diffs[k]));
+      *end0 -= diffs[k];
+    }
+  }
+
+  return ptr;
+
+#endif	/* HAVE_SSE2 */
+}
+#endif
diff --git a/src/bitpack64-readtwo.h b/src/bitpack64-readtwo.h
new file mode 100644
index 0000000..86fe21d
--- /dev/null
+++ b/src/bitpack64-readtwo.h
@@ -0,0 +1,15 @@
+#ifndef BITPACK64_READTWO_INCLUDED
+#define BITPACK64_READTWO_INCLUDED
+#include "types.h"
+
+/* For reading differential-coded bitstreams */
+
+extern UINT4
+Bitpack64_read_two (UINT4 *end0, Storedoligomer_T oligo,
+		    UINT4 *bitpackptrs, UINT4 *bitpackcomp);
+
+UINT8
+Bitpack64_read_two_huge (UINT8 *end0, Storedoligomer_T oligo,
+			 UINT4 *bitpackpages, UINT4 *bitpackptrs, UINT4 *bitpackcomp);
+
+#endif
diff --git a/src/bitpack64-write.c b/src/bitpack64-write.c
new file mode 100644
index 0000000..24ef7a1
--- /dev/null
+++ b/src/bitpack64-write.c
@@ -0,0 +1,5447 @@
+static char rcsid[] = "$Id: bitpack64-write.c 132144 2014-04-02 16:02:28Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "bitpack64-write.h"
+
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"		/* For FWRITE_UINTS */
+#else
+#include "littleendian.h"	/* For FWRITE_UINTS */
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>		/* For memset */
+#include "mem.h"
+#include "assert.h"
+#include "fopen.h"
+
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+
+/* #define ALLOW_ODD_PACKSIZES 1 */
+
+/* #define USE_ONE_FILE_FOR_FIXED 1 */
+
+#define DIFFERENTIAL_METAINFO_SIZE 2
+#define PAIRED_METAINFO_SIZE 3
+#define RANK_METAINFO_SIZE 1	/* A variant of differential, where packsize is always 6 (lg 64) */
+#define DIRECT_METAINFO_SIZE 1
+#define BLOCKSIZE 64
+#define POSITIONS_PAGE 4294967296 /* 2^32 */
+
+#define BUFFER_SIZE 1000000
+
+
+/* Note: For offset pointers, where we need fast cumulative sums, we
+   use vertical format (where successive values are in different
+   packed unsigned ints).  For lcp, we want raw values, and vertical
+   format is still slightly more efficient than horizontal format. */
+
+#ifdef HAVE_SSE2
+static int
+write_reg_buffered_vert (FILE *strm_fp, Positionsptr_T *strm_buffer,
+			 int strm_buffer_size, int strm_buffer_i, __m128i OutReg) {
+
+#if 0
+  /* Type casting method (when we passed in pointer to OutReg).  Needs a memory fence. */
+  UINT4 *buffer = (UINT4 *) OutReg;
+  _mm_lfence();  /* Needed to avoid storing incorrect values into strm_buffer */
+#else
+  /* Storing method.  Safer.  */
+  UINT4 buffer[4];
+  _mm_store_si128((__m128i *) buffer,OutReg);
+#endif
+
+  /* printf("Writing %08X %08X %08X %08X\n",buffer[0],buffer[1],buffer[2],buffer[3]); */
+
+  strm_buffer[strm_buffer_i++] = buffer[0];
+  if (strm_buffer_i == strm_buffer_size) {
+    FWRITE_UINTS(strm_buffer,strm_buffer_size,strm_fp);
+    strm_buffer_i = 0;
+  }
+
+  strm_buffer[strm_buffer_i++] = buffer[1];
+  if (strm_buffer_i == strm_buffer_size) {
+    FWRITE_UINTS(strm_buffer,strm_buffer_size,strm_fp);
+    strm_buffer_i = 0;
+  }
+
+  strm_buffer[strm_buffer_i++] = buffer[2];
+  if (strm_buffer_i == strm_buffer_size) {
+    FWRITE_UINTS(strm_buffer,strm_buffer_size,strm_fp);
+    strm_buffer_i = 0;
+  }
+
+  strm_buffer[strm_buffer_i++] = buffer[3];
+  if (strm_buffer_i == strm_buffer_size) {
+    FWRITE_UINTS(strm_buffer,strm_buffer_size,strm_fp);
+    strm_buffer_i = 0;
+  }
+
+  return strm_buffer_i;
+}
+#else
+static int
+write_reg_buffered_vert (FILE *strm_fp, Positionsptr_T *strm_buffer,
+			 int strm_buffer_size, int strm_buffer_i,
+			 UINT4 *horizontal, int nwritten) {
+  UINT4 vertical[64];
+  int nrows = nwritten/4, row, column, k;
+
+  /* Convert to vertical */
+  for (column = 0; column < 4; column++) {
+    k = column;
+    for (row = 0; row < nrows; row++) {
+      vertical[k] = *horizontal++;
+      k += 4;
+    }
+  }
+    
+  /* Send to output buffer */
+  for (k = 0; k < nwritten; k++) {
+    /* printf("Writing %08X\n",vertical[k]); */
+    strm_buffer[strm_buffer_i++] = vertical[k];
+    if (strm_buffer_i == strm_buffer_size) {
+      FWRITE_UINTS(strm_buffer,strm_buffer_size,strm_fp);
+      strm_buffer_i = 0;
+    }
+  }
+
+  return strm_buffer_i;
+}
+#endif
+
+
+
+static int
+write_reg_buffered_horiz (FILE *strm_fp, Positionsptr_T *strm_buffer,
+			  int strm_buffer_size, int strm_buffer_i,
+			  UINT4 *values, int nwritten) {
+  int k;
+
+  /* Send to output buffer */
+  for (k = 0; k < nwritten; k++) {
+    /* printf("Writing %08X\n",values[k]); */
+    strm_buffer[strm_buffer_i++] = values[k];
+    if (strm_buffer_i == strm_buffer_size) {
+      FWRITE_UINTS(strm_buffer,strm_buffer_size,strm_fp);
+      strm_buffer_i = 0;
+    }
+  }
+
+  return strm_buffer_i;
+}
+
+
+
+
+#ifdef HAVE_SSE2
+static __m128i mask1, mask2, mask3, mask4, mask5, mask6, mask7, mask8,
+  mask9, mask10, mask11, mask12, mask13, mask14, mask15, mask16,
+  mask17, mask18, mask19, mask20, mask21, mask22, mask23, mask24,
+  mask25, mask26, mask27, mask28, mask29, mask30, mask31;
+#endif
+
+
+static void
+write_setup () {
+
+#ifdef HAVE_SSE2
+  mask1 = _mm_set1_epi32(1U);
+  mask2 = _mm_set1_epi32(3U);
+  mask3 =  _mm_set1_epi32(7U);
+  mask4 =  _mm_set1_epi32(15U);
+  mask5 =  _mm_set1_epi32(31U);
+  mask6 =  _mm_set1_epi32(63U);
+  mask7 =  _mm_set1_epi32(127U);
+  mask8 =  _mm_set1_epi32(255U);
+  mask9 =  _mm_set1_epi32(511U);
+  mask10 =  _mm_set1_epi32(1023U);
+  mask11 =  _mm_set1_epi32(2047U);
+  mask12 =  _mm_set1_epi32(4095U);
+  mask13 =  _mm_set1_epi32(8191U);
+  mask14 =  _mm_set1_epi32(16383U);
+  mask15 =  _mm_set1_epi32(32767U);
+  mask16 =  _mm_set1_epi32(65535U);
+  mask17 =  _mm_set1_epi32(131071U);
+  mask18 =  _mm_set1_epi32(262143U);
+  mask19 =  _mm_set1_epi32(524287U);
+  mask20 =  _mm_set1_epi32(1048575U);
+  mask21 =  _mm_set1_epi32(2097151U);
+  mask22 =  _mm_set1_epi32(4194303U);
+  mask23 =  _mm_set1_epi32(8388607U);
+  mask24 =  _mm_set1_epi32(16777215U);
+  mask25 =  _mm_set1_epi32(33554431U);
+  mask26 =  _mm_set1_epi32(67108863U);
+  mask27 =  _mm_set1_epi32(134217727U);
+  mask28 =  _mm_set1_epi32(268435455U);
+  mask29 =  _mm_set1_epi32(536870911U);
+  mask30 =  _mm_set1_epi32(1073741823U);
+  mask31 =  _mm_set1_epi32(2147483647U);
+#endif
+
+  return;
+}
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 1 * 4 = 4 unsigned ints */
+static int
+write_01_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask1);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask1);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 1 * 4 = 4 unsigned ints */
+static int
+write_02_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask2);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask2);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_02_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 2 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  6 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  10 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  14 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  18 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  20 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  22 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  24 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  26 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  28 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 2 )  ) <<  30 ;
+    ++out;
+    ++in;
+  }
+
+  return 4;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 2 * 4 = 8 unsigned ints */
+static int
+write_03_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask3);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 3 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask3);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 3 * 4 = 12 unsigned ints */
+static int
+write_05_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask5);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 5 - 3);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 5 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask5);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 3 * 4 = 12 unsigned ints */
+static int
+write_06_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask6);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 6 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 6 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask6);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_06_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 6 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  6 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  18 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  24 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 6 ) ) >> ( 6  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  10 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  22 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 6 ) ) >> ( 6  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  14 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  20 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 6 )  ) <<  26 ;
+    ++out;
+    ++in;
+  }
+
+  return 12;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 4 * 4 = 16 unsigned ints */
+static int
+write_07_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask7);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 7 - 3);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 7 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 7 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask7);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 5 * 4 = 20 unsigned ints */
+static int
+write_09_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask9);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 9 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 9 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 9 - 3);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 9 - 7);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask9);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 5 * 4 = 20 unsigned ints */
+static int
+write_10_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask10);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 10 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 10 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 10 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 10 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask10);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_10_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 10 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  10 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  20 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 10 ) ) >> ( 10  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  18 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 10 ) ) >> ( 10  -  6 );
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  6 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  26 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 10 ) ) >> ( 10  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  14 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 10 ) ) >> ( 10  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 10 )  ) <<  22 ;
+    ++out;
+    ++in;
+  }
+
+  return 20;
+}
+
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 6 * 4 = 24 unsigned ints */
+static int
+write_11_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask11);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 11 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 11 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 11 - 3);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 11 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 11 - 5);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask11);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 6 * 4 = 24 unsigned ints */
+static int
+write_12_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask12);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 12 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 12 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 12 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 12 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask12);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_12_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+
+    *out |= (*in)   % (1U << 12 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 12 ) ) >> ( 12  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 12 ) ) >> ( 12  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  20 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 12 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 12 ) ) >> ( 12  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 12 ) ) >> ( 12  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 12 )  ) <<  20 ;
+    ++out;
+    ++in;
+  }
+
+  return 24;
+}
+
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 7 * 4 = 28 unsigned ints */
+static int
+write_13_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask13);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 13 - 7);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 13 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 13 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 13 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 13 - 9);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 13 - 3);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask13);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 7 * 4 = 28 unsigned ints */
+static int
+write_14_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask14);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 14 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 14 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 14 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 14 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 14 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 14 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask14);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_14_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 14 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  14 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 14 ) ) >> ( 14  -  10 );
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  10 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 14 ) ) >> ( 14  -  6 );
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  6 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 14 ) ) >> ( 14  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 14 ) ) >> ( 14  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  26 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 14 ) ) >> ( 14  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  22 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 14 ) ) >> ( 14  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 14 )  ) <<  18 ;
+    ++out;
+    ++in;
+  }
+
+  return 28;
+}
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 8 * 4 = 32 unsigned ints */
+static int
+write_15_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask15);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 13);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 13));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 11);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 9);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 7);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 5);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 3);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 3));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 15 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask15);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 9 * 4 = 36 unsigned ints */
+static int
+write_17_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask17);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask17);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+
+    OutReg = _mm_srli_epi32(InReg, 17 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 9 * 4 = 36 unsigned ints */
+static int
+write_18_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask18);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 18 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask18);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_18_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 18 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  18 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  22 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  26 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  6 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  6 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  10 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  10 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 18 ) ) >> ( 18  -  14 );
+    ++in;
+    *out |= ( (*in)   % (1U << 18 )  ) <<  14 ;
+    ++out;
+    ++in;
+  }
+
+  return 36;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 10 * 4 = 40 unsigned ints */
+static int
+write_19_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask19);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 5);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 11);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 17);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask19);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+
+    OutReg = _mm_srli_epi32(InReg, 19 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 10 * 4 = 40 unsigned ints */
+static int
+write_20_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask20);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 20 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask20);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_20_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 20 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  12 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 20 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 20 ) ) >> ( 20  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 20 )  ) <<  12 ;
+    ++out;
+    ++in;
+  }
+
+  return 40;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 11 * 4 = 44 unsigned ints */
+static int
+write_21_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask21);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 9);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 19);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 7);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 17);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask21);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+
+    OutReg = _mm_srli_epi32(InReg, 21 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 11 * 4 = 44 unsigned ints */
+static int
+write_22_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask22);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 22 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask22);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_22_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 22 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  22 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  12 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  14 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  14 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  26 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  6 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  6 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  18 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  18 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  20 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 22 ) ) >> ( 22  -  10 );
+    ++in;
+    *out |= ( (*in)   % (1U << 22 )  ) <<  10 ;
+    ++out;
+    ++in;
+  }
+
+  return 44;
+}
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 12 * 4 = 48 unsigned ints */
+static int
+write_23_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask23);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 5);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 19);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 15);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 11);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask23);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 23 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 12 * 4 = 48 unsigned ints */
+static int
+write_24_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask24);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 24 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask24);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+static int
+pack_24_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 24 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  8 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 24 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  8 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 24 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  8 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 24 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 24 ) ) >> ( 24  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 24 )  ) <<  8 ;
+    ++out;
+    ++in;
+  }
+
+  return 48;
+}
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 13 * 4 = 52 unsigned ints */
+static int
+write_25_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask25);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 11);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 22);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 15);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 15));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 1);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 1));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 19);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 5);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 23);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask25);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+
+    OutReg = _mm_srli_epi32(InReg, 25 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 13 * 4 = 52 unsigned ints */
+static int
+write_26_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask26);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 22);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 24);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 26 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask26);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_26_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 26 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  26 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  20 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  14 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  14 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  8 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  2 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  22 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  22 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  10 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  10 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  24 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  18 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  18 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  12 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 26 ) ) >> ( 26  -  6 );
+    ++in;
+    *out |= ( (*in)   % (1U << 26 )  ) <<  6 ;
+    ++out;
+    ++in;
+  }
+
+  return 52;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 14 * 4 = 56 unsigned ints */
+static int
+write_27_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask27);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 22);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 17);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 7);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 7));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 24);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 19);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 9);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 9));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 26);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 21);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask27);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 27 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 14 * 4 = 56 unsigned ints */
+static int
+write_28_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask28);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 24);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 24);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 28 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask28);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_28_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 28 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  24 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  20 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  12 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  8 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  4 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 28 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  24 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  20 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  12 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  8 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 28 ) ) >> ( 28  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 28 )  ) <<  4 ;
+    ++out;
+    ++in;
+  }
+
+  return 56;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 15 * 4 = 60 unsigned ints */
+static int
+write_29_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask29);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 26);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 23);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 17);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 11);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 11));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 5);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 5));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 28);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 25);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 22);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 19);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask29);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+
+    OutReg = _mm_srli_epi32(InReg, 29 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 15 * 4 = 60 unsigned ints */
+static int
+write_30_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask30);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 28);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 26);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 24);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 22);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 16);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 14);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 14));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 12);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 10);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 10));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 8);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 6);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 6));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 4);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 30 - 2);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask30);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 2));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_30_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 30 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  30 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  28 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  28 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  26 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  26 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  24 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  24 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  22 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  22 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  20 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  20 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  18 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  18 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  16 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  16 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  14 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  14 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  12 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  12 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  10 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  10 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  8 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  8 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  6 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  6 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  4 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  4 ;
+    ++out;
+    *out |=  ( (*in)   % (1U << 30 ) ) >> ( 30  -  2 );
+    ++in;
+    *out |= ( (*in)   % (1U << 30 )  ) <<  2 ;
+    ++out;
+    ++in;
+  }
+
+  return 60;
+}
+
+
+
+#ifdef ALLOW_ODD_PACKSIZES
+/* nwritten = 16 * 4 = 64 unsigned ints */
+static int
+write_31_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask31);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 31));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 30);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 30));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 29);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 29));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 28);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 27);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 27));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 26);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 26));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 25);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 25));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 24);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 23);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 23));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 22);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 22));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 21);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 21));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 20);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 19);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 19));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 18);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 18));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 17);
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask31);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 17));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+
+    OutReg = _mm_srli_epi32(InReg, 31 - 16);
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 16 * 4 = 64 unsigned ints */
+static int
+write_32_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_load_si128(in);
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_load_si128(++in);
+
+    OutReg = InReg;
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_32_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+    *out = *in;
+    ++out;
+    ++in;
+  }
+
+  return 64;
+}
+
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 2 * 4 = 8 unsigned ints */
+static int
+write_04_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask4);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 4));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 12));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 20));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask4);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 28));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_04_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 4 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  20 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  24 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  28 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 4 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  4 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  12 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  20 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  24 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 4 )  ) <<  28 ;
+    ++out;
+    ++in;
+  }
+
+  return 8;
+}
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 4 * 4 = 16 unsigned ints */
+static int
+write_08_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask8);
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 8));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask8);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 24));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_08_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 8 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  24 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 8 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  24 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 8 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  24 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 8 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  8 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  16 ;
+    ++in;
+    *out |= ( (*in)   % (1U << 8 )  ) <<  24 ;
+    ++out;
+    ++in;
+  }
+
+  return 16;
+}
+
+
+#ifdef HAVE_SSE2
+/* nwritten = 8 * 4 = 32 unsigned ints */
+static int
+write_16_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i, const UINT4 *_in) {
+    const __m128i *in = (const __m128i *) _in;
+    __m128i OutReg;
+
+    __m128i InReg = _mm_and_si128(_mm_load_si128(in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg = InReg;
+    InReg = _mm_and_si128(_mm_load_si128(++in), mask16);
+
+    OutReg =  _mm_or_si128(OutReg,_mm_slli_epi32(InReg, 16));
+    strm_buffer_i = write_reg_buffered_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,
+					       OutReg);
+
+    return strm_buffer_i;
+}
+#endif
+
+
+static int
+pack_16_horiz (UINT4 *out, const UINT4 *in) {
+  int column;
+
+  for (column = 0; column < 4; column++) {
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+    *out |= (*in)   % (1U << 16 ) ;
+    ++in;
+    *out |= ( (*in)   % (1U << 16 )  ) <<  16 ;
+    ++out;
+    ++in;
+  }
+
+  return 32;
+}
+
+
+/* Vertical format requires all values in a block to be decoded */
+#ifdef HAVE_SSE2
+static int
+write_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i,
+	    const UINT4 *_in, int packsize) {
+
+#if 0
+  int i;
+
+  printf("Entering with packsize %d\n",packsize);
+  for (i = 0; i < BLOCKSIZE; i++) {
+    printf("%d ",_in[i]);
+  }
+  printf("\n");
+#endif
+
+  switch (packsize) {
+#ifdef ALLOW_ODD_PACKSIZES
+  case 0: return strm_buffer_i;
+  case 1: return write_01_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 2: return write_02_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 3: return write_03_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 4: return write_04_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 5: return write_05_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 6: return write_06_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 7: return write_07_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 8: return write_08_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 9: return write_09_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 10: return write_10_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 11: return write_11_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 12: return write_12_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 13: return write_13_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 14: return write_14_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 15: return write_15_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 16: return write_16_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 17: return write_17_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 18: return write_18_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 19: return write_19_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 20: return write_20_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 21: return write_21_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 22: return write_22_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 23: return write_23_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 24: return write_24_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 25: return write_25_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 26: return write_26_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 27: return write_27_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 28: return write_28_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 29: return write_29_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 30: return write_30_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 31: return write_31_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 32: return write_32_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+#else
+  case 0: return strm_buffer_i;
+  case 2: return write_02_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 4: return write_04_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 6: return write_06_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 8: return write_08_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 10: return write_10_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 12: return write_12_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 14: return write_14_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 16: return write_16_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 18: return write_18_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 20: return write_20_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 22: return write_22_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 24: return write_24_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 26: return write_26_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 28: return write_28_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 30: return write_30_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+  case 32: return write_32_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,_in);
+#endif
+  default: fprintf(stderr,"packsize of %d not allowed\n",packsize); abort();
+  }
+}
+
+#else
+
+static void
+reorder_values_vertically (Positionsptr_T *vertical, const Positionsptr_T *horizontal) {
+  int column, row, k = 0;
+  Positionsptr_T *out;
+
+  out = &(vertical[0]);
+  for (column = 0; column < 4; column++) {
+    k = column;
+    for (row = 0; row < BLOCKSIZE/4; row++) {
+      *out++ = horizontal[k];
+      k += 4;
+    }
+  }
+
+#if 0
+  printf("horizontal\n");
+  for (k = 0; k < BLOCKSIZE; k++) {
+    if (k % 4 == 0) {
+      printf("\n");
+    }
+    printf("%u ",horizontal[k]);
+  }
+  printf("\n");
+
+  printf("vertical\n");
+  for (k = 0; k < BLOCKSIZE; k++) {
+    if (k % (BLOCKSIZE/4) == 0) {
+      printf("\n");
+    }
+    printf("%u ",vertical[k]);
+  }
+  printf("\n");
+#endif
+
+  return;
+}
+
+
+/* Non-SIMD code cannot write vertical format easily, so using
+   horizontal code and conversions */
+static int
+write_vert (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i,
+	    const UINT4 *horizontal, int packsize) {
+  int nwritten;
+  UINT4 buffer[BLOCKSIZE], vertical[BLOCKSIZE];
+
+#if 0
+  int i;
+
+  printf("Entering with packsize %d\n",packsize);
+  for (i = 0; i < BLOCKSIZE; i++) {
+    printf("%d ",_in[i]);
+  }
+  printf("\n");
+#endif
+
+  reorder_values_vertically(vertical,horizontal);
+  memset((void *) buffer,0,BLOCKSIZE*sizeof(UINT4));
+
+  switch (packsize) {
+  case 0: return strm_buffer_i;
+  case 2: nwritten = pack_02_horiz(buffer,&(vertical[0])); break;
+  case 4: nwritten = pack_04_horiz(buffer,&(vertical[0])); break;
+  case 6: nwritten = pack_06_horiz(buffer,&(vertical[0])); break;
+  case 8: nwritten = pack_08_horiz(buffer,&(vertical[0])); break;
+  case 10: nwritten = pack_10_horiz(buffer,&(vertical[0])); break;
+  case 12: nwritten = pack_12_horiz(buffer,&(vertical[0])); break;
+  case 14: nwritten = pack_14_horiz(buffer,&(vertical[0])); break;
+  case 16: nwritten = pack_16_horiz(buffer,&(vertical[0])); break;
+  case 18: nwritten = pack_18_horiz(buffer,&(vertical[0])); break;
+  case 20: nwritten = pack_20_horiz(buffer,&(vertical[0])); break;
+  case 22: nwritten = pack_22_horiz(buffer,&(vertical[0])); break;
+  case 24: nwritten = pack_24_horiz(buffer,&(vertical[0])); break;
+  case 26: nwritten = pack_26_horiz(buffer,&(vertical[0])); break;
+  case 28: nwritten = pack_28_horiz(buffer,&(vertical[0])); break;
+  case 30: nwritten = pack_30_horiz(buffer,&(vertical[0])); break;
+  case 32: nwritten = pack_32_horiz(buffer,&(vertical[0])); break;
+  default: fprintf(stderr,"packsize of %d not allowed\n",packsize); abort();
+  }
+
+  return write_reg_buffered_vert(strm_fp,strm_buffer,
+				 strm_buffer_size,strm_buffer_i,
+				 buffer,nwritten);
+}
+#endif
+
+
+/* Columnar order allows just the necessary values in a block to be decoded */
+static void
+columnar_order (UINT4 *columnar, const UINT4 *vertical) {
+
+  columnar[0] = vertical[0];		/* remainder 1 */
+  columnar[1] = vertical[4];		/* remainder 5 */
+  columnar[2] = vertical[8];		/* remainder 9 */
+  columnar[3] = vertical[12];		/* remainder 13 */
+  columnar[4] = vertical[16];		/* remainder 17 */
+  columnar[5] = vertical[20];		/* remainder 21 */
+  columnar[6] = vertical[24];		/* remainder 25 */
+  columnar[7] = vertical[28];		/* remainder 29 */
+
+  columnar[8] = vertical[1];		/* remainder 2 */
+  columnar[9] = vertical[5];		/* remainder 6 */
+  columnar[10] = vertical[9];		/* remainder 10 */
+  columnar[11] = vertical[13];		/* remainder 14 */
+  columnar[12] = vertical[17];		/* remainder 18 */
+  columnar[13] = vertical[21];		/* remainder 22 */
+  columnar[14] = vertical[25];		/* remainder 26 */
+  columnar[15] = vertical[29];		/* remainder 30 */
+
+  columnar[16] = vertical[2];		/* remainder 3 */
+  columnar[17] = vertical[6];		/* remainder 7 */
+  columnar[18] = vertical[10];		/* remainder 11 */
+  columnar[19] = vertical[14];		/* remainder 15 */
+  columnar[20] = vertical[18];		/* remainder 19 */
+  columnar[21] = vertical[22];		/* remainder 23 */
+  columnar[22] = vertical[26];		/* remainder 27 */
+  columnar[23] = vertical[30];		/* remainder 31 */
+
+  columnar[24] = vertical[3];		/* remainder 4 */
+  columnar[25] = vertical[7];		/* remainder 8 */
+  columnar[26] = vertical[11];		/* remainder 12 */
+  columnar[27] = vertical[15];		/* remainder 16 */
+  columnar[28] = vertical[19];		/* remainder 20 */
+  columnar[29] = vertical[23];		/* remainder 24 */
+  columnar[30] = vertical[27];		/* remainder 28 */
+  columnar[31] = vertical[31];		/* remainder 32 */
+
+  columnar[32] = vertical[32];		/* remainder 63 */
+  columnar[33] = vertical[36];		/* remainder 59 */
+  columnar[34] = vertical[40];		/* remainder 55 */
+  columnar[35] = vertical[44];		/* remainder 51 */
+  columnar[36] = vertical[48];		/* remainder 47 */
+  columnar[37] = vertical[52];		/* remainder 43 */
+  columnar[38] = vertical[56];		/* remainder 39 */
+  columnar[39] = vertical[60];		/* remainder 35 */
+
+  columnar[40] = vertical[33];		/* remainder 62 */
+  columnar[41] = vertical[37];		/* remainder 58 */
+  columnar[42] = vertical[41];		/* remainder 54 */
+  columnar[43] = vertical[45];		/* remainder 50 */
+  columnar[44] = vertical[49];		/* remainder 46 */
+  columnar[45] = vertical[53];		/* remainder 42 */
+  columnar[46] = vertical[57];		/* remainder 38 */
+  columnar[47] = vertical[61];		/* remainder 34 */
+
+  columnar[48] = vertical[34];		/* remainder 61 */
+  columnar[49] = vertical[38];		/* remainder 57 */
+  columnar[50] = vertical[42];		/* remainder 53 */
+  columnar[51] = vertical[46];		/* remainder 49 */
+  columnar[52] = vertical[50];		/* remainder 45 */
+  columnar[53] = vertical[54];		/* remainder 41 */
+  columnar[54] = vertical[58];		/* remainder 37 */
+  columnar[55] = vertical[62];		/* remainder 33 */
+
+  columnar[56] = vertical[35];		/* remainder 60 */
+  columnar[57] = vertical[39];		/* remainder 56 */
+  columnar[58] = vertical[43];		/* remainder 52 */
+  columnar[59] = vertical[47];		/* remainder 48 */
+  columnar[60] = vertical[51];		/* remainder 44 */
+  columnar[61] = vertical[55];		/* remainder 40 */
+  columnar[62] = vertical[59];		/* remainder 36 */
+  columnar[63] = vertical[63];		/* remainder 32 */
+
+  return;
+}
+
+
+#ifdef HAVE_SSE2
+
+static int
+write_columnar (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i,
+		const UINT4 *_in, int packsize) {
+  UINT4 columnar[BLOCKSIZE];
+
+#if 0
+  int i;
+
+  printf("Entering with packsize %d\n",packsize);
+  for (i = 0; i < BLOCKSIZE; i++) {
+    printf("%d ",_in[i]);
+  }
+  printf("\n");
+#endif
+
+  columnar_order(columnar,_in);
+
+  switch (packsize) {
+  case 0: return strm_buffer_i;
+  case 2: return write_02_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 4: return write_04_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 6: return write_06_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 8: return write_08_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 10: return write_10_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 12: return write_12_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 14: return write_14_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 16: return write_16_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 18: return write_18_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 20: return write_20_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 22: return write_22_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 24: return write_24_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 26: return write_26_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 28: return write_28_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 30: return write_30_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+  case 32: return write_32_vert(strm_fp,strm_buffer,strm_buffer_size,strm_buffer_i,columnar);
+
+  default: fprintf(stderr,"packsize of %d not allowed\n",packsize); abort();
+  }
+}
+
+#else
+
+/* Non-SIMD code cannot write vertical format easily, so using
+   horizontal code and conversions */
+
+static int
+write_columnar (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i,
+		const UINT4 *horizontal, int packsize) {
+  int nwritten;
+  UINT4 buffer[BLOCKSIZE], vertical[BLOCKSIZE];
+  UINT4 columnar[BLOCKSIZE];
+
+#if 0
+  int i;
+
+  printf("Entering with packsize %d\n",packsize);
+  for (i = 0; i < BLOCKSIZE; i++) {
+    printf("%d ",_in[i]);
+  }
+  printf("\n");
+#endif
+
+  columnar_order(columnar,horizontal);
+  reorder_values_vertically(vertical,columnar);
+  memset((void *) buffer,0,BLOCKSIZE*sizeof(UINT4));
+
+  switch (packsize) {
+  case 0: return strm_buffer_i;
+  case 2: nwritten = pack_02_horiz(buffer,&(vertical[0])); break;
+  case 4: nwritten = pack_04_horiz(buffer,&(vertical[0])); break;
+  case 6: nwritten = pack_06_horiz(buffer,&(vertical[0])); break;
+  case 8: nwritten = pack_08_horiz(buffer,&(vertical[0])); break;
+  case 10: nwritten = pack_10_horiz(buffer,&(vertical[0])); break;
+  case 12: nwritten = pack_12_horiz(buffer,&(vertical[0])); break;
+  case 14: nwritten = pack_14_horiz(buffer,&(vertical[0])); break;
+  case 16: nwritten = pack_16_horiz(buffer,&(vertical[0])); break;
+  case 18: nwritten = pack_18_horiz(buffer,&(vertical[0])); break;
+  case 20: nwritten = pack_20_horiz(buffer,&(vertical[0])); break;
+  case 22: nwritten = pack_22_horiz(buffer,&(vertical[0])); break;
+  case 24: nwritten = pack_24_horiz(buffer,&(vertical[0])); break;
+  case 26: nwritten = pack_26_horiz(buffer,&(vertical[0])); break;
+  case 28: nwritten = pack_28_horiz(buffer,&(vertical[0])); break;
+  case 30: nwritten = pack_30_horiz(buffer,&(vertical[0])); break;
+  case 32: nwritten = pack_32_horiz(buffer,&(vertical[0])); break;
+  default: fprintf(stderr,"packsize of %d not allowed\n",packsize); abort();
+  }
+
+  return write_reg_buffered_vert(strm_fp,strm_buffer,
+				 strm_buffer_size,strm_buffer_i,
+				 buffer,nwritten);
+}
+
+#endif
+
+
+
+/* Horizontal format is slightly more complicated for random access of individual values */
+int
+Bitpack64_write_horiz (FILE *strm_fp, Positionsptr_T *strm_buffer, int strm_buffer_size, int strm_buffer_i,
+		       const UINT4 *horizontal, int packsize) {
+  int nwritten;
+  UINT4 buffer[BLOCKSIZE];
+
+  write_setup();
+
+#if 0
+  int i;
+
+  printf("Entering with packsize %d\n",packsize);
+  for (i = 0; i < BLOCKSIZE; i++) {
+    printf("%d ",_in[i]);
+  }
+  printf("\n");
+#endif
+
+  memset((void *) buffer,0,BLOCKSIZE*sizeof(UINT4));
+
+  switch (packsize) {
+  case 0: return strm_buffer_i;
+  case 2: nwritten = pack_02_horiz(buffer,&(horizontal[0])); break;
+  case 4: nwritten = pack_04_horiz(buffer,&(horizontal[0])); break;
+  case 6: nwritten = pack_06_horiz(buffer,&(horizontal[0])); break;
+  case 8: nwritten = pack_08_horiz(buffer,&(horizontal[0])); break;
+  case 10: nwritten = pack_10_horiz(buffer,&(horizontal[0])); break;
+  case 12: nwritten = pack_12_horiz(buffer,&(horizontal[0])); break;
+  case 14: nwritten = pack_14_horiz(buffer,&(horizontal[0])); break;
+  case 16: nwritten = pack_16_horiz(buffer,&(horizontal[0])); break;
+  case 18: nwritten = pack_18_horiz(buffer,&(horizontal[0])); break;
+  case 20: nwritten = pack_20_horiz(buffer,&(horizontal[0])); break;
+  case 22: nwritten = pack_22_horiz(buffer,&(horizontal[0])); break;
+  case 24: nwritten = pack_24_horiz(buffer,&(horizontal[0])); break;
+  case 26: nwritten = pack_26_horiz(buffer,&(horizontal[0])); break;
+  case 28: nwritten = pack_28_horiz(buffer,&(horizontal[0])); break;
+  case 30: nwritten = pack_30_horiz(buffer,&(horizontal[0])); break;
+  case 32: nwritten = pack_32_horiz(buffer,&(horizontal[0])); break;
+  default: fprintf(stderr,"packsize of %d not allowed\n",packsize); abort();
+  }
+
+  return write_reg_buffered_horiz(strm_fp,strm_buffer,
+				  strm_buffer_size,strm_buffer_i,
+				  buffer,nwritten);
+}
+
+
+
+/* Processes 64 values at a time.  Returns packsize. */
+/* Handles first 32 values from the initial value, and the last 32
+   values from the final value.  More efficient since we need to
+   process only half as many inputs. */
+static int
+compute_q4_diffs_bidir (UINT4 *diffs, UINT4 *values) {
+  UINT4 packsize;
+  int i;
+  UINT4 maxdiff = 0, top;
+  int firstbit, msb;
+
+#if 0
+  for (i = 0; i < 64; i++) {
+    assert(values[i+1] >= values[i]);
+  }
+#endif
+
+  maxdiff |= (diffs[32] = values[64] - values[63]);
+  maxdiff |= (diffs[33] = values[64] - values[62]);
+  maxdiff |= (diffs[34] = values[64] - values[61]);
+  maxdiff |= (diffs[35] = values[64] - values[60]);
+  for (i = 36; i < 64; i++) {
+    maxdiff |= (diffs[i] = values[64+32-(i+1-4)] - values[64+32-(i+1)]);
+  }
+  for (i = 31; i >= 4; i--) {
+    maxdiff |= (diffs[i] = values[i+1] - values[i+1-4]);
+  }
+  maxdiff |= (diffs[3] = values[4] - values[0]);
+  maxdiff |= (diffs[2] = values[3] - values[0]);
+  maxdiff |= (diffs[1] = values[2] - values[0]);
+  maxdiff |= (diffs[0] = values[1] - values[0]);
+
+  if (maxdiff == 0) {
+    /* __builtin_clz() behaves oddly on zero */
+    return 0;
+
+  } else {
+#ifdef HAVE_BUILTIN_CLZ
+    firstbit = __builtin_clz(maxdiff);
+    packsize = 32 - firstbit;
+#elif defined(HAVE_ASM_BSR)
+    asm("bsr %1,%0" : "=r"(msb) : "r"(maxdiff));
+    packsize = msb + 1;
+#else
+    firstbit = ((top = maxdiff >> 16) ? clz_table[top] : 16 + clz_table[maxdiff]);
+    packsize = 32 - firstbit;
+#endif
+
+#ifdef ALLOW_ODD_PACKSIZES
+    return packsize;
+#else
+    return (packsize + 1) & ~1;	/* Converts packsizes to the next multiple of 2 */
+#endif
+  }
+}
+
+
+static int
+compute_q1_diffs (UINT4 *diffs, UINT4 *values) {
+  UINT4 packsize;
+  int i;
+  UINT4 maxdiff = 0, top;
+  int firstbit, msb;
+
+#if 0
+  for (i = 0; i < 64; i++) {
+    assert(values[i+1] >= values[i]);
+  }
+#endif
+
+  for (i = 63; i >= 0; i--) {
+    maxdiff |= (diffs[i] = values[i+1] - values[i]);
+  }
+
+  if (maxdiff == 0) {
+    /* __builtin_clz() behaves oddly on zero */
+    return 0;
+
+  } else {
+#ifdef HAVE_BUILTIN_CLZ
+    firstbit = __builtin_clz(maxdiff);
+    packsize = 32 - firstbit;
+#elif defined(HAVE_ASM_BSR)
+    asm("bsr %1,%0" : "=r"(msb) : "r"(maxdiff));
+    packsize = msb + 1;
+#else
+    firstbit = ((top = maxdiff >> 16) ? clz_table[top] : 16 + clz_table[maxdiff]);
+    packsize = 32 - firstbit;
+#endif
+
+#ifdef ALLOW_ODD_PACKSIZES
+    return packsize;
+#else
+    return (packsize + 1) & ~1;	/* Converts packsizes to the next multiple of 2 */
+#endif
+  }
+}
+
+
+
+#ifdef HAVE_64_BIT
+static int
+compute_q4_diffs_bidir_huge (UINT4 *diffs, UINT8 *values) {
+  UINT4 packsize;
+  int i;
+  UINT4 maxdiff = 0, top;
+  int firstbit, msb;
+
+
+  maxdiff |= (diffs[32] = (UINT4) (values[64] - values[63]));
+  maxdiff |= (diffs[33] = (UINT4) (values[64] - values[62]));
+  maxdiff |= (diffs[34] = (UINT4) (values[64] - values[61]));
+  maxdiff |= (diffs[35] = (UINT4) (values[64] - values[60]));
+  for (i = 36; i < 64; i++) {
+    maxdiff |= (diffs[i] = (UINT4) (values[64+32-(i+1-4)] - values[64+32-(i+1)]));
+  }
+  for (i = 31; i >= 4; i--) {
+    maxdiff |= (diffs[i] = (UINT4) (values[i+1] - values[i+1-4]));
+  }
+  maxdiff |= (diffs[3] = (UINT4) (values[4] - values[0]));
+  maxdiff |= (diffs[2] = (UINT4) (values[3] - values[0]));
+  maxdiff |= (diffs[1] = (UINT4) (values[2] - values[0]));
+  maxdiff |= (diffs[0] = (UINT4) (values[1] - values[0]));
+
+  if (maxdiff == 0) {
+    /* __builtin_clz() behaves oddly on zero */
+    return 0;
+
+  } else {
+#ifdef HAVE_BUILTIN_CLZ
+    firstbit = __builtin_clz(maxdiff);
+    packsize = 32 - firstbit;
+#elif defined(HAVE_ASM_BSR)
+    asm("bsr %1,%0" : "=r"(msb) : "r"(maxdiff));
+    packsize = msb + 1;
+#else
+    firstbit = ((top = maxdiff >> 16) ? clz_table[top] : 16 + clz_table[maxdiff]);
+    packsize = 32 - firstbit;
+#endif
+
+#ifdef ALLOW_ODD_PACKSIZES
+    return packsize;
+#else
+    return (packsize + 1) & ~1;	/* Converts packsizes to the next multiple of 2 */
+#endif
+  }
+}
+#endif
+
+
+
+/* We want to store values 0..n, with final value at ascending[n]
+   possibly stored as the final metainfo value */
+/* Stored in columnar order */
+void
+Bitpack64_write_differential (char *ptrsfile, char *compfile, UINT4 *ascending, UINT4 n) {
+  FILE *ptrs_fp, *comp_fp;
+  UINT4 *ptrs;
+  int ptri, i;
+  UINT4 positioni;
+
+  /* Buffer is used to avoid frequent writes to the file */
+  UINT4 *buffer;
+  int buffer_size = BUFFER_SIZE;
+  int buffer_i;
+
+  UINT4 diffs[BLOCKSIZE], last_block[BLOCKSIZE+1];
+
+  UINT4 nwritten;
+  int packsize;
+
+
+  write_setup();
+
+  /* 2 metavalues: nwritten (pointer) and cumulative sum for block.
+     Packsize can be computed from difference between successive
+     pointers, if only even packsizes are allowed */
+  ptrs = (UINT4 *) CALLOC(((n + BLOCKSIZE)/BLOCKSIZE + 1) * DIFFERENTIAL_METAINFO_SIZE,sizeof(UINT4));
+  ptri = 0;
+
+  if ((comp_fp = FOPEN_WRITE_BINARY(compfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",compfile);
+    exit(9);
+  }
+  buffer = (UINT4 *) CALLOC(buffer_size,sizeof(UINT4));
+  buffer_i = 0;
+
+  nwritten = 0U;
+
+  /* Last value of ascending is at ascending[n] */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  for (positioni = 0; positioni + BLOCKSIZE <= n; positioni += BLOCKSIZE) {
+    /* Pointer */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Value for start of block */
+    ptrs[ptri++] = ascending[positioni];
+	
+    /* Pack block of 64 diffs */
+    packsize = compute_q4_diffs_bidir(diffs,&(ascending[positioni]));
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+  /* Old: Check for positioni < n, because if positioni == n, ascending[n] will be taken care of as metainfo */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  if (positioni <= n) {
+    /* Finish last block of 64 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Value for start of block */
+    ptrs[ptri++] = ascending[positioni];
+
+    /* For differential, want <=.  For direct, want < */
+    for (i = 0; i <= (int) (n - positioni); i++) {
+      last_block[i] = ascending[positioni+i];
+    }
+    for ( ; i <= BLOCKSIZE; i++) {
+      /* Copy last value for rest of block */
+      last_block[i] = ascending[n];
+    }
+
+    /* Pack block of < 64 diffs */
+    packsize = compute_q4_diffs_bidir(diffs,last_block);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+
+  /* Write the final pointer, which will point after the end of the file */
+  ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+  /* Value for end of block */
+  ptrs[ptri++] = ascending[n];
+
+  if ((ptrs_fp = FOPEN_WRITE_BINARY(ptrsfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",ptrsfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(ptrs,ptri,ptrs_fp);
+    FREE(ptrs);
+    fclose(ptrs_fp);
+  }
+    
+  /* Empty buffer */
+  if (buffer_i > 0) {
+    FWRITE_UINTS(buffer,buffer_i,comp_fp);	
+    buffer_i = 0;
+  }
+  FREE(buffer);
+  fclose(comp_fp);
+
+  return;
+}
+
+
+/* We want to store values 0..n, with final value at ascending[n]
+   possibly stored as the final metainfo value */
+/* D4 stored in columnar order, plus D1 stored as direct */
+void
+Bitpack64_write_differential_paired (char *ptrsfile, char *compfile, UINT4 *ascending, UINT4 n) {
+  FILE *ptrs_fp, *comp_fp;
+  UINT4 *ptrs;
+  int ptri, i;
+  UINT4 positioni;
+
+  /* Buffer is used to avoid frequent writes to the file */
+  UINT4 *buffer;
+  int buffer_size = BUFFER_SIZE;
+  int buffer_i;
+
+  UINT4 diffs[BLOCKSIZE], last_block[BLOCKSIZE+1];
+
+  UINT4 nwritten;
+  int packsize;
+
+
+  write_setup();
+
+  /* 2 metavalues: nwritten (pointer) and cumulative sum for block.
+     Packsize can be computed from difference between successive
+     pointers, if only even packsizes are allowed */
+  ptrs = (UINT4 *) CALLOC(((n + BLOCKSIZE)/BLOCKSIZE + 1) * PAIRED_METAINFO_SIZE,sizeof(UINT4));
+  ptri = 0;
+
+  if ((comp_fp = FOPEN_WRITE_BINARY(compfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",compfile);
+    exit(9);
+  }
+  buffer = (UINT4 *) CALLOC(buffer_size,sizeof(UINT4));
+  buffer_i = 0;
+
+  nwritten = 0U;
+
+  /* Last value of ascending is at ascending[n] */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  for (positioni = 0; positioni + BLOCKSIZE <= n; positioni += BLOCKSIZE) {
+    /* Pointer to D4 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Prefix sum for start of block */
+    ptrs[ptri++] = ascending[positioni];
+	
+    /* D4: Pack block of 64 diffs */
+    packsize = compute_q4_diffs_bidir(diffs,&(ascending[positioni]));
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+
+    /* Pointer to D1 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* D1: Pack block of 64 diffs */
+    packsize = compute_q1_diffs(diffs,&(ascending[positioni]));
+    buffer_i = write_vert(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+  /* Old: Check for positioni < n, because if positioni == n, ascending[n] will be taken care of as metainfo */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  if (positioni <= n) {
+    /* Finish last block of 64 */
+    /* Pointer to D4 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Prefix sum for start of block */
+    ptrs[ptri++] = ascending[positioni];
+
+    /* For differential, want <=.  For direct, want < */
+    for (i = 0; i <= (int) (n - positioni); i++) {
+      last_block[i] = ascending[positioni+i];
+    }
+    for ( ; i <= BLOCKSIZE; i++) {
+      /* Copy last value for rest of block */
+      last_block[i] = ascending[n];
+    }
+
+    /* D4: Pack block of < 64 diffs */
+    packsize = compute_q4_diffs_bidir(diffs,last_block);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+
+    /* Pointer to D1 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* D1: Pack block of < 64 diffs */
+    packsize = compute_q1_diffs(diffs,last_block);
+    buffer_i = write_vert(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+  }
+
+  /* Write the final pointer, which will point after the end of the file */
+  ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+  /* Prefix sum for end of block */
+  ptrs[ptri++] = ascending[n];
+
+  if ((ptrs_fp = FOPEN_WRITE_BINARY(ptrsfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",ptrsfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(ptrs,ptri,ptrs_fp);
+    FREE(ptrs);
+    fclose(ptrs_fp);
+  }
+    
+  /* Empty buffer */
+  if (buffer_i > 0) {
+    FWRITE_UINTS(buffer,buffer_i,comp_fp);	
+    buffer_i = 0;
+  }
+  FREE(buffer);
+  fclose(comp_fp);
+
+  return;
+}
+
+
+
+
+/* Worst case:
+   64 128 192 256
+   256 256 256 256 */
+
+#define FIXED10_PACKSIZE 10 	/* Enough to hold +/- 256 */
+
+/* We want to store values 0..n, with final value at ascending[n]
+   possibly stored as the final metainfo value */
+/* Stored in columnar order */
+void
+Bitpack64_write_fixed10 (char *ptrsfile, char *compfile, UINT4 *ascending, UINT4 n) {
+#ifndef USE_ONE_FILE_FOR_FIXED
+  FILE *ptrs_fp;
+#endif
+  FILE *comp_fp;
+  UINT4 *ptrs;
+  int ptri, i;
+  UINT4 positioni;
+
+  /* Buffer is used to avoid frequent writes to the file */
+  UINT4 *buffer;
+  int buffer_size = BUFFER_SIZE;
+  int buffer_i;
+
+  UINT4 diffs[BLOCKSIZE], last_block[BLOCKSIZE+1];
+
+  UINT4 nwritten;
+  int packsize;
+
+  write_setup();
+
+  /* 2 metavalues: nwritten (pointer) and cumulative sum for block.
+     Packsize can be computed from difference between successive
+     pointers, if only even packsizes are allowed */
+#ifdef USE_ONE_FILE_FOR_FIXED
+  ptrs = (UINT4 *) CALLOC(4,sizeof(UINT4));
+  ptri = 0;
+#else
+  ptrs = (UINT4 *) CALLOC(((n + BLOCKSIZE)/BLOCKSIZE + 1) * RANK_METAINFO_SIZE,sizeof(UINT4));
+  ptri = 0;
+#endif
+
+  if ((comp_fp = FOPEN_WRITE_BINARY(compfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",compfile);
+    exit(9);
+  }
+  buffer = (UINT4 *) CALLOC(buffer_size,sizeof(UINT4));
+  buffer_i = 0;
+
+  nwritten = 0U;
+
+  /* Last value of ascending is at ascending[n] */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  for (positioni = 0; positioni + BLOCKSIZE <= n; positioni += BLOCKSIZE) {
+#if 0
+    /* Pointer */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+#endif
+
+    /* Value for start of block */
+    ptrs[ptri++] = ascending[positioni];
+#ifdef USE_ONE_FILE_FOR_FIXED
+    if (ptri == 4) {
+      FWRITE_UINTS(ptrs,4,comp_fp);
+      ptri = 0;
+    }
+#endif
+	
+    /* Pack block of 64 diffs */
+    packsize = compute_q4_diffs_bidir(diffs,&(ascending[positioni]));
+    assert(packsize <= FIXED10_PACKSIZE);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,FIXED10_PACKSIZE);
+
+    nwritten += 2 * FIXED10_PACKSIZE;
+  }
+
+  /* Old: Check for positioni < n, because if positioni == n, ascending[n] will be taken care of as metainfo */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  if (positioni <= n) {
+#if 0
+    /* Finish last block of 64 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+#endif
+
+    /* Value for start of block */
+    ptrs[ptri++] = ascending[positioni];
+#ifdef USE_ONE_FILE_FOR_FIXED
+    if (ptri == 4) {
+      FWRITE_UINTS(ptrs,4,comp_fp);
+      ptri = 0;
+    }
+#endif
+
+    /* For differential, want <=.  For direct, want < */
+    for (i = 0; i <= (int) (n - positioni); i++) {
+      last_block[i] = ascending[positioni+i];
+    }
+    for ( ; i <= BLOCKSIZE; i++) {
+      /* Copy last value for rest of block */
+      last_block[i] = ascending[n];
+    }
+
+    /* Pack block of < 64 diffs */
+    packsize = compute_q4_diffs_bidir(diffs,last_block);
+    assert(packsize <= FIXED10_PACKSIZE);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,FIXED10_PACKSIZE);
+
+    nwritten += 2 * FIXED10_PACKSIZE;
+  }
+
+
+#if 0
+  /* Write the final pointer, which will point after the end of the file */
+  ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+#endif
+
+  /* Value for end of block */
+  ptrs[ptri++] = ascending[n];
+#ifdef USE_ONE_FILE_FOR_FIXED
+  for (i = ptri; i < 4; i++) {
+    ptrs[i] = 0U;
+  }
+  FWRITE_UINTS(ptrs,4,comp_fp);
+#else
+  if ((ptrs_fp = FOPEN_WRITE_BINARY(ptrsfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",ptrsfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(ptrs,ptri,ptrs_fp);
+    fclose(ptrs_fp);
+  }
+#endif
+  FREE(ptrs);
+    
+  /* Empty buffer */
+  if (buffer_i > 0) {
+    FWRITE_UINTS(buffer,buffer_i,comp_fp);	
+    buffer_i = 0;
+  }
+  FREE(buffer);
+  fclose(comp_fp);
+
+  return;
+}
+
+
+void
+Bitpack64_write_differential_huge (char *pagesfile, char *ptrsfile, char *compfile,
+				   UINT8 *ascending, UINT4 n) {
+  UINT8 currpage, nextpage;
+  FILE *pages_fp, *ptrs_fp, *comp_fp;
+  UINT4 pages[25];	/* Allows us to handle up to 100 billion positions */
+  UINT4 *ptrs;
+  int ptri;
+  UINT4 positioni;
+
+  /* Buffer is used to avoid frequent writes to the file */
+  UINT4 *buffer;
+  int buffer_size = BUFFER_SIZE;
+  int buffer_i;
+
+  UINT4 diffs[BLOCKSIZE];
+  UINT8 last_block[BLOCKSIZE+1];
+
+  int pagei = 0, i;
+  UINT4 nwritten;
+  int packsize;
+
+
+  write_setup();
+
+  /* 2 metavalues: nwritten (pointer) and cumulative sum for block.
+     Packsize can be computed from difference between successive
+     pointers, if only even packsizes are allowed */
+  ptrs = (UINT4 *) CALLOC(((n + BLOCKSIZE)/BLOCKSIZE + 1) * DIFFERENTIAL_METAINFO_SIZE,sizeof(UINT4));
+  ptri = 0;
+
+  if ((comp_fp = FOPEN_WRITE_BINARY(compfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",compfile);
+    exit(9);
+  }
+  buffer = (UINT4 *) CALLOC(buffer_size,sizeof(UINT4));
+  buffer_i = 0;
+
+  currpage = 0;
+  nextpage = POSITIONS_PAGE;
+  nwritten = 0U;
+
+  /* Last value of ascending is at ascending[n] */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  for (positioni = 0; positioni + BLOCKSIZE <= n; positioni += BLOCKSIZE) {
+    /* Pointer */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Value for start of block */
+    while (ascending[positioni] >= nextpage) {
+      fprintf(stderr,"\nAt position %u (block %u), ascending %lu >= nextpage %lu",
+	      positioni,positioni/BLOCKSIZE,ascending[positioni],nextpage);
+      pages[pagei++] = positioni/BLOCKSIZE;
+      currpage = nextpage;
+      nextpage += POSITIONS_PAGE;
+    }
+    ptrs[ptri++] = ascending[positioni] - currpage;
+
+	
+    /* Pack block of 64 diffs */
+    packsize = compute_q4_diffs_bidir_huge(diffs,&(ascending[positioni]));
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+  /* Old: Check for positioni < n, because if positioni == n, ascending[n] will be taken care of as metainfo */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  if (positioni <= n) {
+    /* Finish last block of 64 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Value for start of block */
+    while (ascending[positioni] >= nextpage) {
+      fprintf(stderr,"\nAt position %u (block %u), ascending %lu >= nextpage %lu",
+	      positioni,positioni/BLOCKSIZE,ascending[positioni],nextpage);
+      pages[pagei++] = positioni/BLOCKSIZE;
+      currpage = nextpage;
+      nextpage += POSITIONS_PAGE;
+    }
+    ptrs[ptri++] = ascending[positioni] - currpage;
+
+    /* For differential, want <=.  For direct, want < */
+    for (i = 0; i <= (int) (n - positioni); i++) {
+      last_block[i] = ascending[positioni+i] - currpage;
+    }
+    for ( ; i <= BLOCKSIZE; i++) {
+      /* Copy last value for rest of block */
+      last_block[i] = ascending[n] - currpage;
+    }
+
+    /* Pack block of < 64 diffs */
+    packsize = compute_q4_diffs_bidir_huge(diffs,last_block);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+
+  /* Write the final pointer, which will point after the end of the file */
+  ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+  /* Value for end of block */
+  if (ascending[n] >= nextpage) {
+    fprintf(stderr,"\nAt final oligo %u (block %u), ascending %lu >= nextpage %lu",
+	    n,n/BLOCKSIZE,ascending[n],nextpage);
+    pages[pagei++] = n/BLOCKSIZE;
+    currpage = nextpage;
+    /* nextpage += POSITIONS_PAGE; */
+  }
+  ptrs[ptri++] = ascending[n] - currpage;
+
+
+  /* Write pages */
+  if (pagei > 0) {
+    pages[pagei++] = -1U; /* Final value */
+    if ((pages_fp = FOPEN_WRITE_BINARY(pagesfile)) == NULL) {
+      fprintf(stderr,"Can't write to file %s\n",pagesfile);
+      exit(9);
+    } else {
+      fprintf(stderr,"\nHave %d pages:",pagei);
+      for (i = 0; i < pagei; i++) {
+	fprintf(stderr," %u",pages[i]);
+      }
+      fprintf(stderr,"\n");
+      FWRITE_UINTS(pages,pagei,pages_fp);
+      /* FREE(pages); */
+      fclose(pages_fp);
+    }
+  }
+
+  if ((ptrs_fp = FOPEN_WRITE_BINARY(ptrsfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",ptrsfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(ptrs,ptri,ptrs_fp);
+    FREE(ptrs);
+    fclose(ptrs_fp);
+  }
+    
+  /* Empty buffer */
+  if (buffer_i > 0) {
+    FWRITE_UINTS(buffer,buffer_i,comp_fp);	
+    buffer_i = 0;
+  }
+  FREE(buffer);
+  fclose(comp_fp);
+
+  return;
+}
+
+
+void
+Bitpack64_write_fixed10_huge (char *pagesfile, char *ptrsfile, char *compfile,
+			      UINT8 *ascending, UINT4 n) {
+#ifndef USE_ONE_FILE_FOR_FIXED
+  FILE *ptrs_fp;
+#endif
+  UINT8 currpage, nextpage;
+  FILE *pages_fp, *comp_fp;
+  UINT4 pages[25];	/* Allows us to handle up to 100 billion positions */
+  UINT4 *ptrs;
+  int ptri;
+  UINT4 positioni;
+
+  /* Buffer is used to avoid frequent writes to the file */
+  UINT4 *buffer;
+  int buffer_size = BUFFER_SIZE;
+  int buffer_i;
+
+  UINT4 diffs[BLOCKSIZE];
+  UINT8 last_block[BLOCKSIZE+1];
+
+  int pagei = 0, i;
+  UINT4 nwritten;
+  int packsize;
+
+
+  write_setup();
+
+  /* 2 metavalues: nwritten (pointer) and cumulative sum for block.
+     Packsize can be computed from difference between successive
+     pointers, if only even packsizes are allowed */
+#ifdef USE_ONE_FILE_FOR_FIXED
+  ptrs = (UINT *) CALLOC(4,sizeof(UINT4));
+  ptri = 0;
+#else
+  ptrs = (UINT4 *) CALLOC(((n + BLOCKSIZE)/BLOCKSIZE + 1) * RANK_METAINFO_SIZE,sizeof(UINT4));
+  ptri = 0;
+#endif
+
+  if ((comp_fp = FOPEN_WRITE_BINARY(compfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",compfile);
+    exit(9);
+  }
+  buffer = (UINT4 *) CALLOC(buffer_size,sizeof(UINT4));
+  buffer_i = 0;
+
+  currpage = 0;
+  nextpage = POSITIONS_PAGE;
+  nwritten = 0U;
+
+  /* Last value of ascending is at ascending[n] */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  for (positioni = 0; positioni + BLOCKSIZE <= n; positioni += BLOCKSIZE) {
+#if 0
+    /* Pointer */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+#endif
+
+    /* Value for start of block */
+    while (ascending[positioni] >= nextpage) {
+      fprintf(stderr,"\nAt position %u (block %u), ascending %lu >= nextpage %lu",
+	      positioni,positioni/BLOCKSIZE,ascending[positioni],nextpage);
+      pages[pagei++] = positioni/BLOCKSIZE;
+      currpage = nextpage;
+      nextpage += POSITIONS_PAGE;
+    }
+    ptrs[ptri++] = ascending[positioni] - currpage;
+#ifdef USE_ONE_FILE_FOR_FIXED
+    if (ptri == 4) {
+      FWRITE_UINTS(ptrs,4,comp_fp);
+      ptri = 0;
+    }
+#endif
+	
+    /* Pack block of 64 diffs */
+    packsize = compute_q4_diffs_bidir_huge(diffs,&(ascending[positioni]));
+    assert(packsize <= FIXED10_PACKSIZE);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,FIXED10_PACKSIZE);
+
+    nwritten += 2 * packsize;
+  }
+
+  /* Old: Check for positioni < n, because if positioni == n, ascending[n] will be taken care of as metainfo */
+  /* Use <= n instead of < n, because we want ascending[n] to be taken care of by unpack_00, not a check for remainder == 0 */
+  if (positioni <= n) {
+#if 0
+    /* Finish last block of 64 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+#endif
+
+    /* Value for start of block */
+    while (ascending[positioni] >= nextpage) {
+      fprintf(stderr,"\nAt position %u (block %u), ascending %lu >= nextpage %lu",
+	      positioni,positioni/BLOCKSIZE,ascending[positioni],nextpage);
+      pages[pagei++] = positioni/BLOCKSIZE;
+      currpage = nextpage;
+      nextpage += POSITIONS_PAGE;
+    }
+    ptrs[ptri++] = ascending[positioni] - currpage;
+#ifdef USE_ONE_FILE_FOR_FIXED
+    if (ptri == 4) {
+      FWRITE_UINTS(ptrs,4,comp_fp);
+      ptri = 0;
+    }
+#endif
+
+    /* For differential, want <=.  For direct, want < */
+    for (i = 0; i <= (int) (n - positioni); i++) {
+      last_block[i] = ascending[positioni+i] - currpage;
+    }
+    for ( ; i <= BLOCKSIZE; i++) {
+      /* Copy last value for rest of block */
+      last_block[i] = ascending[n] - currpage;
+    }
+
+    /* Pack block of < 64 diffs */
+    packsize = compute_q4_diffs_bidir_huge(diffs,last_block);
+    assert(packsize <= FIXED10_PACKSIZE);
+    buffer_i = write_columnar(comp_fp,buffer,buffer_size,buffer_i,diffs,FIXED10_PACKSIZE);
+
+    nwritten += 2 * packsize;
+  }
+
+
+#if 0
+  /* Write the final pointer, which will point after the end of the file */
+  ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+#endif
+
+  /* Value for end of block */
+  if (ascending[n] >= nextpage) {
+    fprintf(stderr,"\nAt final oligo %u (block %u), ascending %lu >= nextpage %lu",
+	    n,n/BLOCKSIZE,ascending[n],nextpage);
+    pages[pagei++] = n/BLOCKSIZE;
+    currpage = nextpage;
+    /* nextpage += POSITIONS_PAGE; */
+  }
+  ptrs[ptri++] = ascending[n] - currpage;
+#ifdef USE_ONE_FILE_FOR_FIXED
+  for (i = ptri; i < 4; i++) {
+    ptrs[i] = 0U;
+  }
+  FWRITE_UINTS(ptrs,4,comp_fp);
+#else
+  if ((ptrs_fp = FOPEN_WRITE_BINARY(ptrsfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",ptrsfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(ptrs,ptri,ptrs_fp);
+    fclose(ptrs_fp);
+  }
+#endif
+  FREE(ptrs);
+
+  /* Write pages */
+  if (pagei > 0) {
+    pages[pagei++] = -1U; /* Final value */
+    if ((pages_fp = FOPEN_WRITE_BINARY(pagesfile)) == NULL) {
+      fprintf(stderr,"Can't write to file %s\n",pagesfile);
+      exit(9);
+    } else {
+      fprintf(stderr,"\nHave %d pages:",pagei);
+      for (i = 0; i < pagei; i++) {
+	fprintf(stderr," %u",pages[i]);
+      }
+      fprintf(stderr,"\n");
+      FWRITE_UINTS(pages,pagei,pages_fp);
+      /* FREE(pages); */
+      fclose(pages_fp);
+    }
+  }
+
+  /* Empty buffer */
+  if (buffer_i > 0) {
+    FWRITE_UINTS(buffer,buffer_i,comp_fp);	
+    buffer_i = 0;
+  }
+  FREE(buffer);
+  fclose(comp_fp);
+
+  return;
+}
+
+
+
+
+static int
+compute_packsize (UINT4 *values) {
+  UINT4 packsize;
+  UINT4 maxvalue = 0, top;
+  int i;
+  int firstbit, msb;
+
+  for (i = 0; i < 64; i++) {
+    maxvalue |= values[i];
+  }
+
+  if (maxvalue == 0) {
+    /* __builtin_clz() behaves oddly on zero */
+    return 0;
+
+  } else {
+#ifdef HAVE_BUILTIN_CLZ
+    firstbit = __builtin_clz(maxvalue);
+    packsize = 32 - firstbit;
+#elif defined(HAVE_ASM_BSR)
+    asm("bsr %1,%0" : "=r"(msb) : "r"(maxvalue));
+    packsize = msb + 1;
+#else
+    firstbit = ((top = maxvalue >> 16) ? clz_table[top] : 16 + clz_table[maxvalue]);
+    packsize = 32 - firstbit;
+#endif
+
+#ifdef ALLOW_ODD_PACKSIZES
+    return packsize;
+#else
+    return (packsize + 1) & ~1;	/* Converts packsizes to the next multiple of 2 */
+#endif
+  }
+}
+
+
+/* Want to store values 0..n-1.  The value direct[n] does not exist.  */
+/* Stored in vertical order */
+void
+Bitpack64_write_direct (char *ptrsfile, char *compfile, UINT4 *direct, UINT4 n) {
+  FILE *ptrs_fp, *comp_fp;
+  UINT4 *ptrs;
+  int ptri, i;
+  UINT4 positioni;
+
+  UINT4 *buffer;
+  int buffer_size = BUFFER_SIZE;
+  int buffer_i;
+
+  UINT4 last_block[BLOCKSIZE];
+
+  UINT4 nwritten;
+  int packsize;
+
+
+  write_setup();
+
+  /* 1 metavalue: nwritten (pointer).  Packsize can be
+     computed from difference between successive pointers, if only
+     even packsizes are allowed */
+  ptrs = (UINT4 *) CALLOC(((n + BLOCKSIZE - 1)/BLOCKSIZE + 1) * DIRECT_METAINFO_SIZE,sizeof(UINT4));
+  ptri = 0;
+
+  if ((comp_fp = FOPEN_WRITE_BINARY(compfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",compfile);
+    exit(9);
+  }
+  buffer = (UINT4 *) CALLOC(buffer_size,sizeof(UINT4));
+  buffer_i = 0;
+
+  nwritten = 0U;
+
+  for (positioni = 0; positioni + BLOCKSIZE < n; positioni += BLOCKSIZE) {
+    /* Pointer */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+    /* Pack block of 64 diffs */
+    packsize = compute_packsize(&(direct[positioni]));
+    buffer_i = write_vert(comp_fp,buffer,buffer_size,buffer_i,&(direct[positioni]),packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+  if (positioni < n) {
+    /* Finish last block of 64 */
+    ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+    
+    i = 0;
+    while (positioni < n) {
+      last_block[i++] = direct[positioni++];
+    }
+    while (i < BLOCKSIZE) {
+      last_block[i++] = 0;
+    }
+
+    packsize = compute_packsize(last_block);
+    buffer_i = write_vert(comp_fp,buffer,buffer_size,buffer_i,last_block,packsize);
+
+#ifdef ALLOW_ODD_PACKSIZES
+    nwritten += 2 * ((packsize + 1) & ~1);
+#else
+    nwritten += 2 * packsize;
+#endif
+  }
+
+  /* Write the final pointer, which will point after the end of the
+     file */
+  ptrs[ptri++] = nwritten/4;	/* In 128-bit registers */
+
+  if ((ptrs_fp = FOPEN_WRITE_BINARY(ptrsfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",ptrsfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(ptrs,ptri,ptrs_fp);
+    FREE(ptrs);
+    fclose(ptrs_fp);
+  }
+    
+  /* Empty buffer */
+  if (buffer_i > 0) {
+    FWRITE_UINTS(buffer,buffer_i,comp_fp);	
+    buffer_i = 0;
+  }
+  FREE(buffer);
+  fclose(comp_fp);
+
+  return;
+}
+
+
diff --git a/src/bitpack64-write.h b/src/bitpack64-write.h
new file mode 100644
index 0000000..1372f13
--- /dev/null
+++ b/src/bitpack64-write.h
@@ -0,0 +1,24 @@
+#ifndef BITPACK64_WRITE_INCLUDED
+#define BITPACK64_WRITE_INCLUDED
+#include <stdio.h>
+#include "types.h"
+
+/* Stores values 0..n */
+extern void
+Bitpack64_write_differential (char *ptrsfile, char *compfile, UINT4 *ascending, UINT4 n);
+extern void
+Bitpack64_write_differential_paired (char *ptrsfile, char *compfile, UINT4 *ascending, UINT4 n);
+extern void
+Bitpack64_write_fixed10 (char *ptrsfile, char *compfile, UINT4 *ascending, UINT4 n);
+extern void
+Bitpack64_write_differential_huge (char *pagesfile, char *ptrsfile, char *compfile,
+				   UINT8 *ascending, UINT4 n);
+extern void
+Bitpack64_write_fixed10_huge (char *pagesfile, char *ptrsfile, char *compfile,
+			      UINT8 *ascending, UINT4 n);
+
+/* Stores values 0..(n-1) */
+extern void
+Bitpack64_write_direct (char *ptrsfile, char *compfile, UINT4 *direct, UINT4 n);
+
+#endif
diff --git a/src/boyer-moore.c b/src/boyer-moore.c
index f509ba2..14dd5f4 100644
--- a/src/boyer-moore.c
+++ b/src/boyer-moore.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: boyer-moore.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: boyer-moore.c 132025 2014-04-01 18:53:48Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -357,6 +357,7 @@ BoyerMoore (char *query, int querylen, char *text, int textlen) {
 }
 
 
+#if 0
 static char complCode[128] = COMPLEMENT_LC;
 
 static char
@@ -389,20 +390,29 @@ get_genomic_nt (char *g_alt, int genomicpos,
     return complCode[(int) c2];
   }
 }
+#endif
 
 
 Intlist_T
 BoyerMoore_nt (char *query, int querylen, int textoffset, int textlen,
 	       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp) {
-#ifndef STANDALONE
   Intlist_T hits = NULL;
-#endif
   int i, j, *good_suffix_shift, *bad_char_shift;
-  char g_alt;
+  char *text, *text_alt;
 
   if (query_okay(query,querylen)) {
     good_suffix_shift = precompute_good_suffix_shift(query,querylen);
     bad_char_shift = precompute_bad_char_shift(query,querylen);
+    if (watsonp) {
+      text = Genome_get_segment_blocks_right(&text_alt,/*left*/chroffset+textoffset,textlen+querylen,chrhigh,/*revcomp*/false);
+    } else {
+      text = Genome_get_segment_blocks_left(&text_alt,/*left*/chrhigh-textoffset+1,textlen+querylen,chroffset,/*revcomp*/true);
+    }
+    if (text == NULL) {
+      return hits;
+    }
+
+    /* This makes text[i+j] == get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp) */
 
     debug(
 	  printf("bad_char_shift:\n");
@@ -419,18 +429,12 @@ BoyerMoore_nt (char *query, int querylen, int textoffset, int textlen,
     j = 0;
     while (j <= textlen - querylen) {
 #ifdef PMAP
-      for (i = querylen - 1;
-	   i >= 0 && matchtable[query[i]-'A'][/*text[i+j]*/get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp)-'A'] == true;
-	   i--) ;
+      for (i = querylen - 1; i >= 0 && matchtable[query[i]-'A'][text[i+j]-'A'] == true; i--) ;
 #else
-      for (i = querylen - 1;
-	   i >= 0 && query[i] == /*text[i+j]*/get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp);
-	   i--) ;
+      for (i = querylen - 1; i >= 0 && query[i] == text[i+j]; i--) ;
 #endif
       if (i < 0) {
-#ifndef STANDALONE
 	hits = Intlist_push(hits,j);
-#endif
 	
 	debug1(printf("Success at %d\n",j));
 	debug(printf("Shift by %d (Gs[0])\n",good_suffix_shift[0]));
@@ -438,33 +442,39 @@ BoyerMoore_nt (char *query, int querylen, int textoffset, int textlen,
       } else {
 	debug(
 	      if (good_suffix_shift[i] > 
-		  bad_char_shift[na_index(/*text[i+j]*/get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp))] - querylen + 1 + i) {
+		  bad_char_shift[na_index(text[i+j])] - querylen + 1 + i) {
 		printf("Shift by %d (Gs[%d])\n",
 		       good_suffix_shift[i],i);
 	      } else {
 		printf("Shift by %d (Gs[%d] == Bc[%c] - %d + %d)\n",
-		       bad_char_shift[na_index(/*text[i+j]*/get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp))] - querylen + 1 + i,
-		       i,/*text[i+j]*/get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp),querylen,i+1);
+		       bad_char_shift[na_index(text[i+j])] - querylen + 1 + i,
+		       i,text[i+j],querylen,i+1);
 	      }
 	      );
 	j += MAX(good_suffix_shift[i],
-		 bad_char_shift[na_index(/*text[i+j]*/get_genomic_nt(&g_alt,textoffset+i+j,chroffset,chrhigh,watsonp))] - querylen + 1 + i);
+		 bad_char_shift[na_index(text[i+j])] - querylen + 1 + i);
       }
     }
+
+    if (text_alt != text) {
+      FREE(text_alt);
+    }
+    FREE(text);
+
     FREE(bad_char_shift);
     FREE(good_suffix_shift);
   }
 
-#ifndef STANDALONE
   return hits;
-#endif
 }
 
 
 int *
 BoyerMoore_bad_char_shift (char *query, int querylen) {
   int *bad_char_shift;
+#ifdef DEBUG
   int i;
+#endif
 
   if (query_okay(query,querylen)) {
     bad_char_shift = precompute_bad_char_shift(query,querylen);
@@ -522,6 +532,7 @@ BoyerMoore_maxprefix (char *query, int querylen, char *text, int textlen,
 
 
 
+#if 0
 static char *
 string_reverse (char *original, int length) {
   char *reverse;
@@ -534,7 +545,7 @@ string_reverse (char *original, int length) {
   }
   return reverse;
 }
-
+#endif
 
 
 #ifdef STANDALONE
diff --git a/src/bytecoding.c b/src/bytecoding.c
new file mode 100644
index 0000000..e9d2dc9
--- /dev/null
+++ b/src/bytecoding.c
@@ -0,0 +1,785 @@
+static char rcsid[] = "$Id: bytecoding.c 136085 2014-05-13 23:00:04Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "bytecoding.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "mem.h"
+#include "fopen.h"
+
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"
+#else
+#include "littleendian.h"
+#endif
+
+
+#ifdef DEBUG10
+#define debug10(x) x
+#else
+#define debug10(x)
+#endif
+
+
+void
+Bytecoding_write (char *bytesfile, char *excfile, char *guidefile, UINT4 *values,
+		  UINT4 genomelength, int guide_interval) {
+  FILE *fp_bytes, *fp_guide, *fp_exceptions;
+  unsigned char *bytes;
+  UINT4 nexceptions = 0;
+
+  UINT4 n = genomelength, i;
+  UINT4 guide_value = 0;
+
+
+  bytes = (unsigned char *) MALLOC((n+1)*sizeof(unsigned char));
+  fp_exceptions = FOPEN_WRITE_BINARY(excfile);
+  fp_guide = FOPEN_WRITE_BINARY(guidefile);
+
+  for (i = 0; i <= n; i++) {
+    if (values[i] < 255) {
+      bytes[i] = (unsigned char) values[i];
+    } else {
+      bytes[i] = (unsigned char) 255; /* Indicates an exception */
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(values[i],fp_exceptions);
+      nexceptions++;
+    }
+  }
+
+#if 0
+  /* Overkill */
+  while (i >= guide_value) {
+    FWRITE_UINT(nexceptions,fp_guide);
+    guide_value += guide_interval;
+  }
+#else
+  /* Just need this */
+  FWRITE_UINT(nexceptions,fp_guide);
+#endif
+
+
+  fclose(fp_exceptions);
+  fclose(fp_guide);
+
+  fprintf(stderr,"Byte-coding: %u values < 255, %u exceptions >= 255 (%.1f%%)\n",
+	  (n+1)-nexceptions,nexceptions,100*(double) nexceptions/(double) (n+1));
+  fprintf(stderr,"Writing bytes file...");
+  fp_bytes = FOPEN_WRITE_BINARY(bytesfile);
+  fwrite(bytes,sizeof(unsigned char),n+1,fp_bytes);
+  fclose(fp_bytes);
+  fprintf(stderr,"done\n");
+
+  FREE(bytes);
+
+  return;
+}
+
+
+unsigned char *
+Bytecoding_write_exceptions_only (char *excfile, char *guidefile, UINT4 *values,
+				  UINT4 genomelength, int guide_interval) {
+  unsigned char *bytes;
+  FILE *fp_guide, *fp_exceptions;
+  UINT4 nexceptions = 0;
+
+  UINT4 n = genomelength, i;
+  UINT4 guide_value = 0;
+
+
+  bytes = (unsigned char *) MALLOC((n+1)*sizeof(unsigned char));
+  fp_exceptions = FOPEN_WRITE_BINARY(excfile);
+  fp_guide = FOPEN_WRITE_BINARY(guidefile);
+
+  for (i = 0; i <= n; i++) {
+    if (values[i] < 255) {
+      bytes[i] = (unsigned char) values[i];
+    } else {
+      bytes[i] = (unsigned char) 255; /* Indicates an exception */
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(values[i],fp_exceptions);
+      nexceptions++;
+    }
+  }
+
+#if 0
+  /* Overkill */
+  while (i >= guide_value) {
+    FWRITE_UINT(nexceptions,fp_guide);
+    guide_value += guide_interval;
+  }
+#else
+  /* Just need this */
+  FWRITE_UINT(nexceptions,fp_guide);
+#endif
+
+
+  fclose(fp_exceptions);
+  fclose(fp_guide);
+
+  fprintf(stderr,"Byte-coding: %u values < 255, %u exceptions >= 255 (%.1f%%)\n",
+	  (n+1)-nexceptions,nexceptions,100*(double) nexceptions/(double) (n+1));
+
+  return bytes;
+}
+
+
+#define LCPCHILDDC_BLOCKSIZE 5
+
+/* Interleaved byte array with lcp info, child info, and
+   discriminating chars.  Each lcp and child element takes 1 byte, and
+   the discriminating chars takes 1 nibble.  Therefore, can store in
+   blocks of 5 bytes: lcp0, lcp1, discrim (with nibble1 in bits 4-7
+   and nibble0 in bits 0-3), child0, and child1, which is the
+   approximate order of information needed by Sarray_get_child.
+   Assumes that lcpbytes, lcp_exceptions, and lcp_guide have already
+   been computed and written, although this format obviates the
+   separate lcpbytes file. */
+
+void
+Bytecoding_write_lcpchilddc (char *bytesfile, char *excfile, char *guidefile, UINT4 *child,
+			     unsigned char *discrim_chars, unsigned char *lcpbytes,
+			     UINT4 genomelength, int guide_interval) {
+  FILE *fp_bytes, *fp_guide, *fp_exceptions;
+  unsigned char *bytes, *bytes_orig;
+  UINT4 nexceptions = 0;
+
+  UINT4 n = genomelength, i;
+  size_t nblocks;
+  
+  UINT4 guide_value = 0;
+
+  nblocks = ((n + 1) + 1)/2;
+
+  bytes_orig = bytes = (unsigned char *) MALLOC(nblocks * LCPCHILDDC_BLOCKSIZE * sizeof(unsigned char));
+  fp_exceptions = FOPEN_WRITE_BINARY(excfile);
+  fp_guide = FOPEN_WRITE_BINARY(guidefile);
+
+  i = 0;
+  while (i + 1 <= n) {
+    *bytes++ = lcpbytes[i];
+    *bytes++ = lcpbytes[i+1];
+
+    *bytes++ = *discrim_chars++;
+
+    if (child[i] < 255) {
+      *bytes++ = (unsigned char) child[i];
+    } else {
+      *bytes++ = (unsigned char) 255; /* Indicates an exception */
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(child[i],fp_exceptions);
+      nexceptions++;
+    }
+    i++;
+
+    if (child[i] < 255) {
+      *bytes++ = (unsigned char) child[i];
+    } else {
+      *bytes++ = (unsigned char) 255; /* Indicates an exception */
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(child[i],fp_exceptions);
+      nexceptions++;
+    }
+    i++;
+
+  }
+
+  if (i <= n) {
+    *bytes++ = lcpbytes[i];
+    *bytes++ = 0;
+
+    *bytes++ = *discrim_chars++;
+
+    if (child[i] < 255) {
+      *bytes++ = (unsigned char) child[i];
+    } else {
+      *bytes++ = (unsigned char) 255; /* Indicates an exception */
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(child[i],fp_exceptions);
+      nexceptions++;
+    }
+
+    *bytes++ = 0x00;
+  }
+
+
+#if 0
+  /* Overkill */
+  while (i >= guide_value) {
+    FWRITE_UINT(nexceptions,fp_guide);
+    guide_value += guide_interval;
+  }
+#else
+  /* Just need this */
+  FWRITE_UINT(nexceptions,fp_guide);
+#endif
+
+
+  fclose(fp_exceptions);
+  fclose(fp_guide);
+
+  fprintf(stderr,"Byte-coding: %u values < 255, %u exceptions >= 255 (%.1f%%)\n",
+	  (n+1)-nexceptions,nexceptions,100*(double) nexceptions/(double) (n+1));
+  fprintf(stderr,"Writing bytes file...");
+  fp_bytes = FOPEN_WRITE_BINARY(bytesfile);
+  fwrite(bytes_orig,sizeof(unsigned char),nblocks*LCPCHILDDC_BLOCKSIZE,fp_bytes);
+  fclose(fp_bytes);
+  fprintf(stderr,"done\n");
+
+  FREE(bytes_orig);
+
+  return;
+}
+
+
+#define get_bit(i,bitvector) ((bitvector)[(i)/64] & (1UL << ((i)%64)))
+
+
+#if 0
+void
+Bytecoding_write_lcpchilddcn (char *bytesfile, char *excfile, char *guidefile, UINT4 *child,
+			      unsigned char *discrim_chars, unsigned char *lcpbytes, UINT8 *predictive_nextp,
+			      UINT4 genomelength, int guide_interval) {
+  FILE *fp_bytes, *fp_guide, *fp_exceptions;
+  unsigned char *bytes, *bytes_orig;
+  UINT4 nexceptions = 0;
+
+  UINT4 n = genomelength, i;
+  size_t nblocks;
+  
+  UINT4 guide_value = 0;
+
+  nblocks = ((n + 1) + 1)/2;
+
+  bytes_orig = bytes = (unsigned char *) MALLOC(nblocks * LCPCHILDDC_BLOCKSIZE * sizeof(unsigned char));
+  fp_exceptions = FOPEN_WRITE_BINARY(excfile);
+  fp_guide = FOPEN_WRITE_BINARY(guidefile);
+
+  i = 0;
+  while (i + 1 <= n) {
+    *bytes++ = lcpbytes[i];
+    *bytes++ = lcpbytes[i+1];
+
+    *bytes++ = *discrim_chars++;
+
+    if (child[i] < 127) {
+      if (get_bit(i,predictive_nextp)) {
+	*bytes++ = (unsigned char) child[i] | 0x80;
+      } else {
+	*bytes++ = (unsigned char) child[i];
+      }
+    } else {
+      if (get_bit(i,predictive_nextp)) {
+	*bytes++ = (unsigned char) 127 | 0x80; /* Indicates an exception */
+      } else {
+	*bytes++ = (unsigned char) 127; /* Indicates an exception */
+      }
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(child[i],fp_exceptions);
+      nexceptions++;
+    }
+    i++;
+
+    if (child[i] < 127) {
+      if (get_bit(i,predictive_nextp)) {
+	*bytes++ = (unsigned char) child[i] | 0x80;
+      } else {
+	*bytes++ = (unsigned char) child[i];
+      }
+    } else {
+      if (get_bit(i,predictive_nextp)) {
+	*bytes++ = (unsigned char) 127 | 0x80; /* Indicates an exception */
+      } else {
+	*bytes++ = (unsigned char) 127; /* Indicates an exception */
+      }
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(child[i],fp_exceptions);
+      nexceptions++;
+    }
+    i++;
+
+  }
+
+  if (i <= n) {
+    *bytes++ = lcpbytes[i];
+    *bytes++ = 0;
+
+    *bytes++ = *discrim_chars++;
+
+    if (child[i] < 127) {
+      if (get_bit(i,predictive_nextp)) {
+	*bytes++ = (unsigned char) child[i] | 0x80;
+      } else {
+	*bytes++ = (unsigned char) child[i];
+      }
+    } else {
+      if (get_bit(i,predictive_nextp)) {
+	*bytes++ = (unsigned char) 127 | 0x80; /* Indicates an exception */
+      } else {
+	*bytes++ = (unsigned char) 127; /* Indicates an exception */
+      }
+
+      while (i >= guide_value) {
+	FWRITE_UINT(nexceptions,fp_guide);
+	guide_value += guide_interval;
+      }
+
+      FWRITE_UINT(i,fp_exceptions);
+      FWRITE_UINT(child[i],fp_exceptions);
+      nexceptions++;
+    }
+
+    *bytes++ = 0x00;
+  }
+
+
+#if 0
+  /* Overkill */
+  while (i >= guide_value) {
+    FWRITE_UINT(nexceptions,fp_guide);
+    guide_value += guide_interval;
+  }
+#else
+  /* Just need this */
+  FWRITE_UINT(nexceptions,fp_guide);
+#endif
+
+
+  fclose(fp_exceptions);
+  fclose(fp_guide);
+
+  fprintf(stderr,"Byte-coding: %u values < 127, %u exceptions >= 127 (%.1f%%)\n",
+	  (n+1)-nexceptions,nexceptions,100*(double) nexceptions/(double) (n+1));
+  fprintf(stderr,"Writing bytes file...");
+  fp_bytes = FOPEN_WRITE_BINARY(bytesfile);
+  fwrite(bytes_orig,sizeof(unsigned char),nblocks*LCPCHILDDC_BLOCKSIZE,fp_bytes);
+  fclose(fp_bytes);
+  fprintf(stderr,"done\n");
+
+  FREE(bytes_orig);
+
+  return;
+}
+#endif
+
+
+UINT4
+Bytecoding_read (UINT4 key, unsigned char *bytes, UINT4 *exceptions, int nexceptions) {
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+
+  if ((byte = bytes[key]) < 255) {
+    debug10(printf("value %d < 255\n",byte));
+    return (UINT4) byte;
+  } else {
+
+    lowi = 0;
+    highi = nexceptions;
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return exceptions[2*middlei+1];
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_read should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+
+UINT4
+Bytecoding_read_wguide (UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval) {
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+  UINT4 guidei;
+
+  if ((byte = bytes[key]) < 255) {
+    debug10(printf("value %d < 255\n",byte));
+    return (UINT4) byte;
+
+  } else {
+    guidei = key/guide_interval;
+    lowi = guide[guidei];
+    highi = guide[guidei+1];
+
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return exceptions[2*middlei+1];
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_read_wguide should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+  
+
+UINT4
+Bytecoding_lcpchilddc_lcp (UINT4 key, unsigned char *bytes, UINT4 *exceptions, int nexceptions) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+
+  if ((byte = block[0 + (key % 2)]) < 255) {
+    debug10(printf("value %d < 255\n",byte));
+    return (UINT4) byte;
+
+  } else {
+    lowi = 0;
+    highi = nexceptions;
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return exceptions[2*middlei+1];
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_lcp should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+
+
+/*                                      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F */
+static char discrim_char_before[16] = {'?','$','$','$','$','$','A','A','A','A','C','C','C','G','G','T'};
+static char discrim_char_after[16]  = {'?','A','C','G','T','X','C','G','T','X','G','T','X','T','X','X'};
+
+
+char
+Bytecoding_lcpchilddc_dc (char *c1, UINT4 key, unsigned char *bytes) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  /* int pos = key % 2; */
+
+  unsigned char nibble;
+
+  nibble = (block[2] >> (4 * (key % 2))) & 0x0F;
+  *c1 = discrim_char_before[nibble];
+  return discrim_char_after[nibble]; /* c2 */
+}
+
+
+UINT4
+Bytecoding_lcpchilddc_child_up (UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+  UINT4 guidei;
+
+  if ((byte = block[3 + (key % 2)]) < 255) {
+    debug10(printf("value %d < 255\n",byte));
+    return key - (UINT4) byte;
+
+  } else {
+    guidei = key/guide_interval;
+    lowi = guide[guidei];
+    highi = guide[guidei+1];
+
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return key - exceptions[2*middlei+1];
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_lcpchilddc_child_up should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+
+UINT4
+Bytecoding_lcpchilddc_child_next (UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+  UINT4 guidei;
+
+  if ((byte = block[3 + (key % 2)]) < 255) {
+    debug10(printf("value %d < 255\n",byte));
+    return (UINT4) byte + key + 1;
+
+  } else {
+    guidei = key/guide_interval;
+    lowi = guide[guidei];
+    highi = guide[guidei+1];
+
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return exceptions[2*middlei+1] + key + 1;
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_lcpchilddc_child_next should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+
+
+UINT4
+Bytecoding_lcpchilddc_lcp_next (UINT4 key, unsigned char *bytes, UINT4 *child_guide,
+				UINT4 *child_exceptions, int child_guide_interval,
+				UINT4 *lcp_exceptions, int n_lcp_exceptions) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+  UINT4 guidei;
+
+  if ((byte = block[3 + (key % 2)]) < 255) {
+    debug10(printf("value %d < 255\n",byte));
+    return Bytecoding_lcpchilddc_lcp((UINT4) byte + key + 1,bytes,lcp_exceptions,n_lcp_exceptions);
+
+  } else {
+    guidei = key/child_guide_interval;
+    lowi = child_guide[guidei];
+    highi = child_guide[guidei+1];
+
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,child_exceptions[2*lowi],middlei,child_exceptions[2*middlei],
+		     highi,child_exceptions[2*highi],key));
+      if (key < child_exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > child_exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,child_exceptions[2*middlei+1]));
+	return Bytecoding_lcpchilddc_lcp(child_exceptions[2*middlei+1] + key + 1,bytes,
+					 lcp_exceptions,n_lcp_exceptions);
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_lcpchilddc_lcp_next should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+
+
+#if 0
+UINT4
+Bytecoding_lcpchilddcn_child_up (bool *nextp, UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+  UINT4 guidei;
+
+  byte = block[3 + (key % 2)];
+  if (byte & 0x80) {
+    *nextp = true;
+  } else {
+    *nextp = false;
+  }
+  byte &= 0x7F;
+
+  if (byte < 127) {
+    debug10(printf("value %d < 127\n",byte));
+    return key - (UINT4) byte;
+
+  } else {
+    guidei = key/guide_interval;
+    lowi = guide[guidei];
+    highi = guide[guidei+1];
+
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return key - exceptions[2*middlei+1];
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_lcpchilddcn_child_up should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+#endif
+
+
+#if 0
+UINT4
+Bytecoding_lcpchilddcn_child_next (bool *nextp, UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval) {
+  UINT8 blocki = key/2;		/* Needs to be UINT8, because 5 * 2^32 will overflow UINT4 */
+  unsigned char *block = &(bytes[blocki * LCPCHILDDC_BLOCKSIZE]);
+  unsigned char byte;
+  UINT4 lowi, middlei, highi;
+  UINT4 guidei;
+
+  byte = block[3 + (key % 2)];
+  if (byte & 0x80) {
+    *nextp = true;
+  } else {
+    *nextp = false;
+  }
+  byte &= 0x7F;
+
+  if (byte < 127) {
+    debug10(printf("value %d < 127\n",byte));
+    return (UINT4) byte + key + 1;
+
+  } else {
+    guidei = key/guide_interval;
+    lowi = guide[guidei];
+    highi = guide[guidei+1];
+
+    debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,key));
+    
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,exceptions[2*lowi],middlei,exceptions[2*middlei],
+		     highi,exceptions[2*highi],key));
+      if (key < exceptions[2*middlei]) {
+	highi = middlei;
+      } else if (key > exceptions[2*middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d => %u\n",middlei,exceptions[2*middlei+1]));
+	return exceptions[2*middlei+1] + key + 1;
+      }
+    }
+
+    /* debug10(printf("binary search returns %d => %u\n",highi,exceptions[highi+1])); */
+    /* return exceptions[highi + 1]; */
+
+    fprintf(stderr,"Bytecoding_lcpchilddcn_child_next should have found index %u as an exception, but failed\n",key);
+    abort();
+  }
+}
+#endif
+
+
+
diff --git a/src/bytecoding.h b/src/bytecoding.h
new file mode 100644
index 0000000..39ec4be
--- /dev/null
+++ b/src/bytecoding.h
@@ -0,0 +1,53 @@
+/* $Id: bytecoding.h 132144 2014-04-02 16:02:28Z twu $ */
+#ifndef BYTECODING_INCLUDED
+#define BYTECODING_INCLUDED
+#include "bool.h"
+#include "types.h"
+
+extern void
+Bytecoding_write (char *bytesfile, char *excfile, char *guidefile, UINT4 *values,
+		  UINT4 genomelength, int guide_interval);
+extern unsigned char *
+Bytecoding_write_exceptions_only (char *excfile, char *guidefile, UINT4 *values,
+				  UINT4 genomelength, int guide_interval);
+
+extern void
+Bytecoding_write_lcpchilddc (char *bytesfile, char *excfile, char *guidefile, UINT4 *child,
+			     unsigned char *discrim_chars, unsigned char *lcpbytes,
+			     UINT4 genomelength, int guide_interval);
+#if 0
+extern void
+Bytecoding_write_lcpchilddcn (char *bytesfile, char *excfile, char *guidefile, UINT4 *child,
+			      unsigned char *discrim_chars, unsigned char *lcpbytes,
+			      UINT8 *predictive_nextp, UINT4 genomelength, int guide_interval);
+#endif
+
+extern UINT4
+Bytecoding_read (UINT4 key, unsigned char *bytes, UINT4 *exceptions, int nexceptions);
+extern UINT4
+Bytecoding_read_wguide (UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions,
+			int guide_interval);
+extern UINT4
+Bytecoding_lcpchilddc_lcp (UINT4 key, unsigned char *bytes, UINT4 *exceptions, int nexceptions);
+extern char
+Bytecoding_lcpchilddc_dc (char *c1, UINT4 key, unsigned char *bytes);
+extern UINT4
+Bytecoding_lcpchilddc_child_up (UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval);
+extern UINT4
+Bytecoding_lcpchilddc_child_next (UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval);
+extern UINT4
+Bytecoding_lcpchilddc_lcp_next (UINT4 key, unsigned char *lcpchilddc, UINT4 *child_guide,
+				UINT4 *child_exceptions, int child_guide_interval,
+				UINT4 *lcp_exceptions, int n_lcp_exceptions);
+
+#if 0
+extern UINT4
+Bytecoding_lcpchilddcn_child_up (bool *nextp, UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval);
+extern UINT4
+Bytecoding_lcpchilddcn_child_next (bool *nextp, UINT4 key, unsigned char *bytes, UINT4 *guide, UINT4 *exceptions, int guide_interval);
+#endif
+
+
+#endif
+
+
diff --git a/src/diagpool.c b/src/cellpool.c
similarity index 51%
copy from src/diagpool.c
copy to src/cellpool.c
index 9fd861c..5b2c4ba 100644
--- a/src/diagpool.c
+++ b/src/cellpool.c
@@ -1,17 +1,19 @@
-static char rcsid[] = "$Id: diagpool.c 40326 2011-05-30 17:27:01Z twu $";
+static char rcsid[] = "$Id: cellpool.c 135447 2014-05-07 22:25:45Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
-#include "diagpool.h"
+#include "cellpool.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>		/* For memcpy */
+#include "assert.h"
 #include "mem.h"
-#include "comp.h"
-#include "diagdef.h"
 #include "listdef.h"
 
-#define CHUNKSIZE 20000
+
+#define CHUNKSIZE 10000
+
 
 #ifdef DEBUG
 #define debug(x) x
@@ -34,12 +36,12 @@ static char rcsid[] = "$Id: diagpool.c 40326 2011-05-30 17:27:01Z twu $";
 #endif
 
 
-#define T Diagpool_T
+#define T Cellpool_T
 struct T {
-  int ndiags;
-  int diagctr;
-  struct Diag_T *diagptr;
-  List_T diagchunks;
+  int nobjects;
+  int objectctr;
+  struct Cell_T *objectptr;
+  List_T objectchunks;
 
   int nlistcells;
   int listcellctr;
@@ -48,17 +50,17 @@ struct T {
 };
 
 void
-Diagpool_free (T *old) {
+Cellpool_free (T *old) {
   List_T p;
-  struct Diag_T *diagptr;
+  struct Cell_T *objectptr;
   struct List_T *listcellptr;
 
   if (*old) {
-    for (p = (*old)->diagchunks; p != NULL; p = List_next(p)) {
-      diagptr = (struct Diag_T *) List_head(p);
-      FREE(diagptr);
+    for (p = (*old)->objectchunks; p != NULL; p = List_next(p)) {
+      objectptr = (struct Cell_T *) List_head(p);
+      FREE(objectptr);
     }
-    List_free(&(*old)->diagchunks);
+    List_free(&(*old)->objectchunks);
     for (p = (*old)->listcellchunks; p != NULL; p = List_next(p)) {
       listcellptr = (struct List_T *) List_head(p);
       FREE(listcellptr);
@@ -70,26 +72,26 @@ Diagpool_free (T *old) {
 }
 
 void
-Diagpool_free_memory (T this) {
+Cellpool_free_memory (T this) {
   List_T p;
-  struct Diag_T *diagptr;
+  struct Cell_T *objectptr;
   struct List_T *listcellptr;
 
-  for (p = this->diagchunks; p != NULL; p = List_next(p)) {
-    diagptr = (struct Diag_T *) List_head(p);
-    FREE_KEEP(diagptr);
+  for (p = this->objectchunks; p != NULL; p = List_next(p)) {
+    objectptr = (struct Cell_T *) List_head(p);
+    FREE_KEEP(objectptr);
   }
-  List_free_keep(&this->diagchunks);
+  List_free_keep(&this->objectchunks);
   for (p = this->listcellchunks; p != NULL; p = List_next(p)) {
     listcellptr = (struct List_T *) List_head(p);
     FREE_KEEP(listcellptr);
   }
   List_free_keep(&this->listcellchunks);
 
-  this->ndiags = 0;
-  this->diagctr = 0;
-  this->diagchunks = NULL;
-  /* this->diagptr = add_new_diagchunk(this); */
+  this->nobjects = 0;
+  this->objectctr = 0;
+  this->objectchunks = NULL;
+  /* this->objectptr = add_new_objectchunk(this); */
 
   this->nlistcells = 0;
   this->listcellctr = 0;
@@ -99,23 +101,25 @@ Diagpool_free_memory (T this) {
   return;
 }
 
+
 void
-Diagpool_report_memory (T this) {
-  printf("Diagpool has %d diagchunks and %d listcellchunks\n",
-	 List_length(this->diagchunks),List_length(this->listcellchunks));
+Cellpool_report_memory (T this) {
+  printf("Cellpool has %d pairchunks and %d listcellchunks\n",
+	 List_length(this->objectchunks),List_length(this->listcellchunks));
   return;
 }
 
-static struct Diag_T *
-add_new_diagchunk (T this) {
-  struct Diag_T *chunk;
 
-  chunk = (struct Diag_T *) MALLOC_KEEP(CHUNKSIZE*sizeof(struct Diag_T));
-  this->diagchunks = List_push_keep(this->diagchunks,(void *) chunk);
-  debug1(printf("Adding a new chunk of diags.  Ptr for diag %d is %p\n",
-		this->ndiags,chunk));
+static struct Cell_T *
+add_new_objectchunk (T this) {
+  struct Cell_T *chunk;
 
-  this->ndiags += CHUNKSIZE;
+  chunk = (struct Cell_T *) MALLOC_KEEP(CHUNKSIZE*sizeof(struct Cell_T));
+  this->objectchunks = List_push_keep(this->objectchunks,(void *) chunk);
+  debug1(printf("Adding a new chunk of objects.  Ptr for object %d is %p\n",
+		this->nobjects,chunk));
+
+  this->nobjects += CHUNKSIZE;
 
   return chunk;
 }
@@ -135,13 +139,13 @@ add_new_listcellchunk (T this) {
 }
 
 T
-Diagpool_new (void) {
+Cellpool_new (void) {
   T new = (T) MALLOC(sizeof(*new));
 
-  new->ndiags = 0;
-  new->diagctr = 0;
-  new->diagchunks = NULL;
-  /* new->diagptr = add_new_diagchunk(new); */
+  new->nobjects = 0;
+  new->objectctr = 0;
+  new->objectchunks = NULL;
+  /* new->objectptr = add_new_objectchunk(new); */
 
   new->nlistcells = 0;
   new->listcellctr = 0;
@@ -152,37 +156,37 @@ Diagpool_new (void) {
 }
 
 void
-Diagpool_reset (T this) {
-  this->diagctr = 0;
+Cellpool_reset (T this) {
+  this->objectctr = 0;
   this->listcellctr = 0;
   return;
 }
 
 List_T
-Diagpool_push (List_T list, T this, int diagonal, int querystart, int queryend, int nconsecutive) {
+Cellpool_push (List_T list, T this, int rootposition, int querypos, int hit, bool fwdp, int score) {
   List_T listcell;
-  Diag_T diag;
+  Cell_T new;
   List_T p;
   int n;
 
-  if (this->diagctr >= this->ndiags) {
-    this->diagptr = add_new_diagchunk(this);
-  } else if ((this->diagctr % CHUNKSIZE) == 0) {
-    for (n = this->ndiags - CHUNKSIZE, p = this->diagchunks;
-	 n > this->diagctr; p = p->rest, n -= CHUNKSIZE) ;
-    this->diagptr = (struct Diag_T *) p->first;
-    debug1(printf("Located diag %d at %p\n",this->diagctr,this->diagptr));
+  if (this->objectctr >= this->nobjects) {
+    this->objectptr = add_new_objectchunk(this);
+  } else if ((this->objectctr % CHUNKSIZE) == 0) {
+    for (n = this->nobjects - CHUNKSIZE, p = this->objectchunks;
+	 n > this->objectctr; p = p->rest, n -= CHUNKSIZE) ;
+    this->objectptr = (struct Cell_T *) p->first;
+    debug1(printf("Located object %d at %p\n",this->objectctr,this->objectptr));
   }    
-  diag = this->diagptr++;
-  this->diagctr++;
+  new = this->objectptr++;
+  this->objectctr++;
+
 
-  diag->diagonal = diagonal;
-  diag->querystart = querystart;
-  diag->queryend = queryend;
-  diag->nconsecutive = nconsecutive;
-  diag->dominatedp = false;
+  new->rootposition = rootposition;
+  new->querypos = querypos;
+  new->hit = hit;
+  new->fwdp = fwdp;
+  new->score = score;
 
-  debug(printf("Creating %p: %d %d..%d %d\n",diag,diag->diagonal,diag->querystart,diag->queryend));
 
   if (this->listcellctr >= this->nlistcells) {
     this->listcellptr = add_new_listcellchunk(this);
@@ -195,20 +199,22 @@ Diagpool_push (List_T list, T this, int diagonal, int querystart, int queryend,
   listcell = this->listcellptr++;
   this->listcellctr++;
 
-  listcell->first = (void *) diag;
+  listcell->first = (void *) new;
   listcell->rest = list;
 
   return listcell;
 }
 
 
+
+/* Note: this does not free the list cell */
 List_T
-Diagpool_pop (List_T list, Diag_T *x) {
+Cellpool_pop (List_T list, Cell_T *x) {
   List_T head;
 
   if (list != NULL) {
     head = list->rest;
-    *x = (Diag_T) list->first;
+    *x = (Cell_T) list->first;
     return head;
   } else {
     return list;
diff --git a/src/cellpool.h b/src/cellpool.h
new file mode 100644
index 0000000..64bd10a
--- /dev/null
+++ b/src/cellpool.h
@@ -0,0 +1,40 @@
+/* $Id: cellpool.h 135447 2014-05-07 22:25:45Z twu $ */
+#ifndef CELLPOOL_INCLUDED
+#define CELLPOOL_INCLUDED
+
+#include "bool.h"
+#include "list.h"
+
+
+typedef struct Cell_T *Cell_T;
+struct Cell_T {
+  int rootposition;
+  int querypos;
+  int hit;
+  bool fwdp;
+  int score;
+};
+
+
+#define T Cellpool_T
+typedef struct T *T;
+
+extern void
+Cellpool_free (T *old);
+extern void
+Cellpool_free_memory (T this);
+extern void
+Cellpool_report_memory (T this);
+extern T
+Cellpool_new (void);
+extern void
+Cellpool_reset (T this);
+extern List_T
+Cellpool_push (List_T list, T this, int rootposition, int querypos, int hit, bool fwdp, int score);
+extern List_T
+Cellpool_pop (List_T list, Cell_T *x);
+
+#undef T
+#endif
+
+
diff --git a/src/chimera.c b/src/chimera.c
index f27ed30..15945e9 100644
--- a/src/chimera.c
+++ b/src/chimera.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: chimera.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: chimera.c 132706 2014-04-08 20:02:26Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -38,9 +38,26 @@ static char rcsid[] = "$Id: chimera.c 99737 2013-06-27 19:33:03Z twu $";
 #define debug2(x)
 #endif
 
+/* local_join_p and distant_join_p */
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
+/* Chimera_bestpath */
+#ifdef DEBUG4
+#define debug4(x) x
+#else
+#define debug4(x)
+#endif
+
 
 #define T Chimera_T
 struct T {
+  Stage3_T from;
+  Stage3_T to;
+
   int chimerapos;
   int equivpos;
 
@@ -52,11 +69,25 @@ struct T {
   char acceptor2;
   char acceptor1;
 
+  bool donor_watsonp;
+  bool acceptor_watsonp;
+
   double donor_prob;
   double acceptor_prob;
 };
 
 
+Stage3_T
+Chimera_left_part (T this) {
+  return this->from;
+}
+
+Stage3_T
+Chimera_right_part (T this) {
+  return this->to;
+}
+
+
 int 
 Chimera_pos (T this) {
   return this->chimerapos;
@@ -75,9 +106,37 @@ Chimera_cdna_direction (T this) {
 
 void
 Chimera_print_sam_tag (FILE *fp, T this) {
-  fprintf(fp,"%c%c-%c%c,%.2f,%.2f,%d..%d",
-	  this->donor1,this->donor2,this->acceptor2,this->acceptor1,this->donor_prob,this->acceptor_prob,
-	  this->chimerapos+1,this->equivpos+1);
+  char donor_strand, acceptor_strand;
+
+  if (this->cdna_direction >= 0) {
+    if (this->donor_watsonp == true) {
+      donor_strand = '+';
+    } else {
+      donor_strand = '-';
+    }
+    if (this->acceptor_watsonp == true) {
+      acceptor_strand = '+';
+    } else {
+      acceptor_strand = '-';
+    }
+  } else {
+    if (this->donor_watsonp == true) {
+      donor_strand = '-';
+    } else {
+      donor_strand = '+';
+    }
+    if (this->acceptor_watsonp == true) {
+      acceptor_strand = '-';
+    } else {
+      acceptor_strand = '+';
+    }
+  }
+
+  fprintf(fp,"%c%c-%c%c,%.2f,%.2f",
+	  this->donor1,this->donor2,this->acceptor2,this->acceptor1,this->donor_prob,this->acceptor_prob);
+  fprintf(fp,",%d..%d",this->chimerapos+1,this->equivpos+1);
+  /* fprintf(fp,",%c..%c",donor_strand,acceptor_strand); */
+
   return;
 }
 
@@ -102,11 +161,16 @@ Chimera_acceptor_prob (T this) {
 
 
 T
-Chimera_new (int chimerapos, int chimeraequivpos, int exonexonpos, int cdna_direction,
+Chimera_new (Stage3_T from, Stage3_T to, int chimerapos, int chimeraequivpos,
+	     int exonexonpos, int cdna_direction,
 	     char donor1, char donor2, char acceptor2, char acceptor1,
+	     bool donor_watsonp, bool acceptor_watsonp,
 	     double donor_prob, double acceptor_prob) {
   T new = (T) MALLOC(sizeof(*new));
 
+  new->from = from;
+  new->to = to;
+
   new->chimerapos = chimerapos;
   new->equivpos = chimeraequivpos;
   new->exonexonpos = exonexonpos;
@@ -115,6 +179,8 @@ Chimera_new (int chimerapos, int chimeraequivpos, int exonexonpos, int cdna_dire
   new->donor2 = donor2;
   new->acceptor2 = acceptor2;
   new->acceptor1 = acceptor1;
+  new->donor_watsonp = donor_watsonp;
+  new->acceptor_watsonp = acceptor_watsonp;
   new->donor_prob = donor_prob;
   new->acceptor_prob = acceptor_prob;
 
@@ -262,14 +328,132 @@ Chimera_alignment_break (int *newstart, int *newend, Stage3_T stage3, int queryn
 }
 
 
-void
+bool
+Chimera_local_join_p (Stage3_T from, Stage3_T to, int chimera_slop) {
+  debug3(printf("? local_join_p from [%p] %d..%d (%u..%u) -> to [%p] %d..%d (%u..%u) => ",
+		from,Stage3_querystart(from),Stage3_queryend(from),
+		Stage3_chrstart(from),Stage3_chrend(from),
+		to,Stage3_querystart(to),Stage3_queryend(to),
+		Stage3_chrstart(to),Stage3_chrend(to)));
+
+  if (Stage3_chimera_right_p(from) == true) {
+    debug3(printf("false, because from is already part of a chimera on its right\n"));
+    return false;
+    
+  } else if (Stage3_chimera_left_p(to) == true) {
+    debug3(printf("false, because to is already part of a chimera on its left\n"));
+    return false;
+
+  } else if (Stage3_chrnum(from) != Stage3_chrnum(to)) {
+    debug3(printf("false, because different chromosomes\n"));
+    return false;
+
+  } else if (Stage3_watsonp(from) != Stage3_watsonp(to)) {
+    debug3(printf("false, because different strands\n"));
+    return false;
+
+  } else if (Stage3_querystart(from) >= Stage3_querystart(to) &&
+	     Stage3_queryend(from) <= Stage3_queryend(to)) {
+    debug3(printf("false, because from %d..%d is subsumed by to %d..%d\n",
+		  Stage3_querystart(from),Stage3_queryend(from),
+		  Stage3_querystart(to),Stage3_queryend(to)));
+    return false;
+
+  } else if (Stage3_querystart(to) >= Stage3_querystart(from) &&
+	     Stage3_queryend(to) <= Stage3_queryend(from)) {
+    debug3(printf("false, because to %d..%d is subsumed by from %d..%d\n",
+		  Stage3_querystart(to),Stage3_queryend(to),
+		  Stage3_querystart(from),Stage3_queryend(from)));
+    return false;
+
+  } else if (Stage3_queryend(from) - Stage3_querystart(to) > chimera_slop ||
+	     Stage3_querystart(to) - Stage3_queryend(from) > chimera_slop) {
+    debug3(printf("false, because %d - %d > chimera_slop %d or %d - %d > chimera_slop %d\n",
+		  Stage3_queryend(from),Stage3_querystart(to),chimera_slop,
+		  Stage3_querystart(to),Stage3_queryend(from),chimera_slop));
+    return false;
+
+  } else {
+    if (Stage3_watsonp(from) == true) {
+      if (Stage3_genomicend(from) > Stage3_genomicstart(to) + chimera_slop) {
+	debug3(printf("false, because genomic %u > %u + %d\n",
+		      Stage3_genomicend(from),Stage3_genomicstart(to),chimera_slop));
+	return false;
+      } else {
+	return true;
+      }
+
+    } else {
+      if (Stage3_genomicend(from) + chimera_slop < Stage3_genomicstart(to)) {
+	debug3(printf("false, because genomic %u + %d < %u\n",
+		      Stage3_genomicend(from),chimera_slop,Stage3_genomicstart(to)));
+	return false;
+      } else {
+	return true;
+      }
+      
+    }
+
+  }
+}
+
+
+bool
+Chimera_distant_join_p (Stage3_T from, Stage3_T to, int chimera_slop) {
+  debug3(printf("? chimeric_join_p from %d..%d (%u..%u) -> to %d..%d (%u..%u) => ",
+		Stage3_querystart(from),Stage3_queryend(from),
+		Stage3_chrstart(from),Stage3_chrend(from),
+		Stage3_querystart(to),Stage3_queryend(to),
+		Stage3_chrstart(to),Stage3_chrend(to)));
+
+  if (Stage3_chimera_right_p(from) == true) {
+    debug3(printf("false, because from is already part of a chimera on its right\n"));
+    return false;
+    
+  } else if (Stage3_chimera_left_p(to) == true) {
+    debug3(printf("false, because to is already part of a chimera on its left\n"));
+    return false;
+
+  } else if (Stage3_querystart(from) >= Stage3_querystart(to) &&
+      Stage3_queryend(from) <= Stage3_queryend(to)) {
+    debug3(printf("false, because from %d..%d is subsumed by to %d..%d\n",
+		  Stage3_querystart(from),Stage3_queryend(from),
+		  Stage3_querystart(to),Stage3_queryend(to)));
+    return false;
+  } else if (Stage3_querystart(to) >= Stage3_querystart(from) &&
+	     Stage3_queryend(to) <= Stage3_queryend(from)) {
+    debug3(printf("false, because to %d..%d is subsumed by from %d..%d\n",
+		  Stage3_querystart(to),Stage3_queryend(to),
+		  Stage3_querystart(from),Stage3_queryend(from)));
+    return false;
+  } else if (Stage3_queryend(from) - Stage3_querystart(to) <= chimera_slop &&
+	     Stage3_querystart(to) - Stage3_queryend(from) <= chimera_slop) {
+    debug3(printf("true, because %d - %d <= %d and %d - %d <= %d\n",
+		  Stage3_queryend(from),Stage3_querystart(to),chimera_slop,
+		  Stage3_querystart(to),Stage3_queryend(from),chimera_slop));
+    return true;
+  } else {
+    debug3(printf(" %d and %d not within chimera_slop %d",
+		  Stage3_queryend(from) - Stage3_querystart(to),Stage3_querystart(to) - Stage3_queryend(from),
+		  chimera_slop));
+    debug3(printf("false\n"));
+    return false;
+  }
+}
+
+
+#define NEG_INFINITY -1000000
+
+bool
 Chimera_bestpath (int *five_score, int *three_score, int *chimerapos, int *chimeraequivpos, int *bestfrom, int *bestto, 
 		  Stage3_T *stage3array_sub1, int npaths_sub1, Stage3_T *stage3array_sub2, int npaths_sub2, 
-		  int queryntlength) {
+		  int queryntlength, int chimera_slop, bool localp) {
   int **matrix_sub1, **matrix_sub2, *from, *to, *bestscoreatpos, i, j, pos, score, 
-    bestscore = -1000000;
+    bestscore = NEG_INFINITY;
   bool **gapp_sub1, **gapp_sub2;
-
+  bool foundp = false;
+  
+  debug4(printf("Chimera_bestpath called\n"));
 
   from = (int *) CALLOC(queryntlength,sizeof(int));
   to = (int *) CALLOC(queryntlength,sizeof(int));
@@ -277,37 +461,53 @@ Chimera_bestpath (int *five_score, int *three_score, int *chimerapos, int *chime
 
   matrix_sub1 = (int **) CALLOC(npaths_sub1,sizeof(int *));
   gapp_sub1 = (bool **) CALLOC(npaths_sub1,sizeof(bool *));
+  debug4(printf("sub1:"));
   for (i = 0; i < npaths_sub1; i++) {
+    debug4(printf(" %p",stage3array_sub1[i]));
     matrix_sub1[i] = (int *) CALLOC(queryntlength,sizeof(int));
     gapp_sub1[i] = (bool *) CALLOC(queryntlength,sizeof(bool));
-    Stage3_pathscores(gapp_sub1[i],matrix_sub1[i],stage3array_sub1[i],queryntlength,FIVE);
+    Pair_pathscores(gapp_sub1[i],matrix_sub1[i],Stage3_pairarray(stage3array_sub1[i]),
+		    Stage3_npairs(stage3array_sub1[i]),Stage3_cdna_direction(stage3array_sub1[i]),
+		    queryntlength,FIVE);
   }
+  debug4(printf("\n"));
 
+  debug4(printf("sub2:"));
   matrix_sub2 = (int **) CALLOC(npaths_sub2,sizeof(int *));
   gapp_sub2 = (bool **) CALLOC(npaths_sub2,sizeof(bool *));
   for (i = 0; i < npaths_sub2; i++) {
+    debug4(printf(" %p",stage3array_sub2[i]));
     matrix_sub2[i] = (int *) CALLOC(queryntlength,sizeof(int));
     gapp_sub2[i] = (bool *) CALLOC(queryntlength,sizeof(bool));
-    Stage3_pathscores(gapp_sub2[i],matrix_sub2[i],stage3array_sub2[i],queryntlength,THREE);
+    Pair_pathscores(gapp_sub2[i],matrix_sub2[i],Stage3_pairarray(stage3array_sub2[i]),
+		    Stage3_npairs(stage3array_sub2[i]),Stage3_cdna_direction(stage3array_sub2[i]),
+		    queryntlength,THREE);
   }
+  debug4(printf("\n"));
 
   for (pos = 0; pos < queryntlength; pos++) {
-    bestscoreatpos[pos] = -100000;
+    bestscoreatpos[pos] = NEG_INFINITY;
   }
   debug(printf("npaths_sub1 = %d, npaths_sub2 = %d\n",npaths_sub1,npaths_sub2));
-  for (pos = 0; pos < queryntlength - 1; pos++) {
-    for (i = 0; i < npaths_sub1; i++) {
-      if (gapp_sub1[i][pos] == false) {
-	for (j = 0; j < npaths_sub2; j++) {
-	  if (gapp_sub2[j][pos+1] == false) {
-	    /* Check for the same stage3 object on both lists */
-	    if (stage3array_sub1[i] != stage3array_sub2[j]) {
-	      score = matrix_sub2[j][queryntlength-1] - matrix_sub2[j][pos] + matrix_sub1[i][pos] /* - 0 */;
-	      if (score > bestscoreatpos[pos]) {
-		bestscoreatpos[pos] = score;
-		from[pos] = i;
-		to[pos] = j;
-	      }
+  for (i = 0; i < npaths_sub1; i++) {
+    for (j = 0; j < npaths_sub2; j++) {
+      if (stage3array_sub1[i] == stage3array_sub2[j]) {
+	/* Same stage3 object, so not joinable */
+      } else if (localp == true && Chimera_local_join_p(stage3array_sub1[i],stage3array_sub2[j],chimera_slop) == false) {
+	/* Not joinable */
+      } else {
+	for (pos = 0; pos < queryntlength - 1; pos++) {
+	  if (gapp_sub1[i][pos] == false && gapp_sub2[j][pos+1] == false) {
+#if 0
+	    score = matrix_sub2[j][queryntlength-1] - matrix_sub2[j][pos] + matrix_sub1[i][pos] /* - 0 */;
+#else
+	    /* For new Pair_pairscores computation */
+	    score = matrix_sub1[i][pos] + matrix_sub2[j][pos];
+#endif
+	    if (score > bestscoreatpos[pos]) {
+	      bestscoreatpos[pos] = score;
+	      from[pos] = i;
+	      to[pos] = j;
 	    }
 	  }
 	}
@@ -321,41 +521,49 @@ Chimera_bestpath (int *five_score, int *three_score, int *chimerapos, int *chime
       *chimerapos = *chimeraequivpos = pos;
       *bestfrom = from[pos];
       *bestto = to[pos];
+      foundp = true;
     } else if (bestscoreatpos[pos] == bestscore) {
       *chimeraequivpos = pos;
     }
   }
-  *five_score = matrix_sub1[*bestfrom][*chimerapos] /* - 0 */;
-  *three_score = matrix_sub2[*bestto][queryntlength-1] - matrix_sub2[*bestto][*chimerapos];
 
-  debug(
-	for (pos = 0; pos < queryntlength - 1; pos++) {
-	  printf("%d:",pos);
-	  for (i = 0; i < npaths_sub1; i++) {
-	    printf("\t%d",matrix_sub1[i][pos]);
-	    if (gapp_sub1[i][pos] == true) {
-	      printf("X");
+  if (foundp == true) {
+    *five_score = matrix_sub1[*bestfrom][*chimerapos] /* - 0 */;
+#if 0
+    *three_score = matrix_sub2[*bestto][queryntlength-1] - matrix_sub2[*bestto][*chimerapos];
+#else
+    *three_score = matrix_sub2[*bestto][*chimerapos];
+#endif
+
+    debug(
+	  for (pos = 0; pos < queryntlength - 1; pos++) {
+	    printf("%d:",pos);
+	    for (i = 0; i < npaths_sub1; i++) {
+	      printf("\t%d",matrix_sub1[i][pos]);
+	      if (gapp_sub1[i][pos] == true) {
+		printf("X");
+	      }
 	    }
-	  }
-	  printf("\t|");
-	  for (i = 0; i < npaths_sub2; i++) {
-	    printf("\t%d",matrix_sub2[i][pos]);
-	    if (gapp_sub2[i][pos] == true) {
-	      printf("X");
+	    printf("\t|");
+	    for (i = 0; i < npaths_sub2; i++) {
+	      printf("\t%d",matrix_sub2[i][pos]);
+	      if (gapp_sub2[i][pos] == true) {
+		printf("X");
+	      }
 	    }
+	    printf("\t||");
+	    printf("%d (%d->%d)",bestscoreatpos[pos],from[pos],to[pos]);
+	    if (pos >= *chimerapos && pos <= *chimeraequivpos) {
+	      printf(" ** ");
+	    }
+	    printf("\n");
 	  }
-	  printf("\t||");
-	  printf("%d (%d->%d)",bestscoreatpos[pos],from[pos],to[pos]);
-	  if (pos >= *chimerapos && pos <= *chimeraequivpos) {
-	    printf(" ** ");
-	  }
-	  printf("\n");
-	}
-	printf("From path %d to path %d at pos %d..%d.  5 score = %d, 3 score = %d\n",
-	       *bestfrom,*bestto,*chimerapos,*chimeraequivpos,*five_score,*three_score);
-	fflush(stdout);
-	);
-
+	  printf("From path %d to path %d at pos %d..%d.  5 score = %d, 3 score = %d\n",
+		 *bestfrom,*bestto,*chimerapos,*chimeraequivpos,*five_score,*three_score);
+	  fflush(stdout);
+	  );
+  }
+  
   for (i = 0; i < npaths_sub2; i++) {
     FREE(gapp_sub2[i]);
     FREE(matrix_sub2[i]);
@@ -374,7 +582,8 @@ Chimera_bestpath (int *five_score, int *three_score, int *chimerapos, int *chime
   FREE(to);
   FREE(from);
 
-  return;
+  debug4(printf("Chimera_bestpath returning %d\n",foundp));
+  return foundp;
 }
 
 
@@ -382,17 +591,19 @@ Chimera_bestpath (int *five_score, int *three_score, int *chimerapos, int *chime
 int
 Chimera_find_breakpoint (int *chimeraequivpos, Stage3_T left_part, Stage3_T right_part,
 			 int queryntlength) {
-  int chimerapos;
+  int chimerapos = 0;
   int *matrix_sub1, *matrix_sub2, pos, score, bestscore;
   bool *gapp_sub1, *gapp_sub2;
 
   matrix_sub1 = (int *) CALLOC(queryntlength,sizeof(int));
   gapp_sub1 = (bool *) CALLOC(queryntlength,sizeof(bool));
-  Stage3_pathscores(gapp_sub1,matrix_sub1,left_part,queryntlength,FIVE);
+  Pair_pathscores(gapp_sub1,matrix_sub1,Stage3_pairarray(left_part),Stage3_npairs(left_part),
+		  Stage3_cdna_direction(left_part),queryntlength,FIVE);
 
   matrix_sub2 = (int *) CALLOC(queryntlength,sizeof(int));
   gapp_sub2 = (bool *) CALLOC(queryntlength,sizeof(bool));
-  Stage3_pathscores(gapp_sub2,matrix_sub2,right_part,queryntlength,THREE);
+  Pair_pathscores(gapp_sub2,matrix_sub2,Stage3_pairarray(right_part),Stage3_npairs(right_part),
+		  Stage3_cdna_direction(right_part),queryntlength,THREE);
 
 
   bestscore = -100000;
@@ -452,7 +663,7 @@ Chimera_find_breakpoint (int *chimeraequivpos, Stage3_T left_part, Stage3_T righ
 
 static double
 find_exonexon_fwd (int *exonexonpos, char *donor1, char *donor2, char *acceptor2, char *acceptor1,
-		   char *comp, double *donor_prob, double *acceptor_prob,
+		   char *comp, bool *donor_watsonp, bool *acceptor_watsonp, double *donor_prob, double *acceptor_prob,
 		   Stage3_T left_part, Stage3_T right_part, Genome_T genome, Genome_T genomealt,
 		   Univ_IIT_T chromosome_iit, int breakpoint_start, int breakpoint_end) {
   Sequence_T donor_genomicseg, acceptor_genomicseg, donor_genomicalt, acceptor_genomicalt;
@@ -470,7 +681,7 @@ find_exonexon_fwd (int *exonexonpos, char *donor1, char *donor2, char *acceptor2
 
   donor_length = breakpoint_end - breakpoint_start + DONOR_MODEL_LEFT_MARGIN + DONOR_MODEL_RIGHT_MARGIN;
   left = Stage3_genomicpos(left_part,breakpoint_start,/*headp*/false);
-  if (Stage3_watsonp(left_part) == true) {
+  if ((*donor_watsonp = Stage3_watsonp(left_part)) == true) {
     left -= DONOR_MODEL_LEFT_MARGIN;
     revcomp = false;
   } else {
@@ -494,7 +705,7 @@ find_exonexon_fwd (int *exonexonpos, char *donor1, char *donor2, char *acceptor2
 
   acceptor_length = breakpoint_end - breakpoint_start + ACCEPTOR_MODEL_LEFT_MARGIN + ACCEPTOR_MODEL_RIGHT_MARGIN;
   left = Stage3_genomicpos(right_part,breakpoint_end+1,/*headp*/true);
-  if (Stage3_watsonp(right_part) == true) {
+  if ((*acceptor_watsonp = Stage3_watsonp(right_part)) == true) {
     left += ACCEPTOR_MODEL_RIGHT_MARGIN;
     left -= acceptor_length;
     revcomp = false;
@@ -590,7 +801,7 @@ find_exonexon_fwd (int *exonexonpos, char *donor1, char *donor2, char *acceptor2
 
 static double
 find_exonexon_rev (int *exonexonpos, char *donor1, char *donor2, char *acceptor2, char *acceptor1,
-		   char *comp, double *donor_prob, double *acceptor_prob,
+		   char *comp, bool *donor_watsonp, bool *acceptor_watsonp, double *donor_prob, double *acceptor_prob,
 		   Stage3_T left_part, Stage3_T right_part, Genome_T genome, Genome_T genomealt,
 		   Univ_IIT_T chromosome_iit, int breakpoint_start, int breakpoint_end) {
   Sequence_T donor_genomicseg, acceptor_genomicseg, donor_genomicalt, acceptor_genomicalt;
@@ -608,7 +819,7 @@ find_exonexon_rev (int *exonexonpos, char *donor1, char *donor2, char *acceptor2
 
   donor_length = breakpoint_end - breakpoint_start + DONOR_MODEL_LEFT_MARGIN + DONOR_MODEL_RIGHT_MARGIN;
   left = Stage3_genomicpos(right_part,breakpoint_end+1,/*headp*/true);
-  if (Stage3_watsonp(right_part) == true) {
+  if ((*donor_watsonp = Stage3_watsonp(right_part)) == true) {
     left += DONOR_MODEL_LEFT_MARGIN;
     left -= donor_length;
     revcomp = true;
@@ -631,7 +842,7 @@ find_exonexon_rev (int *exonexonpos, char *donor1, char *donor2, char *acceptor2
 
   acceptor_length = breakpoint_end - breakpoint_start + ACCEPTOR_MODEL_LEFT_MARGIN + ACCEPTOR_MODEL_RIGHT_MARGIN;
   left = Stage3_genomicpos(left_part,breakpoint_start,/*headp*/false);
-  if (Stage3_watsonp(left_part) == true) {
+  if ((*acceptor_watsonp = Stage3_watsonp(left_part)) == true) {
     left -= ACCEPTOR_MODEL_RIGHT_MARGIN;
     revcomp = true;
   } else {
@@ -730,13 +941,14 @@ find_exonexon_rev (int *exonexonpos, char *donor1, char *donor2, char *acceptor2
 int
 Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
 		       char *donor1, char *donor2, char *acceptor2, char *acceptor1,
-		       char *comp, double *donor_prob, double *acceptor_prob,
+		       char *comp, bool *donor_watsonp, bool *acceptor_watsonp, double *donor_prob, double *acceptor_prob,
 		       Stage3_T left_part, Stage3_T right_part, Genome_T genome, Genome_T genomealt,
 		       Univ_IIT_T chromosome_iit, int breakpoint_start, int breakpoint_end) {
-  int exonexonpos_fwd, exonexonpos_rev;
+  int exonexonpos_fwd, exonexonpos_rev, temp;
   char donor1_fwd, donor2_fwd, acceptor2_fwd, acceptor1_fwd,
     donor1_rev, donor2_rev, acceptor2_rev, acceptor1_rev;
   char comp_fwd, comp_rev;
+  bool donor_watsonp_fwd, acceptor_watsonp_fwd, donor_watsonp_rev, acceptor_watsonp_rev;
   double bestproduct_fwd, bestproduct_rev, donor_prob_fwd, donor_prob_rev, acceptor_prob_fwd, acceptor_prob_rev;
   int left_cdna_direction, right_cdna_direction;
 
@@ -762,6 +974,11 @@ Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
   }
 #endif
 
+  if (breakpoint_end < breakpoint_start) {
+    debug2(printf("Breakpoints do not make sense, so not computing\n"));
+    return -1;
+  }
+
   debug2(printf("Starting search for exon-exon boundary at breakpoint_start %d to breakpoint_end %d\n",
 		breakpoint_start,breakpoint_end));
 
@@ -781,23 +998,23 @@ Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
   if (*try_cdna_direction == +1) {
     *found_cdna_direction = +1;
     bestproduct_fwd = find_exonexon_fwd(&exonexonpos_fwd,&donor1_fwd,&donor2_fwd,&acceptor2_fwd,&acceptor1_fwd,
-					&comp_fwd,&donor_prob_fwd,&acceptor_prob_fwd,
+					&comp_fwd,&donor_watsonp_fwd,&acceptor_watsonp_fwd,&donor_prob_fwd,&acceptor_prob_fwd,
 					left_part,right_part,genome,genomealt,chromosome_iit,breakpoint_start,breakpoint_end);
     bestproduct_rev = 0.0;
 
   } else if (*try_cdna_direction == -1) {
     *found_cdna_direction = -1;
     bestproduct_rev = find_exonexon_rev(&exonexonpos_rev,&donor1_rev,&donor2_rev,&acceptor2_rev,&acceptor1_rev,
-					&comp_rev,&donor_prob_rev,&acceptor_prob_rev,
+					&comp_rev,&donor_watsonp_rev,&acceptor_watsonp_rev,&donor_prob_rev,&acceptor_prob_rev,
 					left_part,right_part,genome,genomealt,chromosome_iit,breakpoint_start,breakpoint_end);
     bestproduct_fwd = 0.0;
 
   } else {
     bestproduct_fwd = find_exonexon_fwd(&exonexonpos_fwd,&donor1_fwd,&donor2_fwd,&acceptor2_fwd,&acceptor1_fwd,
-					&comp_fwd,&donor_prob_fwd,&acceptor_prob_fwd,
+					&comp_fwd,&donor_watsonp_fwd,&acceptor_watsonp_fwd,&donor_prob_fwd,&acceptor_prob_fwd,
 					left_part,right_part,genome,genomealt,chromosome_iit,breakpoint_start,breakpoint_end);
     bestproduct_rev = find_exonexon_rev(&exonexonpos_rev,&donor1_rev,&donor2_rev,&acceptor2_rev,&acceptor1_rev,
-					&comp_rev,&donor_prob_rev,&acceptor_prob_rev,
+					&comp_rev,&donor_watsonp_rev,&acceptor_watsonp_rev,&donor_prob_rev,&acceptor_prob_rev,
 					left_part,right_part,genome,genomealt,chromosome_iit,breakpoint_start,breakpoint_end);
   }
 
@@ -808,6 +1025,8 @@ Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
     *acceptor2 = 'N';
     *acceptor1 = 'N';
     *comp = NONINTRON_COMP;
+    *donor_watsonp = true;
+    *acceptor_watsonp = true;
     *donor_prob = 0.0;
     *acceptor_prob = 0.0;
     return -1;
@@ -819,6 +1038,8 @@ Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
     *acceptor2 = acceptor2_fwd;
     *acceptor1 = acceptor1_fwd;
     *comp = comp_fwd;
+    *donor_watsonp = donor_watsonp_fwd;
+    *acceptor_watsonp = acceptor_watsonp_fwd;
     *donor_prob = donor_prob_fwd;
     *acceptor_prob = acceptor_prob_fwd;
     return exonexonpos_fwd;
@@ -830,6 +1051,8 @@ Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
     *acceptor2 = acceptor2_rev;
     *acceptor1 = acceptor1_rev;
     *comp = comp_rev;
+    *donor_watsonp = donor_watsonp_rev;
+    *acceptor_watsonp = acceptor_watsonp_rev;
     *donor_prob = donor_prob_rev;
     *acceptor_prob = acceptor_prob_rev;
     return exonexonpos_rev;
diff --git a/src/chimera.h b/src/chimera.h
index a14088c..2ff68e5 100644
--- a/src/chimera.h
+++ b/src/chimera.h
@@ -1,4 +1,4 @@
-/* $Id: chimera.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: chimera.h 132706 2014-04-08 20:02:26Z twu $ */
 #ifndef CHIMERA_INCLUDED
 #define CHIMERA_INCLUDED
 
@@ -13,6 +13,10 @@ typedef struct Chimera_T *Chimera_T;
 
 #define T Chimera_T
 
+extern Stage3_T
+Chimera_left_part (T this);
+extern Stage3_T
+Chimera_right_part (T this);
 extern int 
 Chimera_pos (T this);
 extern int
@@ -27,8 +31,10 @@ extern double
 Chimera_acceptor_prob (T this);
 
 extern T
-Chimera_new (int chimerapos, int chimeraequivpos, int exonexonpos, int cdna_direction,
+Chimera_new (Stage3_T from, Stage3_T to, int chimerapos, int chimeraequivpos,
+	     int exonexonpos, int cdna_direction,
 	     char donor1, char donor2, char acceptor2, char acceptor1,
+	     bool donor_watsonp, bool acceptor_watsonp,
 	     double donor_prob, double acceptor_prob);
 extern void
 Chimera_free (T *old);
@@ -37,10 +43,14 @@ Chimera_print (FILE *fp, T this);
 
 extern int
 Chimera_alignment_break (int *newstart, int *newend, Stage3_T stage3, int queryntlength, double fthreshold);
-extern void
+extern bool
+Chimera_local_join_p (Stage3_T from, Stage3_T to, int chimera_slop);
+extern bool
+Chimera_distant_join_p (Stage3_T from, Stage3_T to, int chimera_slop);
+extern bool
 Chimera_bestpath (int *five_score, int *three_score, int *chimerapos, int *chimeraequivpos, int *bestfrom, int *bestto, 
 		  Stage3_T *stage3array_sub1, int npaths_sub1, Stage3_T *stage3array_sub2, int npaths_sub2, 
-		  int queryntlength);
+		  int queryntlength, int chimera_slop, bool localp);
 extern int
 Chimera_find_breakpoint (int *chimeraequivpos, Stage3_T left_part, Stage3_T right_part,
 			 int queryntlength);
@@ -54,7 +64,7 @@ Chimera_find_exonexon_old (T this, Stage3_T left_part, Stage3_T right_part,
 extern int
 Chimera_find_exonexon (int *found_cdna_direction, int *try_cdna_direction,
 		       char *donor1, char *donor2, char *acceptor2, char *acceptor1,
-		       char *comp, double *donor_prob, double *acceptor_prob,
+		       char *comp, bool *donor_watsonp, bool *acceptor_watsonp, double *donor_prob, double *acceptor_prob,
 		       Stage3_T left_part, Stage3_T right_part, Genome_T genome, Genome_T genomealt,
 		       Univ_IIT_T chromosome_iit, int breakpoint_start, int breakpoint_end);
 #undef T
diff --git a/src/chrom.c b/src/chrom.c
index f548de4..b143ca1 100644
--- a/src/chrom.c
+++ b/src/chrom.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: chrom.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: chrom.c 138522 2014-06-09 17:08:44Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -223,6 +223,19 @@ Chrom_cmp_chrom (T a, T b) {
 }
 
 
+int
+Chrom_cmp_order (T a, T b) {
+
+  if (a->order < b->order) {
+    return -1;
+  } else if (b->order < a->order) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
 /* For use by qsorting an array */
 int
 Chrom_compare_order (const void *x, const void *y) {
diff --git a/src/chrom.h b/src/chrom.h
index e3ae906..f01a972 100644
--- a/src/chrom.h
+++ b/src/chrom.h
@@ -1,4 +1,4 @@
-/* $Id: chrom.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: chrom.h 138522 2014-06-09 17:08:44Z twu $ */
 #ifndef CHROM_INCLUDED
 #define CHROM_INCLUDED
 #include "bool.h"
@@ -23,6 +23,8 @@ extern int
 Chrom_cmp_numeric_alpha (T a, T b);
 extern int
 Chrom_cmp_chrom (T a, T b);
+extern int
+Chrom_cmp_order (T a, T b);
 
 extern int
 Chrom_compare_order (const void *x, const void *y);
@@ -32,6 +34,8 @@ extern int
 Chrom_compare_numeric_alpha (const void *x, const void *y);
 extern int
 Chrom_compare_chrom (const void *x, const void *y);
+extern int
+Chrom_compare_order (const void *x, const void *y);
 
 extern int
 Chrom_compare_table (const void *x, const void *y);
diff --git a/src/chrsubset.c b/src/chrsubset.c
deleted file mode 100644
index b5448f6..0000000
--- a/src/chrsubset.c
+++ /dev/null
@@ -1,490 +0,0 @@
-static char rcsid[] = "$Id: chrsubset.c 99737 2013-06-27 19:33:03Z twu $";
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "chrsubset.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>		/* For strlen */
-#include <ctype.h>		/* For isspace */
-#include "mem.h"
-#include "fopen.h"
-
-
-#ifdef DEBUG
-#define debug(x) x
-#else
-#define debug(x)
-#endif
-
-
-#define T Chrsubset_T
-struct T {
-  char *name;
-  int nincluded;
-  bool *includep;
-  int *newindices;
-  int *oldindices;
-};
-
-
-T
-Chrsubset_make (Chrnum_T chrnum, Univ_IIT_T chromosome_iit) {
-  T new = (T) MALLOC(sizeof(*new));
-  int nchromosomes, i;
-
-  new->name = NULL;
-  new->nincluded = 1;
-
-  nchromosomes = Univ_IIT_total_nintervals(chromosome_iit);
-  new->includep = (bool *) CALLOC(nchromosomes,sizeof(bool));
-  new->includep[chrnum] = true;
-
-  new->newindices = (int *) CALLOC(nchromosomes,sizeof(int));
-  for (i = 0; i < nchromosomes; i++) {
-    new->newindices[i] = -1;
-  }
-  new->newindices[chrnum] = 1;
-
-  new->oldindices = (int *) CALLOC(1,sizeof(int));
-  new->oldindices[0] = chrnum + 1;
-  
-  return new;
-}
-
-
-void
-Chrsubset_print (T this) {
-  if (this != NULL && this->name != NULL) {
-    printf("  [chrsubset: %s]",this->name);
-  }
-  return;
-}
-
-void
-Chrsubset_print_chromosomes (T this, Univ_IIT_T chromosome_iit) {
-  int i;
-  bool firstp = true, allocp;
-  char *label;
-
-  for (i = 0; i < Univ_IIT_total_nintervals(chromosome_iit); i++) {
-    if (this == NULL || this->includep[i] == true) {
-      label = Univ_IIT_label(chromosome_iit,i+1,&allocp);
-      if (firstp == true) {
-	printf("%s",label);
-	firstp = false;
-      } else {
-	printf(",%s",label);
-      }
-      if (allocp == true) {
-	FREE(label);
-      }
-    }
-  }
-
-  return;
-}
-
-char *
-Chrsubset_name (T this) {
-  return this->name;
-}
-
-int
-Chrsubset_nincluded (T this, Univ_IIT_T chromosome_iit) {
-  if (this == NULL) {
-    return Univ_IIT_total_nintervals(chromosome_iit);
-  } else {
-    return this->nincluded;
-  }
-}
-
-
-/* Assumes that this != NULL.  Should call this routine with "if (!chrsubset or Chrsubset_includep()..." */
-bool
-Chrsubset_includep (T this, Univcoord_T position, Univ_IIT_T chromosome_iit) {
-  int index;
-
-  index = Univ_IIT_get_one(chromosome_iit,position,position);
-  return this->includep[index-1];
-}
-
-
-/* index here is 1-based */
-int
-Chrsubset_newindex (T this, int index) {
-  if (this == NULL) {
-    return index;
-  } else {
-    return this->newindices[index-1];
-  }
-}
-
-/* index here is 0-based */
-int
-Chrsubset_oldindex (T this, int index) {
-  if (this == NULL) {
-    return index;
-  } else {
-    return this->oldindices[index-1];
-  }
-}
-
-#if 0
-unsigned int *
-Chrsubset_transitions (int **signs, int *nedges, T this, Univ_IIT_T chromosome_iit) {
-  if (this == NULL) {
-    return Univ_IIT_transitions(&(*signs),&(*nedges),chromosome_iit);
-  } else {
-    return Univ_IIT_transitions_subset(&(*signs),&(*nedges),chromosome_iit,this->oldindices,this->nincluded);
-  }
-}
-#endif
-
-
-void
-Chrsubset_free (T *old) {
-  if (*old != NULL) {
-    if ((*old)->name != NULL) {
-      FREE((*old)->name);
-    }
-    if ((*old)->includep != NULL) {
-      FREE((*old)->includep);
-    }
-    if ((*old)->newindices != NULL) {
-      FREE((*old)->newindices);
-    }
-    if ((*old)->oldindices != NULL) {
-      FREE((*old)->oldindices);
-    }
-    FREE(*old);
-  }
-  return;
-}
-
-#define BUFSIZE 2048
-
-static char *
-read_header (FILE *fp, char *filename) {
-  char *subsetname, Buffer[BUFSIZE], *p, *start, *end;
-
-  Buffer[0] = '\0';
-
-  while (Buffer[0] == '\0' || isspace((int) Buffer[0])) {
-    /* Read past all empty lines */
-    if (fgets(Buffer,BUFSIZE,fp) == NULL) {
-      return NULL;
-    }
-  }
-  if (Buffer[0] != '>') {
-    fprintf(stderr,"In chromosome subset file %s, a '>' line was expected\n",filename);
-    exit(9);
-  } else {
-    p = &(Buffer[1]);
-    if (*p == '\0' || isspace((int) *p)) {
-      fprintf(stderr,"The '>' line in chromosome subset file %s is invalid\n",filename);
-      exit(9);
-    } else {
-      start = p;
-      while (*p != '\0' && !isspace((int) *p)) {
-	p++;
-      }
-      end = p;
-
-      subsetname = (char *) CALLOC((size_t) (end - start +1),sizeof(char));
-      strncpy(subsetname,start,(size_t) (end - start));
-      debug(printf("Read header %s\n",subsetname));
-      return subsetname;
-    }
-  }
-}
-
-static void
-skip_list (FILE *fp, char *filename, char *subsetname) {
-  char Buffer[BUFSIZE];
-
-  if (fgets(Buffer,BUFSIZE,fp) == NULL) {
-    fprintf(stderr,"In %s, expected a line after >%s\n",filename,subsetname);
-    exit(9);
-  }
-  return;
-}
-
-
-/*
-static bool *
-include_all (Univ_IIT_T chromosome_iit) {
-  bool *includep;
-  int nchromosomes, i;
-
-  nchromosomes = Univ_IIT_total_nintervals(chromosome_iit);
-  includep = (bool *) CALLOC(nchromosomes,sizeof(bool));
-  for (i = 0; i < nchromosomes; i++) {
-    includep[i] = true;
-  }
-  return includep;
-}
-*/
-
-static char *
-get_next_token (char **string) {
-  char *token, *start, *end, *p;
-
-  p = *string;
-  while (*p != '\0' && (isspace((int) *p) || *p == ',')) {
-    p++;
-  }
-  if (*p == '\0') {
-    *string = p;
-    return NULL;
-  } else {
-    start = p;
-  }
-
-  while (*p != '\0' && !isspace((int) *p) && *p != ',') {
-    p++;
-  }
-  end = p;
-
-  token = (char *) CALLOC((size_t) (end - start + 1),sizeof(char));
-  strncpy(token,start,(size_t) (end - start));
-  *string = p;
-  return token;
-}
-
-
-
-static bool *
-process_inclusions (char *string, Univ_IIT_T chromosome_iit) {
-  bool *includep;
-  int nchromosomes, index, i;
-  char *chrstring;
-
-  /* Default is to exclude */
-  nchromosomes = Univ_IIT_total_nintervals(chromosome_iit);
-  includep = (bool *) CALLOC(nchromosomes,sizeof(bool));
-  for (i = 0; i < nchromosomes; i++) {
-    includep[i] = false;
-  }
-
-  while ((chrstring = get_next_token(&string)) != NULL) {
-    debug(printf("Token is %s\n",chrstring));
-    index = Univ_IIT_find_one(chromosome_iit,chrstring);
-    includep[index-1] = true;
-    FREE(chrstring);
-  }
-  return includep;
-}
-
-static bool *
-process_exclusions (char *string, Univ_IIT_T chromosome_iit) {
-  bool *includep;
-  int nchromosomes, index, i;
-  char *chrstring;
-
-  /* Default is to include */
-  nchromosomes = Univ_IIT_total_nintervals(chromosome_iit);
-  includep = (bool *) CALLOC(nchromosomes,sizeof(bool));
-  for (i = 0; i < nchromosomes; i++) {
-    includep[i] = true;
-  }
-
-  while ((chrstring = get_next_token(&string)) != NULL) {
-    debug(printf("Token is %s\n",chrstring));
-    index = Univ_IIT_find_one(chromosome_iit,chrstring);
-    includep[index-1] = false;
-    FREE(chrstring);
-  }
-  return includep;
-}
-
-
-static bool *
-process_list (FILE *fp, char *filename, char *subsetname, Univ_IIT_T chromosome_iit) {
-  char Buffer[BUFSIZE], *p;
-
-  if (fgets(Buffer,BUFSIZE,fp) == NULL) {
-    fprintf(stderr,"In %s, expected a line after >%s\n",filename,subsetname);
-    exit(9);
-  } else {
-    p = Buffer;
-    while (*p != '\0' && isspace((int) *p)) {
-      p++;
-    }
-    if (*p == '\0') {
-      /* Blank line.  Interpret to mean inclusion of everything */
-      return (bool *) NULL;
-
-    } else if (*p == '+') {
-      /* Skip blanks */
-      p++;
-      return process_inclusions(p,chromosome_iit);
-
-    } else if (*p == '-') {
-      /* Skip blanks */
-      p++;
-      while (*p != '\0' && !isspace((int) *p)) {
-	p++;
-      }
-      return process_exclusions(p,chromosome_iit);
-
-    } else {
-      fprintf(stderr,"In %s, don't know how to interpret this line:\n%s\n",
-	      filename,Buffer);
-      exit(9);
-    }
-  }
-}
-
-static int
-compute_nincluded (bool *includep, int nchromosomes) {
-  int nincluded = 0, i;
-
-  for (i = 0; i < nchromosomes; i++) {
-    if (includep[i] == true) {
-      nincluded++;
-    }
-  }
-  return nincluded;
-}
-
-static int *
-compute_new_indices (bool *includep, int nchromosomes) {
-  int *newindices;
-  int i, newi = 1;		/* Because index is 1-based */
-
-  newindices = (int *) CALLOC(nchromosomes,sizeof(int));
-  for (i = 0; i < nchromosomes; i++) {
-    if (includep[i] == true) {
-      newindices[i] = newi++;
-    } else {
-      newindices[i] = -1;	/* Actually, this could be 0 */
-    }
-  }
-
-  return newindices;
-}
-
-static int *
-compute_old_indices (bool *includep, int nincluded, int nchromosomes) {
-  int *oldindices;
-  int i, j = 0;
-
-  oldindices = (int *) CALLOC(nincluded,sizeof(int));
-  for (i = 0; i < nchromosomes; i++) {
-    if (includep[i] == true) {
-      oldindices[j++] = i + 1;
-    }
-  }
-
-  return oldindices;
-}
-
-
-T
-Chrsubset_new_single (Chrnum_T chrnum, Univ_IIT_T chromosome_iit) {
-  T new = (T) MALLOC(sizeof(*new));
-
-  new->name = Chrnum_to_string(chrnum,chromosome_iit);
-  new->includep = (bool *) CALLOC(Univ_IIT_total_nintervals(chromosome_iit),sizeof(bool));
-  new->includep[chrnum-1] = true;
-  new->nincluded = 1;
-  new->newindices = compute_new_indices(new->includep,Univ_IIT_total_nintervals(chromosome_iit));
-  new->oldindices = compute_old_indices(new->includep,new->nincluded,Univ_IIT_total_nintervals(chromosome_iit));
-  return new;
-}
-
-
-T
-Chrsubset_read (char *user_chrsubsetfile, char *genomesubdir, char *fileroot, 
-		char *user_chrsubsetname, Univ_IIT_T chromosome_iit) {
-  T new = NULL;
-  FILE *fp;
-  char *filename, *subsetname;
-  bool *includep;
-#ifdef DEBUG
-  int i;
-#endif
-
-  if (user_chrsubsetfile != NULL) {
-    filename = (char *) CALLOC(strlen(user_chrsubsetfile)+1,sizeof(char));
-    strcpy(filename,user_chrsubsetfile);
-    fp = FOPEN_READ_TEXT(filename);
-    if (fp == NULL) {
-      fprintf(stderr,"The provided file chromosome subset file %s could not be read\n",
-	      filename);
-      exit(9);
-    }
-
-  } else {
-    filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
-			       strlen(".chrsubset")+1,sizeof(char));
-    sprintf(filename,"%s/%s.chrsubset",genomesubdir,fileroot);
-    fp = FOPEN_READ_TEXT(filename);
-  }
-
-  if (fp == NULL) {
-    debug(printf("Standard file doesn't exist.  Including all chromosomes\n"));
-    new = (T) NULL;
-
-  } else if (user_chrsubsetname == NULL) {
-    if ((subsetname = read_header(fp,filename)) == NULL) {
-      fprintf(stderr,"The chromosome subset file %s is empty\n",filename);
-      exit(9);
-    }
-
-    if ((includep = process_list(fp,filename,subsetname,chromosome_iit)) == NULL) {
-      new = (T) NULL;
-      FREE(subsetname);
-    } else {
-      new = (T) MALLOC(sizeof(*new));
-      new->name = subsetname;
-      new->includep = includep;
-      new->nincluded = compute_nincluded(includep,Univ_IIT_total_nintervals(chromosome_iit));
-      new->newindices = compute_new_indices(includep,Univ_IIT_total_nintervals(chromosome_iit));
-      new->oldindices = compute_old_indices(includep,new->nincluded,Univ_IIT_total_nintervals(chromosome_iit));
-    }
-
-    fclose(fp);
-    debug(printf("User didn't specify a subset.  Using first list: %s\n",subsetname));
-    
-  } else {
-    debug(printf("User specified subset %s\n",user_chrsubsetname));
-    while ((subsetname = read_header(fp,filename)) != NULL &&
-	   strcmp(subsetname,user_chrsubsetname)) {
-      debug(printf("Skipping %s\n",subsetname));
-      skip_list(fp,filename,subsetname);
-      FREE(subsetname);
-    }
-    if (subsetname == NULL) {
-      fprintf(stderr,"Unable to find subset %s in chromosome subset file %s\n",
-	      user_chrsubsetname,filename);
-      exit(9);
-    } else if ((includep = process_list(fp,filename,subsetname,chromosome_iit)) == NULL) {
-      new = (T) NULL;
-      FREE(subsetname);
-    } else {
-      new = (T) MALLOC(sizeof(*new));
-      new->name = subsetname;
-      new->includep = includep;
-      new->nincluded = compute_nincluded(includep,Univ_IIT_total_nintervals(chromosome_iit));
-      new->newindices = compute_new_indices(includep,Univ_IIT_total_nintervals(chromosome_iit));
-      new->oldindices = compute_old_indices(includep,new->nincluded,Univ_IIT_total_nintervals(chromosome_iit));
-    }
-    fclose(fp);
-  }
-  FREE(filename);
-
-  debug(
-	if (new != NULL) {
-	  for (i = 0; i < Univ_IIT_total_nintervals(chromosome_iit); i++) {
-	    printf(" %d: %d\n",i,new->includep[i]);
-	  }
-	}
-	);
-
-  return new;
-}
-
-
diff --git a/src/chrsubset.h b/src/chrsubset.h
deleted file mode 100644
index 11fbaa3..0000000
--- a/src/chrsubset.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* $Id: chrsubset.h 99737 2013-06-27 19:33:03Z twu $ */
-#ifndef CHRSUBSET_INCLUDED
-#define CHRSUBSET_INCLUDED
-#include "bool.h"
-#include "types.h"
-#include "genomicpos.h"
-#include "iit-read-univ.h"
-#include "chrnum.h"
-
-#define T Chrsubset_T
-typedef struct T *T;
-
-extern void
-Chrsubset_free (T *old);
-
-extern T
-Chrsubset_make (Chrnum_T chrnum, Univ_IIT_T chromosome_iit);
-extern void
-Chrsubset_print (T this);
-extern void
-Chrsubset_print_chromosomes (T this, Univ_IIT_T chromosome_iit);
-extern char *
-Chrsubset_name (T this);
-extern int
-Chrsubset_nincluded (T this, Univ_IIT_T chromosome_iit);
-bool
-Chrsubset_includep (T this, Univcoord_T position, Univ_IIT_T chromosome_iit);
-extern int *
-Chrsubset_newindices (T this);
-extern int
-Chrsubset_newindex (T this, int index);
-extern int
-Chrsubset_oldindex (T this, int index);
-extern unsigned int *
-Chrsubset_transitions (int **signs, int *nedges, T this, Univ_IIT_T chromosome_iit);
-extern T
-Chrsubset_new_single (Chrnum_T chrnum, Univ_IIT_T chromosome_iit);
-extern T
-Chrsubset_read (char *user_chrsubsetfile, char *genomesubdir, char *fileroot, 
-		char *user_chrsubsetname, Univ_IIT_T chromosome_iit);
-
-#undef T
-#endif
diff --git a/src/cmetindex.c b/src/cmetindex.c
index 4b12c21..728b057 100644
--- a/src/cmetindex.c
+++ b/src/cmetindex.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: cmetindex.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: cmetindex.c 133760 2014-04-20 05:16:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -49,6 +49,7 @@ static char rcsid[] = "$Id: cmetindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "fopen.h"
 #include "access.h"
 #include "types.h"		/* For Positionsptr_T, Oligospace_T, and Storedoligomer_T */
+#include "mode.h"
 
 #include "cmet.h"
 
@@ -57,10 +58,18 @@ static char rcsid[] = "$Id: cmetindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "iit-read-univ.h"
 #include "indexdb.h"
 #include "indexdb-write.h"
+#include "genome.h"
+#include "genome128_hr.h"
+#include "bytecoding.h"
+#include "sarray-write.h"
+#include "bitpack64-write.h"
 #include "datadir.h"
 #include "getopt.h"
 
 
+#define POSITIONS8_HIGH_SHIFT 32
+#define POSITIONS8_LOW_MASK 0xFFFFFFFF
+
 #ifdef DEBUG
 #define debug(x) x
 #else
@@ -74,13 +83,13 @@ static char *user_sourcedir = NULL;
 static char *user_destdir = NULL;
 static char *dbroot = NULL;
 static char *dbversion = NULL;
-static int offsetscomp_basesize = 12;
-static int required_basesize = 0;
+static int compression_type;
 static int index1part = 15;
 static int required_index1part = 0;
 static int index1interval;
 static int required_interval = 0;
 
+static bool build_suffix_array_p = true;
 static char *snps_root = NULL;
 
 
@@ -88,7 +97,6 @@ static struct option long_options[] = {
   /* Input options */
   {"sourcedir", required_argument, 0, 'F'},	/* user_sourcedir */
   {"destdir", required_argument, 0, 'D'},	/* user_destdir */
-  {"basesize", required_argument, 0, 'b'},	/* required_basesize */
   {"kmer", required_argument, 0, 'k'}, /* required_index1part */
   {"sampling", required_argument, 0, 'q'}, /* required_interval */
   {"db", required_argument, 0, 'd'}, /* dbroot */
@@ -284,12 +292,36 @@ compute_offsets_ga (Positionsptr_T *oldoffsets, Oligospace_T oligospace, Storedo
 
 
 static void
-compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
-	    FILE *positions_fp, Positionsptr_T *oldoffsets,
+sort_8mers (unsigned char *positions8_high, UINT4 *positions8_low, Positionsptr_T npositions) {
+  UINT8 *positions8;
+  Positionsptr_T i;
+
+  positions8 = (UINT8 *) MALLOC(npositions*sizeof(UINT8));
+  for (i = 0; i < npositions; i++) {
+    positions8[i] = ((UINT8) positions8_high[i] << 32) + positions8_low[i];
+  }
+  qsort(positions8,npositions,sizeof(UINT8),UINT8_compare);
+  for (i = 0; i < npositions; i++) {
+    positions8_high[i] = positions8[i] >> POSITIONS8_HIGH_SHIFT;
+    positions8_low[i] = positions8[i] & POSITIONS8_LOW_MASK;
+  }
+  return;
+}
+
+
+/*                                       A  T  G  T */
+static unsigned char ct_conversion[4] = {0, 3, 2, 3};
+static char CT_CHARTABLE[4] = {'A','T','G','T'};
+
+
+static void
+compute_ct (char *pointers_filename, char *offsets_filename,
+	    FILE *positions_high_fp, FILE *positions_low_fp, Positionsptr_T *oldoffsets,
 	    UINT8 *oldpositions8, UINT4 *oldpositions4,
 	    Oligospace_T oligospace, Storedoligomer_T mask,
 	    bool coord_values_8p) {
-  UINT8 *positions8;
+  unsigned char *positions8_high;
+  UINT4 *positions8_low;
   UINT4 *positions4;
   Positionsptr_T *snpoffsets, j;
   Oligospace_T oligoi, oligok, reduced;
@@ -298,6 +330,7 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
   char *nt1, *nt2;
 #endif
 
+
   offsets = compute_offsets_ct(oldoffsets,oligospace,mask);
 
   preunique_totalcounts = offsets[oligospace];
@@ -306,10 +339,12 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
     exit(9);
 
   } else if (coord_values_8p == true) {
-    fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT8));
+    fprintf(stderr,"Trying to allocate %u*(%d+%d) bytes of memory...",
+	    preunique_totalcounts,(int) sizeof(unsigned char),(int) sizeof(UINT4));
     positions4 = (UINT4 *) NULL;
-    positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT8));
-    if (positions8 == NULL) {
+    positions8_high = (unsigned char *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(unsigned char));
+    positions8_low = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
+    if (positions8_high == NULL || positions8_low == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
       exit(9);
     } else {
@@ -318,7 +353,8 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
 
   } else {
     fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT4));
-    positions8 = (UINT8 *) NULL;
+    positions8_high = (unsigned char *) NULL;
+    positions8_low = (UINT4 *) NULL;
     positions4 = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
     if (positions4 == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
@@ -347,7 +383,8 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]);
+	positions8_high[pointers[reduced]/*++*/] = Bigendian_convert_uint8(oldpositions8[j]) >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]) & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = Bigendian_convert_uint(oldoffsets[oligoi]); j < Bigendian_convert_uint(oldoffsets[oligoi+1]); j++) {
@@ -371,7 +408,8 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = oldpositions8[j];
+	positions8_high[pointers[reduced]/*++*/] = oldpositions8[j] >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = oldpositions8[j] & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = oldoffsets[oligoi]; j < oldoffsets[oligoi+1]; j++) {
@@ -409,16 +447,24 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
       block_start = offsets[oligoi];
       block_end = offsets[oligoi+1];
       if ((npositions = block_end - block_start) > 0) {
-	qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare);
+	/* qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare); */
+	sort_8mers(&(positions8_high[block_start]),&(positions8_low[block_start]),npositions);
 	if (snps_root == NULL) {
-	  FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp);
+	  /* FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp); */
+	  FWRITE_CHARS(&(positions8_high[block_start]),npositions,positions_high_fp);
+	  FWRITE_UINTS(&(positions8_low[block_start]),npositions,positions_low_fp);
+
 	} else {
-	  FWRITE_UINT8(positions8[block_start],positions_fp);
+	  /* FWRITE_UINT8(positions8[block_start],positions_fp); */
+	  FWRITE_CHAR(positions8_high[block_start],positions_high_fp);
+	  FWRITE_UINT(positions8_low[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
-	    if (positions8[j] == positions8[j-1]) {
+	    if (positions8_high[j] == positions8_high[j-1] && positions8_low[j] == positions8_low[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT8(positions8[j],positions_fp);
+	      /* FWRITE_UINT8(positions8[j],positions_fp); */
+	      FWRITE_CHAR(positions8_high[j],positions_high_fp);
+	      FWRITE_UINT(positions8_low[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -438,14 +484,14 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
       if ((npositions = block_end - block_start) > 0) {
 	qsort(&(positions4[block_start]),npositions,sizeof(UINT4),UINT4_compare);
 	if (snps_root == NULL) {
-	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_fp);
+	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_low_fp);
 	} else {
-	  FWRITE_UINT(positions4[block_start],positions_fp);
+	  FWRITE_UINT(positions4[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
 	    if (positions4[j] == positions4[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT(positions4[j],positions_fp);
+	      FWRITE_UINT(positions4[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -459,21 +505,24 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
   fprintf(stderr,"done\n");
 
   if (snps_root == NULL) {
-#ifdef PRE_GAMMA
-    FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-#else
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,offsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
-#endif
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,offsets,oligospace);
+    } else {
+      abort();
+    }
   } else {
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,snpoffsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,snpoffsets,oligospace);
+    } else {
+      abort();
+    }
     FREE(snpoffsets);
   }
 
   FREE(offsets);
   if (coord_values_8p == true) {
-    FREE(positions8);
+    FREE(positions8_high);
+    FREE(positions8_low);
   } else {
     FREE(positions4);
   }
@@ -481,13 +530,18 @@ compute_ct (char *gammaptrs_filename, char *offsetscomp_filename,
   return;
 }
 
+/*                                       A  C  A  T */
+static unsigned char ga_conversion[4] = {0, 1, 0, 3};
+static char GA_CHARTABLE[4] = {'A','C','A','T'};
+
 static void
-compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
-	    FILE *positions_fp, Positionsptr_T *oldoffsets,
+compute_ga (char *pointers_filename, char *offsets_filename,
+	    FILE *positions_high_fp, FILE *positions_low_fp, Positionsptr_T *oldoffsets,
 	    UINT8 *oldpositions8, UINT4 *oldpositions4,
 	    Oligospace_T oligospace, Storedoligomer_T mask,
 	    bool coord_values_8p) {
-  UINT8 *positions8;
+  unsigned char *positions8_high;
+  UINT4 *positions8_low;
   UINT4 *positions4;
   Positionsptr_T *snpoffsets, j;
   Oligospace_T oligoi, oligok, reduced;
@@ -504,10 +558,12 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
     exit(9);
 
   } else if (coord_values_8p == true) {
-    fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT8));
+    fprintf(stderr,"Trying to allocate %u*(%d+%d) bytes of memory...",
+	    preunique_totalcounts,(int) sizeof(unsigned char),(int) sizeof(UINT4));
     positions4 = (UINT4 *) NULL;
-    positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT8));
-    if (positions8 == NULL) {
+    positions8_high = (unsigned char *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(unsigned char));
+    positions8_low = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
+    if (positions8_high == NULL || positions8_low == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
       exit(9);
     } else {
@@ -516,7 +572,8 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
 
   } else {
     fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",preunique_totalcounts,(int) sizeof(UINT4));
-    positions8 = (UINT8 *) NULL;
+    positions8_high = (unsigned char *) NULL;
+    positions8_low = (UINT4 *) NULL;
     positions4 = (UINT4 *) CALLOC_NO_EXCEPTION(preunique_totalcounts,sizeof(UINT4));
     if (positions4 == NULL) {
       fprintf(stderr,"failed.  Need a computer with sufficient memory.\n");
@@ -546,7 +603,8 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]);
+	positions8_high[pointers[reduced]/*++*/] = Bigendian_convert_uint8(oldpositions8[j]) >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = Bigendian_convert_uint8(oldpositions8[j]) & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = Bigendian_convert_uint(oldoffsets[oligoi]); j < Bigendian_convert_uint(oldoffsets[oligoi+1]); j++) {
@@ -570,7 +628,8 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
 	      FREE(nt2);
 	      FREE(nt1);
 	      );
-	positions8[pointers[reduced]++] = oldpositions8[j];
+	positions8_high[pointers[reduced]/*++*/] = oldpositions8[j] >> POSITIONS8_HIGH_SHIFT;
+	positions8_low[pointers[reduced]++] = oldpositions8[j] & POSITIONS8_LOW_MASK;
       }
     } else {
       for (j = oldoffsets[oligoi]; j < oldoffsets[oligoi+1]; j++) {
@@ -608,16 +667,24 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
       block_start = offsets[oligoi];
       block_end = offsets[oligoi+1];
       if ((npositions = block_end - block_start) > 0) {
-	qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare);
+	/* qsort(&(positions8[block_start]),npositions,sizeof(UINT8),UINT8_compare); */
+	sort_8mers(&(positions8_high[block_start]),&(positions8_low[block_start]),npositions);
 	if (snps_root == NULL) {
-	  FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp);
+	  /* FWRITE_UINT8S(&(positions8[block_start]),npositions,positions_fp); */
+	  FWRITE_CHARS(&(positions8_high[block_start]),npositions,positions_high_fp);
+	  FWRITE_UINTS(&(positions8_low[block_start]),npositions,positions_low_fp);
+
 	} else {
-	  FWRITE_UINT8(positions8[block_start],positions_fp);
+	  /* FWRITE_UINT8(positions8[block_start],positions_fp); */
+	  FWRITE_CHAR(positions8_high[block_start],positions_high_fp);
+	  FWRITE_UINT(positions8_low[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
-	    if (positions8[j] == positions8[j-1]) {
+	    if (positions8_high[j] == positions8_high[j-1] && positions8_low[j] == positions8_low[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT8(positions8[j],positions_fp);
+	      /* FWRITE_UINT8(positions8[j],positions_fp); */
+	      FWRITE_CHAR(positions8_high[j],positions_high_fp);
+	      FWRITE_UINT(positions8_low[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -637,14 +704,14 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
       if ((npositions = block_end - block_start) > 0) {
 	qsort(&(positions4[block_start]),npositions,sizeof(UINT4),UINT4_compare);
 	if (snps_root == NULL) {
-	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_fp);
+	  FWRITE_UINTS(&(positions4[block_start]),npositions,positions_low_fp);
 	} else {
-	  FWRITE_UINT(positions4[block_start],positions_fp);
+	  FWRITE_UINT(positions4[block_start],positions_low_fp);
 	  for (j = block_start+1; j < block_end; j++) {
 	    if (positions4[j] == positions4[j-1]) {
 	      npositions--;
 	    } else {
-	      FWRITE_UINT(positions4[j],positions_fp);
+	      FWRITE_UINT(positions4[j],positions_low_fp);
 	    }
 	  }
 	  offsets_ptr += npositions;
@@ -658,21 +725,24 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
   fprintf(stderr,"done\n");
 
   if (snps_root == NULL) {
-#ifdef PRE_GAMMAS
-    FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-#else
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,offsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
-#endif
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,offsets,oligospace);
+    } else {
+      abort();
+    }
   } else {
-    Indexdb_write_gammaptrs(gammaptrs_filename,offsetscomp_filename,snpoffsets,oligospace,
-			    /*blocksize*/power(4,index1part - offsetscomp_basesize));
+    if (compression_type == BITPACK64_COMPRESSION) {
+      Bitpack64_write_differential(/*ptrsfile*/pointers_filename,/*compfile*/offsets_filename,snpoffsets,oligospace);
+    } else {
+      abort();
+    }
     FREE(snpoffsets);
   }
 
   FREE(offsets);
   if (coord_values_8p == true) {
-    FREE(positions8);
+    FREE(positions8_high);
+    FREE(positions8_low);
   } else {
     FREE(positions4);
   }
@@ -688,21 +758,43 @@ compute_ga (char *gammaptrs_filename, char *offsetscomp_filename,
 int
 main (int argc, char *argv[]) {
   char *sourcedir = NULL, *destdir = NULL, *filename, *fileroot;
-  char *gammaptrs_filename, *offsetscomp_filename, *positions_filename,
-    *gammaptrs_basename_ptr, *offsetscomp_basename_ptr, *positions_basename_ptr,
-    *gammaptrs_index1info_ptr, *offsetscomp_index1info_ptr, *positions_index1info_ptr;
-  char *new_gammaptrs_filename, *new_offsetscomp_filename;
+  Filenames_T filenames;
+  char *new_pointers_filename, *new_offsets_filename;
   Univ_IIT_T chromosome_iit;
   Positionsptr_T *ref_offsets;
+  size_t totalcounts, i;
   Storedoligomer_T mask;
+  unsigned char *ref_positions8_high;
+  UINT4 *ref_positions8_low;
   UINT8 *ref_positions8;
   UINT4 *ref_positions4;
   Oligospace_T oligospace;
   bool coord_values_8p;
 
-  FILE *positions_fp, *ref_positions_fp;
-  int ref_positions_fd;
-  size_t ref_positions_len;
+  /* For suffix array */
+  Univcoord_T genomelength;
+  char *sarrayfile, *lcpexcfile, *lcpguidefile;
+  char *childexcfile, *childguidefile;
+  char *lcpchilddcfile;
+  char *indexijptrsfile, *indexijcompfile;
+  Genome_T genomecomp;
+  unsigned char *gbuffer;
+  UINT4 *SA, *lcp, *child;
+  UINT4 nbytes;
+
+  unsigned char *discrim_chars;
+  unsigned char *lcp_bytes;
+  UINT4 *lcp_guide, *lcp_exceptions;
+  int n_lcp_exceptions;
+
+  int sa_fd;
+  size_t sa_len, lcpguide_len, lcpexc_len;
+  double seconds;
+
+
+  FILE *positions_high_fp, *positions_low_fp;
+  int ref_positions_high_fd, ref_positions_low_fd;
+  size_t ref_positions_high_len, ref_positions_low_len;
 #ifndef HAVE_MMAP
   double seconds;
 #endif
@@ -713,7 +805,7 @@ main (int argc, char *argv[]) {
   int long_option_index = 0;
   const char *long_name;
 
-  while ((opt = getopt_long(argc,argv,"F:D:d:b:k:q:v:",
+  while ((opt = getopt_long(argc,argv,"F:D:d:k:q:v:",
 			    long_options,&long_option_index)) != -1) {
     switch (opt) {
     case 0: 
@@ -734,7 +826,6 @@ main (int argc, char *argv[]) {
     case 'F': user_sourcedir = optarg; break;
     case 'D': user_destdir = optarg; break;
     case 'd': dbroot = optarg; break;
-    case 'b': required_basesize = atoi(optarg); break;
     case 'k': required_index1part = atoi(optarg); break;
     case 'q': required_interval = atoi(optarg); break;
     case 'v': snps_root = optarg; break;
@@ -763,46 +854,77 @@ main (int argc, char *argv[]) {
   } else {
     coord_values_8p = Univ_IIT_coord_values_8p(chromosome_iit);
   }
+  genomelength = Univ_IIT_genomelength(chromosome_iit,/*with_circular_alias_p*/true);
   Univ_IIT_free(&chromosome_iit);
   FREE(filename);
 
 
-  Indexdb_get_filenames(&gammaptrs_filename,&offsetscomp_filename,&positions_filename,
-			&gammaptrs_basename_ptr,&offsetscomp_basename_ptr,&positions_basename_ptr,
-			&gammaptrs_index1info_ptr,&offsetscomp_index1info_ptr,&positions_index1info_ptr,
-			&offsetscomp_basesize,&index1part,&index1interval,
-			sourcedir,fileroot,IDX_FILESUFFIX,snps_root,
-			required_basesize,required_index1part,required_interval);
+  filenames = Indexdb_get_filenames(&compression_type,&index1part,&index1interval,
+				    sourcedir,fileroot,IDX_FILESUFFIX,snps_root,
+				    required_index1part,required_interval,
+				    /*offsets_only_p*/false);
 
   mask = ~(~0UL << 2*index1part);
   oligospace = power(4,index1part);
 
   /* Read offsets */
-  ref_offsets = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,offsetscomp_basesize,index1part);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    ref_offsets = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,index1part);
+  } else {
+    abort();
+  }
 
   /* Read positions */
-  if ((ref_positions_fp = FOPEN_READ_BINARY(positions_filename)) == NULL) {
-    fprintf(stderr,"Can't open file %s\n",positions_filename);
+#if 0
+  if ((ref_positions_fp = FOPEN_READ_BINARY(filenames->positions_low_filename)) == NULL) {
+    fprintf(stderr,"Can't open file %s\n",filenames->positions_low_filename);
     exit(9);
+  } else {
+    fclose(ref_positions_fp);
   }
+#endif
 
-#ifdef HAVE_MMAP
   if (coord_values_8p == true) {
-    ref_positions8 = (UINT8 *) Access_mmap(&ref_positions_fd,&ref_positions_len,
-					   positions_filename,sizeof(UINT8),/*randomp*/false);
-  } else {
-    ref_positions4 = (UINT4 *) Access_mmap(&ref_positions_fd,&ref_positions_len,
-					   positions_filename,sizeof(UINT4),/*randomp*/false);
-  }
+#ifdef HAVE_MMAP
+    ref_positions8_high = (unsigned char *) Access_mmap(&ref_positions_high_fd,&ref_positions_high_len,
+							filenames->positions_high_filename,sizeof(unsigned char),/*randomp*/false);
+    ref_positions8_low = (UINT4 *) Access_mmap(&ref_positions_low_fd,&ref_positions_low_len,
+					       filenames->positions_low_filename,sizeof(UINT4),/*randomp*/false);
 #else
-  if (coord_values_8p == true) {
-    ref_positions8 = (UINT8 *) Access_allocated(&ref_positions_len,&seconds,
-						positions_filename,sizeof(UINT8));
+    ref_positions8_high = (unsigned char *) Access_allocated(&ref_positions_high_len,&seconds,
+							     filenames->positions_high_filename,sizeof(unsigned char));
+    ref_positions8_low = (UINT4 *) Access_allocated(&ref_positions_low_len,&seconds,
+						     filenames->positions_low_filename,sizeof(UINT4));
+#endif
+    /* Unpack */
+    totalcounts = ref_positions_high_len/sizeof(unsigned char);
+    if (totalcounts > 4294967295) {
+      fprintf(stderr,"Program not yet designed to handle huge genomes\n");
+      abort();
+    }
+    ref_positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT8));
+    for (i = 0; i < totalcounts; i++) {
+      ref_positions8[i] = ((UINT8) ref_positions8_high[i] << 32) + ref_positions8_low[i];
+    }
+#ifdef HAVE_MMAP
+    munmap((void *) ref_positions8_high,ref_positions_high_len);
+    munmap((void *) ref_positions8_low,ref_positions_low_len);
+    close(ref_positions_high_fd);
+    close(ref_positions_low_fd);
+#else
+    FREE(ref_positions8_high);
+    FREE(ref_positions8_low);
+#endif
+
   } else {
-    ref_positions4 = (UINT4 *) Access_allocated(&ref_positions_len,&seconds,
-						positions_filename,sizeof(UINT4));
-  }
+#ifdef HAVE_MMAP
+    ref_positions4 = (UINT4 *) Access_mmap(&ref_positions_low_fd,&ref_positions_low_len,
+					   filenames->positions_low_filename,sizeof(UINT4),/*randomp*/false);
+#else
+    ref_positions4 = (UINT4 *) Access_allocated(&ref_positions_low_len,&seconds,
+						filenames->positions_low_filename,sizeof(UINT4));
 #endif
+  }
 
 
   /* Open CT output files */
@@ -813,97 +935,307 @@ main (int argc, char *argv[]) {
   }
   fprintf(stderr,"Writing cmet index files to %s\n",destdir);
 
-  if (index1part == offsetscomp_basesize) {
-    new_gammaptrs_filename = (char *) NULL;
-  } else {
-    new_gammaptrs_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-					     strlen(".")+strlen("metct")+strlen(gammaptrs_index1info_ptr)+1,sizeof(char));
-    sprintf(new_gammaptrs_filename,"%s/%s.%s%s",destdir,fileroot,"metct",gammaptrs_index1info_ptr);
-  }
+  new_pointers_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					  strlen(".")+strlen("metct")+strlen(filenames->pointers_index1info_ptr)+1,sizeof(char));
+  sprintf(new_pointers_filename,"%s/%s.%s%s",destdir,fileroot,"metct",filenames->pointers_index1info_ptr);
+
+  new_offsets_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			     strlen(".")+strlen("metct")+strlen(filenames->offsets_index1info_ptr)+1,sizeof(char));
+  sprintf(new_offsets_filename,"%s/%s.%s%s",destdir,fileroot,"metct",filenames->offsets_index1info_ptr);
 
-  new_offsetscomp_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("metct")+strlen(offsetscomp_index1info_ptr)+1,sizeof(char));
-  sprintf(new_offsetscomp_filename,"%s/%s.%s%s",destdir,fileroot,"metct",offsetscomp_index1info_ptr);
 
+  if (coord_values_8p == true) {
+    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			       strlen(".")+strlen("metct")+strlen(filenames->positions_high_index1info_ptr)+1,sizeof(char));
+    sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"metct",filenames->positions_high_index1info_ptr);
+    
+    if ((positions_high_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+      fprintf(stderr,"Can't open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+  }
 
   filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("metct")+strlen(positions_index1info_ptr)+1,sizeof(char));
-  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"metct",positions_index1info_ptr);
+			     strlen(".")+strlen("metct")+strlen(filenames->positions_low_index1info_ptr)+1,sizeof(char));
+  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"metct",filenames->positions_low_index1info_ptr);
 
-  if ((positions_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+  if ((positions_low_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
     fprintf(stderr,"Can't open file %s for writing\n",filename);
     exit(9);
   }
   FREE(filename);
 
+
   /* Compute and write CT files */
-  compute_ct(new_gammaptrs_filename,new_offsetscomp_filename,
-	     positions_fp,ref_offsets,ref_positions8,ref_positions4,
+  if (build_suffix_array_p == true) {
+    fprintf(stderr,"Building suffix array for CT\n");
+    sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.sarray")+1,sizeof(char));
+    sprintf(sarrayfile,"%s/%s.metct.sarray",destdir,fileroot);
+    genomecomp = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+
+    gbuffer = (unsigned char *) CALLOC(genomelength+1,sizeof(unsigned char));
+    Genome_fill_buffer_int_string(genomecomp,/*left*/0,/*length*/genomelength,gbuffer,ct_conversion);
+    gbuffer[genomelength] = 0;	/* Tried N/X, but SACA_K fails */
+    Sarray_write_array_from_genome(sarrayfile,gbuffer,genomelength);
+
+    /* Bucket array */
+    indexijptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.saindex64meta")+1,sizeof(char));
+    sprintf(indexijptrsfile,"%s/%s.metct.saindex64meta",destdir,fileroot);
+    indexijcompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.saindex64strm")+1,sizeof(char));
+    sprintf(indexijcompfile,"%s/%s.metct.saindex64strm",destdir,fileroot);
+    Sarray_write_index_interleaved(indexijptrsfile,indexijcompfile,
+				   sarrayfile,genomecomp,genomelength,/*compressp*/true,CT_CHARTABLE);
+    FREE(indexijcompfile);
+    FREE(indexijptrsfile);
+
+    SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/false);
+    FREE(sarrayfile);
+
+#if 0
+    /* Not needed if we already have gbuffer */
+    /* Required for computing LCP, but uses non-SIMD instructions */
+    genomebits = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+    Genome_hr_setup(Genome_blocks(genomebits),/*snp_blocks*/NULL,
+		    /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/false,
+		    /*mode*/CMET_STRANDED);
+#endif
+
+    lcp = Sarray_compute_lcp_from_genome(SA,gbuffer,/*n*/genomelength);
+    FREE(gbuffer);
+#if 0
+    Genome_free(&genomebits);
+#endif
+
+    /* Write lcp exceptions/guide, but return lcp_bytes */
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.metct.salcpexc",destdir,fileroot);
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.metct.salcpguide1024",destdir,fileroot);
+
+    lcp_bytes = Bytecoding_write_exceptions_only(lcpexcfile,lcpguidefile,lcp,genomelength,/*guide_interval*/1024);
+
+    FREE(lcpguidefile);
+    FREE(lcpexcfile);
+
+    FREE(lcp);			/* Use lcp_bytes, which are more memory-efficient than lcp */
+
+
+    /* DC array */
+    /* Assume we have lcp_bytes already in memory.  Don't need to use guide for speed. */
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.metct.salcpguide1024",destdir,fileroot);
+    lcp_guide = (UINT4 *) Access_allocated(&lcpguide_len,&seconds,lcpguidefile,sizeof(UINT4));
+    FREE(lcpguidefile);
+
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.metct.salcpexc",destdir,fileroot);
+    lcp_exceptions = (UINT4 *) Access_allocated(&lcpexc_len,&seconds,lcpexcfile,sizeof(UINT4));
+    n_lcp_exceptions = lcpexc_len/(sizeof(UINT4) + sizeof(UINT4));
+    FREE(lcpexcfile);
+
+    /* Compute discriminating chars (DC) array */
+    discrim_chars = Sarray_discriminating_chars(&nbytes,SA,genomecomp,lcp_bytes,lcp_guide,
+						lcp_exceptions,/*guide_interval*/1024,/*n*/genomelength,
+						CT_CHARTABLE);
+    munmap((void *) SA,sa_len);
+    close(sa_fd);
+
+    fprintf(stderr,"Building child array\n");
+    /* Compute child array (relative values) */
+    child = Sarray_compute_child(lcp_bytes,lcp_guide,lcp_exceptions,/*n*/genomelength);
+    FREE(lcp_exceptions);
+    FREE(lcp_guide);
+
+    /* Write combined lcpchilddc file */
+    lcpchilddcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.salcpchilddc")+1,sizeof(char));
+    sprintf(lcpchilddcfile,"%s/%s.metct.salcpchilddc",destdir,fileroot);
+    childexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.sachildexc")+1,sizeof(char));
+    sprintf(childexcfile,"%s/%s.metct.sachildexc",destdir,fileroot);
+    childguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metct.sachildguide1024")+1,sizeof(char));
+    sprintf(childguidefile,"%s/%s.metct.sachildguide1024",destdir,fileroot);
+    Bytecoding_write_lcpchilddc(lcpchilddcfile,childexcfile,childguidefile,child,
+				discrim_chars,lcp_bytes,genomelength,/*guide_interval*/1024);
+    FREE(childguidefile);
+    FREE(childexcfile);
+    FREE(lcpchilddcfile);
+    
+    FREE(child);
+    FREE(discrim_chars);
+    FREE(lcp_bytes);
+  }
+
+  compute_ct(new_pointers_filename,new_offsets_filename,
+	     positions_high_fp,positions_low_fp,ref_offsets,ref_positions8,ref_positions4,
 	     oligospace,mask,coord_values_8p);
-  fclose(positions_fp);
-  FREE(new_offsetscomp_filename);
-  if (index1part != offsetscomp_basesize) {
-    FREE(new_gammaptrs_filename);
+  if (coord_values_8p == true) {
+    fclose(positions_high_fp);
   }
+  fclose(positions_low_fp);
+  FREE(new_offsets_filename);
+  FREE(new_pointers_filename);
 
 
   /* Open GA output files */
-  if (index1part == offsetscomp_basesize) {
-    new_gammaptrs_filename = (char *) NULL;
-  } else {
-    new_gammaptrs_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-					     strlen(".")+strlen("metga")+strlen(gammaptrs_index1info_ptr)+1,sizeof(char));
-    sprintf(new_gammaptrs_filename,"%s/%s.%s%s",destdir,fileroot,"metga",gammaptrs_index1info_ptr);
-  }
+  new_pointers_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					  strlen(".")+strlen("metga")+strlen(filenames->pointers_index1info_ptr)+1,sizeof(char));
+  sprintf(new_pointers_filename,"%s/%s.%s%s",destdir,fileroot,"metga",filenames->pointers_index1info_ptr);
 
-  new_offsetscomp_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("metga")+strlen(offsetscomp_index1info_ptr)+1,sizeof(char));
-  sprintf(new_offsetscomp_filename,"%s/%s.%s%s",destdir,fileroot,"metga",offsetscomp_index1info_ptr);
+  new_offsets_filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			     strlen(".")+strlen("metga")+strlen(filenames->offsets_index1info_ptr)+1,sizeof(char));
+  sprintf(new_offsets_filename,"%s/%s.%s%s",destdir,fileroot,"metga",filenames->offsets_index1info_ptr);
 
 
+  if (coord_values_8p == true) {
+    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			       strlen(".")+strlen("metga")+strlen(filenames->positions_high_index1info_ptr)+1,sizeof(char));
+    sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"metga",filenames->positions_high_index1info_ptr);
+    
+    if ((positions_high_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+      fprintf(stderr,"Can't open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+  }
+
   filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-			     strlen(".")+strlen("metga")+strlen(positions_index1info_ptr)+1,sizeof(char));
-  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"metga",positions_index1info_ptr);
+			     strlen(".")+strlen("metga")+strlen(filenames->positions_low_index1info_ptr)+1,sizeof(char));
+  sprintf(filename,"%s/%s.%s%s",destdir,fileroot,"metga",filenames->positions_low_index1info_ptr);
 
-  if ((positions_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+  if ((positions_low_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
     fprintf(stderr,"Can't open file %s for writing\n",filename);
     exit(9);
   }
   FREE(filename);
 
   /* Compute and write GA files */
-  compute_ga(new_gammaptrs_filename,new_offsetscomp_filename,
-	     positions_fp,ref_offsets,ref_positions8,ref_positions4,
+  if (build_suffix_array_p == true) {
+    fprintf(stderr,"Building suffix array for GA\n");
+    sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.sarray")+1,sizeof(char));
+    sprintf(sarrayfile,"%s/%s.metga.sarray",destdir,fileroot);
+    /* Already have genomecomp open */
+    gbuffer = (unsigned char *) CALLOC(genomelength+1,sizeof(unsigned char));
+    Genome_fill_buffer_int_string(genomecomp,/*left*/0,/*length*/genomelength,gbuffer,ga_conversion);
+    gbuffer[genomelength] = 0;	/* Tried N/X, but SACA_K fails */
+    Sarray_write_array_from_genome(sarrayfile,gbuffer,genomelength);
+
+    indexijptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.saindex64meta")+1,sizeof(char));
+    sprintf(indexijptrsfile,"%s/%s.metga.saindex64meta",destdir,fileroot);
+    indexijcompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.saindex64strm")+1,sizeof(char));
+    sprintf(indexijcompfile,"%s/%s.metga.saindex64strm",destdir,fileroot);
+    Sarray_write_index_interleaved(indexijptrsfile,indexijcompfile,
+				   sarrayfile,genomecomp,genomelength,/*compressp*/true,GA_CHARTABLE);
+    FREE(indexijcompfile);
+    FREE(indexijptrsfile);
+
+    SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/false);
+    FREE(sarrayfile);
+
+#if 0
+    /* Not needed if we already have gbuffer */
+    /* Required for computing LCP, but uses non-SIMD instructions */
+    genomebits = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+    Genome_hr_setup(Genome_blocks(genomebits),/*snp_blocks*/NULL,
+		    /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/false,
+		    /*mode*/CMET_STRANDED);
+#endif
+
+    lcp = Sarray_compute_lcp_from_genome(SA,gbuffer,/*n*/genomelength);
+    FREE(gbuffer);
+#if 0
+    Genome_free(&genomebits);
+#endif
+
+    /* Write lcp exceptions/guide, but return lcp_bytes */
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.metga.salcpexc",destdir,fileroot);
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.metga.salcpguide1024",destdir,fileroot);
+
+    lcp_bytes = Bytecoding_write_exceptions_only(lcpexcfile,lcpguidefile,lcp,genomelength,/*guide_interval*/1024);
+
+    FREE(lcpguidefile);
+    FREE(lcpexcfile);
+
+    FREE(lcp);			/* Use lcp_bytes, which are more memory-efficient than lcp */
+
+
+    /* DC array */
+    /* Assume we have lcp_bytes already in memory.  Don't need to use guide for speed. */
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s.metga.salcpguide1024",destdir,fileroot);
+    lcp_guide = (UINT4 *) Access_allocated(&lcpguide_len,&seconds,lcpguidefile,sizeof(UINT4));
+    FREE(lcpguidefile);
+
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s.metga.salcpexc",destdir,fileroot);
+    lcp_exceptions = (UINT4 *) Access_allocated(&lcpexc_len,&seconds,lcpexcfile,sizeof(UINT4));
+    n_lcp_exceptions = lcpexc_len/(sizeof(UINT4) + sizeof(UINT4));
+    FREE(lcpexcfile);
+
+    /* Compute discriminating chars (DC) array */
+    discrim_chars = Sarray_discriminating_chars(&nbytes,SA,genomecomp,lcp_bytes,lcp_guide,
+						lcp_exceptions,/*guide_interval*/1024,/*n*/genomelength,
+						GA_CHARTABLE);
+    munmap((void *) SA,sa_len);
+    close(sa_fd);
+
+    fprintf(stderr,"Building child array\n");
+    /* Compute child array (relative values) */
+    child = Sarray_compute_child(lcp_bytes,lcp_guide,lcp_exceptions,/*n*/genomelength);
+    FREE(lcp_exceptions);
+    FREE(lcp_guide);
+
+    /* Write combined lcpchilddc file */
+    lcpchilddcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.salcpchilddc")+1,sizeof(char));
+    sprintf(lcpchilddcfile,"%s/%s.metga.salcpchilddc",destdir,fileroot);
+    childexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.sachildexc")+1,sizeof(char));
+    sprintf(childexcfile,"%s/%s.metga.sachildexc",destdir,fileroot);
+    childguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".metga.sachildguide1024")+1,sizeof(char));
+    sprintf(childguidefile,"%s/%s.metga.sachildguide1024",destdir,fileroot);
+    Bytecoding_write_lcpchilddc(lcpchilddcfile,childexcfile,childguidefile,child,
+				discrim_chars,lcp_bytes,genomelength,/*guide_interval*/1024);
+    FREE(childguidefile);
+    FREE(childexcfile);
+    FREE(lcpchilddcfile);
+    
+    FREE(child);
+    FREE(discrim_chars);
+    FREE(lcp_bytes);
+
+    Genome_free(&genomecomp);
+  }
+
+  compute_ga(new_pointers_filename,new_offsets_filename,
+	     positions_high_fp,positions_low_fp,ref_offsets,ref_positions8,ref_positions4,
 	     oligospace,mask,coord_values_8p);
-  fclose(positions_fp);
-  FREE(new_offsetscomp_filename);
-  if (index1part != offsetscomp_basesize) {
-    FREE(new_gammaptrs_filename);
+  if (coord_values_8p == true) {
+    fclose(positions_high_fp);
   }
+  fclose(positions_low_fp);
+  FREE(new_offsets_filename);
+  FREE(new_pointers_filename);
 
 
 
   /* Clean up */
   FREE(ref_offsets);
 
-#ifdef HAVE_MMAP
-  if (coord_values_8p == true) {
-    munmap((void *) ref_positions8,ref_positions_len);
-  } else {
-    munmap((void *) ref_positions4,ref_positions_len);
-  }
-  close(ref_positions_fd);
-#else
   if (coord_values_8p == true) {
     FREE(ref_positions8);
   } else {
+#ifdef HAVE_MMAP
+    munmap((void *) ref_positions4,ref_positions_low_len);
+    close(ref_positions_low_fd);
+#else
     FREE(ref_positions4);
-  }
 #endif
+  }
 
-  FREE(positions_filename);
-  FREE(offsetscomp_filename);
-  FREE(gammaptrs_filename);
+  Filenames_free(&filenames);
 
   FREE(dbversion);
   FREE(fileroot);
@@ -933,9 +1265,6 @@ Usage: cmetindex [OPTIONS...] -d <genome>\n\
   -k, --kmer=INT                 kmer size to use in genome database (allowed values: 16 or less).\n\
                                    If not specified, the program will find the highest available\n\
                                    kmer size in the genome database\n\
-  -b, --basesize=INT             Base size to use in genome database.  If not specified, the program\n\
-                                   will find the highest available base size in the genome database\n\
-                                   within selected k-mer size\n\
   -q, --sampling=INT             Sampling to use in genome database.  If not specified, the program\n\
                                    will find the smallest available sampling value in the genome database\n\
                                    within selected basesize and k-mer size\n\
diff --git a/src/compress-write.c b/src/compress-write.c
new file mode 100644
index 0000000..1c00e0a
--- /dev/null
+++ b/src/compress-write.c
@@ -0,0 +1,689 @@
+static char rcsid[] = "$Id: compress-write.c 132144 2014-04-02 16:02:28Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#ifndef HAVE_MEMCPY
+# define memcpy(d,s,n) bcopy((s),(d),(n))
+#endif
+#ifndef HAVE_MEMMOVE
+# define memmove(d,s,n) bcopy((s),(d),(n))
+#endif
+
+#include "compress-write.h"
+
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <ctype.h>		/* For isalpha, toupper */
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"
+#else
+#include "littleendian.h"
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>		/* For off_t */
+#endif
+#include "complement.h"
+#include "mem.h"		/* For Compress_new */
+
+
+/* Another MONITOR_INTERVAL is in indexdb.c */
+#define MONITOR_INTERVAL 10000000 /* 10 million nt */
+
+#define MAX_BADCHAR_MESSAGES 10
+#define BADCHAR_INTERVAL 1000000
+
+
+static char uppercaseCode[128] = UPPERCASE_U2T;
+
+/* We use int *, rather than char *, because we eventually return an int,
+   and we see problems converting from char to int */
+static void
+fill_buffer (int *Buffer, Genomecomp_T high, Genomecomp_T low, Genomecomp_T flags, Univcoord_T position) {
+  int i;
+
+  /* printf("%08X %08X %08X => ",high,low,flags); */
+  for (i = 0; i < 16; i++) {
+    switch (low & 3U) {
+    case 0U: Buffer[i] = 'A'; break;
+    case 1U: Buffer[i] = 'C'; break;
+    case 2U: Buffer[i] = 'G'; break;
+    case 3U: Buffer[i] = 'T'; break;
+    default: abort();
+    }
+    low >>= 2;
+  }
+  for ( ; i < 32; i++) {
+    switch (high & 3U) {
+    case 0U: Buffer[i] = 'A'; break;
+    case 1U: Buffer[i] = 'C'; break;
+    case 2U: Buffer[i] = 'G'; break;
+    case 3U: Buffer[i] = 'T'; break;
+    default: abort();
+    }
+    high >>= 2;
+  }
+  for (i = 0; i < 32; i++) {
+    if ((flags & 1U) == 1U) {
+      if (Buffer[i] == 'A') {
+	Buffer[i] = 'N';
+      } else if (Buffer[i] == 'T') {
+	Buffer[i] = 'X';
+      } else {
+	printf("Parsing error; saw non-ACGT flag plus %c at position %lu\n",Buffer[i],position+i);
+	exit(9);
+      }
+    }
+    flags >>= 1;
+  }
+
+  return;
+}
+
+
+/* Based on genomecomp */
+int
+Compress_get_char (FILE *sequence_fp, Univcoord_T position, bool uncompressedp) {
+  Genomecomp_T high, low, flags;
+  static int SAVEBUFFER[32];
+  int ptr, c;
+
+  if (uncompressedp == true) {
+    while ((c = fgetc(sequence_fp)) != EOF && isspace(c)) {
+    }
+    if (c == EOF) {
+      return EOF;
+    } else {
+      return c;
+    }
+  } else if ((ptr = position % 32) == 0) {
+    if (FREAD_UINT(&high,sequence_fp) <= 0 ||
+	FREAD_UINT(&low,sequence_fp) <= 0 ||
+	FREAD_UINT(&flags,sequence_fp) <= 0) {
+      return EOF;
+    } else {
+      fill_buffer(SAVEBUFFER,high,low,flags,position);
+      return SAVEBUFFER[0];
+    }
+  } else {
+    return SAVEBUFFER[ptr];
+  }
+}
+
+
+/************************************************************************
+ *   Compression and uncompression of the genome
+ ************************************************************************/
+
+/*               87654321 */
+#define LEFT_A 0x00000000
+#define LEFT_C 0x40000000
+#define LEFT_G 0x80000000
+#define LEFT_T 0xC0000000
+#define LEFT_BIT 0x80000000
+
+/*               87654321 */
+#define LEFT_0 0x00000000
+#define LEFT_1 0x40000000
+#define LEFT_2 0x80000000
+#define LEFT_3 0xC0000000
+
+
+/* Genomecomp format */
+/* A = 000  Stored as 00 in first two bytes, 0 in flag byte
+   C = 001            01                     0
+   G = 010            10                     0
+   T = 011            11                     0
+   N = 100            00                     1
+   X = 111            11                     1
+*/
+
+
+/*                   87654321 */
+#define LEFT_SET   0x80000000
+#define LEFT_CLEAR 0x00000000
+
+
+/* Genome128 format */
+/*          High bit   Low bit   Flag bit
+   A = 000     0          0         0
+   C = 001     0          1         0
+   G = 010     1          0         0
+   T = 011     1          1         1
+   N = 100     0          0         1
+   X = 111     1          1         1
+*/
+
+
+
+
+/************************************************************************/
+
+static void
+genomecomp_move_absolute (FILE *fp, Univcoord_T ptr) {
+#ifdef HAVE_FSEEKO
+  off_t offset = ptr*((off_t) sizeof(Genomecomp_T));
+
+  if (fseeko(fp,offset,SEEK_SET) < 0) {
+    perror("Error in gmapindex, genomecomp_move_absolute");
+    exit(9);
+  }
+#else
+  long int offset = ptr*((long int) sizeof(Genomecomp_T));
+
+  if (fseek(fp,offset,SEEK_SET) < 0) {
+    perror("Error in gmapindex, genomecomp_move_absolute");
+    exit(9);
+  }
+#endif
+
+  return;
+}
+
+static void
+genomecomp_read_current (Genomecomp_T *high, Genomecomp_T *low, Genomecomp_T *flags, FILE *fp,
+			 int index1part) {
+  char section[15];
+
+  if (fread(section,sizeof(char),index1part,fp) < (unsigned int) index1part) {
+    *high = 0xFFFFFFFF;
+    *low = 0xFFFFFFFF;
+    *flags = 0xFFFFFFFF;
+    return;
+  }
+
+  *high = (section[3] & 0xff);
+  *high <<= 8;
+  *high |= (section[2] & 0xff);
+  *high <<= 8;
+  *high |= (section[1] & 0xff);
+  *high <<= 8;
+  *high |= (section[0] & 0xff);
+
+  *low = (section[7] & 0xff);
+  *low <<= 8;
+  *low |= (section[6] & 0xff);
+  *low <<= 8;
+  *low |= (section[5] & 0xff);
+  *low <<= 8;
+  *low |= (section[4] & 0xff);
+
+  *flags = (section[11] & 0xff);
+  *flags <<= 8;
+  *flags |= (section[10] & 0xff);
+  *flags <<= 8;
+  *flags |= (section[9] & 0xff);
+  *flags <<= 8;
+  *flags |= (section[8] & 0xff);
+
+  return;
+}
+
+
+static void
+write_compressed_one (FILE *fp, int *nbadchars, char Buffer[], Univcoord_T position) {
+  Genomecomp_T high = 0U, low = 0U, flags = 0U, carry;
+  int i;
+
+  for (i = 0; i < 32; i++) {
+    carry = high & 3U;
+    high >>= 2;
+    low >>= 2;
+    flags >>= 1;
+    switch (carry) {
+    case 0U: break;
+    case 1U: low |= LEFT_C; break;
+    case 2U: low |= LEFT_G; break;
+    case 3U: low |= LEFT_T; break;
+    default: abort();
+    }
+
+    switch (uppercaseCode[(int) Buffer[i]]) {
+    case 'A': break;
+    case 'C': high |= LEFT_C; break;
+    case 'G': high |= LEFT_G; break;
+    case 'T': high |= LEFT_T; break;
+    case 'N': flags |= LEFT_BIT; break;
+    case 'X': high |= LEFT_T; flags |= LEFT_BIT; break;
+    default: 
+      (*nbadchars) += 1;
+      if (*nbadchars < MAX_BADCHAR_MESSAGES) {
+	fprintf(stderr,"Don't recognize character %c at position %lu.  Using N instead\n",
+		Buffer[i],position+i);
+      } else if (*nbadchars == MAX_BADCHAR_MESSAGES) {
+	fprintf(stderr,"Too many non-recognizable characters.  Not reporting each individual occurrence anymore.\n");
+      } else if ((*nbadchars) % BADCHAR_INTERVAL == 0) {
+	fprintf(stderr,"A total of %d non-ACGTNX characters seen so far.\n",*nbadchars);
+      }
+      flags |= LEFT_BIT;
+      break;
+    }
+  }
+  
+  FWRITE_UINT(high,fp);
+  FWRITE_UINT(low,fp);
+  FWRITE_UINT(flags,fp);
+  
+  return;
+}
+
+
+static void
+put_compressed_one (Genomecomp_T *sectioncomp, int *nbadchars, char Buffer[], Univcoord_T position) {
+  Genomecomp_T high = 0U, low = 0U, flags = 0U, carry;
+  int i;
+
+  for (i = 0; i < 32; i++) {
+    carry = high & 3U;
+    high >>= 2;
+    low >>= 2;
+    flags >>= 1;
+    switch (carry) {
+    case 0U: break;
+    case 1U: low |= LEFT_C; break;
+    case 2U: low |= LEFT_G; break;
+    case 3U: low |= LEFT_T; break;
+    default: abort();
+    }
+
+    switch (uppercaseCode[(int) Buffer[i]]) {
+    case 'A': break;
+    case 'C': high |= LEFT_C; break;
+    case 'G': high |= LEFT_G; break;
+    case 'T': high |= LEFT_T; break;
+    case 'N': flags |= LEFT_BIT; break;
+    case 'X': high |= LEFT_T; flags |= LEFT_BIT; break;
+    default: 
+      (*nbadchars) += 1;
+      if (*nbadchars < MAX_BADCHAR_MESSAGES) {
+	fprintf(stderr,"Don't recognize character %c at position %lu.  Using N instead\n",
+		Buffer[i],position+i);
+      } else if (*nbadchars == MAX_BADCHAR_MESSAGES) {
+	fprintf(stderr,"Too many non-recognizable characters.  Not reporting each individual occurrence anymore.\n");
+      } else if ((*nbadchars) % BADCHAR_INTERVAL == 0) {
+	fprintf(stderr,"A total of %d non-ACGTNX characters seen so far.\n",*nbadchars);
+      }
+      flags |= LEFT_BIT;
+      break;
+    }
+  }
+  
+  sectioncomp[0] = high;
+  sectioncomp[1] = low;
+  sectioncomp[2] = flags;
+  
+  return;
+}
+
+
+static char acgt[4] = {'A','C','G','T'};
+static char non_acgt[4] = {'N','?','?','X'};
+
+/* if gbuffer is NULL, then we fill with X's */
+/* Based on genomecomp.  Version for genome128 not implemented yet */
+int
+Compress_update_file (int nbadchars, FILE *fp, char *gbuffer, Univcoord_T startpos,
+		      Univcoord_T endpos, int index1part) {
+  /* Chrpos_T length = endpos - startpos; */
+  Univcoord_T startblock, endblock, ptr;
+  unsigned int startdiscard, enddiscard, i;
+  Genomecomp_T high, low, flags;
+  char Buffer[32];
+
+
+  ptr = startblock = startpos/32U*3;
+  endblock = endpos/32U*3;
+  startdiscard = startpos % 32;
+  enddiscard = endpos % 32;
+  
+  if (endblock == startblock) {
+    /* Special case */
+    genomecomp_move_absolute(fp,ptr);
+    genomecomp_read_current(&high,&low,&flags,fp,index1part);
+
+    for (i = 0; i < 16; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
+      low >>= 2;
+      flags >>= 1;
+    }
+    for ( ; i < 32; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
+      high >>= 2;
+      flags >>= 1;
+    }
+    for (i = startdiscard; i < enddiscard; i++) {
+      Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+    }
+    genomecomp_move_absolute(fp,ptr);
+    write_compressed_one(fp,&nbadchars,Buffer,startpos);
+
+  } else {
+
+    genomecomp_move_absolute(fp,ptr);
+    genomecomp_read_current(&high,&low,&flags,fp,index1part);
+
+    for (i = 0; i < 16; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
+      low >>= 2;
+      flags >>= 1;
+    }
+    for ( ; i < 32; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
+      high >>= 2;
+      flags >>= 1;
+    }
+    for (i = startdiscard; i < 32; i++) {
+      Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+    }
+    genomecomp_move_absolute(fp,ptr);
+    write_compressed_one(fp,&nbadchars,Buffer,startpos);
+    ptr += 3;
+      
+    while (ptr < endblock) {
+      for (i = 0; i < 32; i++) {
+	Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+      }
+      write_compressed_one(fp,&nbadchars,Buffer,ptr/3*32U);
+      ptr += 3;
+    }
+
+    if (enddiscard > 0) {
+      genomecomp_move_absolute(fp,ptr);
+      genomecomp_read_current(&high,&low,&flags,fp,index1part);
+
+      for (i = 0; i < 16; i++) {
+	Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
+	low >>= 2;
+	flags >>= 1;
+      }
+      for ( ; i < 32; i++) {
+	Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
+	high >>= 2;
+	flags >>= 1;
+      }
+      for (i = 0; i < enddiscard; i++) {
+	Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+      }
+      genomecomp_move_absolute(fp,ptr);
+      write_compressed_one(fp,&nbadchars,Buffer,ptr/3*32U);
+    }
+  }
+
+  return nbadchars;
+}
+
+
+int
+Compress_update_memory (int nbadchars, Genomecomp_T *genomecomp, char *gbuffer, Univcoord_T startpos,
+			Univcoord_T endpos) {
+  /* Chrpos_T length = endpos - startpos; */
+  Univcoord_T startblock, endblock, ptr;
+  Genomecomp_T high, low, flags;
+  char Buffer[32];
+  unsigned int startdiscard, enddiscard, i;
+
+
+  ptr = startblock = startpos/32U*3;
+  endblock = endpos/32U*3;
+  startdiscard = startpos % 32;
+  enddiscard = endpos % 32;
+  
+  if (endblock == startblock) {
+    /* Special case */
+    high = genomecomp[ptr];
+    low = genomecomp[ptr+1];
+    flags = genomecomp[ptr+2];
+
+    /* Fill Buffer with original contents */
+    for (i = 0; i < 16; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
+      low >>= 2;
+      flags >>= 1;
+    }
+    for ( ; i < 32; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
+      high >>= 2;
+      flags >>= 1;
+    }
+    for (i = startdiscard; i < enddiscard; i++) {
+      Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+    }
+    put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,startpos);
+
+  } else {
+
+    high = genomecomp[ptr];
+    low = genomecomp[ptr+1];
+    flags = genomecomp[ptr+2];
+
+    /* Fill Buffer with original contents */
+    for (i = 0; i < 16; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
+      low >>= 2;
+      flags >>= 1;
+    }
+    for ( ; i < 32; i++) {
+      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
+      high >>= 2;
+      flags >>= 1;
+    }
+    for (i = startdiscard; i < 32; i++) {
+      Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+    }
+    put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,startpos);
+    ptr += 3;
+      
+    while (ptr < endblock) {
+      for (i = 0; i < 32; i++) {
+	Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+      }
+      put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,ptr/3*32U);
+      ptr += 3;
+    }
+
+    if (enddiscard > 0) {
+      high = genomecomp[ptr];
+      low = genomecomp[ptr+1];
+      flags = genomecomp[ptr+2];
+
+      /* Fill Buffer with original contents */
+      for (i = 0; i < 16; i++) {
+	Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
+	low >>= 2;
+	flags >>= 1;
+      }
+      for ( ; i < 32; i++) {
+	Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
+	high >>= 2;
+	flags >>= 1;
+      }
+      for (i = 0; i < enddiscard; i++) {
+	Buffer[i] = gbuffer ? *gbuffer++ : 'X';
+      }
+      put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,ptr/3*32U);
+    }
+  }
+
+  return nbadchars;
+}
+
+
+#ifdef HAVE_64_BIT
+static inline void
+nt_unshuffle (UINT4 *highbits, UINT4 *lowbits, UINT4 high, UINT4 low) {
+  UINT8 x, t;
+
+  x = (UINT8) high;
+  x <<= 32;
+  x |= low;
+
+  t = (x ^ (x >> 1))  & 0x2222222222222222;  x = x ^ t ^ (t << 1);
+  t = (x ^ (x >> 2))  & 0x0C0C0C0C0C0C0C0C;  x = x ^ t ^ (t << 2);
+  t = (x ^ (x >> 4))  & 0x00F000F000F000F0;  x = x ^ t ^ (t << 4);
+  t = (x ^ (x >> 8))  & 0x0000FF000000FF00;  x = x ^ t ^ (t << 8);
+  t = (x ^ (x >> 16)) & 0x00000000FFFF0000;  x = x ^ t ^ (t << 16);
+
+  *highbits = (UINT4) (x >> 32);
+  *lowbits = (UINT4) x;
+
+  return;
+}
+
+#else
+
+static inline void
+nt_unshuffle (UINT4 *highbits, UINT4 *lowbits, UINT4 high, UINT4 low) {
+  UINT4 t;
+
+  /* unshuffle high */
+  t = (high ^ (high >> 1)) & 0x22222222;  high = high ^ t ^ (t << 1);
+  t = (high ^ (high >> 2)) & 0x0C0C0C0C;  high = high ^ t ^ (t << 2);
+  t = (high ^ (high >> 4)) & 0x00F000F0;  high = high ^ t ^ (t << 4);
+  t = (high ^ (high >> 8)) & 0x0000FF00;  high = high ^ t ^ (t << 8);
+
+  /* unshuffle low */
+  t = (low ^ (low >> 1)) & 0x22222222;  low = low ^ t ^ (t << 1);
+  t = (low ^ (low >> 2)) & 0x0C0C0C0C;  low = low ^ t ^ (t << 2);
+  t = (low ^ (low >> 4)) & 0x00F000F0;  low = low ^ t ^ (t << 4);
+  t = (low ^ (low >> 8)) & 0x0000FF00;  low = low ^ t ^ (t << 8);
+
+  *highbits = (high & 0xFFFF0000) | (low >> 16);
+  *lowbits = (high << 16) | (low & 0x0000FFFF);
+
+  return;
+}
+#endif
+
+
+void
+Compress_unshuffle (FILE *out, FILE *in) {
+  Genomecomp_T high, low, flags;
+  Genomecomp_T highbits, lowbits;
+
+  while (FREAD_UINT(&high,in) > 0 &&
+	 FREAD_UINT(&low,in) > 0 &&
+	 FREAD_UINT(&flags,in) > 0) {
+    nt_unshuffle(&highbits,&lowbits,high,low);
+    FWRITE_UINT(highbits,out);
+    FWRITE_UINT(lowbits,out);
+    FWRITE_UINT(flags,out);
+  }
+
+  return;
+}
+
+void
+Compress_unshuffle_bits128 (FILE *out, FILE *in) {
+  UINT4 high0, high1, high2, high3, low0, low1, low2, low3,
+    flags0, flags1, flags2, flags3;
+  UINT4 highbits0, highbits1, highbits2, highbits3,
+    lowbits0, lowbits1, lowbits2, lowbits3;
+
+  while (!feof(in)) {
+    if (FREAD_UINT(&high0,in) == 0 ||
+	FREAD_UINT(&low0,in) == 0 ||
+	FREAD_UINT(&flags0,in) == 0) {
+      highbits0 = -1U;
+      lowbits0 = -1U;
+      flags0 = -1U;
+    } else {
+      nt_unshuffle(&highbits0,&lowbits0,high0,low0);
+    }
+
+    if (FREAD_UINT(&high1,in) == 0 ||
+	FREAD_UINT(&low1,in) == 0 ||
+	FREAD_UINT(&flags1,in) == 0) {
+      highbits1 = -1U;
+      lowbits1 = -1U;
+      flags1 = -1U;
+    } else {
+      nt_unshuffle(&highbits1,&lowbits1,high1,low1);
+    }
+
+    if (FREAD_UINT(&high2,in) == 0 ||
+	FREAD_UINT(&low2,in) == 0 ||
+	FREAD_UINT(&flags2,in) == 0) {
+      highbits2 = -1U;
+      lowbits2 = -1U;
+      flags2 = -1U;
+    } else {
+      nt_unshuffle(&highbits2,&lowbits2,high2,low2);
+    }
+
+    if (FREAD_UINT(&high3,in) == 0 ||
+	FREAD_UINT(&low3,in) == 0 ||
+	FREAD_UINT(&flags3,in) == 0) {
+      highbits3 = -1U;
+      lowbits3 = -1U;
+      flags3 = -1U;
+    } else {
+      nt_unshuffle(&highbits3,&lowbits3,high3,low3);
+    }
+      
+    FWRITE_UINT(highbits0,out);
+    FWRITE_UINT(highbits1,out);
+    FWRITE_UINT(highbits2,out);
+    FWRITE_UINT(highbits3,out);
+    FWRITE_UINT(lowbits0,out);
+    FWRITE_UINT(lowbits1,out);
+    FWRITE_UINT(lowbits2,out);
+    FWRITE_UINT(lowbits3,out);
+    FWRITE_UINT(flags0,out);
+    FWRITE_UINT(flags1,out);
+    FWRITE_UINT(flags2,out);
+    FWRITE_UINT(flags3,out);
+  }
+
+  return;
+}
+
+
+/* Needed for user-provided segment in GMAP */
+Genomecomp_T *
+Compress_create_blocks_comp (char *genomicseg, Univcoord_T genomelength) {
+  Genomecomp_T *genomecomp;
+  size_t nuint4;
+
+  nuint4 = ((genomelength + 31)/32U)*3;
+  genomecomp = (Genomecomp_T *) CALLOC(nuint4+4,sizeof(Genomecomp_T));
+  /* Add 4 because Oligoindex_hr procedures point to nextlow as ptr+4 */
+
+  /* Creates X's at end */
+  genomecomp[nuint4-3] = 0xFFFFFFFF;
+  genomecomp[nuint4-2] = 0xFFFFFFFF;
+  genomecomp[nuint4-1] = 0xFFFFFFFF;
+
+  /* Plus extra 4 */
+  genomecomp[nuint4]   = 0xFFFFFFFF;
+  genomecomp[nuint4+1] = 0xFFFFFFFF;
+  genomecomp[nuint4+2] = 0xFFFFFFFF;
+  genomecomp[nuint4+3] = 0xFFFFFFFF;
+
+  Compress_update_memory(/*nbadchars*/0,genomecomp,genomicseg,/*currposition*/0,genomelength);
+
+  return genomecomp;
+}
+
+
+/* Needed for user-provided segment in GMAP */
+Genomecomp_T *
+Compress_create_blocks_bits (Genomecomp_T *genomecomp, Univcoord_T genomelength) {
+  Genomecomp_T *genomebits, highbits, lowbits, high, low, flags;
+  size_t nuint4, ptr;
+
+  nuint4 = ((genomelength + 31)/32U)*3;
+  genomebits = (Genomecomp_T *) CALLOC(nuint4+4,sizeof(Genomecomp_T));
+
+  for (ptr = 0; ptr < nuint4; ptr += 3) {
+    high = genomecomp[ptr];
+    low = genomecomp[ptr+1];
+    flags = genomecomp[ptr+2];
+    
+    nt_unshuffle(&highbits,&lowbits,high,low);
+    genomebits[ptr] = highbits;
+    genomebits[ptr+1] = lowbits;
+    genomebits[ptr+2] = flags;
+  }
+
+  return genomebits;
+}
diff --git a/src/compress.h b/src/compress-write.h
similarity index 51%
copy from src/compress.h
copy to src/compress-write.h
index be45beb..88345e8 100644
--- a/src/compress.h
+++ b/src/compress-write.h
@@ -1,21 +1,14 @@
-/* $Id: compress.h 99737 2013-06-27 19:33:03Z twu $ */
-#ifndef COMPRESS_INCLUDED
-#define COMPRESS_INCLUDED
+/* $Id: compress-write.h 132144 2014-04-02 16:02:28Z twu $ */
+#ifndef COMPRESS_WRITE_INCLUDED
+#define COMPRESS_WRITE_INCLUDED
 
 #include <stdio.h>
 #include "bool.h"
-#include "types.h"
+#include "types.h"		/* Needed also for HAVE_64_BIT */
 #include "genomicpos.h"
 
-#define T Compress_T
-typedef struct T *T;
-
 extern int
 Compress_get_char (FILE *sequence_fp, Univcoord_T position, bool uncompressedp);
-extern void
-Compress_compress (FILE *fp);
-extern void
-Compress_uncompress (FILE *fp, int wraplength);
 extern int
 Compress_update_file (int nbadchars, FILE *fp, char *gbuffer, Univcoord_T startpos,
 		      Univcoord_T endpos, int index1part);
@@ -23,15 +16,14 @@ extern int
 Compress_update_memory (int nbadchars, Genomecomp_T *genomecomp, char *gbuffer, Univcoord_T startpos,
 			Univcoord_T endpos);
 extern void
-Compress_free (T *old);
+Compress_unshuffle (FILE *out, FILE *in);
 extern void
-Compress_print (T this);
-extern int
-Compress_nblocks (T this);
-extern T
-Compress_new (char *gbuffer, Chrpos_T length, bool plusp);
+Compress_unshuffle_bits128 (FILE *out, FILE *in);
+extern Genomecomp_T *
+Compress_create_blocks_comp (char *genomicseg, Univcoord_T genomelength);
 extern Genomecomp_T *
-Compress_shift (T this, int nshift);
+Compress_create_blocks_bits (Genomecomp_T *genomecomp, Univcoord_T genomelength);
+
 
 #undef T
 #endif
diff --git a/src/compress.c b/src/compress.c
index 5774909..a323cdd 100644
--- a/src/compress.c
+++ b/src/compress.c
@@ -1,12 +1,22 @@
-static char rcsid[] = "$Id: compress.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: compress.c 137996 2014-06-04 01:58:17Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
+#ifndef HAVE_MEMCPY
+# define memcpy(d,s,n) bcopy((s),(d),(n))
+#endif
+#ifndef HAVE_MEMMOVE
+# define memmove(d,s,n) bcopy((s),(d),(n))
+#endif
 
 #include "compress.h"
+#include "compress-write.h"
 
+
+#include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
+#include <string.h>
 #include <ctype.h>		/* For isalpha, toupper */
 #ifdef WORDS_BIGENDIAN
 #include "bigendian.h"
@@ -17,1262 +27,1815 @@ static char rcsid[] = "$Id: compress.c 99737 2013-06-27 19:33:03Z twu $";
 #include <sys/types.h>		/* For off_t */
 #endif
 #include "complement.h"
+#include "assert.h"
 #include "mem.h"		/* For Compress_new */
+#include "assert.h"
 
-
-/* Another MONITOR_INTERVAL is in indexdb.c */
-#define MONITOR_INTERVAL 10000000 /* 10 million nt */
-
-#define MAX_BADCHAR_MESSAGES 10
-#define BADCHAR_INTERVAL 1000000
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSSE3
+#include <tmmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
 
 
-#ifdef DEBUG
-#define debug(x) x
+#ifdef DEBUG0
+#define debug0(x) x
 #else
-#define debug(x)
+#define debug0(x)
 #endif
 
-/* print_blocks */
+
 #ifdef DEBUG1
 #define debug1(x) x
 #else
 #define debug1(x)
 #endif
 
+/* fragment_left and fragment_right */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
 
-static char uppercaseCode[128] = UPPERCASE_U2T;
 
-/* We use int *, rather than char *, because we eventually return an int,
-   and we see problems converting from char to int */
-static void
-fill_buffer (int *Buffer, Genomecomp_T high, Genomecomp_T low, Genomecomp_T flags, Univcoord_T position) {
-  int i;
+/* SIMD */
+#ifdef DEBUG9
+#define debug9(x) x
+#else
+#define debug9(x)
+#endif
 
-  /* printf("%08X %08X %08X => ",high,low,flags); */
-  for (i = 0; i < 16; i++) {
-    switch (low & 3U) {
-    case 0U: Buffer[i] = 'A'; break;
-    case 1U: Buffer[i] = 'C'; break;
-    case 2U: Buffer[i] = 'G'; break;
-    case 3U: Buffer[i] = 'T'; break;
-    default: abort();
-    }
-    low >>= 2;
-  }
-  for ( ; i < 32; i++) {
-    switch (high & 3U) {
-    case 0U: Buffer[i] = 'A'; break;
-    case 1U: Buffer[i] = 'C'; break;
-    case 2U: Buffer[i] = 'G'; break;
-    case 3U: Buffer[i] = 'T'; break;
-    default: abort();
-    }
-    high >>= 2;
-  }
-  for (i = 0; i < 32; i++) {
-    if ((flags & 1U) == 1U) {
-      if (Buffer[i] == 'A') {
-	Buffer[i] = 'N';
-      } else if (Buffer[i] == 'T') {
-	Buffer[i] = 'X';
-      } else {
-	printf("Parsing error; saw non-ACGT flag plus %c at position %lu\n",Buffer[i],position+i);
-	exit(9);
-      }
-    }
-    flags >>= 1;
-  }
+/* Checking SSSE3 procedure */
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
 
-  return;
-}
 
-int
-Compress_get_char (FILE *sequence_fp, Univcoord_T position, bool uncompressedp) {
-  Genomecomp_T high, low, flags;
-  static int SAVEBUFFER[32];
-  int ptr, c;
+#ifdef HAVE_SSE2
+#define STEP_SIZE 128
+#else
+#define STEP_SIZE 32
+#endif
 
-  if (uncompressedp == true) {
-    while ((c = fgetc(sequence_fp)) != EOF && isspace(c)) {
-    }
-    if (c == EOF) {
-      return EOF;
-    } else {
-      return c;
-    }
-  } else if ((ptr = position % 32) == 0) {
-    if (FREAD_UINT(&high,sequence_fp) <= 0 ||
-	FREAD_UINT(&low,sequence_fp) <= 0 ||
-	FREAD_UINT(&flags,sequence_fp) <= 0) {
-      return EOF;
-    } else {
-      fill_buffer(SAVEBUFFER,high,low,flags,position);
-      return SAVEBUFFER[0];
-    }
-  } else {
-    return SAVEBUFFER[ptr];
-  }
-}
 
+#define T Compress_T
+struct T {
+  Genomecomp_T *blocks;
+  int nblocks;
+  Genomecomp_T **shift_array;
+  bool availp[STEP_SIZE];
+#ifdef DEBUG14
+  int querylength;
+#endif
+};
 
-/************************************************************************
- *   Compression and uncompression of the genome
- ************************************************************************/
 
-/*               87654321 */
-#define LEFT_A 0x00000000
-#define LEFT_C 0x40000000
-#define LEFT_G 0x80000000
-#define LEFT_T 0xC0000000
-#define LEFT_BIT 0x80000000
+void
+Compress_free (T *old) {
+  if (*old) {
+#ifdef HAVE_SSE2
+    _mm_free((*old)->shift_array[0]);
+#else
+    FREE((*old)->shift_array[0]);
+#endif
+    FREE((*old)->shift_array);
+#if 0
+#ifdef HAVE_SSE2
+    _mm_free((*old)->blocks);
+#else
+    FREE((*old)->blocks);
+#endif
+#endif
+    FREE(*old);
+  }
+  return;
+}
+void
+Compress_print (T this) {
+  int ptr = 0;
 
-/*               87654321 */
-#define LEFT_0 0x00000000
-#define LEFT_1 0x40000000
-#define LEFT_2 0x80000000
-#define LEFT_3 0xC0000000
+  while (ptr < this->nblocks*COMPRESS_BLOCKSIZE) {
+    printf("high: %08X  low: %08X  flags: %08X\n",
+	   this->blocks[ptr],this->blocks[ptr+1],this->blocks[ptr+2]);
+    ptr += COMPRESS_BLOCKSIZE;
+  }
+  printf("\n");
+  return;
+}
 
 
-/* A = 000  Stored as 00 in first two bytes, 0 in flag byte
-   C = 001            01                     0
-   G = 010            10                     0
-   T = 011            11                     0
-   N = 100            00                     1
-   X = 111            11                     1
-*/
+int
+Compress_nblocks (T this) {
+  return this->nblocks;
+}
 
-void
-Compress_compress (FILE *fp) {
-  Genomecomp_T low = 0U, high = 0U, flags = 0U, carry;
-  Univcoord_T position = 0UL;
-  int c;
-  int in_counter = 0;
 
-  while ((c = fgetc(fp)) != EOF) {
-    if (isalpha(c)) {
-      in_counter++;
+static void
+write_chars (Genomecomp_T high, Genomecomp_T low, Genomecomp_T flags) {
+  char Buffer[33];
+  int i;
 
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
-      flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_C; break;
-      case 2U: low |= LEFT_G; break;
-      case 3U: low |= LEFT_T; break;
-      default: abort();
-      }
+  Buffer[32] = '\0';
+  /* printf("%08X %08X %08X => ",high,low,flags); */
 
-      switch (uppercaseCode[c]) {
-      case 'A': break;
-      case 'C': high |= LEFT_C; break;
-      case 'G': high |= LEFT_G; break;
-      case 'T': high |= LEFT_T; break;
-      case 'N': flags |= LEFT_BIT; break;
-      case 'X': high |= LEFT_T; flags |= LEFT_BIT; break;
-      default: 
-	fprintf(stderr,"Non-standard nucleotide %c at position %lu.  Using N instead\n",c,position);
-	flags |= LEFT_BIT;
-	break;
-      }
-      
-      /* 8 is simply bits per byte */
-      if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	FWRITE_UINT(high,stdout);
-	FWRITE_UINT(low,stdout);
-	FWRITE_UINT(flags,stdout);
-
-	low = high = flags = 0U;
-	in_counter = 0;
-      }
-    }
-    position++;
-    if (position % MONITOR_INTERVAL == 0) {
-      fprintf(stderr,"Compressing position %lu\n",position);
+  for (i = 0; i < 32; i++) {
+    switch (((high & 0x01) << 1) | (low & 0x01)) {
+    case 0U: Buffer[i] = 'A'; break;
+    case 1U: Buffer[i] = 'C'; break;
+    case 2U: Buffer[i] = 'G'; break;
+    case 3U: Buffer[i] = 'T'; break;
+    default: abort();
     }
+    high >>= 1;
+    low >>= 1;
   }
 
-  if (in_counter > 0) {
-    while (in_counter < 8 * (int) sizeof(Genomecomp_T)) {
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
-      flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_C; break;
-      case 2U: low |= LEFT_G; break;
-      case 3U: low |= LEFT_T; break;
-      default: abort();
+  if (flags != 0U) {
+    for (i = 0; i < 32; i++) {
+      if (flags & 0x01) {
+	Buffer[i] = 'N';
       }
-      high |= LEFT_T; flags |= LEFT_BIT;
-      in_counter++;
+      flags >>= 1;
     }
-
-    FWRITE_UINT(high,stdout);
-    FWRITE_UINT(low,stdout);
-    FWRITE_UINT(flags,stdout);
   }
 
+  printf("%s",Buffer);
   return;
 }
 
+
+#ifdef HAVE_SSE2
 void
-Compress_uncompress (FILE *fp, int wraplength) {
-  int c;
-  Univcoord_T position = 0U;
+Compress_print_blocks (Genomecomp_T *blocks, int nshift, int pos5, int pos3) {
+  int ptr, endptr;
+  int startcolumni, endcolumni;
 
-  if (wraplength <= 0) {
-    while ((c = Compress_get_char(fp,position,/*uncompressedp*/false)) != EOF) {
-      printf("%c",c);
-      position++;
 
-      if (position % MONITOR_INTERVAL == 0) {
-	fprintf(stderr,"Uncompressing position %lu\n",position);
-      }
-    }
-  } else {
-    while ((c = Compress_get_char(fp,position,/*uncompressedp*/false)) != EOF) {
-      printf("%c",c);
-      position++;
-      if (position % wraplength == 0) {
-	printf("\n");
-      }
-      if (position % MONITOR_INTERVAL == 0) {
-	fprintf(stderr,"Uncompressing position %lu\n",position);
-      }
-    }
-    if (position % wraplength != 0) {
-      printf("\n");
-    }
-  }
+  startcolumni = ((nshift + pos5) % 128) / 32;
+  endcolumni = ((nshift + pos3) % 128) / 32;
 
-  return;
-}
+  endptr = (nshift + pos3)/128U*12;
+  ptr = (nshift + pos5)/128U*12;
 
+  while (ptr < endptr) {
+    printf("high: %08X  low: %08X  flags: %08X\t",
+	   blocks[ptr],blocks[ptr+4],blocks[ptr+8]);
+    write_chars(blocks[ptr],blocks[ptr+4],blocks[ptr+8]);
+    printf("\n");
 
+    printf("high: %08X  low: %08X  flags: %08X\t",
+	   blocks[ptr+1],blocks[ptr+5],blocks[ptr+9]);
+    write_chars(blocks[ptr+1],blocks[ptr+5],blocks[ptr+9]);
+    printf("\n");
 
+    printf("high: %08X  low: %08X  flags: %08X\t",
+	   blocks[ptr+2],blocks[ptr+6],blocks[ptr+10]);
+    write_chars(blocks[ptr+2],blocks[ptr+6],blocks[ptr+10]);
+    printf("\n");
 
-/************************************************************************/
+    printf("high: %08X  low: %08X  flags: %08X\t",
+	   blocks[ptr+3],blocks[ptr+7],blocks[ptr+11]);
+    write_chars(blocks[ptr+3],blocks[ptr+7],blocks[ptr+11]);
+    printf("\n");
 
-static void
-genomecomp_move_absolute (FILE *fp, Univcoord_T ptr) {
-#ifdef HAVE_FSEEKO
-  off_t offset = ptr*((off_t) sizeof(Genomecomp_T));
+    printf("\n");
 
-  if (fseeko(fp,offset,SEEK_SET) < 0) {
-    perror("Error in gmapindex, genomecomp_move_absolute");
-    exit(9);
+    ptr += COMPRESS_BLOCKSIZE;
   }
-#else
-  long int offset = ptr*((long int) sizeof(Genomecomp_T));
 
-  if (fseek(fp,offset,SEEK_SET) < 0) {
-    perror("Error in gmapindex, genomecomp_move_absolute");
-    exit(9);
+  /* Last block */
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr],blocks[ptr+4],blocks[ptr+8]);
+  write_chars(blocks[ptr],blocks[ptr+4],blocks[ptr+8]);
+  printf("\n");
+
+  if (0 && endcolumni == 0) {
+    printf("\n");
+    return;
   }
-#endif
 
-  return;
-}
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr+1],blocks[ptr+5],blocks[ptr+9]);
+  write_chars(blocks[ptr+1],blocks[ptr+5],blocks[ptr+9]);
+  printf("\n");
 
-static void
-genomecomp_read_current (Genomecomp_T *high, Genomecomp_T *low, Genomecomp_T *flags, FILE *fp,
-			 int index1part) {
-  char section[15];
-
-  if (fread(section,sizeof(char),index1part,fp) < (unsigned int) index1part) {
-    *high = 0xFFFFFFFF;
-    *low = 0xFFFFFFFF;
-    *flags = 0xFFFFFFFF;
+  if (0 && endcolumni == 1) {
+    printf("\n");
+    return;
+  }
+
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr+2],blocks[ptr+6],blocks[ptr+10]);
+  write_chars(blocks[ptr+2],blocks[ptr+6],blocks[ptr+10]);
+  printf("\n");
+
+  if (0 && endcolumni == 2) {
+    printf("\n");
     return;
   }
 
-  *high = (section[3] & 0xff);
-  *high <<= 8;
-  *high |= (section[2] & 0xff);
-  *high <<= 8;
-  *high |= (section[1] & 0xff);
-  *high <<= 8;
-  *high |= (section[0] & 0xff);
-
-  *low = (section[7] & 0xff);
-  *low <<= 8;
-  *low |= (section[6] & 0xff);
-  *low <<= 8;
-  *low |= (section[5] & 0xff);
-  *low <<= 8;
-  *low |= (section[4] & 0xff);
-
-  *flags = (section[11] & 0xff);
-  *flags <<= 8;
-  *flags |= (section[10] & 0xff);
-  *flags <<= 8;
-  *flags |= (section[9] & 0xff);
-  *flags <<= 8;
-  *flags |= (section[8] & 0xff);
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr+3],blocks[ptr+7],blocks[ptr+11]);
+  write_chars(blocks[ptr+3],blocks[ptr+7],blocks[ptr+11]);
+  printf("\n");
 
+  printf("\n");
   return;
 }
 
 
-static void
-write_compressed_one (FILE *fp, int *nbadchars, char Buffer[], Univcoord_T position) {
-  Genomecomp_T high = 0U, low = 0U, flags = 0U, carry;
-  int i;
-
-  for (i = 0; i < 32; i++) {
-    carry = high & 3U;
-    high >>= 2;
-    low >>= 2;
-    flags >>= 1;
-    switch (carry) {
-    case 0U: break;
-    case 1U: low |= LEFT_C; break;
-    case 2U: low |= LEFT_G; break;
-    case 3U: low |= LEFT_T; break;
-    default: abort();
-    }
+void
+Compress_print_one_block (Genomecomp_T *blocks) {
+  int ptr = 0;
 
-    switch (uppercaseCode[(int) Buffer[i]]) {
-    case 'A': break;
-    case 'C': high |= LEFT_C; break;
-    case 'G': high |= LEFT_G; break;
-    case 'T': high |= LEFT_T; break;
-    case 'N': flags |= LEFT_BIT; break;
-    case 'X': high |= LEFT_T; flags |= LEFT_BIT; break;
-    default: 
-      (*nbadchars) += 1;
-      if (*nbadchars < MAX_BADCHAR_MESSAGES) {
-	fprintf(stderr,"Don't recognize character %c at position %lu.  Using N instead\n",
-		Buffer[i],position+i);
-      } else if (*nbadchars == MAX_BADCHAR_MESSAGES) {
-	fprintf(stderr,"Too many non-recognizable characters.  Not reporting each individual occurrence anymore.\n");
-      } else if ((*nbadchars) % BADCHAR_INTERVAL == 0) {
-	fprintf(stderr,"A total of %d non-ACGTNX characters seen so far.\n",*nbadchars);
-      }
-      flags |= LEFT_BIT;
-      break;
-    }
-  }
-  
-  FWRITE_UINT(high,fp);
-  FWRITE_UINT(low,fp);
-  FWRITE_UINT(flags,fp);
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr],blocks[ptr+4],blocks[ptr+8]);
+  write_chars(blocks[ptr],blocks[ptr+4],blocks[ptr+8]);
+  printf("\n");
   
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr+1],blocks[ptr+5],blocks[ptr+9]);
+  write_chars(blocks[ptr+1],blocks[ptr+5],blocks[ptr+9]);
+  printf("\n");
+
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr+2],blocks[ptr+6],blocks[ptr+10]);
+  write_chars(blocks[ptr+2],blocks[ptr+6],blocks[ptr+10]);
+  printf("\n");
+
+  printf("high: %08X  low: %08X  flags: %08X\t",
+	 blocks[ptr+3],blocks[ptr+7],blocks[ptr+11]);
+  write_chars(blocks[ptr+3],blocks[ptr+7],blocks[ptr+11]);
+  printf("\n");
+
+  printf("\n");
   return;
 }
 
-static void
-put_compressed_one (Genomecomp_T *sectioncomp, int *nbadchars, char Buffer[], Univcoord_T position) {
-  Genomecomp_T high = 0U, low = 0U, flags = 0U, carry;
-  int i;
+#else
 
-  for (i = 0; i < 32; i++) {
-    carry = high & 3U;
-    high >>= 2;
-    low >>= 2;
-    flags >>= 1;
-    switch (carry) {
-    case 0U: break;
-    case 1U: low |= LEFT_C; break;
-    case 2U: low |= LEFT_G; break;
-    case 3U: low |= LEFT_T; break;
-    default: abort();
-    }
+/* Not implemented */
+void
+Compress_print_blocks (Genomecomp_T *blocks, int nshift, int pos5, int pos3) {
+  int ptr = 0;
+  int nblocks = 0;
 
-    switch (uppercaseCode[(int) Buffer[i]]) {
-    case 'A': break;
-    case 'C': high |= LEFT_C; break;
-    case 'G': high |= LEFT_G; break;
-    case 'T': high |= LEFT_T; break;
-    case 'N': flags |= LEFT_BIT; break;
-    case 'X': high |= LEFT_T; flags |= LEFT_BIT; break;
-    default: 
-      (*nbadchars) += 1;
-      if (*nbadchars < MAX_BADCHAR_MESSAGES) {
-	fprintf(stderr,"Don't recognize character %c at position %lu.  Using N instead\n",
-		Buffer[i],position+i);
-      } else if (*nbadchars == MAX_BADCHAR_MESSAGES) {
-	fprintf(stderr,"Too many non-recognizable characters.  Not reporting each individual occurrence anymore.\n");
-      } else if ((*nbadchars) % BADCHAR_INTERVAL == 0) {
-	fprintf(stderr,"A total of %d non-ACGTNX characters seen so far.\n",*nbadchars);
-      }
-      flags |= LEFT_BIT;
-      break;
-    }
+  while (ptr < nblocks*COMPRESS_BLOCKSIZE) {
+    printf("high: %08X  low: %08X  flags: %08X\t",
+	   blocks[ptr],blocks[ptr+1],blocks[ptr+2]);
+    write_chars(blocks[ptr],blocks[ptr+1],blocks[ptr+2]);
+    printf("\n");
+    ptr += COMPRESS_BLOCKSIZE;
   }
-  
-  sectioncomp[0] = high;
-  sectioncomp[1] = low;
-  sectioncomp[2] = flags;
-  
+  printf("\n");
   return;
 }
 
+#endif
 
-static char acgt[4] = {'A','C','G','T'};
-static char non_acgt[4] = {'N','?','?','X'};
 
-/* if gbuffer is NULL, then we fill with X's */
-int
-Compress_update_file (int nbadchars, FILE *fp, char *gbuffer, Univcoord_T startpos,
-		      Univcoord_T endpos, int index1part) {
-  /* Chrpos_T length = endpos - startpos; */
-  Univcoord_T startblock, endblock, ptr;
-  unsigned int startdiscard, enddiscard, i;
-  Genomecomp_T high, low, flags;
-  char Buffer[32];
-  int k = 0;
 
-  ptr = startblock = startpos/32U*3;
-  endblock = endpos/32U*3;
-  startdiscard = startpos % 32;
-  enddiscard = endpos % 32;
-  
-  if (endblock == startblock) {
-    /* Special case */
-    genomecomp_move_absolute(fp,ptr);
-    genomecomp_read_current(&high,&low,&flags,fp,index1part);
-
-    for (i = 0; i < 16; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
-      low >>= 2;
-      flags >>= 1;
-    }
-    for ( ; i < 32; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
-      high >>= 2;
-      flags >>= 1;
-    }
-    for (i = startdiscard; i < enddiscard; i++) {
-      Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-    }
-    genomecomp_move_absolute(fp,ptr);
-    write_compressed_one(fp,&nbadchars,Buffer,startpos);
+/*                   87654321 */
+#define LEFT_SET   0x80000000
+#define LEFT_CLEAR 0x00000000
 
-  } else {
 
-    genomecomp_move_absolute(fp,ptr);
-    genomecomp_read_current(&high,&low,&flags,fp,index1part);
+T
+Compress_new_fwd (char *gbuffer, Chrpos_T length) {
+  T new = (T) MALLOC(sizeof(*new));
+  Genomecomp_T high, low, flags;
+  Chrpos_T ptr;
+  Chrpos_T position;
+  int c, i;
+  int in_counter = 0;
 
-    for (i = 0; i < 16; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
-      low >>= 2;
-      flags >>= 1;
-    }
-    for ( ; i < 32; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
-      high >>= 2;
-      flags >>= 1;
-    }
-    for (i = startdiscard; i < 32; i++) {
-      Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-    }
-    genomecomp_move_absolute(fp,ptr);
-    write_compressed_one(fp,&nbadchars,Buffer,startpos);
-    ptr += 3;
-      
-    while (ptr < endblock) {
-      for (i = 0; i < 32; i++) {
-	Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-      }
-      write_compressed_one(fp,&nbadchars,Buffer,ptr/3*32U);
-      ptr += 3;
-    }
+#ifdef HAVE_SSE2
+  new->nblocks = (length+127)/128U;
+  new->shift_array = (Genomecomp_T **) MALLOC(STEP_SIZE * sizeof(Genomecomp_T *));
+  new->shift_array[0] = (Genomecomp_T *) _mm_malloc(STEP_SIZE*(new->nblocks+1)*COMPRESS_BLOCKSIZE * sizeof(Genomecomp_T),16);
+#else
+  new->nblocks = (length+31)/32U;
+  new->shift_array = (Genomecomp_T **) MALLOC(STEP_SIZE * sizeof(Genomecomp_T *));
+  new->shift_array[0] = (Genomecomp_T *) MALLOC(STEP_SIZE*(new->nblocks+1)*COMPRESS_BLOCKSIZE * sizeof(Genomecomp_T));
+#endif
+#ifdef DEBUG14
+  new->querylength = length;
+#endif
 
-    if (enddiscard > 0) {
-      genomecomp_move_absolute(fp,ptr);
-      genomecomp_read_current(&high,&low,&flags,fp,index1part);
+  /* Note that elements of shift_array do not have extra block at beginning */
+  new->blocks = new->shift_array[0];
+  new->availp[0] = true;	/* Same as new->blocks */
+  for (i = 1; i < STEP_SIZE; i++) {
+    new->shift_array[i] = &(new->shift_array[i-1][(new->nblocks+1)*COMPRESS_BLOCKSIZE]);
+    new->availp[i] = false;
+  }
+
+  ptr = 0;
 
-      for (i = 0; i < 16; i++) {
-	Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
-	low >>= 2;
+  position = 0U;
+  while (position < length) {
+
+#ifdef HAVE_SSE2
+    for (i = 0; i < 4; i++) {
+      /* Word i */
+      high = low = flags = 0U;
+      in_counter = 0;
+      while (position < length && in_counter < 32) {
+	c = gbuffer[position++];
+	high >>= 1;
+	low >>= 1;
 	flags >>= 1;
+
+	/* Assume that gbuffer is upper case */
+	switch /*(uppercaseCode[c])*/ (c) {
+	case 'A': /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+	case 'C': /* high |= LEFT_CLEAR; */    low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+	case 'G':    high |= LEFT_SET;      /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+	case 'T':    high |= LEFT_SET;         low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+	default:  /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */    flags |= LEFT_SET;
+	}
+	in_counter++;
       }
-      for ( ; i < 32; i++) {
-	Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
-	high >>= 2;
+      
+      while (in_counter < 32) {
+	high >>= 1;
+	low >>= 1;
 	flags >>= 1;
+	in_counter++;
       }
-      for (i = 0; i < enddiscard; i++) {
-	Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-      }
-      genomecomp_move_absolute(fp,ptr);
-      write_compressed_one(fp,&nbadchars,Buffer,ptr/3*32U);
-    }
-  }
-
-  return nbadchars;
-}
-
 
-int
-Compress_update_memory (int nbadchars, Genomecomp_T *genomecomp, char *gbuffer, Univcoord_T startpos,
-			Univcoord_T endpos) {
-  /* Chrpos_T length = endpos - startpos; */
-  Univcoord_T startblock, endblock, ptr;
-  Genomecomp_T high, low, flags;
-  char Buffer[32];
-  unsigned int startdiscard, enddiscard, i;
-  int k = 0;
-
-  ptr = startblock = startpos/32U*3;
-  endblock = endpos/32U*3;
-  startdiscard = startpos % 32;
-  enddiscard = endpos % 32;
-  
-  if (endblock == startblock) {
-    /* Special case */
-    high = genomecomp[ptr];
-    low = genomecomp[ptr+1];
-    flags = genomecomp[ptr+2];
-
-    for (i = 0; i < 16; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
-      low >>= 2;
-      flags >>= 1;
-    }
-    for ( ; i < 32; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
-      high >>= 2;
-      flags >>= 1;
+      new->blocks[ptr + i] = high;
+      new->blocks[ptr + i + 4] = low;
+      new->blocks[ptr + i + 8] = flags;
     }
-    for (i = startdiscard; i < enddiscard; i++) {
-      Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-    }
-    put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,startpos);
-
-  } else {
-
-    high = genomecomp[ptr];
-    low = genomecomp[ptr+1];
-    flags = genomecomp[ptr+2];
 
-    for (i = 0; i < 16; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
-      low >>= 2;
-      flags >>= 1;
-    }
-    for ( ; i < 32; i++) {
-      Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
-      high >>= 2;
+#else
+    high = low = flags = 0U;
+    in_counter = 0;
+    while (position < length && in_counter < 32) {
+      c = gbuffer[position++];
+      high >>= 1;
+      low >>= 1;
       flags >>= 1;
+
+      /* Assume that gbuffer is upper case */
+      switch /*(uppercaseCode[c])*/ (c) {
+      case 'A': /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+      case 'C': /* high |= LEFT_CLEAR; */    low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+      case 'G':    high |= LEFT_SET;      /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+      case 'T':    high |= LEFT_SET;         low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+      default:  /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */    flags |= LEFT_SET;
+      }
+      in_counter++;
     }
-    for (i = startdiscard; i < 32; i++) {
-      Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-    }
-    put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,startpos);
-    ptr += 3;
       
-    while (ptr < endblock) {
-      for (i = 0; i < 32; i++) {
-	Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-      }
-      put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,ptr/3*32U);
-      ptr += 3;
+    while (in_counter < 32) {
+      high >>= 1;
+      low >>= 1;
+      flags >>= 1;
+      in_counter++;
     }
 
-    if (enddiscard > 0) {
-      high = genomecomp[ptr];
-      low = genomecomp[ptr+1];
-      flags = genomecomp[ptr+2];
+    /* Use old storage method */
+    new->blocks[ptr] = high;
+    new->blocks[ptr+1] = low;
+    new->blocks[ptr+2] = flags;
+#endif
 
-      for (i = 0; i < 16; i++) {
-	Buffer[i] = flags & 1U ? non_acgt[low & 3U] : acgt[low & 3U];
-	low >>= 2;
-	flags >>= 1;
-      }
-      for ( ; i < 32; i++) {
-	Buffer[i] = flags & 1U ? non_acgt[high & 3U] : acgt[high & 3U];
-	high >>= 2;
-	flags >>= 1;
-      }
-      for (i = 0; i < enddiscard; i++) {
-	Buffer[i] = gbuffer ? gbuffer[k++] : 'X';
-      }
-      put_compressed_one(&(genomecomp[ptr]),&nbadchars,Buffer,ptr/3*32U);
-    }
+    ptr += COMPRESS_BLOCKSIZE;
   }
 
-  return nbadchars;
-}
+#ifdef HAVE_SSE2
+  /* Compress_shift will access these values */
+  new->blocks[ptr] = new->blocks[ptr+1] = new->blocks[ptr+2] = new->blocks[ptr+3] = 0U;
+  new->blocks[ptr+4] = new->blocks[ptr+5] = new->blocks[ptr+6] = new->blocks[ptr+7] = 0U;
+  new->blocks[ptr+8] = new->blocks[ptr+9] = new->blocks[ptr+10] = new->blocks[ptr+11] = 0U;
+#else
+  /* Compress_shift will access these values */
+  new->blocks[ptr] = 0U;
+  new->blocks[ptr+1] = 0U;
+  new->blocks[ptr+2] = 0U;
+#endif
 
+  debug0(printf("Compress_new_fwd\n"));
+  debug0(Compress_print_blocks(new->blocks,new->nblocks));
+  debug0(printf("\n"));
 
+#if 0
+  /* Pre-fill nshift of 0, so we don't have to check for that as a special case */
+  new->availp[0] = true;
+  memcpy(&(new->shift_array[0]),new->blocks,new->nblocks*COMPRESS_BLOCKSIZE*sizeof(Genomecomp_T));
+#endif
 
-#define T Compress_T
-struct T {
-  Genomecomp_T *blocks;
-  int nblocks;
-  Genomecomp_T **shift_array;
-  bool availp[32];
-};
-
-
-
-void
-Compress_free (T *old) {
-  if (*old) {
-    FREE((*old)->shift_array[0]);
-    FREE((*old)->shift_array);
-    FREE((*old)->blocks);
-    FREE(*old);
-  }
-  return;
-}
-
-void
-Compress_print (T this) {
-  int ptr = 0;
-
-  while (ptr < this->nblocks*3) {
-    printf("high: %08X  low: %08X  flags: %08X\n",
-	   this->blocks[ptr],this->blocks[ptr+1],this->blocks[ptr+2]);
-    ptr += 3;
-  }
-  printf("\n");
-  return;
-}
-
-
-int
-Compress_nblocks (T this) {
-  return this->nblocks;
-}
-
-
-#ifdef DEBUG1
-static void
-print_blocks (Genomecomp_T *blocks, int nblocks) {
-  int ptr = 0;
-
-  while (ptr < nblocks*3) {
-    printf("high: %08X  low: %08X  flags: %08X\n",
-	   blocks[ptr],blocks[ptr+1],blocks[ptr+2]);
-    ptr += 3;
-  }
-  printf("\n");
-  return;
+  return new;
 }
-#endif
-
-
 
 T
-Compress_new (char *gbuffer, Chrpos_T length, bool plusp) {
+Compress_new_rev (char *gbuffer, Chrpos_T length) {
   T new = (T) MALLOC(sizeof(*new));
-  Genomecomp_T low = 0U, high = 0U, flags = 0U, carry;
+  Genomecomp_T high, low, flags;
   Chrpos_T ptr;
-  int position;
+  Chrpos_T position;
   int c, i;
   int in_counter = 0;
 
+#ifdef HAVE_SSE2
+  new->nblocks = (length+127)/128U;
+  new->shift_array = (Genomecomp_T **) MALLOC(STEP_SIZE * sizeof(Genomecomp_T *));
+  new->shift_array[0] = (Genomecomp_T *) _mm_malloc(STEP_SIZE*(new->nblocks+1)*COMPRESS_BLOCKSIZE * sizeof(Genomecomp_T),16);
+#else
   new->nblocks = (length+31)/32U;
-
-  new->blocks = (Genomecomp_T *) CALLOC((new->nblocks+1)*3,sizeof(Genomecomp_T));
+  new->shift_array = (Genomecomp_T **) MALLOC(STEP_SIZE * sizeof(Genomecomp_T *));
+  new->shift_array[0] = (Genomecomp_T *) MALLOC(STEP_SIZE*(new->nblocks+1)*COMPRESS_BLOCKSIZE * sizeof(Genomecomp_T));
+#endif
+#ifdef DEBUG14
+  new->querylength = length;
+#endif
 
   /* Note that elements of shift_array do not have extra block at beginning */
-  new->shift_array = (Genomecomp_T **) CALLOC(32,sizeof(Genomecomp_T *));
-  new->shift_array[0] = (Genomecomp_T *) CALLOC(32*(new->nblocks+1)*3,sizeof(Genomecomp_T));
-  new->availp[0] = false;
-  for (i = 1; i < 32; i++) {
-    new->shift_array[i] = &(new->shift_array[i-1][(new->nblocks+1)*3]);
+  new->blocks = new->shift_array[0];
+  new->availp[0] = true;	/* Same as new->blocks */
+  for (i = 1; i < STEP_SIZE; i++) {
+    new->shift_array[i] = &(new->shift_array[i-1][(new->nblocks+1)*COMPRESS_BLOCKSIZE]);
     new->availp[i] = false;
   }
 
   ptr = 0;
-  if (plusp == true) {
-    for (position = 0U; position < length; position++) {
-      c = gbuffer[position];
-      /* printf("char: %c\n",c); */
-      in_counter++;
 
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
-      flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_C; break;
-      case 2U: low |= LEFT_G; break;
-      case 3U: low |= LEFT_T; break;
-      default: abort();
-      }
+  position = length;
+  while (position > 0) {
+
+#ifdef HAVE_SSE2
+    for (i = 0; i < 4; i++) {
+      /* Word i */
+      high = low = flags = 0U;
+      in_counter = 0;
+      while (position > 0 && in_counter < 32) {
+	c = gbuffer[--position];
+	high >>= 1;
+	low >>= 1;
+	flags >>= 1;
 
-      /* Assume that gbuffer is upper case */
-      switch /*(uppercaseCode[c])*/ (c) {
-      case 'A': break;
-      case 'C': high |= LEFT_C; break;
-      case 'G': high |= LEFT_G; break;
-      case 'T': high |= LEFT_T; break;
-      default: flags |= LEFT_BIT; break;
+	/* Assume that gbuffer is upper case */
+	switch /*(uppercaseCode[c])*/ (c) {
+	case 'T': /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+	case 'G': /* high |= LEFT_CLEAR; */    low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+	case 'C':    high |= LEFT_SET;      /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+	case 'A':    high |= LEFT_SET;         low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+	default:  /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */    flags |= LEFT_SET;
+	}
+	in_counter++;
       }
-      /* printf("high: %08X  low: %08X  flags: %08X\n",high,low,flags); */
-      
-      if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	new->blocks[ptr] = high;
-	new->blocks[ptr+1] = low;
-	new->blocks[ptr+2] = flags;
-	ptr += 3;
-
-	low = high = flags = 0U;
-	in_counter = 0;
+
+      while (in_counter < 32) {
+	high >>= 1;
+	low >>= 1;
+	flags >>= 1;
+	in_counter++;
       }
-    }
-  } else {
 
-    for (position = length-1; position >= 0; position--) {
-      c = gbuffer[position];
-      /* printf("char: %c\n",c); */
-      in_counter++;
+      new->blocks[ptr + i] = high;
+      new->blocks[ptr + i + 4] = low;
+      new->blocks[ptr + i + 8] = flags;
+    }
 
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
+#else
+    high = low = flags = 0U;
+    in_counter = 0;
+    while (position > 0 && in_counter < 32) {
+      c = gbuffer[--position];
+      high >>= 1;
+      low >>= 1;
       flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_C; break;
-      case 2U: low |= LEFT_G; break;
-      case 3U: low |= LEFT_T; break;
-      default: abort();
-      }
 
       /* Assume that gbuffer is upper case */
       switch /*(uppercaseCode[c])*/ (c) {
-      case 'A': high |= LEFT_T; break;
-      case 'C': high |= LEFT_G; break;
-      case 'G': high |= LEFT_C; break;
-      case 'T': break;
-      default: flags |= LEFT_BIT; break;
-      }
-      /* printf("high: %08X  low: %08X  flags: %08X\n",high,low,flags); */
-      
-      if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	new->blocks[ptr] = high;
-	new->blocks[ptr+1] = low;
-	new->blocks[ptr+2] = flags;
-	ptr += 3;
-
-	low = high = flags = 0U;
-	in_counter = 0;
+      case 'T': /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+      case 'G': /* high |= LEFT_CLEAR; */    low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+      case 'C':    high |= LEFT_SET;      /* low |= LEFT_CLEAR; */ /* flags |= LEFT_CLEAR; */ break;
+      case 'A':    high |= LEFT_SET;         low |= LEFT_SET;      /* flags |= LEFT_CLEAR; */ break;
+      default:  /* high |= LEFT_CLEAR; */ /* low |= LEFT_CLEAR; */    flags |= LEFT_SET;
       }
+      in_counter++;
     }
-  }
 
-  if (in_counter > 0) {
-    while (in_counter < 8 * (int) sizeof(Genomecomp_T)) {
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
+    while (in_counter < 32) {
+      high >>= 1;
+      low >>= 1;
       flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_C; break;
-      case 2U: low |= LEFT_G; break;
-      case 3U: low |= LEFT_T; break;
-      default: abort();
-      }
-#if 0
-      /* Don't put in X's */
-      high |= LEFT_T; flags |= LEFT_BIT;
-#endif
       in_counter++;
     }
 
     new->blocks[ptr] = high;
     new->blocks[ptr+1] = low;
     new->blocks[ptr+2] = flags;
+#endif
+    
+    ptr += COMPRESS_BLOCKSIZE;
   }
 
-  debug1(printf("Compress_new, plusp %d\n",plusp));
-  debug1(print_blocks(new->blocks,new->nblocks));
-  debug1(printf("\n"));
+#ifdef HAVE_SSE2
+  /* Compress_shift will access these values */
+  new->blocks[ptr] = new->blocks[ptr+1] = new->blocks[ptr+2] = new->blocks[ptr+3] = 0U;
+  new->blocks[ptr+4] = new->blocks[ptr+5] = new->blocks[ptr+6] = new->blocks[ptr+7] = 0U;
+  new->blocks[ptr+8] = new->blocks[ptr+9] = new->blocks[ptr+10] = new->blocks[ptr+11] = 0U;
+#else
+  /* Compress_shift will access these values */
+  new->blocks[ptr] = 0U;
+  new->blocks[ptr+1] = 0U;
+  new->blocks[ptr+2] = 0U;
+#endif
 
-  return new;
-}
+  debug0(printf("Compress_new_rev\n"));
+  debug0(Compress_print_blocks(new->blocks,new->nblocks));
+  debug0(printf("\n"));
 
 #if 0
-T
-Compress_dibase_new (char *gbuffer, Chrpos_T length, bool plusp) {
-  T new = (T) MALLOC(sizeof(*new));
-  Genomecomp_T low = 0U, high = 0U, flags = 0U, carry;
-  Chrpos_T ptr;
-  int position;
-  int c, i;
-  int in_counter = 0;
+  /* Pre-fill nshift of 0, so we don't have to check for that as a special case */
+  new->availp[0] = true;
+  memcpy(&(new->shift_array[0]),new->blocks,new->nblocks*COMPRESS_BLOCKSIZE*sizeof(Genomecomp_T));
+#endif
 
-  new->nblocks = (length+31)/32U;
+  return new;
+}
 
-  new->blocks = (Genomecomp_T *) CALLOC((new->nblocks+1)*3,sizeof(Genomecomp_T));
 
-  /* Note that elements of shift_array do not have extra block at beginning */
-  new->shift_array = (Genomecomp_T **) CALLOC(32,sizeof(Genomecomp_T *));
-  new->shift_array[0] = (Genomecomp_T *) CALLOC(32*(new->nblocks+1)*3,sizeof(Genomecomp_T));
-  new->availp[0] = false;
-  for (i = 1; i < 32; i++) {
-    new->shift_array[i] = &(new->shift_array[i-1][(new->nblocks+1)*3]);
-    new->availp[i] = false;
-  }
+#ifdef DEBUG14
+static void
+print_vector_hex (__m128i x) {
+  printf("%08X %08X %08X %08X\n",
+	 _mm_extract_epi32(x,0),_mm_extract_epi32(x,1),_mm_extract_epi32(x,2),_mm_extract_epi32(x,3));
+  return;
+}
 
-  ptr = 0;
-  if (plusp == true) {
-    for (position = 0U; position < length; position++) {
-      c = gbuffer[position];
-      /* printf("char: %c\n",c); */
-      in_counter++;
+static bool
+Compress_shift_check (T this, int nshift) {
+  Genomecomp_T *shifted;
+  int rightshift;
+  int ptr;
 
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
-      flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_1; break;
-      case 2U: low |= LEFT_2; break;
-      case 3U: low |= LEFT_3; break;
-      default: abort();
-      }
+  /* printf("Entered Compress_shift_check with nshift = %d, nblocks = %d\n",nshift,this->nblocks); */
+  shifted = this->shift_array[nshift];
 
-      switch (c) {
-      case '0': break;
-      case '1': high |= LEFT_1; break;
-      case '2': high |= LEFT_2; break;
-      case '3': high |= LEFT_3; break;
-      default: flags |= LEFT_BIT; break;
-      }
-      /* printf("high: %08X  low: %08X  flags: %08X\n",high,low,flags); */
+  /* Shift */
+  ptr = this->nblocks*12;
+  if (nshift == 0) {
+    while (ptr >= 0) {
+      assert(shifted[ptr] == this->blocks[ptr]);
+      ptr--;
+    }
+    
+  } else if (nshift < 32) {
+    rightshift = 32 - nshift;
+    
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == ((this->blocks[ptr+11] << nshift) | (this->blocks[ptr+10] >> rightshift)));
+      assert(shifted[ptr+7] == ((this->blocks[ptr+7] << nshift) | (this->blocks[ptr+6] >> rightshift)));
+      assert(shifted[ptr+3] == ((this->blocks[ptr+3] << nshift) | (this->blocks[ptr+2] >> rightshift)));
+
+      assert(shifted[ptr+10] == ((this->blocks[ptr+10] << nshift) | (this->blocks[ptr+9] >> rightshift)));
+      assert(shifted[ptr+6] == ((this->blocks[ptr+6] << nshift) | (this->blocks[ptr+5] >> rightshift)));
+      assert(shifted[ptr+2] == ((this->blocks[ptr+2] << nshift) | (this->blocks[ptr+1] >> rightshift)));
+
+      assert(shifted[ptr+9] == ((this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift)));
+      assert(shifted[ptr+5] == ((this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift)));
+      assert(shifted[ptr+1] == ((this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift)));
+
+      assert(shifted[ptr+8] == ((this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift)));
+      assert(shifted[ptr+4] == ((this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift)));
+      assert(shifted[ptr] == ((this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift)));
       
-      if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	new->blocks[ptr] = high;
-	new->blocks[ptr+1] = low;
-	new->blocks[ptr+2] = flags;
-	ptr += 3;
-
-	low = high = flags = 0U;
-	in_counter = 0;
-      }
+      ptr -= 12;
     }
+
+    assert(shifted[11] == ((this->blocks[11] << nshift) | (this->blocks[10] >> rightshift)));
+    assert(shifted[7] == ((this->blocks[7] << nshift) | (this->blocks[6] >> rightshift)));
+    assert(shifted[3] == ((this->blocks[3] << nshift) | (this->blocks[2] >> rightshift)));
+
+    assert(shifted[10] == ((this->blocks[10] << nshift) | (this->blocks[9] >> rightshift)));
+    assert(shifted[6] == ((this->blocks[6] << nshift) | (this->blocks[5] >> rightshift)));
+    assert(shifted[2] == ((this->blocks[2] << nshift) | (this->blocks[1] >> rightshift)));
+
+    assert(shifted[9] == ((this->blocks[9] << nshift) | (this->blocks[8] >> rightshift)));
+    assert(shifted[5] == ((this->blocks[5] << nshift) | (this->blocks[4] >> rightshift)));
+    assert(shifted[1] == ((this->blocks[1] << nshift) | (this->blocks[0] >> rightshift)));
+
+    assert(shifted[8] == (this->blocks[8] << nshift));
+    assert(shifted[4] == (this->blocks[4] << nshift));
+    assert(shifted[0] == (this->blocks[0] << nshift));
+
+  } else if (nshift == 32) {
+
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == this->blocks[ptr+10]);
+      assert(shifted[ptr+7] == this->blocks[ptr+6]);
+      assert(shifted[ptr+3] == this->blocks[ptr+2]);
+
+      assert(shifted[ptr+10] == this->blocks[ptr+9]);
+      assert(shifted[ptr+6] == this->blocks[ptr+5]);
+      assert(shifted[ptr+2] == this->blocks[ptr+1]);
+
+      assert(shifted[ptr+9] == this->blocks[ptr+8]);
+      assert(shifted[ptr+5] == this->blocks[ptr+4]);
+      assert(shifted[ptr+1] == this->blocks[ptr]);
+
+      assert(shifted[ptr+8] == this->blocks[ptr-1]);
+      assert(shifted[ptr+4] == this->blocks[ptr-5]);
+      assert(shifted[ptr] == this->blocks[ptr-9]);
+
+      ptr -= 12;
+    }
+
+    assert(shifted[11] == this->blocks[10]);
+    assert(shifted[7] == this->blocks[6]);
+    assert(shifted[3] == this->blocks[2]);
+
+    assert(shifted[10] == this->blocks[9]);
+    assert(shifted[6] == this->blocks[5]);
+    assert(shifted[2] == this->blocks[1]);
+
+    assert(shifted[9] == this->blocks[8]);
+    assert(shifted[5] == this->blocks[4]);
+    assert(shifted[1] == this->blocks[0]);
+
+    assert(shifted[8] == 0U);
+    assert(shifted[4] == 0U);
+    assert(shifted[0] == 0U);
+
+  } else if (nshift < 64) {
+    nshift -= 32;
+    rightshift = 32 - nshift;
+
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == ((this->blocks[ptr+10] << nshift) | (this->blocks[ptr+9] >> rightshift)));
+      assert(shifted[ptr+7] == ((this->blocks[ptr+6] << nshift) | (this->blocks[ptr+5] >> rightshift)));
+      assert(shifted[ptr+3] == ((this->blocks[ptr+2] << nshift) | (this->blocks[ptr+1] >> rightshift)));
+
+      assert(shifted[ptr+10] == ((this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift)));
+      assert(shifted[ptr+6] == ((this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift)));
+      assert(shifted[ptr+2] == ((this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift)));
+
+      assert(shifted[ptr+9] == ((this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift)));
+      assert(shifted[ptr+5] == ((this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift)));
+      assert(shifted[ptr+1] == ((this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift)));
+
+      assert(shifted[ptr+8] == ((this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift)));
+      assert(shifted[ptr+4] == ((this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift)));
+      assert(shifted[ptr] == ((this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift)));
+
+      ptr -= 12;
+    }
+
+    assert(shifted[11] == ((this->blocks[10] << nshift) | (this->blocks[9] >> rightshift)));
+    assert(shifted[7] == ((this->blocks[6] << nshift) | (this->blocks[5] >> rightshift)));
+    assert(shifted[3] == ((this->blocks[2] << nshift) | (this->blocks[1] >> rightshift)));
+
+    assert(shifted[10] == ((this->blocks[9] << nshift) | (this->blocks[8] >> rightshift)));
+    assert(shifted[6] == ((this->blocks[5] << nshift) | (this->blocks[4] >> rightshift)));
+    assert(shifted[2] == ((this->blocks[1] << nshift) | (this->blocks[0] >> rightshift)));
+
+    assert(shifted[9] == (this->blocks[8] << nshift));
+    assert(shifted[5] == (this->blocks[4] << nshift));
+    assert(shifted[1] == (this->blocks[0] << nshift));
+
+    assert(shifted[8] == 0U);
+    assert(shifted[4] == 0U);
+    assert(shifted[0] == 0U);
+
+
+  } else if (nshift == 64) {
+
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == this->blocks[ptr+9]);
+      assert(shifted[ptr+7] == this->blocks[ptr+5]);
+      assert(shifted[ptr+3] == this->blocks[ptr+1]);
+
+      assert(shifted[ptr+10] == this->blocks[ptr+8]);
+      assert(shifted[ptr+6] == this->blocks[ptr+4]);
+      assert(shifted[ptr+2] == this->blocks[ptr]);
+
+      assert(shifted[ptr+9] == this->blocks[ptr-1]);
+      assert(shifted[ptr+5] == this->blocks[ptr-5]);
+      assert(shifted[ptr+1] == this->blocks[ptr-9]);
+
+      assert(shifted[ptr+8] == this->blocks[ptr-2]);
+      assert(shifted[ptr+4] == this->blocks[ptr-6]);
+      assert(shifted[ptr] == this->blocks[ptr-10]);
+
+      ptr -= 12;
+    }
+
+    assert(shifted[11] == this->blocks[9]);
+    assert(shifted[7] == this->blocks[5]);
+    assert(shifted[3] == this->blocks[1]);
+
+    assert(shifted[10] == this->blocks[8]);
+    assert(shifted[6] == this->blocks[4]);
+    assert(shifted[2] == this->blocks[0]);
+
+    assert(shifted[9] == 0U);
+    assert(shifted[5] == 0U);
+    assert(shifted[1] == 0U);
+
+    assert(shifted[8] == 0U);
+    assert(shifted[4] == 0U);
+    assert(shifted[0] == 0U);
+
+  } else if (nshift < 96) {
+    nshift -= 64;
+    rightshift = 32 - nshift;
+
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == ((this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift)));
+      assert(shifted[ptr+7] == ((this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift)));
+      assert(shifted[ptr+3] == ((this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift)));
+
+      assert(shifted[ptr+10] == ((this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift)));
+      assert(shifted[ptr+6] == ((this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift)));
+      assert(shifted[ptr+2] == ((this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift)));
+
+      assert(shifted[ptr+9] == ((this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift)));
+      assert(shifted[ptr+5] == ((this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift)));
+      assert(shifted[ptr+1] == ((this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift)));
+
+      assert(shifted[ptr+8] == ((this->blocks[ptr-2] << nshift) | (this->blocks[ptr-3] >> rightshift)));
+      assert(shifted[ptr+4] == ((this->blocks[ptr-6] << nshift) | (this->blocks[ptr-7] >> rightshift)));
+      assert(shifted[ptr] == ((this->blocks[ptr-10] << nshift) | (this->blocks[ptr-11] >> rightshift)));
+
+      ptr -= 12;
+    }
+
+    assert(shifted[11] == ((this->blocks[9] << nshift) | (this->blocks[8] >> rightshift)));
+    assert(shifted[7] == ((this->blocks[5] << nshift) | (this->blocks[4] >> rightshift)));
+    assert(shifted[3] == ((this->blocks[1] << nshift) | (this->blocks[0] >> rightshift)));
+
+    assert(shifted[10] == (this->blocks[8] << nshift));
+    assert(shifted[6] == (this->blocks[4] << nshift));
+    assert(shifted[2] == (this->blocks[0] << nshift));
+
+    assert(shifted[9] == 0U);
+    assert(shifted[5] == 0U);
+    assert(shifted[1] == 0U);
+
+    assert(shifted[8] == 0U);
+    assert(shifted[4] == 0U);
+    assert(shifted[0] == 0U);
+
+  } else if (nshift == 96) {
+
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == this->blocks[ptr+8]);
+      assert(shifted[ptr+7] == this->blocks[ptr+4]);
+      assert(shifted[ptr+3] == this->blocks[ptr]);
+
+      assert(shifted[ptr+10] == this->blocks[ptr-1]);
+      assert(shifted[ptr+6] == this->blocks[ptr-5]);
+      assert(shifted[ptr+2] == this->blocks[ptr-9]);
+
+      assert(shifted[ptr+9] == this->blocks[ptr-2]);
+      assert(shifted[ptr+5] == this->blocks[ptr-6]);
+      assert(shifted[ptr+1] == this->blocks[ptr-10]);
+
+      assert(shifted[ptr+8] == this->blocks[ptr-3]);
+      assert(shifted[ptr+4] == this->blocks[ptr-7]);
+      assert(shifted[ptr] == this->blocks[ptr-11]);
+
+      ptr -= 12;
+    }
+
+    assert(shifted[11] == this->blocks[8]);
+    assert(shifted[7] == this->blocks[4]);
+    assert(shifted[3] == this->blocks[0]);
+
+    assert(shifted[10] == 0U);
+    assert(shifted[6] == 0U);
+    assert(shifted[2] == 0U);
+
+    assert(shifted[9] == 0U);
+    assert(shifted[5] == 0U);
+    assert(shifted[1] == 0U);
+
+    assert(shifted[8] == 0U);
+    assert(shifted[4] == 0U);
+    assert(shifted[0] == 0U);
+
   } else {
+    nshift -= 96;
+    rightshift = 32 - nshift;
 
-    for (position = length-1; position >= 0; position--) {
-      c = gbuffer[position];
-      /* printf("char: %c\n",c); */
-      in_counter++;
+    while (ptr > 0) {
+      assert(shifted[ptr+11] == ((this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift)));
+      assert(shifted[ptr+7] == ((this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift)));
+      assert(shifted[ptr+3] == ((this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift)));
 
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
-      flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_1; break;
-      case 2U: low |= LEFT_2; break;
-      case 3U: low |= LEFT_3; break;
-      default: abort();
-      }
+      assert(shifted[ptr+10] == ((this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift)));
+      assert(shifted[ptr+6] == ((this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift)));
+      assert(shifted[ptr+2] == ((this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift)));
 
-      switch (c) {
-      case '0': break;
-      case '1': high |= LEFT_1; break;
-      case '2': high |= LEFT_2; break;
-      case '3': high |= LEFT_3; break;
-      default: flags |= LEFT_BIT; break;
-      }
-      /* printf("high: %08X  low: %08X  flags: %08X\n",high,low,flags); */
-      
-      if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	new->blocks[ptr] = high;
-	new->blocks[ptr+1] = low;
-	new->blocks[ptr+2] = flags;
-	ptr += 3;
-
-	low = high = flags = 0U;
-	in_counter = 0;
-      }
+      assert(shifted[ptr+9] == ((this->blocks[ptr-2] << nshift) | (this->blocks[ptr-3] >> rightshift)));
+      assert(shifted[ptr+5] == ((this->blocks[ptr-6] << nshift) | (this->blocks[ptr-7] >> rightshift)));
+      assert(shifted[ptr+1] == ((this->blocks[ptr-10] << nshift) | (this->blocks[ptr-11] >> rightshift)));
+
+      assert(shifted[ptr+8] == ((this->blocks[ptr-3] << nshift) | (this->blocks[ptr-4] >> rightshift)));
+      assert(shifted[ptr+4] == ((this->blocks[ptr-7] << nshift) | (this->blocks[ptr-8] >> rightshift)));
+      assert(shifted[ptr] == ((this->blocks[ptr-11] << nshift) | (this->blocks[ptr-12] >> rightshift)));
+
+      ptr -= 12;
     }
+
+    assert(shifted[11] == (this->blocks[8] << nshift));
+    assert(shifted[7] == (this->blocks[4] << nshift));
+    assert(shifted[3] == (this->blocks[0] << nshift));
+
+    assert(shifted[10] == 0U);
+    assert(shifted[6] == 0U);
+    assert(shifted[2] == 0U);
+
+    assert(shifted[9] == 0U);
+    assert(shifted[5] == 0U);
+    assert(shifted[1] == 0U);
+
+    assert(shifted[8] == 0U);
+    assert(shifted[4] == 0U);
+    assert(shifted[0] == 0U);
   }
 
-  if (in_counter > 0) {
-    while (in_counter < 8 * (int) sizeof(Genomecomp_T)) {
-      carry = high & 3U;
-      high >>= 2;
-      low >>= 2;
-      flags >>= 1;
-      switch (carry) {
-      case 0U: break;
-      case 1U: low |= LEFT_1; break;
-      case 2U: low |= LEFT_2; break;
-      case 3U: low |= LEFT_3; break;
-      default: abort();
-      }
-#if 0
-      /* Don't put in X's */
-      high |= LEFT_T; flags |= LEFT_BIT;
+  return true;
+}
 #endif
-      in_counter++;
+
+
+#ifdef DEBUG14
+static void
+shift_sse2 (T this, int nshift) {
+  Genomecomp_T shifted[1000];
+  int rightshift;
+  int ptr;
+
+  /* Shift */
+  ptr = this->nblocks*12;
+  if (nshift == 0) {
+    while (ptr >= 0) {
+      memcpy(&(shifted[ptr]),&(this->blocks[ptr]),12*sizeof(Genomecomp_T));
+      ptr -= 12;
     }
 
-    new->blocks[ptr] = high;
-    new->blocks[ptr+1] = low;
-    new->blocks[ptr+2] = flags;
+  } else if (nshift < 32) {
+    rightshift = 32 - nshift;
+
+    while (ptr > 0) {
+      shifted[ptr+11] = (this->blocks[ptr+11] << nshift) | (this->blocks[ptr+10] >> rightshift);
+      shifted[ptr+7] = (this->blocks[ptr+7] << nshift) | (this->blocks[ptr+6] >> rightshift);
+      shifted[ptr+3] = (this->blocks[ptr+3] << nshift) | (this->blocks[ptr+2] >> rightshift);
+
+      shifted[ptr+10] = (this->blocks[ptr+10] << nshift) | (this->blocks[ptr+9] >> rightshift);
+      shifted[ptr+6] = (this->blocks[ptr+6] << nshift) | (this->blocks[ptr+5] >> rightshift);
+      shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr+1] >> rightshift);
+
+      shifted[ptr+9] = (this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift);
+      shifted[ptr+5] = (this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift);
+      shifted[ptr+1] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift);
+
+      shifted[ptr+8] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+      shifted[ptr+4] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+      shifted[ptr] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+      ptr -= 12;
+    }
+
+    shifted[11] = (this->blocks[11] << nshift) | (this->blocks[10] >> rightshift);
+    shifted[7] = (this->blocks[7] << nshift) | (this->blocks[6] >> rightshift);
+    shifted[3] = (this->blocks[3] << nshift) | (this->blocks[2] >> rightshift);
+
+    shifted[10] = (this->blocks[10] << nshift) | (this->blocks[9] >> rightshift);
+    shifted[6] = (this->blocks[6] << nshift) | (this->blocks[5] >> rightshift);
+    shifted[2] = (this->blocks[2] << nshift) | (this->blocks[1] >> rightshift);
+
+    shifted[9] = (this->blocks[9] << nshift) | (this->blocks[8] >> rightshift);
+    shifted[5] = (this->blocks[5] << nshift) | (this->blocks[4] >> rightshift);
+    shifted[1] = (this->blocks[1] << nshift) | (this->blocks[0] >> rightshift);
+
+    shifted[8] = this->blocks[8] << nshift;
+    shifted[4] = this->blocks[4] << nshift;
+    shifted[0] = this->blocks[0] << nshift;
+
+  } else if (nshift == 32) {
+
+    while (ptr > 0) {
+      shifted[ptr+11] = this->blocks[ptr+10];
+      shifted[ptr+7] = this->blocks[ptr+6];
+      shifted[ptr+3] = this->blocks[ptr+2];
+
+      shifted[ptr+10] = this->blocks[ptr+9];
+      shifted[ptr+6] = this->blocks[ptr+5];
+      shifted[ptr+2] = this->blocks[ptr+1];
+
+      shifted[ptr+9] = this->blocks[ptr+8];
+      shifted[ptr+5] = this->blocks[ptr+4];
+      shifted[ptr+1] = this->blocks[ptr];
+
+      shifted[ptr+8] = this->blocks[ptr-1];
+      shifted[ptr+4] = this->blocks[ptr-5];
+      shifted[ptr] = this->blocks[ptr-9];
+
+      ptr -= 12;
+    }
+
+    shifted[11] = this->blocks[10];
+    shifted[7] = this->blocks[6];
+    shifted[3] = this->blocks[2];
+
+    shifted[10] = this->blocks[9];
+    shifted[6] = this->blocks[5];
+    shifted[2] = this->blocks[1];
+
+    shifted[9] = this->blocks[8];
+    shifted[5] = this->blocks[4];
+    shifted[1] = this->blocks[0];
+
+    shifted[8] = 0U;
+    shifted[4] = 0U;
+    shifted[0] = 0U;
+
+  } else if (nshift < 64) {
+    nshift -= 32;
+    rightshift = 32 - nshift;
+
+    while (ptr > 0) {
+      shifted[ptr+11] = (this->blocks[ptr+10] << nshift) | (this->blocks[ptr+9] >> rightshift);
+      shifted[ptr+7] = (this->blocks[ptr+6] << nshift) | (this->blocks[ptr+5] >> rightshift);
+      shifted[ptr+3] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr+1] >> rightshift);
+
+      shifted[ptr+10] = (this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift);
+      shifted[ptr+6] = (this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift);
+      shifted[ptr+2] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift);
+
+      shifted[ptr+9] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+      shifted[ptr+5] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+      shifted[ptr+1] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+      shifted[ptr+8] = (this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+      shifted[ptr+4] = (this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift);
+      shifted[ptr] = (this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift);
+
+      ptr -= 12;
+    }
+
+    shifted[11] = (this->blocks[10] << nshift) | (this->blocks[9] >> rightshift);
+    shifted[7] = (this->blocks[6] << nshift) | (this->blocks[5] >> rightshift);
+    shifted[3] = (this->blocks[2] << nshift) | (this->blocks[1] >> rightshift);
+
+    shifted[10] = (this->blocks[9] << nshift) | (this->blocks[8] >> rightshift);
+    shifted[6] = (this->blocks[5] << nshift) | (this->blocks[4] >> rightshift);
+    shifted[2] = (this->blocks[1] << nshift) | (this->blocks[0] >> rightshift);
+
+    shifted[9] = this->blocks[8] << nshift;
+    shifted[5] = this->blocks[4] << nshift;
+    shifted[1] = this->blocks[0] << nshift;
+
+    shifted[8] = 0U;
+    shifted[4] = 0U;
+    shifted[0] = 0U;
+
+
+  } else if (nshift == 64) {
+
+    while (ptr > 0) {
+      shifted[ptr+11] = this->blocks[ptr+9];
+      shifted[ptr+7] = this->blocks[ptr+5];
+      shifted[ptr+3] = this->blocks[ptr+1];
+
+      shifted[ptr+10] = this->blocks[ptr+8];
+      shifted[ptr+6] = this->blocks[ptr+4];
+      shifted[ptr+2] = this->blocks[ptr];
+
+      shifted[ptr+9] = this->blocks[ptr-1];
+      shifted[ptr+5] = this->blocks[ptr-5];
+      shifted[ptr+1] = this->blocks[ptr-9];
+
+      shifted[ptr+8] = this->blocks[ptr-2];
+      shifted[ptr+4] = this->blocks[ptr-6];
+      shifted[ptr] = this->blocks[ptr-10];
+
+      ptr -= 12;
+    }
+
+    shifted[11] = this->blocks[9];
+    shifted[7] = this->blocks[5];
+    shifted[3] = this->blocks[1];
+
+    shifted[10] = this->blocks[8];
+    shifted[6] = this->blocks[4];
+    shifted[2] = this->blocks[0];
+
+    shifted[9] = 0U;
+    shifted[5] = 0U;
+    shifted[1] = 0U;
+
+    shifted[8] = 0U;
+    shifted[4] = 0U;
+    shifted[0] = 0U;
+
+  } else if (nshift < 96) {
+    nshift -= 64;
+    rightshift = 32 - nshift;
+
+    while (ptr > 0) {
+      shifted[ptr+11] = (this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift);
+      shifted[ptr+7] = (this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift);
+      shifted[ptr+3] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift);
+
+      shifted[ptr+10] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+      shifted[ptr+6] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+      shifted[ptr+2] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+      shifted[ptr+9] = (this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+      shifted[ptr+5] = (this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift);
+      shifted[ptr+1] = (this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift);
+
+      shifted[ptr+8] = (this->blocks[ptr-2] << nshift) | (this->blocks[ptr-3] >> rightshift);
+      shifted[ptr+4] = (this->blocks[ptr-6] << nshift) | (this->blocks[ptr-7] >> rightshift);
+      shifted[ptr] = (this->blocks[ptr-10] << nshift) | (this->blocks[ptr-11] >> rightshift);
+
+      ptr -= 12;
+    }
+
+    shifted[11] = (this->blocks[9] << nshift) | (this->blocks[8] >> rightshift);
+    shifted[7] = (this->blocks[5] << nshift) | (this->blocks[4] >> rightshift);
+    shifted[3] = (this->blocks[1] << nshift) | (this->blocks[0] >> rightshift);
+
+    shifted[10] = this->blocks[8] << nshift;
+    shifted[6] = this->blocks[4] << nshift;
+    shifted[2] = this->blocks[0] << nshift;
+
+    shifted[9] = 0U;
+    shifted[5] = 0U;
+    shifted[1] = 0U;
+
+    shifted[8] = 0U;
+    shifted[4] = 0U;
+    shifted[0] = 0U;
+
+  } else if (nshift == 96) {
+
+    while (ptr > 0) {
+      shifted[ptr+11] = this->blocks[ptr+8];
+      shifted[ptr+7] = this->blocks[ptr+4];
+      shifted[ptr+3] = this->blocks[ptr];
+
+      shifted[ptr+10] = this->blocks[ptr-1];
+      shifted[ptr+6] = this->blocks[ptr-5];
+      shifted[ptr+2] = this->blocks[ptr-9];
+
+      shifted[ptr+9] = this->blocks[ptr-2];
+      shifted[ptr+5] = this->blocks[ptr-6];
+      shifted[ptr+1] = this->blocks[ptr-10];
+
+      shifted[ptr+8] = this->blocks[ptr-3];
+      shifted[ptr+4] = this->blocks[ptr-7];
+      shifted[ptr] = this->blocks[ptr-11];
+
+      ptr -= 12;
+    }
+
+    shifted[11] = this->blocks[8];
+    shifted[7] = this->blocks[4];
+    shifted[3] = this->blocks[0];
+
+    shifted[10] = 0U;
+    shifted[6] = 0U;
+    shifted[2] = 0U;
+
+    shifted[9] = 0U;
+    shifted[5] = 0U;
+    shifted[1] = 0U;
+
+    shifted[8] = 0U;
+    shifted[4] = 0U;
+    shifted[0] = 0U;
+
+  } else {
+    nshift -= 96;
+    rightshift = 32 - nshift;
+
+    while (ptr > 0) {
+      shifted[ptr+11] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+      shifted[ptr+7] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+      shifted[ptr+3] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+      shifted[ptr+10] = (this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+      shifted[ptr+6] = (this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift);
+      shifted[ptr+2] = (this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift);
+
+      shifted[ptr+9] = (this->blocks[ptr-2] << nshift) | (this->blocks[ptr-3] >> rightshift);
+      shifted[ptr+5] = (this->blocks[ptr-6] << nshift) | (this->blocks[ptr-7] >> rightshift);
+      shifted[ptr+1] = (this->blocks[ptr-10] << nshift) | (this->blocks[ptr-11] >> rightshift);
+
+      shifted[ptr+8] = (this->blocks[ptr-3] << nshift) | (this->blocks[ptr-4] >> rightshift);
+      shifted[ptr+4] = (this->blocks[ptr-7] << nshift) | (this->blocks[ptr-8] >> rightshift);
+      shifted[ptr] = (this->blocks[ptr-11] << nshift) | (this->blocks[ptr-12] >> rightshift);
+
+      ptr -= 12;
+    }
+
+    shifted[11] = this->blocks[8] << nshift;
+    shifted[7] = this->blocks[4] << nshift;
+    shifted[3] = this->blocks[0] << nshift;
+
+    shifted[10] = 0U;
+    shifted[6] = 0U;
+    shifted[2] = 0U;
+
+    shifted[9] = 0U;
+    shifted[5] = 0U;
+    shifted[1] = 0U;
+
+    shifted[8] = 0U;
+    shifted[4] = 0U;
+    shifted[0] = 0U;
   }
 
-  debug1(printf("Compress_new, plusp %d\n",plusp));
-  debug1(print_blocks(new->blocks,new->nblocks));
-  debug1(printf("\n"));
+  Compress_print_blocks(shifted,nshift,0,this->querylength);
 
-  return new;
+  return;
 }
+#endif
 
 
-static char start[4] = "ACGT";
 
-T *
-Compress_dibase_array_new (char *gbuffer, Chrpos_T dibase_length, bool plusp) {
-  T *array = (T *) CALLOC(4,sizeof(T)), new;
-  Genomecomp_T low, high, flags, carry;
-  Chrpos_T ptr;
-  int position;
-  int d, c, i, nt, lastnt;
-  int in_counter;
-  int nt_length = dibase_length + 1;
+#ifndef HAVE_SSE2
+Genomecomp_T *
+Compress_shift (T this, int nshift) {
+  Genomecomp_T *shifted;
+  int rightshift;
+  int ptr;
+#ifdef DEBUG9
+  Genomecomp_T high, low, flags;
+#endif
 
-  for (d = 0; d < 4; d ++) {
-    new = array[d] = (T) MALLOC(sizeof(*new));
+  if (this->availp[nshift] == true) {
+    return this->shift_array[nshift];
 
-    new->nblocks = (nt_length+31)/32U;
+  } else {
+    shifted = this->shift_array[nshift];
 
-    new->blocks = (Genomecomp_T *) CALLOC((new->nblocks+1)*3,sizeof(Genomecomp_T));
+    /* Shift */
+    ptr = this->nblocks*COMPRESS_BLOCKSIZE;
+    rightshift = 32 - nshift;
 
-    /* Note that elements of shift_array do not have extra block at beginning */
-    new->shift_array = (Genomecomp_T **) CALLOC(32,sizeof(Genomecomp_T *));
-    new->shift_array[0] = (Genomecomp_T *) CALLOC(32*(new->nblocks+1)*3,sizeof(Genomecomp_T));
-    new->availp[0] = false;
-    for (i = 1; i < 32; i++) {
-      new->shift_array[i] = &(new->shift_array[i-1][(new->nblocks+1)*3]);
-      new->availp[i] = false;
+    while (ptr > 0) {
+      shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr-1] >> rightshift);
+      shifted[ptr+1] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+      shifted[ptr] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-3] >> rightshift);
+      ptr -= COMPRESS_BLOCKSIZE;
     }
 
-    ptr = 0;
-    in_counter = 0;
-    low = high = flags = 0U;
-    lastnt = start[d];
-
-    /* Handle starting character */
-    in_counter++;
-    switch (lastnt) {
-    case 'A': break;
-    case 'C': high |= LEFT_C; break;
-    case 'G': high |= LEFT_G; break;
-    case 'T': high |= LEFT_T; break;
-    }
+    shifted[2] = this->blocks[2] << nshift;
+    shifted[1] = this->blocks[1] << nshift;
+    shifted[0] = this->blocks[0] << nshift;
+  }
 
-    if (plusp == true) {
-      for (position = 0U; position < dibase_length; position++) {
-	c = gbuffer[position];
-	/* printf("char: %c\n",c); */
-	in_counter++;
+  this->availp[nshift] = true;
+  
+  debug1(Compress_print_blocks(shifted,this->nblocks+1));
+  return shifted;
+}
 
-	carry = high & 3U;
-	high >>= 2;
-	low >>= 2;
-	flags >>= 1;
-	switch (carry) {
-	case 0U: break;
-	case 1U: low |= LEFT_C; break;
-	case 2U: low |= LEFT_G; break;
-	case 3U: low |= LEFT_T; break;
-	default: abort();
-	}
+#elif defined(HAVE_SSSE3) && !defined(DEFECTIVE_SSE2_COMPILER)
+Genomecomp_T *
+Compress_shift (T this, int nshift) {
+  Genomecomp_T *shifted;
+  int leftshift_words, leftshift_bits, rightshift_bits;
+  int ptr, startptr, blocki;
+  __m128i out, current, prev, leftpart, rightpart, zeroes;
+#ifdef DEBUG9
+  Genomecomp_T high, low, flags;
+#endif
 
-	/* Assume that gbuffer is upper case */
-	switch /*(uppercaseCode[c])*/ (c) {
-	case '0':
-	  switch (lastnt) {
-	  case 'A': nt = 'A'; break;
-	  case 'C': nt = 'C'; break;
-	  case 'G': nt = 'G'; break;
-	  case 'T': nt = 'T'; break;
-	  }
+  if (this->availp[nshift] == true) {
+    return this->shift_array[nshift];
+
+  } else {
+    /* printf("Original blocks\n"); */
+    /* Compress_print_blocks(this->shift_array[0],0,0,this->querylength); */
+
+    shifted = this->shift_array[nshift];
+    leftshift_words = nshift / 32;
+    leftshift_bits = nshift % 32;
+    rightshift_bits = 32 - leftshift_bits;
+    zeroes = _mm_set1_epi32(0U);
+    /* printf("Entered Compress_shift with nshift %d => leftshift_words %d, leftshift_bits %d, rightshift_bits %d\n",
+       nshift,leftshift_words,leftshift_bits,rightshift_bits); */
+
+    /* Take care of high (startptr 0), then low (startptr 4), then flags (startptr 8) */
+    for (startptr = 0; startptr < 12; startptr += 4) {
+      /* printf("startptr = %d\n",startptr); */
+      ptr = startptr;
+      prev = zeroes;
+
+      for (blocki = 0; blocki <= this->nblocks; blocki++) {
+	current = _mm_load_si128((__m128i *) &(this->blocks[ptr]));
+
+	/* printf("prev:      "); */
+	/* print_vector_hex(prev); */
+	/* printf("current:   "); */
+	/* print_vector_hex(current); */
+
+	switch (leftshift_words) {
+	case 0:
+	  leftpart = _mm_alignr_epi8(current,prev,12);
+	  rightpart = current;	/* _mm_alignr_epi(current,prev,16) */
 	  break;
-	case '1':
-	  switch (lastnt) {
-	  case 'A': nt = 'C'; break;
-	  case 'C': nt = 'A'; break;
-	  case 'G': nt = 'T'; break;
-	  case 'T': nt = 'G'; break;
-	  }
+	case 1:
+	  leftpart = _mm_alignr_epi8(current,prev,8);
+	  rightpart = _mm_alignr_epi8(current,prev,12);
 	  break;
-	case '2':
-	  switch (lastnt) {
-	  case 'A': nt = 'G'; break;
-	  case 'C': nt = 'T'; break;
-	  case 'G': nt = 'A'; break;
-	  case 'T': nt = 'C'; break;
-	  }
+	case 2:
+	  leftpart = _mm_alignr_epi8(current,prev,4);
+	  rightpart = _mm_alignr_epi8(current,prev,8);
 	  break;
-	case '3':
-	  switch (lastnt) {
-	  case 'A': nt = 'T'; break;
-	  case 'C': nt = 'G'; break;
-	  case 'G': nt = 'C'; break;
-	  case 'T': nt = 'A'; break;
-	  }
+	case 3:
+	  leftpart = prev;	/* _mm_alignr_epi(current,prev,0) */
+	  rightpart = _mm_alignr_epi8(current,prev,4);
 	  break;
-	default: abort();
 	}
 
-	/* debug1(printf("lastnt %c + dibase %d => nt %c\n",lastnt,c,nt)); */
+	/* printf("leftpart:  "); */
+	/* print_vector_hex(leftpart); */
+	/* printf("rightpart: "); */
+	/* print_vector_hex(rightpart); */
+	/* printf("\n"); */
+
+	/* Note: This line needs a non-defective SSE2 compiler */
+	out = _mm_or_si128(_mm_srli_epi32(leftpart,rightshift_bits),_mm_slli_epi32(rightpart,leftshift_bits));
+	_mm_store_si128((__m128i *) &(shifted[ptr]),out);
+	prev = current;
+	ptr += 12;
+      }
+    }
+  }
+
+  this->availp[nshift] = true;
 
-	switch (nt) {
-	case 'A': break;
-	case 'C': high |= LEFT_C; break;
-	case 'G': high |= LEFT_G; break;
-	case 'T': high |= LEFT_T; break;
-	}
+  /* printf("Correct answer\n"); */
+  /* shift_sse2(this,nshift); */
 
-	/* printf("high: %08X  low: %08X  flags: %08X\n",high,low,flags); */
-      
-	if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	  new->blocks[ptr] = high;
-	  new->blocks[ptr+1] = low;
-	  new->blocks[ptr+2] = flags;
-	  ptr += 3;
-
-	  low = high = flags = 0U;
-	  in_counter = 0;
-	}
+  /* printf("New answer\n"); */
+  /* Compress_print_blocks(shifted,nshift,0,this->querylength); */
+  debug14(Compress_shift_check(this,nshift));
+  debug1(Compress_print_blocks(shifted,this->nblocks+1));
+  return shifted;
+}
+
+#else
+/* HAVE_SSE2 but not SSE3 */
+Genomecomp_T *
+Compress_shift (T this, int nshift) {
+  Genomecomp_T *shifted;
+  int rightshift;
+  int ptr;
+
+  if (this->availp[nshift] == true) {
+    return this->shift_array[nshift];
 
-	lastnt = nt;
+  } else {
+    this->availp[nshift] = true; /* Need to set here, before nshift changes below */
+    shifted = this->shift_array[nshift];
+
+    /* Shift */
+    ptr = this->nblocks*12;
+    if (nshift == 0) {
+      while (ptr >= 0) {
+	memcpy(&(shifted[ptr]),&(this->blocks[ptr]),12*sizeof(Genomecomp_T));
+	ptr -= 12;
       }
 
-    } else {
+    } else if (nshift < 32) {
+      rightshift = 32 - nshift;
 
-      for (position = dibase_length-1; position >= 0; position--) {
-	c = gbuffer[position];
-	       
-	in_counter++;
+      while (ptr > 0) {
+	shifted[ptr+11] = (this->blocks[ptr+11] << nshift) | (this->blocks[ptr+10] >> rightshift);
+	shifted[ptr+7] = (this->blocks[ptr+7] << nshift) | (this->blocks[ptr+6] >> rightshift);
+	shifted[ptr+3] = (this->blocks[ptr+3] << nshift) | (this->blocks[ptr+2] >> rightshift);
 
-	carry = high & 3U;
-	high >>= 2;
-	low >>= 2;
-	flags >>= 1;
-	switch (carry) {
-	case 0U: break;
-	case 1U: low |= LEFT_C; break;
-	case 2U: low |= LEFT_G; break;
-	case 3U: low |= LEFT_T; break;
-	default: abort();
-	}
+	shifted[ptr+10] = (this->blocks[ptr+10] << nshift) | (this->blocks[ptr+9] >> rightshift);
+	shifted[ptr+6] = (this->blocks[ptr+6] << nshift) | (this->blocks[ptr+5] >> rightshift);
+	shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr+1] >> rightshift);
 
-	/* Assume that gbuffer is upper case */
-	switch /*(uppercaseCode[c])*/ (c) {
-	case '0':
-	  switch (lastnt) {
-	  case 'A': nt = 'A'; break;
-	  case 'C': nt = 'C'; break;
-	  case 'G': nt = 'G'; break;
-	  case 'T': nt = 'T'; break;
-	  }
-	  break;
-	case '1':
-	  switch (lastnt) {
-	  case 'A': nt = 'C'; break;
-	  case 'C': nt = 'A'; break;
-	  case 'G': nt = 'T'; break;
-	  case 'T': nt = 'G'; break;
-	  }
-	  break;
-	case '2':
-	  switch (lastnt) {
-	  case 'A': nt = 'G'; break;
-	  case 'C': nt = 'T'; break;
-	  case 'G': nt = 'A'; break;
-	  case 'T': nt = 'C'; break;
-	  }
-	  break;
-	case '3':
-	  switch (lastnt) {
-	  case 'A': nt = 'T'; break;
-	  case 'C': nt = 'G'; break;
-	  case 'G': nt = 'C'; break;
-	  case 'T': nt = 'A'; break;
-	  }
-	  break;
-	default: abort();
-	}
+	shifted[ptr+9] = (this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift);
+	shifted[ptr+5] = (this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift);
+	shifted[ptr+1] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift);
 
-	/* debug1(printf("lastnt %c + dibase %d => nt %c\n",lastnt,c,nt)); */
+	shifted[ptr+8] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+	shifted[ptr+4] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+	shifted[ptr] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
 
-	switch (nt) {
-	case 'A': break;
-	case 'C': high |= LEFT_C; break;
-	case 'G': high |= LEFT_G; break;
-	case 'T': high |= LEFT_T; break;
-	}
+	ptr -= 12;
+      }
 
-	/* printf("high: %08X  low: %08X  flags: %08X\n",high,low,flags); */
-      
-	if (in_counter == 8 * (int) sizeof(Genomecomp_T)) {
-	  new->blocks[ptr] = high;
-	  new->blocks[ptr+1] = low;
-	  new->blocks[ptr+2] = flags;
-	  ptr += 3;
-
-	  low = high = flags = 0U;
-	  in_counter = 0;
-	}
+      shifted[11] = (this->blocks[11] << nshift) | (this->blocks[10] >> rightshift);
+      shifted[7] = (this->blocks[7] << nshift) | (this->blocks[6] >> rightshift);
+      shifted[3] = (this->blocks[3] << nshift) | (this->blocks[2] >> rightshift);
+
+      shifted[10] = (this->blocks[10] << nshift) | (this->blocks[9] >> rightshift);
+      shifted[6] = (this->blocks[6] << nshift) | (this->blocks[5] >> rightshift);
+      shifted[2] = (this->blocks[2] << nshift) | (this->blocks[1] >> rightshift);
+
+      shifted[9] = (this->blocks[9] << nshift) | (this->blocks[8] >> rightshift);
+      shifted[5] = (this->blocks[5] << nshift) | (this->blocks[4] >> rightshift);
+      shifted[1] = (this->blocks[1] << nshift) | (this->blocks[0] >> rightshift);
+
+      shifted[8] = this->blocks[8] << nshift;
+      shifted[4] = this->blocks[4] << nshift;
+      shifted[0] = this->blocks[0] << nshift;
+
+    } else if (nshift == 32) {
+
+      while (ptr > 0) {
+	shifted[ptr+11] = this->blocks[ptr+10];
+	shifted[ptr+7] = this->blocks[ptr+6];
+	shifted[ptr+3] = this->blocks[ptr+2];
+
+	shifted[ptr+10] = this->blocks[ptr+9];
+	shifted[ptr+6] = this->blocks[ptr+5];
+	shifted[ptr+2] = this->blocks[ptr+1];
+
+	shifted[ptr+9] = this->blocks[ptr+8];
+	shifted[ptr+5] = this->blocks[ptr+4];
+	shifted[ptr+1] = this->blocks[ptr];
+
+	shifted[ptr+8] = this->blocks[ptr-1];
+	shifted[ptr+4] = this->blocks[ptr-5];
+	shifted[ptr] = this->blocks[ptr-9];
 
-	lastnt = nt;
+	ptr -= 12;
       }
-    }
 
-    if (in_counter > 0) {
-      while (in_counter < 8 * (int) sizeof(Genomecomp_T)) {
-	carry = high & 3U;
-	high >>= 2;
-	low >>= 2;
-	flags >>= 1;
-	switch (carry) {
-	case 0U: break;
-	case 1U: low |= LEFT_C; break;
-	case 2U: low |= LEFT_G; break;
-	case 3U: low |= LEFT_T; break;
-	default: abort();
-	}
-#if 0
-	/* Don't put in X's */
-	high |= LEFT_T; flags |= LEFT_BIT;
-#endif
-	in_counter++;
+      shifted[11] = this->blocks[10];
+      shifted[7] = this->blocks[6];
+      shifted[3] = this->blocks[2];
+
+      shifted[10] = this->blocks[9];
+      shifted[6] = this->blocks[5];
+      shifted[2] = this->blocks[1];
+
+      shifted[9] = this->blocks[8];
+      shifted[5] = this->blocks[4];
+      shifted[1] = this->blocks[0];
+
+      shifted[8] = 0U;
+      shifted[4] = 0U;
+      shifted[0] = 0U;
+
+    } else if (nshift < 64) {
+      nshift -= 32;
+      rightshift = 32 - nshift;
+
+      while (ptr > 0) {
+	shifted[ptr+11] = (this->blocks[ptr+10] << nshift) | (this->blocks[ptr+9] >> rightshift);
+	shifted[ptr+7] = (this->blocks[ptr+6] << nshift) | (this->blocks[ptr+5] >> rightshift);
+	shifted[ptr+3] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr+1] >> rightshift);
+
+	shifted[ptr+10] = (this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift);
+	shifted[ptr+6] = (this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift);
+	shifted[ptr+2] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift);
+
+	shifted[ptr+9] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+	shifted[ptr+5] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+	shifted[ptr+1] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+	shifted[ptr+8] = (this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+	shifted[ptr+4] = (this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift);
+	shifted[ptr] = (this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift);
+
+	ptr -= 12;
+      }
+
+      shifted[11] = (this->blocks[10] << nshift) | (this->blocks[9] >> rightshift);
+      shifted[7] = (this->blocks[6] << nshift) | (this->blocks[5] >> rightshift);
+      shifted[3] = (this->blocks[2] << nshift) | (this->blocks[1] >> rightshift);
+
+      shifted[10] = (this->blocks[9] << nshift) | (this->blocks[8] >> rightshift);
+      shifted[6] = (this->blocks[5] << nshift) | (this->blocks[4] >> rightshift);
+      shifted[2] = (this->blocks[1] << nshift) | (this->blocks[0] >> rightshift);
+
+      shifted[9] = this->blocks[8] << nshift;
+      shifted[5] = this->blocks[4] << nshift;
+      shifted[1] = this->blocks[0] << nshift;
+
+      shifted[8] = 0U;
+      shifted[4] = 0U;
+      shifted[0] = 0U;
+
+
+    } else if (nshift == 64) {
+
+      while (ptr > 0) {
+	shifted[ptr+11] = this->blocks[ptr+9];
+	shifted[ptr+7] = this->blocks[ptr+5];
+	shifted[ptr+3] = this->blocks[ptr+1];
+
+	shifted[ptr+10] = this->blocks[ptr+8];
+	shifted[ptr+6] = this->blocks[ptr+4];
+	shifted[ptr+2] = this->blocks[ptr];
+
+	shifted[ptr+9] = this->blocks[ptr-1];
+	shifted[ptr+5] = this->blocks[ptr-5];
+	shifted[ptr+1] = this->blocks[ptr-9];
+
+	shifted[ptr+8] = this->blocks[ptr-2];
+	shifted[ptr+4] = this->blocks[ptr-6];
+	shifted[ptr] = this->blocks[ptr-10];
+
+	ptr -= 12;
       }
 
-      new->blocks[ptr] = high;
-      new->blocks[ptr+1] = low;
-      new->blocks[ptr+2] = flags;
+      shifted[11] = this->blocks[9];
+      shifted[7] = this->blocks[5];
+      shifted[3] = this->blocks[1];
+
+      shifted[10] = this->blocks[8];
+      shifted[6] = this->blocks[4];
+      shifted[2] = this->blocks[0];
+
+      shifted[9] = 0U;
+      shifted[5] = 0U;
+      shifted[1] = 0U;
+
+      shifted[8] = 0U;
+      shifted[4] = 0U;
+      shifted[0] = 0U;
+
+    } else if (nshift < 96) {
+      nshift -= 64;
+      rightshift = 32 - nshift;
+
+      while (ptr > 0) {
+	shifted[ptr+11] = (this->blocks[ptr+9] << nshift) | (this->blocks[ptr+8] >> rightshift);
+	shifted[ptr+7] = (this->blocks[ptr+5] << nshift) | (this->blocks[ptr+4] >> rightshift);
+	shifted[ptr+3] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr] >> rightshift);
+
+	shifted[ptr+10] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+	shifted[ptr+6] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+	shifted[ptr+2] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+	shifted[ptr+9] = (this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+	shifted[ptr+5] = (this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift);
+	shifted[ptr+1] = (this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift);
+
+	shifted[ptr+8] = (this->blocks[ptr-2] << nshift) | (this->blocks[ptr-3] >> rightshift);
+	shifted[ptr+4] = (this->blocks[ptr-6] << nshift) | (this->blocks[ptr-7] >> rightshift);
+	shifted[ptr] = (this->blocks[ptr-10] << nshift) | (this->blocks[ptr-11] >> rightshift);
+
+	ptr -= 12;
+      }
+
+      shifted[11] = (this->blocks[9] << nshift) | (this->blocks[8] >> rightshift);
+      shifted[7] = (this->blocks[5] << nshift) | (this->blocks[4] >> rightshift);
+      shifted[3] = (this->blocks[1] << nshift) | (this->blocks[0] >> rightshift);
+
+      shifted[10] = this->blocks[8] << nshift;
+      shifted[6] = this->blocks[4] << nshift;
+      shifted[2] = this->blocks[0] << nshift;
+
+      shifted[9] = 0U;
+      shifted[5] = 0U;
+      shifted[1] = 0U;
+
+      shifted[8] = 0U;
+      shifted[4] = 0U;
+      shifted[0] = 0U;
+
+    } else if (nshift == 96) {
+
+      while (ptr > 0) {
+	shifted[ptr+11] = this->blocks[ptr+8];
+	shifted[ptr+7] = this->blocks[ptr+4];
+	shifted[ptr+3] = this->blocks[ptr];
+
+	shifted[ptr+10] = this->blocks[ptr-1];
+	shifted[ptr+6] = this->blocks[ptr-5];
+	shifted[ptr+2] = this->blocks[ptr-9];
+
+	shifted[ptr+9] = this->blocks[ptr-2];
+	shifted[ptr+5] = this->blocks[ptr-6];
+	shifted[ptr+1] = this->blocks[ptr-10];
+
+	shifted[ptr+8] = this->blocks[ptr-3];
+	shifted[ptr+4] = this->blocks[ptr-7];
+	shifted[ptr] = this->blocks[ptr-11];
+
+	ptr -= 12;
+      }
+
+      shifted[11] = this->blocks[8];
+      shifted[7] = this->blocks[4];
+      shifted[3] = this->blocks[0];
+
+      shifted[10] = 0U;
+      shifted[6] = 0U;
+      shifted[2] = 0U;
+
+      shifted[9] = 0U;
+      shifted[5] = 0U;
+      shifted[1] = 0U;
+
+      shifted[8] = 0U;
+      shifted[4] = 0U;
+      shifted[0] = 0U;
+
+    } else {
+      nshift -= 96;
+      rightshift = 32 - nshift;
+
+      while (ptr > 0) {
+	shifted[ptr+11] = (this->blocks[ptr+8] << nshift) | (this->blocks[ptr-1] >> rightshift);
+	shifted[ptr+7] = (this->blocks[ptr+4] << nshift) | (this->blocks[ptr-5] >> rightshift);
+	shifted[ptr+3] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-9] >> rightshift);
+
+	shifted[ptr+10] = (this->blocks[ptr-1] << nshift) | (this->blocks[ptr-2] >> rightshift);
+	shifted[ptr+6] = (this->blocks[ptr-5] << nshift) | (this->blocks[ptr-6] >> rightshift);
+	shifted[ptr+2] = (this->blocks[ptr-9] << nshift) | (this->blocks[ptr-10] >> rightshift);
+
+	shifted[ptr+9] = (this->blocks[ptr-2] << nshift) | (this->blocks[ptr-3] >> rightshift);
+	shifted[ptr+5] = (this->blocks[ptr-6] << nshift) | (this->blocks[ptr-7] >> rightshift);
+	shifted[ptr+1] = (this->blocks[ptr-10] << nshift) | (this->blocks[ptr-11] >> rightshift);
+
+	shifted[ptr+8] = (this->blocks[ptr-3] << nshift) | (this->blocks[ptr-4] >> rightshift);
+	shifted[ptr+4] = (this->blocks[ptr-7] << nshift) | (this->blocks[ptr-8] >> rightshift);
+	shifted[ptr] = (this->blocks[ptr-11] << nshift) | (this->blocks[ptr-12] >> rightshift);
+
+	ptr -= 12;
+      }
+
+      shifted[11] = this->blocks[8] << nshift;
+      shifted[7] = this->blocks[4] << nshift;
+      shifted[3] = this->blocks[0] << nshift;
+
+      shifted[10] = 0U;
+      shifted[6] = 0U;
+      shifted[2] = 0U;
+
+      shifted[9] = 0U;
+      shifted[5] = 0U;
+      shifted[1] = 0U;
+
+      shifted[8] = 0U;
+      shifted[4] = 0U;
+      shifted[0] = 0U;
     }
 
-    debug1(printf("Compress_dibase_new, plusp %d, startc %c\n",plusp,start[d]));
-    debug1(print_blocks(new->blocks,new->nblocks));
-    debug1(printf("\n"));
+    debug1(Compress_print_blocks(shifted,this->nblocks+1));
+    return shifted;
   }
-
-  return array;
 }
 #endif
 
 
+#if 0
+/* Needed for Genome_count_mismatches_fragment_left/right */
 Genomecomp_T *
-Compress_shift (T this, int nshift) {
+Compress32_shift (T this, int nshift) {
   Genomecomp_T *shifted;
-  int leftshift, rightshift, rightshift_flags;
+  int rightshift;
   int ptr;
+#ifdef HAVE_SSE2
+  __m128i out, current, next;
+#endif
+#ifdef DEBUG9
+  Genomecomp_T high, low, flags;
+#endif
 
-  debug(printf("nshift is %d\n",nshift));
-  if (this->availp[nshift] == false) {
+  if (this->availp[nshift] == true) {
+    return this->shift_array[nshift];
 
+  } else {
     shifted = this->shift_array[nshift];
 
-    /* Shift flags */
+    /* Shift */
+    ptr = this->nblocks*COMPRESS_BLOCKSIZE;
     if (nshift == 0) {
-      ptr = this->nblocks*3;
       while (ptr >= 0) {
-	shifted[ptr+2] = this->blocks[ptr+2];
-	shifted[ptr+1] = this->blocks[ptr+1];
-	shifted[ptr] = this->blocks[ptr];
-	ptr -= 3;
+	memcpy(&(shifted[ptr]),&(this->blocks[ptr]),COMPRESS_BLOCKSIZE*sizeof(Genomecomp_T));
+	ptr -= COMPRESS_BLOCKSIZE;
       }
 
-    } else if (nshift < 16) {
-
-      leftshift = nshift*2;
-      rightshift = 32 - leftshift;
-      rightshift_flags = 32 - nshift;
+    } else {
+      rightshift = 32 - nshift;
 
-      ptr = this->nblocks*3;
+#ifdef DEFECTIVE_SSE2_COMPILER
       while (ptr > 0) {
-	shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr-1] >> rightshift_flags);
-	debug(printf("Making flag at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr+2,this->blocks[ptr+2],ptr+2,this->blocks[ptr+2] << nshift,
-		     this->blocks[ptr-1],ptr-1,this->blocks[ptr-1] >> rightshift_flags));
-	shifted[ptr+1] = (this->blocks[ptr+1] << leftshift) | (this->blocks[ptr-3] >> rightshift); 
-	debug(printf("Making low at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr+1,this->blocks[ptr+1],ptr+1,this->blocks[ptr+1] << leftshift,
-		     this->blocks[ptr-3],ptr-3,this->blocks[ptr-3] >> rightshift));
-	shifted[ptr] = (this->blocks[ptr] << leftshift) | (this->blocks[ptr+1] >> rightshift);
-	debug(printf("Making high at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr,this->blocks[ptr],ptr,this->blocks[ptr] << leftshift,
-		     this->blocks[ptr+1],ptr+1,this->blocks[ptr+1] >> rightshift));
-	ptr -= 3;
+	shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr-2] >> rightshift);
+	shifted[ptr+1] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr-3] >> rightshift);
+	shifted[ptr] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-4] >> rightshift);
+	ptr -= COMPRESS_BLOCKSIZE;
       }
+
       shifted[2] = this->blocks[2] << nshift;
-      debug(printf("Making flag at %d by combining %08X at %d => %08X\n",
-		   ptr+2,this->blocks[ptr+2],ptr+2,this->blocks[ptr+2] << nshift));
-      shifted[1] = this->blocks[1] << leftshift;
-      debug(printf("Making low at %d by combining %08X at %d => %08X\n",
-		   ptr+1,this->blocks[ptr+1],ptr+1,this->blocks[ptr+1] << leftshift));
-      shifted[0] = (this->blocks[0] << leftshift) | (this->blocks[1] >> rightshift);
-      debug(printf("Making high at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		   ptr,this->blocks[ptr],ptr,this->blocks[ptr] << leftshift,
-		   this->blocks[ptr+1],ptr+1,this->blocks[ptr+1] >> rightshift));
-      
-    } else if (nshift == 16) {
-      ptr = this->nblocks*3;
+      shifted[1] = this->blocks[1] << nshift;
+      shifted[0] = this->blocks[0] << nshift;
+
+#elif defined(HAVE_SSE2)
+      next = _mm_load_si128((__m128i *) &(this->blocks[ptr]));
       while (ptr > 0) {
-	shifted[ptr+2] = (this->blocks[ptr+2] << 16) | (this->blocks[ptr-1] >> 16);
-	debug(printf("Making flag at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr+2,this->blocks[ptr+2],ptr+2,this->blocks[ptr+2] << 16,
-		     this->blocks[ptr-1],ptr-1,this->blocks[ptr-1] >> 16));
-	shifted[ptr+1] = this->blocks[ptr-3];
-	debug(printf("Making low at %d by copying %08X at %d\n",ptr+1,this->blocks[ptr-3],ptr-3));
-	shifted[ptr] = this->blocks[ptr+1];
-	debug(printf("Making high at %d by copying %08X at %d\n",ptr,this->blocks[ptr+1],ptr+1));
-	ptr -= 3;
+	current = next;
+	next = _mm_load_si128((__m128i *) &(this->blocks[ptr-4]));
+	out = _mm_or_si128(_mm_slli_epi32(current,nshift),_mm_srli_epi32(next,rightshift));
+	_mm_store_si128((__m128i *) &(shifted[ptr]),out);
+
+#ifdef DEBUG9
+	flags = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr-2] >> rightshift);
+	low = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr-3] >> rightshift);
+	high = (this->blocks[ptr] << nshift) | (this->blocks[ptr-4] >> rightshift);
+	/* printf("Comparing %08X with %08X, %08X with %08X, %08X with %08X\n",
+	   shifted[ptr],high,shifted[ptr+1],low,shifted[ptr+2],flags); */
+	if (shifted[ptr+2] != flags) abort();
+	if (shifted[ptr+1] != low) abort();
+	if (shifted[ptr] != high) abort();
+#endif
+
+	ptr -= COMPRESS_BLOCKSIZE;
       }
-      shifted[2] = this->blocks[2] << 16;
-      debug(printf("Making flag at %d by combining %08X at %d => %08X\n",
-		   ptr+2,this->blocks[ptr+2],ptr+2,this->blocks[ptr+2] << 16));
-      shifted[1] = 0U;
-      debug(printf("Making low at 1 by setting 0U\n"));
-      shifted[0] = this->blocks[1];
-      debug(printf("Making high at %d by copying %08X at %d\n",0,this->blocks[ptr+1],ptr+1));
-      
-    } else {
-      leftshift = (nshift - 16) * 2;
-      rightshift = 32 - leftshift;
-      rightshift_flags = 32 - nshift;
-      
-      ptr = this->nblocks*3;
+
+      out = _mm_slli_epi32(next,nshift);
+      _mm_store_si128((__m128i *) &(shifted[0]),out);
+
+#ifdef DEBUG9
+      flags = this->blocks[2] << nshift;
+      low = this->blocks[1] << nshift;
+      high = this->blocks[0] << nshift;
+      /* printf("Comparing %08X with %08X, %08X with %08X, %08X with %08X\n",
+	 shifted[0],high,shifted[1],low,shifted[2],flags); */
+      if (shifted[2] != flags) abort();
+      if (shifted[1] != low) abort();
+      if (shifted[0] != high) abort();
+#endif
+
+#else
       while (ptr > 0) {
-	shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr-1] >> rightshift_flags);
-	debug(printf("Making flag at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr+2,this->blocks[ptr+2],ptr+2,this->blocks[ptr+2] << nshift,
-		     this->blocks[ptr-1],ptr-1,this->blocks[ptr-1] >> rightshift_flags));
-	shifted[ptr+1] = (this->blocks[ptr-3] << leftshift) | (this->blocks[ptr-2] >> rightshift);
-	debug(printf("Making low at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr+1,this->blocks[ptr-3],ptr-3,this->blocks[ptr-3] << leftshift,
-		     this->blocks[ptr-2],ptr-2,this->blocks[ptr-2] >> rightshift));
-	shifted[ptr] = (this->blocks[ptr+1] << leftshift) | (this->blocks[ptr-3] >> rightshift);
-	debug(printf("Making high at %d by combining %08X at %d => %08X and %08X at %d => %08X\n",
-		     ptr,this->blocks[ptr+1],ptr+1,this->blocks[ptr+1] << leftshift,
-		     this->blocks[ptr-3],ptr-3,this->blocks[ptr-3] >> rightshift));
-	ptr -= 3;
+	shifted[ptr+2] = (this->blocks[ptr+2] << nshift) | (this->blocks[ptr-2] >> rightshift);
+	shifted[ptr+1] = (this->blocks[ptr+1] << nshift) | (this->blocks[ptr-3] >> rightshift);
+	shifted[ptr] = (this->blocks[ptr] << nshift) | (this->blocks[ptr-4] >> rightshift);
+	ptr -= COMPRESS_BLOCKSIZE;
       }
+
       shifted[2] = this->blocks[2] << nshift;
-      debug(printf("Making flag at %d by combining %08X at %d => %08X\n",
-		   ptr+2,this->blocks[ptr+2],ptr+2,this->blocks[ptr+2] << nshift));
-      shifted[1] = 0U;
-      debug(printf("Making low at 1 by setting 0U\n"));
-      shifted[0] = this->blocks[1] << leftshift;
-      debug(printf("Making high at %d by combining %08X at %d => %08X\n",
-		   0,this->blocks[ptr+1],ptr+1,this->blocks[ptr+1] << leftshift));
+      shifted[1] = this->blocks[1] << nshift;
+      shifted[0] = this->blocks[0] << nshift;
+#endif
+
     }
+
     this->availp[nshift] = true;
+
+    debug1(Compress_print_blocks(shifted,this->nblocks+1));
+    return shifted;
   }
-			     
-  return this->shift_array[nshift];
 }
+#endif
+
+
+/* Fragment from pos5 to pos3 is in low 16 bits of each UINT4, with
+   pos3 sitting at bit 15. */
+void
+Compress_get_16mer_left (UINT4 *high, UINT4 *low, UINT4 *flags, T this, int pos3) {
+  int leftshift, rightshift;
+  int columni, blocki;
+  Genomecomp_T *ptr, curr_high, curr_low, curr_flags, prev_high, prev_low, prev_flags;
+
+#ifdef HAVE_SSE2
+  /* query is stored as 3 x 128-bit words */
+  columni = (pos3 % 128) / 32;
+  blocki = pos3/128U*12 + columni;
+
+  ptr = &(this->blocks[blocki]);
+  curr_high = ptr[0];
+  curr_low = ptr[4];
+  curr_flags = ptr[8];
+
+  ptr -= 1;
+  if (columni != 0) {
+    prev_high = ptr[0];
+    prev_low = ptr[4];
+    prev_flags = ptr[8];
+  } else if (blocki == 0) {
+    prev_high = prev_low = prev_flags = 0U;
+  } else {
+    ptr -= 8;
+    prev_high = ptr[0];
+    prev_low = ptr[4];
+    prev_flags = ptr[8];
+  }
+#else
+  /* query is stored as 3 x 32-bit words */
+  blocki = pos3/32U*3;
+
+  ptr = &(this->blocks[blocki]);
+  curr_high = ptr[0];
+  curr_low = ptr[1];
+  curr_flags = ptr[2];
+
+  if (blocki == 0) {
+    prev_high = prev_low = prev_flags = 0U;
+  } else {
+    ptr -= 3;
+    prev_high = ptr[0];
+    prev_low = ptr[1];
+    prev_flags = ptr[2];
+  }
+#endif
+
+
+  debug2(printf("high:  %08X %08X\n",prev_high,curr_high));
+  debug2(printf("low:   %08X %08X\n",prev_low,curr_low));
+  debug2(printf("flags: %08X %08X\n",prev_flags,curr_flags));
+
+  rightshift = pos3 % 32;
+  leftshift = 32 - rightshift;
+  *high = (curr_high << leftshift) | (prev_high >> rightshift);
+  *low = (curr_low << leftshift) | (prev_low >> rightshift);
+  *flags = (curr_flags << leftshift) | (prev_flags >> rightshift);
+
+  *high >>= 16;
+  *low >>= 16;
+  *flags >>= 16;
+
+  debug2(printf("high:  %08X\n",*high));
+  debug2(printf("low:   %08X\n",*low));
+  debug2(printf("flags: %08X\n",*flags));
+
+  return;
+}
+
+
+
+/* Fragment from pos5 to pos3 is in low 16 bits of each UINT4, with
+   pos5 sitting at bit 0. */
+void
+Compress_get_16mer_right (UINT4 *high, UINT4 *low, UINT4 *flags, T this, int pos5) {
+  int leftshift, rightshift;
+  int columni, blocki;
+  Genomecomp_T *ptr, curr_high, curr_low, curr_flags, next_high, next_low, next_flags;
+
+#ifdef HAVE_SSE2
+  /* query is stored as 3 x 128-bit words */
+  columni = (pos5 % 128) / 32;
+  blocki = pos5/128U*12 + columni;
+
+  ptr = &(this->blocks[blocki]);
+  curr_high = ptr[0];
+  curr_low = ptr[4];
+  curr_flags = ptr[8];
+
+  ptr += 1;
+  if (columni != 3) {
+    next_high = ptr[0];
+    next_low = ptr[4];
+    next_flags = ptr[8];
+  } else {
+    ptr += 8;
+    next_high = ptr[0];
+    next_low = ptr[4];
+    next_flags = ptr[8];
+  }
+#else
+  /* query is stored as 3 x 32-bit words */
+  blocki = pos5/32U*3;
+
+  ptr = &(this->blocks[blocki]);
+  curr_high = ptr[0];
+  curr_low = ptr[1];
+  curr_flags = ptr[2];
+
+  ptr += 3;
+  next_high = ptr[0];
+  next_low = ptr[1];
+  next_flags = ptr[2];
+#endif
+
+  debug2(printf("high:  %08X %08X\n",curr_high,next_high));
+  debug2(printf("low:   %08X %08X\n",curr_low,next_low));
+  debug2(printf("flags: %08X %08X\n",curr_flags,next_flags));
+
+  rightshift = pos5 % 32;
+  leftshift = 32 - rightshift;
+  *high = (next_high << leftshift) | (curr_high >> rightshift);
+  *low = (next_low << leftshift) | (curr_low >> rightshift);
+  *flags = (next_flags << leftshift) | (curr_flags >> rightshift);
+
+  debug2(printf("high:  %08X\n",*high));
+  debug2(printf("low:   %08X\n",*low));
+  debug2(printf("flags: %08X\n",*flags));
+
+  return;
+}
+
+
 
diff --git a/src/compress.h b/src/compress.h
index be45beb..dab0777 100644
--- a/src/compress.h
+++ b/src/compress.h
@@ -1,4 +1,4 @@
-/* $Id: compress.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: compress.h 134887 2014-05-01 23:30:10Z twu $ */
 #ifndef COMPRESS_INCLUDED
 #define COMPRESS_INCLUDED
 
@@ -7,32 +7,48 @@
 #include "types.h"
 #include "genomicpos.h"
 
+
+/* For genomebits32 format, we had COMPRESS_BLOCKSIZE=4.  We stored
+   blocks every 4 uints, so they are on 128-bit boundaries.  This will
+   waste one out of every 4 uints, but allows for use of SIMD in
+   Compress_shift.  However with genomebits128, we want
+   COMPRESS_BLOCKSIZE=12.  If we don't have SSE2, then we can't use
+   SIMD in Compress_shift, so COMPRESS_BLOCKSIZE can be 3.  */
+
+
+#ifdef HAVE_SSE2
+#define COMPRESS_BLOCKSIZE 12	/* 12 unsigned ints per block */
+#else
+#define COMPRESS_BLOCKSIZE 3	/* 3 unsigned ints per block */
+#endif
+
+
 #define T Compress_T
 typedef struct T *T;
 
-extern int
-Compress_get_char (FILE *sequence_fp, Univcoord_T position, bool uncompressedp);
-extern void
-Compress_compress (FILE *fp);
-extern void
-Compress_uncompress (FILE *fp, int wraplength);
-extern int
-Compress_update_file (int nbadchars, FILE *fp, char *gbuffer, Univcoord_T startpos,
-		      Univcoord_T endpos, int index1part);
-extern int
-Compress_update_memory (int nbadchars, Genomecomp_T *genomecomp, char *gbuffer, Univcoord_T startpos,
-			Univcoord_T endpos);
 extern void
 Compress_free (T *old);
 extern void
 Compress_print (T this);
 extern int
 Compress_nblocks (T this);
+extern void
+Compress_print_blocks (Genomecomp_T *blocks, int nshift, int pos5, int pos3);
+extern void
+Compress_print_one_block (Genomecomp_T *blocks);
+extern T
+Compress_new_fwd (char *gbuffer, Chrpos_T length);
 extern T
-Compress_new (char *gbuffer, Chrpos_T length, bool plusp);
+Compress_new_rev (char *gbuffer, Chrpos_T length);
 extern Genomecomp_T *
 Compress_shift (T this, int nshift);
 
+extern void
+Compress_get_16mer_left (UINT4 *high, UINT4 *low, UINT4 *flags, T this, int pos3);
+extern void
+Compress_get_16mer_right (UINT4 *high, UINT4 *low, UINT4 *flags, T this, int pos5);
+
+
 #undef T
 #endif
 
diff --git a/src/config.h.in b/src/config.h.in
index 0d02c48..974f591 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -3,16 +3,40 @@
 /* Define if building universal (internal helper macro) */
 #undef AC_APPLE_UNIVERSAL_BUILD
 
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if your compiler is defective and requires an immediate in sse2
+   shift commands. */
+#undef DEFECTIVE_SSE2_COMPILER
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
 /* Define to 1 if you support Altivec instructions */
 #undef HAVE_ALTIVEC
 
 /* Define to 1 if bsr command is available in assembly */
 #undef HAVE_ASM_BSR
 
-/* Define to 1 inf you support AVX (Advanced Vector Extensions) instructions
-   */
+/* Define to 1 if you support AVX (Advanced Vector Extensions) instructions */
 #undef HAVE_AVX
 
+/* Define to 1 if you support BMI1 (Bit Manipulation Instruction set 1) */
+#undef HAVE_BMI1
+
+/* Define to 1 if you support BMI2 (Bit Manipulation Instruction set 2) */
+#undef HAVE_BMI2
+
 /* Define to 1 if __builtin_clz works. */
 #undef HAVE_BUILTIN_CLZ
 
@@ -65,6 +89,9 @@
 /* Define to 1 if you have the `log' function. */
 #undef HAVE_LOG
 
+/* Define to 1 if you support Intel intrinsic _lzcnt instruction */
+#undef HAVE_LZCNT
+
 /* Define to 1 if you have the `madvise' function. */
 #undef HAVE_MADVISE
 
@@ -74,6 +101,9 @@
 /* Define to 1 if MADV_RANDOM available for madvise */
 #undef HAVE_MADVISE_MADV_RANDOM
 
+/* Define to 1 if MADV_SEQUENTIAL available for madvise */
+#undef HAVE_MADVISE_MADV_SEQUENTIAL
+
 /* Define to 1 if MADV_WILLNEED available for madvise. */
 #undef HAVE_MADVISE_MADV_WILLNEED
 
@@ -113,6 +143,9 @@
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #undef HAVE_NDIR_H
 
+/* Define to 1 if you support Intel intrinsic _popcnt instruction */
+#undef HAVE_POPCNT
+
 /* Define to 1 if you have the `pow' function. */
 #undef HAVE_POW
 
@@ -248,6 +281,14 @@
 /* The size of `unsigned long long', as computed by sizeof. */
 #undef SIZEOF_UNSIGNED_LONG_LONG
 
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
diff --git a/src/diag.c b/src/diag.c
index 8b39908..6ebace6 100644
--- a/src/diag.c
+++ b/src/diag.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: diag.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: diag.c 110676 2013-10-10 02:33:48Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -25,6 +25,13 @@ static char rcsid[] = "$Id: diag.c 99737 2013-06-27 19:33:03Z twu $";
 #define debug(x)
 #endif
 
+/* dominant diagonals */
+#ifdef DEBUG0
+#define debug0(x) x
+#else
+#define debug0(x)
+#endif
+
 /* minactive, maxactive */
 #ifdef DEBUG1
 #define debug1(x) x
@@ -113,6 +120,8 @@ Diag_compare_diagonal (const void *x, const void *y) {
   }
 }
 
+
+#if 0
 static int
 abs_compare (const void *x, const void *y) {
   int absa, absb;
@@ -135,6 +144,7 @@ abs_compare (const void *x, const void *y) {
     return 0;
   }
 }
+#endif
 
 
 /* Note: support (querypos_max - querypos_min) is not a useful metric here */
@@ -149,7 +159,7 @@ Diag_update_coverage (bool *coveredp, int *ncovered, List_T diagonals, int query
 
   for (p = diagonals; p != NULL; p = List_next(p)) {
     diag = (T) List_head(p);
-    debug(printf("diagonal from %d to %d\n",diag->querystart,diag->queryend));
+    debug(printf("diagonal at %u from querypos %d to %d\n",diag->diagonal,diag->querystart,diag->queryend));
     scores[diag->querystart] += 1;
     scores[diag->queryend] -= 1;
   }
@@ -240,19 +250,20 @@ Diag_compare_querystart (const void *x, const void *y) {
 }
 
 static void
-print_segment (T this, char *queryseq_ptr, char *genomicseg_ptr) {
+print_segment (T this, Chrpos_T chrinit, char *queryseq_ptr, char *genomicseg_ptr) {
   Chrpos_T genomicstart, genomicend, genomicpos;
   int querypos;
 
 #ifdef PMAP
-  genomicstart = this->diagonal + 3*this->querystart;
-  genomicend = this->diagonal + 3*this->queryend;
+  genomicstart = chrinit + this->diagonal + 3*this->querystart;
+  genomicend = chrinit + this->diagonal + 3*this->queryend;
 #else
-  genomicstart = this->diagonal + this->querystart;
-  genomicend = this->diagonal + this->queryend;
+  genomicstart = chrinit + this->diagonal + this->querystart;
+  genomicend = chrinit + this->diagonal + this->queryend;
 #endif  
 
-  printf(">%d..%d %u..%u score:%f\n",this->querystart,this->queryend,genomicstart,genomicend,this->score);
+  printf(">%d..%d %u..%u diagonal:%u score:%f\n",
+	 this->querystart,this->queryend,genomicstart,genomicend,this->diagonal,this->score);
   if (queryseq_ptr != NULL) {
     for (querypos = this->querystart; querypos <= this->queryend; querypos++) {
       printf("%c",queryseq_ptr[querypos]);
@@ -270,6 +281,7 @@ print_segment (T this, char *queryseq_ptr, char *genomicseg_ptr) {
   return;
 }
 
+/* Called only as extern */
 void
 Diag_print_segments (List_T diagonals, char *queryseq_ptr, char *genomicseg_ptr) {
   T *array;
@@ -279,7 +291,7 @@ Diag_print_segments (List_T diagonals, char *queryseq_ptr, char *genomicseg_ptr)
     array = (T *) List_to_array(diagonals,NULL);
     qsort(array,List_length(diagonals),sizeof(T),Diag_compare_querystart);
     for (i = 0; i < List_length(diagonals); i++) {
-      print_segment(array[i],queryseq_ptr,genomicseg_ptr);
+      print_segment(array[i],/*chrinit*/0U,queryseq_ptr,genomicseg_ptr);
     }
     FREE(array);
   }
@@ -288,7 +300,7 @@ Diag_print_segments (List_T diagonals, char *queryseq_ptr, char *genomicseg_ptr)
 
 
 static void
-print_segments_for_R_list (List_T list, char *color) {
+print_segments_for_R_list (List_T list, Chrpos_T chrinit, char *color) {
   List_T p;
   T diag;
 
@@ -296,13 +308,13 @@ print_segments_for_R_list (List_T list, char *color) {
     diag = (T) List_head(p);
 #ifdef PMAP
     printf("segments(%d,%d+%d,%d,%d+%d,col=\"%s\")  # nconsecutive = %d, score = %.2f\n",
-	   diag->querystart,diag->diagonal,3*diag->querystart,
-	   diag->queryend,diag->diagonal,3*diag->queryend,
+	   diag->querystart,chrinit + diag->diagonal,3*diag->querystart,
+	   diag->queryend,chrinit + diag->diagonal,3*diag->queryend,
 	   color,diag->nconsecutive,diag->score);
 #else
     printf("segments(%d,%d+%d,%d,%d+%d,col=\"%s\")  # nconsecutive = %d, score = %.2f\n",
-	   diag->querystart,diag->diagonal,diag->querystart,
-	   diag->queryend,diag->diagonal,diag->queryend,
+	   diag->querystart,chrinit + diag->diagonal,diag->querystart,
+	   diag->queryend,chrinit + diag->diagonal,diag->queryend,
 	   color,diag->nconsecutive,diag->score);
 #endif
   }
@@ -311,7 +323,7 @@ print_segments_for_R_list (List_T list, char *color) {
 }
 
 static void
-print_segments_for_R_array (T *array, int n, char *color) {
+print_segments_for_R_array (T *array, int n, Chrpos_T chrinit, char *color) {
   int i;
   T diag;
 
@@ -319,13 +331,13 @@ print_segments_for_R_array (T *array, int n, char *color) {
     diag = array[i];
 #ifdef PMAP
     printf("segments(%d,%d+%d,%d,%d+%d,col=\"%s\")  # nconsecutive = %d, score = %.2f\n",
-	   diag->querystart,diag->diagonal,3*diag->querystart,
-	   diag->queryend,diag->diagonal,3*diag->queryend,
+	   diag->querystart,chrinit + diag->diagonal,3*diag->querystart,
+	   diag->queryend,chrinit + diag->diagonal,3*diag->queryend,
 	   color,diag->nconsecutive,diag->score);
 #else
     printf("segments(%d,%d+%d,%d,%d+%d,col=\"%s\")  # nconsecutive = %d, score = %.2f\n",
-	   diag->querystart,diag->diagonal,diag->querystart,
-	   diag->queryend,diag->diagonal,diag->queryend,
+	   diag->querystart,chrinit + diag->diagonal,diag->querystart,
+	   diag->queryend,chrinit + diag->diagonal,diag->queryend,
 	   color,diag->nconsecutive,diag->score);
 #endif
   }
@@ -446,16 +458,17 @@ Diag_range (int *start, int *end, List_T diagonals, int querylength) {
 
 
 int
-Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
+Diag_compute_bounds (int *diag_querystart, int *diag_queryend,
+		     Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
 		     int querylength, bool debug_graphic_p,
 		     Chrpos_T chrstart, Chrpos_T chrend,
 		     Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp) {
   int nunique, ndiagonals, i, j;
   Chrpos_T diagonal;
   Chrpos_T genomiclength, position, chrinit, chrterm;
+  int activestart, activeend;
   int querypos;
   T *array, diag;
-  int activestart, activeend;
   List_T gooddiagonals = NULL, p;
   
   genomiclength = chrend - chrstart;
@@ -475,10 +488,12 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
       minactive[querypos] = chrinit;
       maxactive[querypos] = chrterm;
     }
+    *diag_querystart = 0;
+    *diag_queryend = querylength - 1;
 
   } else {
     if (debug_graphic_p == true) {
-      printf("plot(c(%d,%d),c(%d,%d),type=\"n\",xlab=\"Query\",ylab=\"Genomic\")\n",0,querylength,chrstart,chrend);
+      printf("plot(c(%d,%d),c(%d,%d),type=\"n\",xlab=\"Query\",ylab=\"Genomic\")\n",0,querylength,chrinit,chrterm);
     }
 
     assign_scores(diagonals,querylength);
@@ -490,7 +505,7 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
 #endif
 
     if (debug_graphic_p == true) {
-      print_segments_for_R_list(diagonals,"black");
+      print_segments_for_R_list(diagonals,chrinit,"black");
     }
 
     for (p = diagonals; p != NULL; p = List_next(p)) {
@@ -519,9 +534,16 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
 
     qsort(array,nunique,sizeof(T),Diag_compare_diagonal);
     if (debug_graphic_p == true) {
-      print_segments_for_R_array(array,nunique,"red");
+      print_segments_for_R_array(array,nunique,chrinit,"red");
     }
 
+#ifdef DEBUG0
+    printf("Start of diagonals:\n");
+    for (i = 0; i < nunique; i++) {
+      print_segment(array[i],chrinit,/*queryseq_ptr*/NULL,/*genomicseg_ptr*/NULL);
+    }
+    printf("End of diagonals\n\n");
+#endif
 
     /* Find end regions */
 #ifdef ACTIVE_BUFFER
@@ -541,9 +563,23 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
       }
     }
 #else
+    /* For setting minactive and maxactive boundaries */
     activestart = array[0]->querystart;
     activeend = array[nunique-1]->queryend;
     debug1(printf("activestart = %d, activeend = %d\n",activestart,activeend));
+
+    /* For query bounds for middle path */
+    *diag_querystart = querylength - 1;
+    *diag_queryend = 0;
+    for (i = 0; i < nunique; i++) {
+      if (array[i]->querystart < *diag_querystart) {
+	*diag_querystart = array[i]->querystart;
+      }
+      if (array[i]->queryend > *diag_queryend) {
+	*diag_queryend = array[i]->queryend;
+      }
+    }
+    debug1(printf("diag_querystart = %d, diag_queryend = %d\n",*diag_querystart,*diag_queryend));
 #endif
 
 
@@ -554,7 +590,7 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
     }
 
     diagonal = array[0]->diagonal;
-    for ( ; querypos < array[0]->queryend; querypos++) {
+    for ( ; querypos <= array[0]->queryend; querypos++) {
 #ifdef PMAP
       if (diagonal + 3*querypos < EXTRA_BOUNDS) {
 	minactive[querypos] = chrinit;
@@ -619,14 +655,13 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
 
 
     /* Set maxactive */
-
     for (querypos = querylength-1; querypos > activeend; --querypos) {
       maxactive[querypos] = chrterm;
       debug1(printf("active end: maxactive at querypos %d is %u\n",querypos,maxactive[querypos]));
     }
 
     diagonal = array[nunique-1]->diagonal;
-    for ( ; querypos > array[nunique-1]->querystart; --querypos) {
+    for ( ; querypos >= array[nunique-1]->querystart; --querypos) {
 #ifdef PMAP
       if ((position = diagonal + 3*querypos + EXTRA_BOUNDS) > genomiclength) {
 	maxactive[querypos] = chrterm;
@@ -696,3 +731,26 @@ Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
 }
 
 
+
+void
+Diag_max_bounds (Chrpos_T *minactive, Chrpos_T *maxactive,
+		 int querylength, Chrpos_T chrstart, Chrpos_T chrend,
+		 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp) {
+  Chrpos_T chrinit, chrterm;
+  int querypos;
+  
+  if (plusp == true) {
+    chrinit = chrstart;
+    chrterm = chrend;
+  } else {
+    chrinit = (chrhigh - chroffset) - chrend;
+    chrterm = (chrhigh - chroffset) - chrstart;
+  }
+
+  for (querypos = 0; querypos < querylength; querypos++) {
+    minactive[querypos] = chrinit;
+    maxactive[querypos] = chrterm;
+  }
+
+  return;
+}
diff --git a/src/diag.h b/src/diag.h
index 643d568..9b4dd9b 100644
--- a/src/diag.h
+++ b/src/diag.h
@@ -1,4 +1,4 @@
-/* $Id: diag.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: diag.h 106198 2013-08-28 23:07:34Z twu $ */
 #ifndef DIAG_INCLUDED
 #define DIAG_INCLUDED
 #include "bool.h"
@@ -41,10 +41,16 @@ Diag_print_segments (List_T diagonals, char *queryseq_ptr, char *genomicseg_ptr)
 extern void
 Diag_range (int *start, int *end, List_T diagonals, int querylength);
 extern int
-Diag_compute_bounds (Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
+Diag_compute_bounds (int *diag_querystart, int *diag_queryend,
+		     Chrpos_T *minactive, Chrpos_T *maxactive, List_T diagonals,
 		     int querylength, bool debug_graphic_p,
 		     Chrpos_T chrstart, Chrpos_T chrend,
 		     Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp);
+extern void
+Diag_max_bounds (Chrpos_T *minactive, Chrpos_T *maxactive,
+		 int querylength, Chrpos_T chrstart, Chrpos_T chrend,
+		 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp);
+
 
 #undef T
 #endif
diff --git a/src/diagpool.c b/src/diagpool.c
index 9fd861c..21bb0a3 100644
--- a/src/diagpool.c
+++ b/src/diagpool.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: diagpool.c 40326 2011-05-30 17:27:01Z twu $";
+static char rcsid[] = "$Id: diagpool.c 128119 2014-02-20 22:07:04Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -182,7 +182,7 @@ Diagpool_push (List_T list, T this, int diagonal, int querystart, int queryend,
   diag->nconsecutive = nconsecutive;
   diag->dominatedp = false;
 
-  debug(printf("Creating %p: %d %d..%d %d\n",diag,diag->diagonal,diag->querystart,diag->queryend));
+  debug(printf("Creating %p: %d %d..%d\n",diag,diag->diagonal,diag->querystart,diag->queryend));
 
   if (this->listcellctr >= this->nlistcells) {
     this->listcellptr = add_new_listcellchunk(this);
diff --git a/src/doublelist.c b/src/doublelist.c
new file mode 100644
index 0000000..d6e4e60
--- /dev/null
+++ b/src/doublelist.c
@@ -0,0 +1,154 @@
+static char rcsid[] = "$Id: doublelist.c 106198 2013-08-28 23:07:34Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "doublelist.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "mem.h"
+
+#define T Doublelist_T
+struct T {
+  double first;
+  T rest;
+};
+
+
+T
+Doublelist_push (T list, double elt) {
+  T new = (T) MALLOC(sizeof(*new));
+  
+  new->first = elt;
+  new->rest = list;
+  return new;
+}
+
+T
+Doublelist_pop (T list, double *elt) {
+  T head;
+
+  if (list) {
+    head = list->rest;
+    *elt = list->first;
+    FREE(list);
+    return head;
+  } else {
+    return list;
+  }
+}
+  
+double
+Doublelist_head (T list) {
+  return list->first;
+}
+
+T
+Doublelist_next (T list) {
+  if (list) {
+    return list->rest;
+  } else {
+    return NULL;
+  }
+}
+
+void
+Doublelist_free (T *list) {
+  T prev;
+
+  while ((prev = *list) != NULL) {
+    *list = (*list)->rest;
+    FREE(prev);
+  }
+}
+
+T
+Doublelist_reverse (T list) {
+  T head = NULL, next;
+
+  for ( ; list; list = next) {
+    next = list->rest;
+    list->rest = head;
+    head = list;
+  }
+  return head;
+}
+
+int
+Doublelist_length (T list) {
+  int n;
+  
+  for (n = 0; list; list = list->rest) {
+    n++;
+  }
+  return n;
+}
+
+double *
+Doublelist_to_array (int *n, T list) {
+  double *array;
+  int i;
+
+  *n = Doublelist_length(list);
+  if (*n == 0) {
+    return NULL;
+  } else {
+    array = (double *) CALLOC(*n,sizeof(double));
+    for (i = 0; i < *n; i++) {
+      array[i] = list->first;
+      list = list->rest;
+    }
+    return array;
+  }
+}
+
+T
+Doublelist_from_string (char *string) {
+  T doublelist = NULL;
+  char *p = string;
+  double x;
+
+  while (sscanf(p,"%lf",&x) > 0) {
+    doublelist = Doublelist_push(doublelist,x);
+    while (*p != '\0' && *p != ',') {
+      p++;
+    }
+    if (*p == ',') {
+      p++;
+    }
+  }
+  return doublelist;
+}
+
+double
+Doublelist_max (T this) {
+  T p;
+  double maxvalue = 0.0;
+
+  if (this != NULL) {
+    maxvalue = this->first;
+  }
+  for (p = this; p; p = p->rest) {
+    if (p->first > maxvalue) {
+      maxvalue = p->first;
+    }
+  }
+  return maxvalue;
+}  
+
+double
+Doublelist_min (T this) {
+  T p;
+  double minvalue = 0.0;
+
+  if (this != NULL) {
+    minvalue = this->first;
+  }
+  for (p = this; p; p = p->rest) {
+    if (p->first < minvalue) {
+      minvalue = p->first;
+    }
+  }
+  return minvalue;
+}  
+
diff --git a/src/doublelist.h b/src/doublelist.h
new file mode 100644
index 0000000..b9f1054
--- /dev/null
+++ b/src/doublelist.h
@@ -0,0 +1,24 @@
+/* $Id: doublelist.h 40271 2011-05-28 02:29:18Z twu $ */
+#ifndef DOUBLELIST_INCLUDED
+#define DOUBLELIST_INCLUDED
+
+#define T Doublelist_T
+typedef struct T *T;
+
+extern T Doublelist_push (T list, double index);
+extern T Doublelist_pop (T list, double *index);
+extern double Doublelist_head (T list);
+extern T Doublelist_next (T list);
+extern void Doublelist_free (T *list);
+extern T Doublelist_reverse (T list);
+extern int Doublelist_length (T list);
+extern double *
+Doublelist_to_array (int *n, T list);
+extern T Doublelist_from_string (char *string);
+extern double
+Doublelist_max (T this);
+extern double
+Doublelist_min (T this);
+
+#undef T
+#endif
diff --git a/src/dynprog.c b/src/dynprog.c
index 714bc5b..a6f5e9d 100644
--- a/src/dynprog.c
+++ b/src/dynprog.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: dynprog.c 102110 2013-07-19 22:15:00Z twu $";
+static char rcsid[] = "$Id: dynprog.c 138110 2014-06-04 19:34:22Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -31,6 +31,7 @@ static char rcsid[] = "$Id: dynprog.c 102110 2013-07-19 22:15:00Z twu $";
 #include "splicetrie.h"
 #include "maxent.h"
 #include "maxent_hr.h"
+#include "fastlog.h"
 
 
 /* Tests whether get_genomic_nt == genomicseg in compute_scores procedures */
@@ -51,48 +52,13 @@ static char rcsid[] = "$Id: dynprog.c 102110 2013-07-19 22:15:00Z twu $";
 #define debug2(x)
 #endif
 
-/* Prints all winning bridge scores */
+/* F gap */
 #ifdef DEBUG3
 #define debug3(x) x
 #else
 #define debug3(x)
 #endif
 
-/* Prints all losing bridge scores */
-#ifdef DEBUG3A
-#define debug3a(x) x
-#else
-#define debug3a(x)
-#endif
-
-/* Codon instantiation */
-#ifdef DEBUG4
-#define debug4(x) x
-#else
-#define debug4(x)
-#endif
-
-/* Known splicing */
-#ifdef DEBUG5
-#define debug5(x) x
-#else
-#define debug5(x)
-#endif
-
-/* Ends */
-#ifdef DEBUG6
-#define debug6(x) x
-#else
-#define debug6(x)
-#endif
-
-/* Ends, known splicing.  May want to turn on DEBUG3 in splicetrie.c  */
-#ifdef DEBUG7
-#define debug7(x) x
-#else
-#define debug7(x)
-#endif
-
 /* Getting genomic nt */
 #ifdef DEBUG8
 #define debug8(x) x
@@ -100,35 +66,6 @@ static char rcsid[] = "$Id: dynprog.c 102110 2013-07-19 22:15:00Z twu $";
 #define debug8(x)
 #endif
 
-/* Splice site probabilities */
-#ifdef DEBUG9
-#define debug9(x) x
-#else
-#define debug9(x)
-#endif
-
-
-/* Binary search */
-#ifdef DEBUG10
-#define debug10(x) x
-#else
-#define debug10(x)
-#endif
-
-/* traceback_nogaps */
-#ifdef DEBUG11
-#define debug11(x) x
-#else
-#define debug11(x)
-#endif
-
-/* Old matrix computations */
-#ifdef DEBUG12
-#define debug12(x) x
-#else
-#define debug12(x)
-#endif
-
 /* Old matrix computations, details */
 #ifdef DEBUG12A
 #define debug12a(x) x
@@ -136,13 +73,6 @@ static char rcsid[] = "$Id: dynprog.c 102110 2013-07-19 22:15:00Z twu $";
 #define debug12a(x)
 #endif
 
-/* SIMD F loop */
-#ifdef DEBUG13
-#define debug13(x) x
-#else
-#define debug13(x)
-#endif
-
 /* Comparing SIMD with standard code */
 #ifdef DEBUG14
 #define debug14(x) x
@@ -150,89 +80,19 @@ static char rcsid[] = "$Id: dynprog.c 102110 2013-07-19 22:15:00Z twu $";
 #define debug14(x)
 #endif
 
-/* print_vector */
-#ifdef DEBUG15
-#define debug15(x) x
-#else
-#define debug15(x)
-#endif
-
-
-
-
-#if defined(DEBUG2) || defined(DEBUG14)
-#define NEG_INFINITY_DISPLAY -99
-#endif
-
-/* We can allow -128 and -32768 for NEG_INFINITY in SIMD procedures,
-   because we are using saturation */
-#ifdef HAVE_SSE4_1
-#define NEG_INFINITY_8 -128
-#define MAX_CHAR 127
-
-#define ONE_CHAR 1
-#define LAST_CHAR 15
-#define SIMD_NCHARS 16		/* 16 8-bit chars in 128 bits */
-#endif
-
-#ifdef HAVE_SSE2
-#define NEG_INFINITY_16 -32768
-#define MAX_SHORT 32767
-
-#define ONE_SHORT 2
-#define LAST_SHORT 14		/* (8 - 1) * 2 */
-#define SIMD_NSHORTS 8		/* 8 16-bit shorts in 128 bits */
-#endif
-
-/* Can allow -32768 in non-SIMD procedures, because we are using ints */
-#define NEG_INFINITY_32 -32768
-
-
-#define ONESIDEGAP 1
 
 /*
 #define RIGHTANGLE 1
 */
 
-#define MICROEXON_PVALUE_HIGHQ 0.01
-#define MICROEXON_PVALUE_MEDQ 0.001
-#define MICROEXON_PVALUE_LOWQ 0.0001
-#define ENDSEQUENCE_PVALUE 0.001 /* Have stricter threshold for making end exons */
-
-#define MIN_MICROEXON_LENGTH 3
-#ifdef PMAP
-#define MAX_MICROEXON_LENGTH 17	/* Should be oligomer length - 1 plus peelback */
-#else
-#define MAX_MICROEXON_LENGTH 12	/* Should be oligomer length - 1 plus peelback */
+#if defined(DEBUG2) || defined(DEBUG14)
+#define NEG_INFINITY_DISPLAY (-99)
 #endif
-#define MICROINTRON_LENGTH 9
-#define INSERT_PAIRS 9
 
-#define SIMD_MAXLENGTH_EPI8 40  /* 128/3 */
 #define FULLMATCH 3
 #define HALFMATCH 1
-#ifdef PMAP
 #define AMBIGUOUS 0
-#else
-#define AMBIGUOUS -1
-#endif
-
-typedef enum {HIGHQ, MEDQ, LOWQ, ENDQ} Mismatchtype_T;
-#define NMISMATCHTYPES 4
-
-/* Mismatch penalty of 10 or less needed to find
 
-   CCTGTA...CAG   
-   |  >>>   >>>
-   CAG
-
-   Mismatch penalty of 6 or less needed to find
-
-   TCTGTA...CAG   
-      >>>   >>>
-   CAG
-
-*/
 
 /* These values were set to -5, -4, -3, but this led to chopped ends
    in GMAP alignments, and failure to find chimeras */
@@ -249,168 +109,7 @@ typedef enum {HIGHQ, MEDQ, LOWQ, ENDQ} Mismatchtype_T;
 #define MISMATCH_ENDQ -5
 
 
-/* Note: In definitions below, extensions don't include the first base */
-
-/* Make PAIRED the same as SINGLE.  Need to avoid the problem where
-   gap-match-gap is preferred over two mismatches, so
-
-   OPEN+FULLMATCH+OPEN < MISMATCH+MISMATCH, or
-
-   OPEN < (MISMATCH+MISMATCH-FULLMATCH)/2
-
-   In middle:
-            (mismatch+mismatch-fullmatch)/2   open
-   HIGHQ     (-20-3)/2=-11.5                  -17
-   MEDQ      (-18-3)/2=-10.5                  -15
-   LOWQ      (-16-3)/2= -9.5                  -13
-
-   At ends:
-            (mismatch+mismatch-fullmatch)/2   open
-   HIGHQ     (-14-3)/2= -8.5                  -15
-   MEDQ      (-12-3)/2= -7.5                  -13
-   LOWQ      (-10-3)/2= -6.5                  -11 
-*/
-
-typedef enum {PAIRED_HIGHQ, PAIRED_MEDQ, PAIRED_LOWQ, 
-	      SINGLE_HIGHQ, SINGLE_MEDQ, SINGLE_LOWQ,
-	      END_HIGHQ, END_MEDQ, END_LOWQ,
-	      CDNA_HIGHQ, CDNA_MEDQ, CDNA_LOWQ} Jumptype_T;
-#define NJUMPTYPES 12
-
-#define PAIRED_OPEN_HIGHQ -18
-#define PAIRED_OPEN_MEDQ -18
-#define PAIRED_OPEN_LOWQ -18
-
-#define PAIRED_EXTEND_HIGHQ -3
-#define PAIRED_EXTEND_MEDQ -3
-#define PAIRED_EXTEND_LOWQ -3
-
-#define SINGLE_OPEN_HIGHQ -10
-#define SINGLE_OPEN_MEDQ -10
-#define SINGLE_OPEN_LOWQ -10
-
-#define SINGLE_EXTEND_HIGHQ -3
-#define SINGLE_EXTEND_MEDQ -3
-#define SINGLE_EXTEND_LOWQ -3
-
-
-/* cDNA insertions are biologically not meaningful, so look for a good
-   gap opening somewhere */
-#define CDNA_OPEN_HIGHQ -10
-#define CDNA_OPEN_MEDQ -10
-#define CDNA_OPEN_LOWQ -10
-
-#define CDNA_EXTEND_HIGHQ -7
-#define CDNA_EXTEND_MEDQ -7
-#define CDNA_EXTEND_LOWQ -7
-
-/* Ends tend to be of lower quality, so we don't want to introduce gaps.
-   Also, we make then indifferent to the quality of the rest of the
-   sequence. */
-/* was -10 open and -3 extend */
-#define END_OPEN_HIGHQ -12
-#define END_OPEN_MEDQ -12
-#define END_OPEN_LOWQ -12
-
-#define END_EXTEND_HIGHQ -1
-#define END_EXTEND_MEDQ -1
-#define END_EXTEND_LOWQ -1
-
-
-/* To reward one mismatch, but not two, should make
-
-   FULLMATCH < INTRON+MISMATCH, and
-   FULLMATCH+FULLMATCH > INTRON+MISMATCH+MISMATCH, or
-
-   FULLMATCH-MISMATCH < INTRON < FULLMATCH+FULLMATCH-MISMATCH-MISMATCH
-
-             1 mismatch    2 mismatches  3 mismatches  intron
-   HIGHQ     3-(-10)=13 ** 6-(-20)=26    9-(-30)=39      22
-   MEDQ      3-(-9)= 12    6-(-18)=24 ** 9-(-27)=36      25
-   LOWQ      3-(-8)= 11    6-(-16)=22 ** 9-(-24)=33      28 */
-
-/* To reward one gap, but not two, in preference to matching part of
-   the dinucleotide, 
-
-   FULLMATCH < INTRON+OPEN, and
-   FULLMATCH < INTRON+OPEN+EXTEND, or
-
-   FULLMATCH-OPEN < INTRON < FULLMATCH-OPEN-EXTEND
-
-             1 gap         gap+extend    gap+2extend   intron
-   HIGHQ     3-(-17)=20 ** 3-(-24)=26    3-(-31)=34      22
-   MEDQ      3-(-15)=18    3-(-21)=24 ** 3-(-27)=30      25
-   LOWQ      3-(-13)=16    3-(-18)=21    3-(-23)=26 **   28 */
-
-/* Don't want to make too high, otherwise we will harm evaluation of
-   dual introns vs. single intron */
-#define CANONICAL_INTRON_HIGHQ 10 /* GT-AG */
-#define CANONICAL_INTRON_MEDQ  16
-#define CANONICAL_INTRON_LOWQ  22
-
-#define FINAL_CANONICAL_INTRON_HIGHQ 30 /* GT-AG */
-#define FINAL_CANONICAL_INTRON_MEDQ  36
-#define FINAL_CANONICAL_INTRON_LOWQ  42
-
-#define KNOWN_SPLICESITE_REWARD 20
-
-/* Prefer alternate intron to other non-canonicals, but don't
-   introduce mismatches or gaps to identify */
-#define GCAG_INTRON 15
-#define ATAC_INTRON 12
-#define FINAL_GCAG_INTRON 20    /* Amount above regular should approximately
-				   match FINAL_CANONICAL_INTRON - CANONICAL_INTRON */
-#define FINAL_ATAC_INTRON 12
-
-/* .01 = Prob(noncanonical) > Prob(sequence gap) = 0.003*(.20) */
-#define MAXHORIZJUMP_HIGHQ 1
-#define MAXVERTJUMP_HIGHQ 1
-
-/* .01 = Prob(noncanonical) > Prob(sequence gap) = 0.014*(.20) */
-#define MAXHORIZJUMP_MEDQ 1
-#define MAXVERTJUMP_MEDQ 1
-
-/* .01 = Prob(noncanonical) < Prob(sequence gap) */
-#define MAXHORIZJUMP_LOWQ 1
-#define MAXVERTJUMP_LOWQ 1
-
-
-typedef char Score8_T;
-typedef char Direction8_T;
-
-typedef short Score16_T;
-typedef short Direction16_T;
-
-typedef short Pairdistance_T;
-
-/* For standard dynamic programming.  Use ints, so NEG_INFINITY_32 works. */
-typedef int Score32_T;
-typedef int Direction32_T;
-
-/* Genome is on the horizontal axis.  Query sequence is on the vertical axis.  Dynamic programming fills in matrices column by column */
-/* The following values are for directions_nogap.  For directions_Egap, the choices are DIAG or not DIAG (meaning HORIZ). */
-/*  For directions_Fgap, the choices are DIAG or not DIAG (meaning VERT) */
-#define VERT -2			/* or VERT == -3 in SIMD code.  Don't check for dir == VERT.  Check instead if dir == DIAG or dir == HORIZ */
-#define HORIZ -1
-#define DIAG 0			/* Pre-dominant case.  Directions_alloc clears to this value. */
-
-
-static IIT_T splicing_iit;
-static int *splicing_divint_crosstable;
-static int donor_typeint;
-static int acceptor_typeint;
-
-static Univcoord_T *splicesites;
-static Splicetype_T *splicetypes;
-static Chrpos_T *splicedists;
-static int nsplicesites;
-static Trieoffset_T *trieoffsets_obs;
-static Triecontent_T *triecontents_obs;
-static Trieoffset_T *trieoffsets_max;
-static Triecontent_T *triecontents_max;
-
-static bool novelsplicingp;
-
+#define T Dynprog_T
 
 char *
 Dynprog_endalign_string (Endalign_T endalign) {
@@ -427,34 +126,6 @@ Dynprog_endalign_string (Endalign_T endalign) {
 
 
 
-void
-Dynprog_setup (bool novelsplicingp_in,
-	       IIT_T splicing_iit_in, int *splicing_divint_crosstable_in,
-	       int donor_typeint_in, int acceptor_typeint_in,
-	       Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
-	       Chrpos_T *splicedists_in, int nsplicesites_in,
-	       Trieoffset_T *trieoffsets_obs_in, Triecontent_T *triecontents_obs_in,
-	       Trieoffset_T *trieoffsets_max_in, Triecontent_T *triecontents_max_in) {
-  novelsplicingp = novelsplicingp_in;
-
-  splicing_iit = splicing_iit_in;
-  splicing_divint_crosstable = splicing_divint_crosstable_in;
-  donor_typeint = donor_typeint_in;
-  acceptor_typeint = acceptor_typeint_in;
-
-  splicesites = splicesites_in;
-  splicetypes = splicetypes_in;
-  splicedists = splicedists_in;
-  nsplicesites = nsplicesites_in;
-  trieoffsets_obs = trieoffsets_obs_in;
-  triecontents_obs = triecontents_obs_in;
-  trieoffsets_max = trieoffsets_max_in;
-  triecontents_max = triecontents_max_in;
-
-  return;
-}
-
-
 int
 Dynprog_score (int matches, int mismatches, int qopens, int qindels, int topens, int tindels,
 	       double defect_rate) {
@@ -472,10 +143,6 @@ Dynprog_score (int matches, int mismatches, int qopens, int qindels, int topens,
 }
 
 
-/************************************************************************
- * get_genomic_nt
- ************************************************************************/
-
 static char complCode[128] = COMPLEMENT_LC;
 
 static char
@@ -574,131 +241,67 @@ Matrix32_alloc (int rlength, int glength, Score32_T **ptrs, Score32_T *space) {
 
 #endif
 
-#if defined(DEBUG2) || defined(DEBUG14)
-static void
-Matrix8_print (Score8_T **matrix, int rlength, int glength, char *rsequence,
-	       char *gsequence, char *gsequencealt,
-	       int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
-	       bool watsonp, bool revp) {
+
+#ifdef DEBUG2
+void
+Matrix32_print (Score32_T **matrix, int rlength, int glength, char *rsequence,
+			char *gsequence, char *gsequencealt,
+			int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
+			bool watsonp, bool revp, int lband, int uband) {
   int i, j;
   char g_alt;
 
-  _mm_lfence();
-
+  /* j */
+  printf("   ");		/* For i */
   printf("  ");
   for (j = 0; j <= glength; ++j) {
-    if (j == 0) {
-      printf("    ");
-    } else {
-      if (gsequence) {
-	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
-	printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
-      } else {
-	printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
-      }
-    }
+    printf(" %2d ",j);
   }
   printf("\n");
 
-  for (i = 0; i <= rlength; ++i) {
-    if (i == 0) {
-      printf("  ");
-    } else {
-      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
-    }
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
     for (j = 0; j <= glength; ++j) {
-      if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
-	printf("%3d ",NEG_INFINITY_DISPLAY);
+      if (j == 0) {
+	printf("    ");
       } else {
-	printf("%3d ",matrix[j][i]);
-      }
-    }
-    printf("\n");
-  }
-  printf("\n");
-
-  return;
-}
-
-static void
-Matrix16_print (Score16_T **matrix, int rlength, int glength, char *rsequence,
-		char *gsequence, char *gsequencealt,
-		int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
-		bool watsonp, bool revp) {
-  int i, j;
-  char g_alt;
-
-  _mm_lfence();
-
-  printf("  ");
-  for (j = 0; j <= glength; ++j) {
-    if (j == 0) {
-      printf("    ");
-    } else {
-      if (gsequence) {
 	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
-	printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
-      } else {
-	printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
       }
     }
+    printf("\n");
   }
-  printf("\n");
 
-  for (i = 0; i <= rlength; ++i) {
-    if (i == 0) {
-      printf("  ");
-    } else {
-      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
-    }
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
     for (j = 0; j <= glength; ++j) {
-      if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
-	printf("%3d ",NEG_INFINITY_DISPLAY);
+      if (j == 0) {
+	printf("    ");
       } else {
-	printf("%3d ",matrix[j][i]);
+	if (revp == false) {
+	  printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
+	} else {
+	  printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
+	}
       }
     }
     printf("\n");
   }
-  printf("\n");
-
-  return;
-}
-
-static void
-Matrix32_print (Score32_T **matrix, int rlength, int glength, char *rsequence,
-		char *gsequence, char *gsequencealt,
-		int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
-		bool watsonp, bool revp) {
-  int i, j;
-  char g_alt;
-
-  printf("  ");
-  for (j = 0; j <= glength; ++j) {
-    if (j == 0) {
-      printf("    ");
-    } else {
-      if (gsequence) {
-	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
-	printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
-      } else {
-	printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
-      }
-    }
-  }
-  printf("\n");
 
   for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
     if (i == 0) {
       printf("  ");
     } else {
       printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
     }
     for (j = 0; j <= glength; ++j) {
-      if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
+      if (j < i - lband) {
+	printf("  . ");
+      } else if (j > i + uband) {
+	printf("  . ");
+      } else if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
 	printf("%3d ",NEG_INFINITY_DISPLAY);
       } else {
 	printf("%3d ",matrix[j][i]);
@@ -758,13 +361,22 @@ Matrix3_print (struct Int3_T **matrix, int rlength, int glength, char *rsequence
   char g_alt;
 
   printf("G1");
+  if (gsequence) {
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
   for (j = 0; j <= glength; ++j) {
     if (j == 0) {
       printf("    ");
     } else {
-      if (gsequence) {
-	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
+      if (revp == false) {
 	printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
       } else {
 	printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
@@ -792,13 +404,22 @@ Matrix3_print (struct Int3_T **matrix, int rlength, int glength, char *rsequence
 
 
   printf("NG");
+  if (gsequence) {
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
   for (j = 0; j <= glength; ++j) {
     if (j == 0) {
       printf("    ");
     } else {
-      if (gsequence) {
-	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
+      if (revp == false) {
 	printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
       } else {
 	printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
@@ -826,13 +447,22 @@ Matrix3_print (struct Int3_T **matrix, int rlength, int glength, char *rsequence
 
 
   printf("G2");
+  if (gsequence) {
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
   for (j = 0; j <= glength; ++j) {
     if (j == 0) {
       printf("    ");
     } else {
-      if (gsequence) {
-	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
+      if (revp == false) {
 	printf("  %c ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
       } else {
 	printf("  %c ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
@@ -886,193 +516,97 @@ Directions32_alloc (int rlength, int glength, Direction32_T **ptrs, Direction32_
 }
 #endif
 
+
+
 #ifdef DEBUG2
-static void
-Directions8_print (Direction8_T **directions_nogap, Direction8_T **directions_Egap, Direction8_T **directions_Fgap,
-		   int rlength, int glength, char *rsequence, char *gsequence, char *gsequence_alt,
-		   int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
-		   bool watsonp, bool revp) {
+void
+Directions32_print (Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
+		    int rlength, int glength, char *rsequence, char *gsequence, char *gsequence_alt,
+		    int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
+		    bool watsonp, bool revp, int lband, int uband) {
   int i, j;
   char g_alt;
 
-  _mm_lfence();
-
+  /* j */
+  printf("   ");		/* For i */
   printf("  ");
   for (j = 0; j <= glength; ++j) {
-    if (j == 0) {
-      printf("      ");
-    } else {
-      if (gsequence) {
-	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
-	printf("  %c   ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
-      } else {
-	printf("  %c   ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
-      }
-    }
+    printf(" %2d   ",j);
   }
   printf("\n");
 
-  for (i = 0; i <= rlength; ++i) {
-    if (i == 0) {
-      printf("  ");
-    } else {
-      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
-    }
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
     for (j = 0; j <= glength; ++j) {
-      if (directions_Egap[j][i] == DIAG) {
-	printf("D");
-      } else {
-	/* Must be HORIZ */
-	printf("H");
-      }
-      printf("|");
-      if (directions_nogap[j][i] == DIAG) {
-	printf("D");
-      } else if (directions_nogap[j][i] == HORIZ) {
-	printf("H");
+      if (j == 0) {
+	printf("      ");
       } else {
-	/* Must be VERT */
-	printf("V");
-      }
-      printf("|");
-      if (directions_Fgap[j][i] == DIAG) {
-	printf("D");
-      } else {
-	/* Must be VERT */
-	printf("V");
-      }
-      printf(" ");
-    }
-    printf("\n");
-  }
-  printf("\n");
-  return;
-}
-
-
-static void
-Directions16_print (Direction16_T **directions_nogap, Direction16_T **directions_Egap, Direction16_T **directions_Fgap,
-		    int rlength, int glength, char *rsequence, char *gsequence, char *gsequence_alt,
-		    int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
-		    bool watsonp, bool revp) {
-  int i, j;
-  char g_alt;
-
-  _mm_lfence();
-
-  printf("  ");
-  for (j = 0; j <= glength; ++j) {
-    if (j == 0) {
-      printf("      ");
-    } else {
-      if (gsequence) {
 	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
-	printf("  %c   ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
-      } else {
-	printf("  %c   ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
       }
     }
+    printf("\n");
   }
-  printf("\n");
 
-  for (i = 0; i <= rlength; ++i) {
-    if (i == 0) {
-      printf("  ");
-    } else {
-      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
-    }
+  if (gsequence_alt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
     for (j = 0; j <= glength; ++j) {
-      if (directions_Egap[j][i] == DIAG) {
-	printf("D");
-      } else {
-	/* Must be HORIZ */
-	printf("H");
-      }
-      printf("|");
-      if (directions_nogap[j][i] == DIAG) {
-	printf("D");
-      } else if (directions_nogap[j][i] == HORIZ) {
-	printf("H");
+      if (j == 0) {
+	printf("      ");
       } else {
-	/* Must be VERT */
-	printf("V");
-      }
-      printf("|");
-      if (directions_Fgap[j][i] == DIAG) {
-	printf("D");
-      } else {
-	/* Must be VERT */
-	printf("V");
+	if (revp == false) {
+	  printf("  %c   ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
+	} else {
+	  printf("  %c   ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
+	}
       }
-      printf(" ");
     }
     printf("\n");
   }
-  printf("\n");
-  return;
-}
-
-
-static void
-Directions32_print (Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
-		    int rlength, int glength, char *rsequence, char *gsequence, char *gsequence_alt,
-		    int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
-		    bool watsonp, bool revp) {
-  int i, j;
-  char g_alt;
-
-  printf("  ");
-  for (j = 0; j <= glength; ++j) {
-    if (j == 0) {
-      printf("      ");
-    } else {
-      if (gsequence) {
-	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
-      } else if (revp == false) {
-	printf("  %c   ",get_genomic_nt(&g_alt,goffset+j-1,chroffset,chrhigh,watsonp));
-      } else {
-	printf("  %c   ",get_genomic_nt(&g_alt,goffset+1-j,chroffset,chrhigh,watsonp));
-      }
-    }
-  }
-  printf("\n");
 
   for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
     if (i == 0) {
       printf("  ");
     } else {
       printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
     }
     for (j = 0; j <= glength; ++j) {
-      if (directions_Egap[j][i] == DIAG) {
-	printf("D");
-      } else {
-	/* Must be HORIZ */
-	printf("H");
-      }
-      printf("|");
-      if (directions_nogap[j][i] == DIAG) {
-	printf("D");
-      } else if (directions_nogap[j][i] == HORIZ) {
-	printf("H");
-      } else {
-	/* Must be VERT */
-	printf("V");
-      }
-      printf("|");
-      if (directions_Fgap[j][i] == DIAG) {
-	printf("D");
+      if (j < i - lband) {
+	printf("     ");
+      } else if (j > i + uband) {
+	printf("     ");
       } else {
-	/* Must be VERT */
-	printf("V");
+	if (directions_Egap[j][i] == DIAG) {
+	  printf("D");
+	} else {
+	  /* Must be HORIZ */
+	  printf("H");
+	}
+	printf("|");
+	if (directions_nogap[j][i] == DIAG) {
+	  printf("D");
+	} else if (directions_nogap[j][i] == HORIZ) {
+	  printf("H");
+	} else {
+	  /* Must be VERT */
+	  printf("V");
+	}
+	printf("|");
+	if (directions_Fgap[j][i] == DIAG) {
+	  printf("D");
+	} else {
+	  /* Must be VERT */
+	  printf("V");
+	}
       }
       printf(" ");
     }
     printf("\n");
   }
   printf("\n");
+
   return;
 }
 #endif
@@ -1084,29 +618,6 @@ Directions32_print (Direction32_T **directions_nogap, Direction32_T **directions
 #define GENOMIC_MAXLENGTH 2000
 
 
-#define T Dynprog_T
-struct T {
-  int max_rlength;
-  int max_glength;
-
-#ifdef DEBUG12
-  struct Int3_T **matrix3_ptrs, *matrix3_space;
-#endif
-
-#if !defined(HAVE_SSE2) || defined(DEBUG14)
-  Score32_T **matrix_ptrs, *matrix_space;
-  Direction32_T **directions_ptrs_0, *directions_space_0;
-  Direction32_T **directions_ptrs_1, *directions_space_1;
-  Direction32_T **directions_ptrs_2, *directions_space_2;
-#endif
-#ifdef HAVE_SSE2
-  void **aligned_matrix_ptrs, *aligned_matrix_space;
-  void **aligned_directions_ptrs_0, *aligned_directions_space_0;
-  void **aligned_directions_ptrs_1, *aligned_directions_space_1;
-  void **aligned_directions_ptrs_2, *aligned_directions_space_2;
-#endif
-};
-
 static void
 compute_maxlengths (int *max_rlength, int *max_glength,
 		    int maxlookback, int extraquerygap, int maxpeelback,
@@ -1133,7 +644,8 @@ compute_maxlengths (int *max_rlength, int *max_glength,
 
 T
 Dynprog_new (int maxlookback, int extraquerygap, int maxpeelback,
-	     int extramaterial_end, int extramaterial_paired) {
+	     int extramaterial_end, int extramaterial_paired,
+	     bool doublep) {
   T new = (T) MALLOC(sizeof(*new));
   int max_rlength, max_glength;
 
@@ -1157,25 +669,37 @@ Dynprog_new (int maxlookback, int extraquerygap, int maxpeelback,
   new->directions_ptrs_2 = (Direction32_T **) CALLOC(max_glength+1,sizeof(Direction32_T *));
   new->directions_space_2 = (Direction32_T *) CALLOC((max_glength+1)*(max_rlength+1),sizeof(Direction32_T));
 #endif
-#ifdef HAVE_SSE4_1
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
   /* Use SIMD_NCHARS > SIMD_NSHORTS and sizeof(Score16_T) > sizeof(Score8_T) */
-  new->aligned_matrix_ptrs = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_matrix_space = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
-  new->aligned_directions_ptrs_0 = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_directions_space_0 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
-  new->aligned_directions_ptrs_1 = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_directions_space_1 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
-  new->aligned_directions_ptrs_2 = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_directions_space_2 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
-#elif defined(HAVE_SSE2)
-  new->aligned_matrix_ptrs = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_matrix_space = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NSHORTS+SIMD_NSHORTS)*sizeof(Score16_T),16);
-  new->aligned_directions_ptrs_0 = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_directions_space_0 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NSHORTS+SIMD_NSHORTS)*sizeof(Score16_T),16);
-  new->aligned_directions_ptrs_1 = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_directions_space_1 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NSHORTS+SIMD_NSHORTS)*sizeof(Score16_T),16);
-  new->aligned_directions_ptrs_2 = (void **) CALLOC(max_glength+1,sizeof(void *));
-  new->aligned_directions_space_2 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NSHORTS+SIMD_NSHORTS)*sizeof(Score16_T),16);
+  if (doublep == true) {
+    new->aligned.two.upper_matrix_ptrs = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.two.upper_matrix_space = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.two.upper_directions_ptrs_0 = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.two.upper_directions_space_0 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.two.upper_directions_ptrs_1 = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.two.upper_directions_space_1 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+
+    new->aligned.two.lower_matrix_ptrs = (void **) CALLOC(max_rlength+1,sizeof(void *));
+    new->aligned.two.lower_matrix_space = (void *) _mm_malloc((max_rlength+1)*(max_glength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.two.lower_directions_ptrs_0 = (void **) CALLOC(max_rlength+1,sizeof(void *));
+    new->aligned.two.lower_directions_space_0 = (void *) _mm_malloc((max_rlength+1)*(max_glength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.two.lower_directions_ptrs_1 = (void **) CALLOC(max_rlength+1,sizeof(void *));
+    new->aligned.two.lower_directions_space_1 = (void *) _mm_malloc((max_rlength+1)*(max_glength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+
+    new->nspaces = 2;
+
+  } else {
+    new->aligned.one.matrix_ptrs = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.one.matrix_space = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.one.directions_ptrs_0 = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.one.directions_space_0 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.one.directions_ptrs_1 = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.one.directions_space_1 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+    new->aligned.one.directions_ptrs_2 = (void **) CALLOC(max_glength+1,sizeof(void *));
+    new->aligned.one.directions_space_2 = (void *) _mm_malloc((max_glength+1)*(max_rlength+SIMD_NCHARS+SIMD_NCHARS)*sizeof(Score16_T),16);
+
+    new->nspaces = 1;
+  }
 #endif
   return new;
 }
@@ -1198,107 +722,44 @@ Dynprog_free (T *old) {
     FREE((*old)->directions_ptrs_0);
     FREE((*old)->directions_space_0);
 #endif
-#ifdef HAVE_SSE2
-    FREE((*old)->aligned_matrix_ptrs);
-    _mm_free((*old)->aligned_matrix_space);
-    FREE((*old)->aligned_directions_ptrs_2);
-    _mm_free((*old)->aligned_directions_space_2);
-    FREE((*old)->aligned_directions_ptrs_1);
-    _mm_free((*old)->aligned_directions_space_1);
-    FREE((*old)->aligned_directions_ptrs_0);
-    _mm_free((*old)->aligned_directions_space_0);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+    if ((*old)->nspaces == 1) {
+      FREE((*old)->aligned.one.matrix_ptrs);
+      _mm_free((*old)->aligned.one.matrix_space);
+      FREE((*old)->aligned.one.directions_ptrs_2);
+      _mm_free((*old)->aligned.one.directions_space_2);
+      FREE((*old)->aligned.one.directions_ptrs_1);
+      _mm_free((*old)->aligned.one.directions_space_1);
+      FREE((*old)->aligned.one.directions_ptrs_0);
+      _mm_free((*old)->aligned.one.directions_space_0);
+    } else {
+      FREE((*old)->aligned.two.upper_matrix_ptrs);
+      _mm_free((*old)->aligned.two.upper_matrix_space);
+      FREE((*old)->aligned.two.upper_directions_ptrs_1);
+      _mm_free((*old)->aligned.two.upper_directions_space_1);
+      FREE((*old)->aligned.two.upper_directions_ptrs_0);
+      _mm_free((*old)->aligned.two.upper_directions_space_0);
+
+      FREE((*old)->aligned.two.lower_matrix_ptrs);
+      _mm_free((*old)->aligned.two.lower_matrix_space);
+      FREE((*old)->aligned.two.lower_directions_ptrs_1);
+      _mm_free((*old)->aligned.two.lower_directions_space_1);
+      FREE((*old)->aligned.two.lower_directions_ptrs_0);
+      _mm_free((*old)->aligned.two.lower_directions_space_0);
+    }
 #endif
 
     FREE(*old);
   }
+
   return;
 }
 
 /************************************************************************/
 
 #ifdef PMAP
-
-static int aa_index_table[128] =
-  { -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-  /*     *                                  */
-    -1, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1,
-
-  /* A,  B,  C,  D,  E,  F,  G,  H,  I,  J, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* K,  L,  M,  N,  O,  P,  Q,  R,  S,  T  */
-     8,  9, 10, 11, -1, 12, 13, 14, 15, 16,
-
-  /* U,  V,  W,  X,  Y,  Z  */
-    21, 17, 18, -1, 19, -1,
-
-    -1, -1, -1, -1, -1, -1,
-
-  /* a,  b,  c,  d,  e,  f,  g,  h,  i,  j, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* k,  l,  m,  n,  o,  p,  q,  r,  s,  t  */
-     8,  9, 10, 11, -1, 12, 13, 14, 15, 16,
-
-  /* u,  v,  w,  x,  y,  z  */
-    21, 17, 18, -1, 19, -1,
-
-    -1, -1, -1, -1, -1};
-
-
-static char *iupac_table[21+1] =
-  {"GCN",			/* A */
-   "TGY",			/* C */
-   "GAY",			/* D */
-   "GAR",			/* E */
-   "TTY",			/* F */
-   "GGN",			/* G */
-   "CAY",			/* H */
-   "ATH",			/* I */
-   "AAR",			/* K */
-   "YTN",			/* L */
-   "ATG",			/* M */
-   "AAY",			/* N */
-   "CCN",			/* P */
-   "CAR",			/* Q */
-   "MGN",			/* R */
-   "WSN",			/* S */
-   "ACN",			/* T */
-   "GTN",			/* V */
-   "TGG",			/* W */
-   "TAY",			/* Y */
-   "TRR",			/* STOP */
-   "TGA"};			/* U */
-
-
-static char aa_table[21+1] = "ACDEFGHIKLMNPQRSTVWY*U";
-
-
-char
-Dynprog_codon_char (char aa, int codonpos) {
-  int index;
-  char *codon;
-
-  if ((index = aa_index_table[(int) aa]) < 0) {
-    return 'N';
-  } else {
-    codon = iupac_table[index];
-    return codon[codonpos];
-  }
-}
-
-
-
-#ifdef PMAP
 /* Same as in boyer-moore.c */
-/* Handle only cases in iupac table in dynprog.c */
+/* Handle only cases in iupac table in sequence.c */
 static bool matchtable[26][26] = 
 /*  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z */
   {{1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0}, /* A */
@@ -1330,52 +791,24 @@ static bool matchtable[26][26] =
 #endif
 
 
-/* both newntsequence and oldntsequence are offset, but aasequence starts from position 0 */
-static char *
-instantiate_codons (char *oldntsequence, char *aasequence, int offset, int ntlength) {
-  char *newntsequence;
-  int aapos, ntpos;
-  int index, frame;
-  char *codon, aa;
-
-  newntsequence = (char *) CALLOC(ntlength+1,sizeof(char));
-  strncpy(newntsequence,oldntsequence,ntlength);
-
-  for (ntpos = 0; ntpos < ntlength; ntpos++) {
-    if (oldntsequence[ntpos] == BACKTRANSLATE_CHAR) {
-      aapos = (offset+ntpos)/3;
-	
-      aa = aasequence[aapos];
-      index = aa_index_table[(int) aa];
-      if (index < 0) {
-	newntsequence[ntpos] = 'N';
-      } else {
-	codon = iupac_table[index];
-
-	frame = (offset+ntpos) % 3;
-	newntsequence[ntpos] = codon[frame];
-      }
-    }
-  }
-  debug4(printf("New sequence: %s\n",newntsequence));
-  return newntsequence;
-}
-#endif
-
-
 /************************************************************************/
 
+/* These are extern arrays, used by all dynprog procedures */
+Pairdistance_T **pairdistance_array[NMISMATCHTYPES];
+#ifndef HAVE_SSE4_1
+Pairdistance_T **pairdistance_array_plus_128[NMISMATCHTYPES];
+#endif
+bool **consistent_array;
+int *nt_to_int_array;
 
-/* This is still needed, because sequences passed into compute_scores
-   might be lower-case */
-#define PREUC 1			
-
-static Pairdistance_T **pairdistance_array[NMISMATCHTYPES];
-static bool **consistent_array;
 
-int
-Dynprog_pairdistance (int c1, int c2) {
-  return pairdistance_array[HIGHQ][c1][c2];
+bool
+Dynprog_consistent_p (int c, int g, int g_alt) {
+  if (consistent_array[c][g] == true) {
+    return true;
+  } else {
+    return consistent_array[c][g_alt];
+  }
 }
 
 static void
@@ -1452,11 +885,21 @@ permute_cases_oneway (int NA1, int NA2, Pairdistance_T score) {
 }
 
 
-static void
-pairdistance_init (Mode_T mode) {
+void
+Dynprog_init (Mode_T mode) {
   int i, j, ptr;
   int c, c1, c2;
 
+  nt_to_int_array = (int *) CALLOC(128,sizeof(int));
+  for (j = 0; j < 128; j++) {
+    nt_to_int_array[j] = 4;
+  }
+  nt_to_int_array['A'] = nt_to_int_array['a'] = 0;
+  nt_to_int_array['C'] = nt_to_int_array['c'] = 1;
+  nt_to_int_array['G'] = nt_to_int_array['g'] = 2;
+  nt_to_int_array['T'] = nt_to_int_array['t'] = 3;
+
+
   consistent_array = (bool **) CALLOC(128,sizeof(bool *));
   consistent_array[0] = (bool *) CALLOC(128*128,sizeof(bool));
   ptr = 0;
@@ -1467,10 +910,17 @@ pairdistance_init (Mode_T mode) {
   for (i = 0; i < NMISMATCHTYPES; i++) {
     pairdistance_array[i] = (Pairdistance_T **) CALLOC(128,sizeof(Pairdistance_T *));
     pairdistance_array[i][0] = (Pairdistance_T *) CALLOC(128*128,sizeof(Pairdistance_T));
+#ifndef HAVE_SSE4_1
+    pairdistance_array_plus_128[i] = (Pairdistance_T **) CALLOC(128,sizeof(Pairdistance_T *));
+    pairdistance_array_plus_128[i][0] = (Pairdistance_T *) CALLOC(128*128,sizeof(Pairdistance_T));
+#endif
     ptr = 0;
     for (j = 1; j < 128; j++) {
       ptr += 128;
       pairdistance_array[i][j] = &(pairdistance_array[i][0][ptr]);
+#ifndef HAVE_SSE4_1
+      pairdistance_array_plus_128[i][j] = &(pairdistance_array_plus_128[i][0][ptr]);
+#endif
     }
   }
 
@@ -1494,6 +944,11 @@ pairdistance_init (Mode_T mode) {
   }
 #endif
 
+  for (c = 'A'; c < 'Z'; c++) {
+    permute_cases(c,c,FULLMATCH);
+  }
+
+  /* Exceptions */
   permute_cases('U','T',FULLMATCH);
 
   permute_cases('R','A',HALFMATCH);
@@ -1540,146 +995,43 @@ pairdistance_init (Mode_T mode) {
   permute_cases('X','A',AMBIGUOUS);
   permute_cases('X','G',AMBIGUOUS);
 
+  permute_cases('N','N',AMBIGUOUS); /* Needed to start dynprog procedures with 0 at (0,0) */
+  permute_cases('X','X',AMBIGUOUS); /* Needed to start dynprog procedures with 0 at (0,0) */
+
+
   if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
     /* Query-T can match Genomic-C */
     permute_cases_oneway('T','C',FULLMATCH);
     permute_cases_oneway('A','G',FULLMATCH);
   }
 
-  for (c = 'A'; c < 'Z'; c++) {
-    permute_cases(c,c,FULLMATCH);
+#ifndef HAVE_SSE4_1
+#ifdef PREUC
+  for (i = 0; i < NMISMATCHTYPES; i++) {
+    for (c1 = 'A'; c1 <= 'z'; c1++) {
+      for (c2 = 'A'; c2 < 'z'; c2++) {
+	pairdistance_array_plus_128[i][c1][c2] = 128 + pairdistance_array[i][c1][c2];
+      }
+    }
   }
-
-  return;
-}
-
-
-/************************************************************************/
-
-
-#if 0
-/* static int max_jump_penalty_lookup; */
-static Pairdistance_T *jump_penalty_array[NJUMPTYPES];
-
-/* For lengths of 1,2,3, returns open.  Then, for lengths of 4,5,6,
-   returns open + 3*extend.  Add extra extend to penalty, so ---- is
-   preferred over ---|-. */
-static int
-jump_penalty (int length, int open, int extend) {
-#ifdef CODONPENALTY
-  int ncodons;
-#endif
-
-#ifdef CODONPENALTY
-  ncodons = (length - 1)/3;
-  return open + extend + ncodons*3*extend;
 #else
-  return open + extend*length;	/* was extend*(length-1), but now matches result of jump_penalty_init  */
+  for (i = 0; i < NMISMATCHTYPES; i++) {
+    for (c1 = 'A'; c1 <= 'Z'; c1++) {
+      for (c2 = 'A'; c2 < 'Z'; c2++) {
+	pairdistance_array_plus_128[i][c1][c2] = 128 + pairdistance_array[i][c1][c2];
+      }
+    }
+  }
 #endif
-}
 #endif
 
-
-#if 0
-static void
-jump_penalty_init (int maxlookback, int extraquerygap, int maxpeelback,
-		   int extramaterial_end, int extramaterial_paired) {
-  int max_lookup, max_rlength, max_glength, i;
-  int length, remainder, phase;
-  int paired_highq_penalty = PAIRED_OPEN_HIGHQ + PAIRED_EXTEND_HIGHQ,
-    paired_medq_penalty = PAIRED_OPEN_MEDQ + PAIRED_EXTEND_MEDQ,
-    paired_lowq_penalty = PAIRED_OPEN_LOWQ + PAIRED_EXTEND_LOWQ,
-    single_highq_penalty = SINGLE_OPEN_HIGHQ + SINGLE_EXTEND_HIGHQ,
-    single_medq_penalty = SINGLE_OPEN_MEDQ + SINGLE_EXTEND_MEDQ,
-    single_lowq_penalty = SINGLE_OPEN_LOWQ + SINGLE_EXTEND_LOWQ,
-    end_highq_penalty = END_OPEN_HIGHQ + END_EXTEND_HIGHQ,
-    end_medq_penalty = END_OPEN_MEDQ + END_EXTEND_MEDQ,
-    end_lowq_penalty = END_OPEN_LOWQ + END_EXTEND_LOWQ,
-    cdna_highq_penalty = CDNA_OPEN_HIGHQ + CDNA_EXTEND_HIGHQ,
-    cdna_medq_penalty = CDNA_OPEN_MEDQ + CDNA_EXTEND_MEDQ,
-    cdna_lowq_penalty = CDNA_OPEN_LOWQ + CDNA_EXTEND_LOWQ;
-  int paired_highq_delta = 3*PAIRED_EXTEND_HIGHQ,
-    paired_medq_delta = 3*PAIRED_EXTEND_MEDQ,
-    paired_lowq_delta = 3*PAIRED_EXTEND_LOWQ,
-    single_highq_delta = 3*SINGLE_EXTEND_HIGHQ,
-    single_medq_delta = 3*SINGLE_EXTEND_MEDQ,
-    single_lowq_delta = 3*SINGLE_EXTEND_LOWQ,
-    end_highq_delta = 3*END_EXTEND_HIGHQ,
-    end_medq_delta = 3*END_EXTEND_MEDQ,
-    end_lowq_delta = 3*END_EXTEND_LOWQ,
-    cdna_highq_delta = 3*CDNA_EXTEND_HIGHQ,
-    cdna_medq_delta = 3*CDNA_EXTEND_MEDQ,
-    cdna_lowq_delta = 3*CDNA_EXTEND_LOWQ;
-
-  compute_maxlengths(&max_rlength,&max_glength,
-		     maxlookback,extraquerygap,maxpeelback,
-		     extramaterial_end,extramaterial_paired);
-
-  if (max_rlength > max_glength) {
-    max_lookup = max_rlength;
-  } else {
-    max_lookup = max_glength;
-  }
-  if ((remainder = max_lookup % 3) != 0) {
-    max_lookup += (3 - remainder);
-  }
-
-  /* Set global */
-  /* max_jump_penalty_lookup = max_lookup; */
-
-  for (i = 0; i < NJUMPTYPES; i++) {
-    jump_penalty_array[i] = (Pairdistance_T *) CALLOC(max_lookup+1,sizeof(Pairdistance_T));
-  }
-
-  length = 1;
-  while (length+2 <= max_lookup) {
-    for (phase = 0; phase < 3; phase++) {
-      jump_penalty_array[PAIRED_HIGHQ][length] = paired_highq_penalty;
-      jump_penalty_array[PAIRED_MEDQ][length] = paired_medq_penalty;
-      jump_penalty_array[PAIRED_LOWQ][length] = paired_lowq_penalty;
-      jump_penalty_array[SINGLE_HIGHQ][length] = single_highq_penalty;
-      jump_penalty_array[SINGLE_MEDQ][length] = single_medq_penalty;
-      jump_penalty_array[SINGLE_LOWQ][length] = single_lowq_penalty;
-      jump_penalty_array[END_HIGHQ][length] = end_highq_penalty;
-      jump_penalty_array[END_MEDQ][length] = end_medq_penalty;
-      jump_penalty_array[END_LOWQ][length] = end_lowq_penalty;
-      jump_penalty_array[CDNA_HIGHQ][length] = cdna_highq_penalty;
-      jump_penalty_array[CDNA_MEDQ][length] = cdna_medq_penalty;
-      jump_penalty_array[CDNA_LOWQ][length] = cdna_lowq_penalty;
-      length++;
-    }
-    paired_highq_penalty += paired_highq_delta;
-    paired_medq_penalty += paired_medq_delta;
-    paired_lowq_penalty += paired_lowq_delta;
-    single_highq_penalty += single_highq_delta;
-    single_medq_penalty += single_medq_delta;
-    single_lowq_penalty += single_lowq_delta;
-    end_highq_penalty += end_highq_delta;
-    end_medq_penalty += end_medq_delta;
-    end_lowq_penalty += end_lowq_delta;
-    cdna_highq_penalty += cdna_highq_delta;
-    cdna_medq_penalty += cdna_medq_delta;
-    cdna_lowq_penalty += cdna_lowq_delta;
-  }
   return;
 }
-#endif
 
 
 /************************************************************************/
 
 void
-Dynprog_init (int maxlookback, int extraquerygap, int maxpeelback,
-	      int extramaterial_end, int extramaterial_paired, Mode_T mode) {
-  pairdistance_init(mode);
-#if 0
-  jump_penalty_init(maxlookback,extraquerygap,maxpeelback,
-		    extramaterial_end,extramaterial_paired);
-#endif
-  return;
-}
-
-void
 Dynprog_term (void) {
   int i;
 
@@ -1695,6 +1047,10 @@ Dynprog_term (void) {
       FREE(pairdistance_array[i][j]);
     }
     */
+#ifndef HAVE_SSE4_1
+    FREE(pairdistance_array_plus_128[i][0]);
+    FREE(pairdistance_array_plus_128[i]);
+#endif
     FREE(pairdistance_array[i][0]);
     FREE(pairdistance_array[i]);
   }
@@ -1705,14 +1061,15 @@ Dynprog_term (void) {
   */
   FREE(consistent_array[0]);
   FREE(consistent_array);
+  FREE(nt_to_int_array);
 
   return;
 }
 
 /************************************************************************/
 
-static void
-compute_bands (int *lband, int *uband, int rlength, int glength, int extraband, bool widebandp) {
+void
+Dynprog_compute_bands (int *lband, int *uband, int rlength, int glength, int extraband, bool widebandp) {
   if (widebandp == false) {
     /* Just go along main diagonal */
     *lband = extraband;
@@ -1730,557 +1087,46 @@ compute_bands (int *lband, int *uband, int rlength, int glength, int extraband,
 }
 
 
-#if 0
-static void
-make_complement_buffered (char *complement, char *sequence, unsigned int length) {
-  int i, j;
-
-  /* complement = (char *) CALLOC(length+1,sizeof(char)); */
-  for (i = length-1, j = 0; i >= 0; i--, j++) {
-    complement[j] = complCode[(int) sequence[i]];
-  }
-  complement[length] = '\0';
-  return;
-}
+#if !defined(HAVE_SSE2) || defined(DEBUG14)
+Score32_T **
+Dynprog_standard (Direction32_T ***directions_nogap, Direction32_T ***directions_Egap, Direction32_T ***directions_Fgap,
+		  T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		  int rlength, int glength,
+		  int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+		  Mismatchtype_T mismatchtype, Score32_T open, Score32_T extend,
+		  int lband, int uband, bool jump_late_p, bool revp, int saturation) {
+#ifdef DEBUG12
+  Score32_T bestscore;
+  Direction32_T bestdir;
+  struct Int3_T **matrix3;
 #endif
+  Score32_T penalty;
+  Score32_T **matrix;
+  Score32_T c_gap, *r_gap, *nogap, last_nogap, prev_nogap, first_nogap;
+  int r, c, na1, na2;
+  char na2_alt;
+  Score32_T score, pairscore;
+  int rlo, rhigh;
+  Pairdistance_T **pairdistance_array_type;
 
-static void
-make_complement_inplace (char *sequence, unsigned int length) {
-  char temp;
-  unsigned int i, j;
-
-  for (i = 0, j = length-1; i < length/2; i++, j--) {
-    temp = complCode[(int) sequence[i]];
-    sequence[i] = complCode[(int) sequence[j]];
-    sequence[j] = temp;
-  }
-  if (i == j) {
-    sequence[i] = complCode[(int) sequence[i]];
-  }
+  pairdistance_array_type = pairdistance_array[mismatchtype];
 
-  return;
-}
+  debug(printf("compute_scores_standard: "));
+  debug(printf("Lengths are %d and %d, so bands are %d on left and %d on right\n",rlength,glength,lband,uband));
 
-#if 0
-static void
-get_genomic_seg (Chrpos_T genomicpos, int length, Univcoord_T chroffset,
-		 bool watsonp, char *dest) {
-  if (watsonp) {
-    Genome_fill_buffer_blocks(chroffset + genomicpos,length,dest);
+  matrix = Matrix32_alloc(rlength,glength,this->matrix_ptrs,this->matrix_space);
+  *directions_nogap = Directions32_alloc(rlength,glength,this->directions_ptrs_0,this->directions_space_0);
+  *directions_Egap = Directions32_alloc(rlength,glength,this->directions_ptrs_1,this->directions_space_1);
+  *directions_Fgap = Directions32_alloc(rlength,glength,this->directions_ptrs_2,this->directions_space_2);
+  /* (*directions_nogap)[0][0] = STOP; -- Check for r > 0 && c > 0 instead */
 
-  } else {
-    Genome_fill_buffer_blocks(chrhigh - genomicpos,length,dest);
-    make_complement_inplace(dest,length);
-  }
-  return;
-}
-#endif
-
-
-#ifdef DEBUG15
-/* For debugging of SIMD procedures*/
-static void
-print_vector_8 (__m128i x, int r, int c, char *label) {
-  __m128i a[1];
-  Score8_T *s = a;
-
-  _mm_lfence();			/* Needed to print correct values */
-  _mm_store_si128(a,x);
-  printf("%d,%d %s: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-	 r,c,label,s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9],s[10],s[11],s[12],s[13],s[14],s[15]);
-  return;
-}
-
-static void
-print_vector_16 (__m128i x, int r, int c, char *label) {
-  __m128i a[1];
-  Score16_T *s = a;
-
-  _mm_lfence();			/* Needed to print correct values */
-  _mm_store_si128(a,x);
-  printf("%d,%d %s: %d %d %d %d %d %d %d %d\n",r,c,label,s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7]);
-  return;
-}
-#endif
-
-
-#ifdef DEBUG14
-static void
-banded_matrix8_compare (Score8_T **matrix1, Score32_T **matrix2, int rlength, int glength,
-			int lband, int uband, char *rsequence, char *gsequence, char *gsequence_alt,
-			int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, bool revp) {
-  int r, c, rlo, rhigh;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      rlo = 1;
-    };
-
-    if ((rhigh = c + lband) > rlength) {
-      rhigh = rlength;
-    }
-
-    for (r = rlo; r <= rhigh; r++) {
-      if (matrix1[c][r] <= NEG_INFINITY_8 + 30 && matrix2[c][r] <= NEG_INFINITY_8 + 30) {
-	/* Okay */
-      } else if (matrix1[c][r] != matrix2[c][r]) {
-	printf("At %d,%d, value %d != value %d\n",r,c,matrix1[c][r],matrix2[c][r]);
-
-	Matrix8_print(matrix1,rlength,glength,rsequence,gsequence,gsequence_alt,
-		      goffset,chroffset,chrhigh,watsonp,revp);
-	Matrix32_print(matrix2,rlength,glength,rsequence,gsequence,gsequence_alt,
-		       goffset,chroffset,chrhigh,watsonp,revp);
-	abort();
-      }
-    }
-  }
-
-  return;
-}
-
-static void
-banded_matrix16_compare (Score16_T **matrix1, Score32_T **matrix2, int rlength, int glength,
-			 int lband, int uband, char *rsequence, char *gsequence, char *gsequence_alt,
-			 int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, bool revp) {
-  int r, c, rlo, rhigh;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      rlo = 1;
-    };
-
-    if ((rhigh = c + lband) > rlength) {
-      rhigh = rlength;
-    }
-
-    for (r = rlo; r <= rhigh; r++) {
-      if (matrix1[c][r] <= NEG_INFINITY_16 + 30 && matrix2[c][r] <= NEG_INFINITY_16 + 30) {
-	/* Okay */
-      } else if (matrix1[c][r] != matrix2[c][r]) {
-	printf("At %d,%d, value %d != value %d\n",r,c,matrix1[c][r],matrix2[c][r]);
-
-	Matrix16_print(matrix1,rlength,glength,rsequence,gsequence,gsequence_alt,
-		       goffset,chroffset,chrhigh,watsonp,revp);
-	Matrix32_print(matrix2,rlength,glength,rsequence,gsequence,gsequence_alt,
-		       goffset,chroffset,chrhigh,watsonp,revp);
-	abort();
-      }
-    }
-  }
-
-  return;
-}
-#endif
-
-#ifdef DEBUG14
-static void
-banded_directions8_compare_nogap (Score8_T **matrix, Direction8_T **directions1, Direction32_T **directions2, int rlength, int glength,
-				  int lband, int uband) {
-  int r, c, rlo, rhigh;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      rlo = 1;
-    };
-
-    if ((rhigh = c + lband) > rlength) {
-      rhigh = rlength;
-    }
-
-    for (r = rlo; r <= rhigh; r++) {
-      if (matrix[c][r] < NEG_INFINITY_8 + 30) {
-	/* Don't check */
-
-      } else if (directions1[c][r] == 0) {
-	if (directions2[c][r] == 0) {
-	} else {
-	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else if (directions1[c][r] == 1) {
-	if (directions2[c][r] == 1) {
-	} else {
-	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else {
-	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
-	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      }
-    }
-  }
-
-  return;
-}
-
-
-static void
-banded_directions16_compare_nogap (Direction16_T **directions1, Direction32_T **directions2, int rlength, int glength,
-				   int lband, int uband) {
-  int r, c, rlo, rhigh;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      rlo = 1;
-    };
-
-    if ((rhigh = c + lband) > rlength) {
-      rhigh = rlength;
-    }
-
-    for (r = rlo; r <= rhigh; r++) {
-      if (directions1[c][r] == 0) {
-	if (directions2[c][r] == 0) {
-	} else {
-	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else if (directions1[c][r] == 1) {
-	if (directions2[c][r] == 1) {
-	} else {
-	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else {
-	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
-	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      }
-    }
-  }
-
-  return;
-}
-#endif
-
-#ifdef DEBUG14
-static void
-banded_directions8_compare_Egap (Score8_T **matrix1, Direction8_T **directions1, Direction32_T **directions2,
-				 int rlength, int glength, int lband, int uband) {
-  int r, c, rlo, rhigh, last_check;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      rlo = 1;
-    };
-
-    if ((rhigh = c + lband) <= rlength) {
-      /* Don't check rhigh.  Egap direction derives from a comparison
-	 of NEG_INFINITY values, and we should never reach here from
-	 directions_nogap anyway. */
-      last_check = rhigh - 1;
-
-    } else {
-      /* Do check rhigh, which contains instructions for the bottom row */
-      rhigh = rlength;
-      last_check = rhigh;
-    }
-
-    for (r = rlo; r <= last_check; r++) {
-      if (matrix1[c][r] < NEG_INFINITY_8 + 30) {
-	/* Don't check */
-
-      } else if (directions1[c][r] == 0) {
-	if (directions2[c][r] == 0) {
-	} else {
-	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else if (directions1[c][r] == 1) {
-	if (directions2[c][r] == 1) {
-	} else {
-	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else {
-	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
-	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      }
-    }
-  }
-
-  return;
-}
-
-static void
-banded_directions16_compare_Egap (Direction16_T **directions1, Direction32_T **directions2, int rlength, int glength,
-				  int lband, int uband) {
-  int r, c, rlo, rhigh, last_check;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      rlo = 1;
-    };
-
-    if ((rhigh = c + lband) <= rlength) {
-      /* Don't check rhigh.  Egap direction derives from a comparison
-	 of NEG_INFINITY values, and we should never reach here from
-	 directions_nogap anyway. */
-      last_check = rhigh - 1;
-
-    } else {
-      /* Do check rhigh, which contains instructions for the bottom row */
-      rhigh = rlength;
-      last_check = rhigh;
-    }
-
-    for (r = rlo; r <= last_check; r++) {
-      if (directions1[c][r] == 0) {
-	if (directions2[c][r] == 0) {
-	} else {
-	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      } else if (directions1[c][r] == 1) {
-	if (directions2[c][r] == 1) {
-	} else {
-	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else {
-	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
-	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      }
-    }
-  }
-
-  return;
-}
-#endif
-
-
-#ifdef DEBUG14
-static void
-banded_directions8_compare_Fgap (Score8_T **matrix1, Direction8_T **directions1, Direction32_T **directions2,
-				 int rlength, int glength, int lband, int uband) {
-  int r, c, rlo, rhigh, first_check;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      first_check = rlo = 1;
-    } else {
-      first_check = rlo + 1;
-    }
-
-    if ((rhigh = c + lband) > rlength) {
-      rhigh = rlength;
-    }
-
-    for (r = first_check; r <= rhigh; r++) {
-      if (matrix1[c][r] < NEG_INFINITY_8 + 30) {
-	/* Don't check */
-
-      } else if (directions1[c][r] == 0) {
-	if (directions2[c][r] == 0) {
-	} else {
-	  printf("At %d,%d, Fgap dir %d != dir %d.  Score is %d\n",
-		 r,c,directions1[c][r],directions2[c][r],matrix1[c][r]);
-	  abort();
-	}
-
-      } else if (directions1[c][r] == 1) {
-	if (directions2[c][r] == 1) {
-	} else {
-	  printf("At %d,%d, Fgap dir %d != dir %d.  Score is %d\n",
-		 r,c,directions1[c][r],directions2[c][r],matrix1[c][r]);
-	  abort();
-	}
-
-      } else {
-	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
-	  printf("At %d,%d, Fgap dir %d != dir %d.  Score is %d\n",
-		 r,c,directions1[c][r],directions2[c][r],matrix1[c][r]);
-	  abort();
-	}
-      }
-    }
-  }
-
-  return;
-}
-
-static void
-banded_directions16_compare_Fgap (Direction16_T **directions1, Direction32_T **directions2, int rlength, int glength,
-				  int lband, int uband) {
-  int r, c, rlo, rhigh, first_check;
-
-  for (c = 1; c <= glength; c++) {
-    if ((rlo = c - uband) < 1) {
-      first_check = rlo = 1;
-    } else {
-      first_check = rlo + 1;
-    }
-
-    if ((rhigh = c + lband) > rlength) {
-      rhigh = rlength;
-    }
-
-    for (r = first_check; r <= rhigh; r++) {
-      if (directions1[c][r] == 0) {
-	if (directions2[c][r] == 0) {
-	} else {
-	  printf("At %d,%d, Fgap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      } else if (directions1[c][r] == 1) {
-	if (directions2[c][r] == 1) {
-	} else {
-	  printf("At %d,%d, Fgap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-
-      } else {
-	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
-	  printf("At %d,%d, Fgap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
-	  abort();
-	}
-      }
-    }
-  }
-
-  return;
-}
-#endif
-
-
-#ifdef HAVE_SSE4_1
-/* Makes a matrix of dimensions 0..rlength x 0..glength inclusive */
-static Score8_T **
-aligned_score8_alloc (int rlength, int glength, void **ptrs, void *space) {
-  Score8_T **matrix, *ptr;
-  int c;
-
-  matrix = (Score8_T **) ptrs;
-
-  ptr = (Score8_T *) space;
-  matrix[0] = &(ptr[SIMD_NCHARS - 1]);	/* Want aligned row to be r = 1, 17, ... */
-  for (c = 1; c <= glength; c++) {
-    ptr += rlength + SIMD_NCHARS;
-    matrix[c] = &(ptr[SIMD_NCHARS - 1]);	/* Want aligned row to be r = 1, 17, ... */
-  }
-#ifdef DEBUG14
-  memset((void *) matrix[0],0,(glength+1)*(rlength+SIMD_NCHARS)*sizeof(Score8_T));
-#endif
-
-  return matrix;
-}
-
-/* Same as aligned_score_alloc, except needs to initialize values to DIAG (0) */
-static Score8_T **
-aligned_directions8_alloc (int rlength, int glength, void **ptrs, void *space) {
-  Score8_T **matrix, *ptr;
-  int c;
-
-  matrix = (Score8_T **) ptrs;
-
-  ptr = (Score8_T *) space;
-  matrix[0] = &(ptr[SIMD_NCHARS - 1]);	/* Want aligned row to be r = 1, 17, ... */
-  for (c = 1; c <= glength; c++) {
-    ptr += rlength + SIMD_NCHARS;
-    matrix[c] = &(ptr[SIMD_NCHARS - 1]);	/* Want aligned row to be r = 1, 17, ... */
-  }
-  memset((void *) matrix[0],/*DIAG*/0,(glength+1)*(rlength+SIMD_NCHARS)*sizeof(Score8_T));
-
-  return matrix;
-}
-#endif
-
-
-#ifdef HAVE_SSE2
-/* Makes a matrix of dimensions 0..rlength x 0..glength inclusive */
-static Score16_T **
-aligned_score16_alloc (int rlength, int glength, void **ptrs, void *space) {
-  Score16_T **matrix, *ptr;
-  int c;
-
-  matrix = (Score16_T **) ptrs;
-
-  ptr = (Score16_T *) space;
-  matrix[0] = &(ptr[SIMD_NSHORTS - 1]);	/* Want aligned row to be r = 1, 9, 17, ... */
-  for (c = 1; c <= glength; c++) {
-    ptr += rlength + SIMD_NSHORTS;
-    matrix[c] = &(ptr[SIMD_NSHORTS - 1]);	/* Want aligned row to be r = 1, 9, 17, ... */
-  }
-#ifdef DEBUG14
-  memset((void *) matrix[0],0,(glength+1)*(rlength+SIMD_NSHORTS)*sizeof(Score16_T));
-#endif
-  return matrix;
-}
-
-/* Same as aligned_score_alloc, except needs to initialize values to DIAG (0) */
-static Score16_T **
-aligned_directions16_alloc (int rlength, int glength, void **ptrs, void *space) {
-  Score16_T **matrix, *ptr;
-  int c;
-
-  matrix = (Score16_T **) ptrs;
-
-  ptr = (Score16_T *) space;
-  matrix[0] = &(ptr[SIMD_NSHORTS - 1]);	/* Want aligned row to be r = 1, 9, 17, ... */
-  for (c = 1; c <= glength; c++) {
-    ptr += rlength + SIMD_NSHORTS;
-    matrix[c] = &(ptr[SIMD_NSHORTS - 1]);	/* Want aligned row to be r = 1, 9, 17, ... */
-  }
-  memset((void *) matrix[0],/*DIAG*/0,(glength+1)*(rlength+SIMD_NSHORTS)*sizeof(Score16_T));
-
-  return matrix;
-}
-#endif
-
-
-#if !defined(HAVE_SSE2) || defined(DEBUG14)
-static Score32_T **
-compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***directions_Egap, Direction32_T ***directions_Fgap,
-			 T this, char *rsequence, char *gsequence, char *gsequence_alt, int goffset,
-			 int rlength, int glength, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-			 Mismatchtype_T mismatchtype, Score32_T open, Score32_T extend,
-			 int lband, int uband, bool jump_late_p, bool revp) {
-#ifdef DEBUG12
-  Score32_T bestscore;
-  Direction32_T bestdir;
-  struct Int3_T **matrix3;
-#endif
-  Score32_T penalty;
-  Score32_T **matrix;
-  Score32_T c_gap, *r_gap, *nogap, last_nogap, prev_nogap, first_nogap;
-  int r, c, na1, na2;
-  char na2_alt;
-  Score32_T score, pairscore;
-  int rlo, rhigh;
-  Pairdistance_T **pairdistance_array_type;
-
-  pairdistance_array_type = pairdistance_array[mismatchtype];
-
-  debug(printf("compute_scores_standard: "));
-  debug(printf("Lengths are %d and %d, so bands are %d on left and %d on right\n",rlength,glength,lband,uband));
-
-  matrix = Matrix32_alloc(rlength,glength,this->matrix_ptrs,this->matrix_space);
-  *directions_nogap = Directions32_alloc(rlength,glength,this->directions_ptrs_0,this->directions_space_0);
-  *directions_Egap = Directions32_alloc(rlength,glength,this->directions_ptrs_1,this->directions_space_1);
-  *directions_Fgap = Directions32_alloc(rlength,glength,this->directions_ptrs_2,this->directions_space_2);
-  /* (*directions_nogap)[0][0] = STOP; -- Check for r > 0 && c > 0 instead */
-
-  /* Row 0 initialization */
-  penalty = open;
-  for (c = 1; c <= uband && c <= glength; c++) {
-    penalty += extend;
-    matrix[c][0] = penalty;
-    (*directions_Egap)[c][0] = HORIZ;
-    (*directions_nogap)[c][0] = HORIZ;
+  /* Row 0 initialization */
+  penalty = open;
+  for (c = 1; c <= uband && c <= glength; c++) {
+    penalty += extend;
+    matrix[c][0] = penalty;
+    (*directions_Egap)[c][0] = HORIZ;
+    (*directions_nogap)[c][0] = HORIZ;
   }
 #if 0
   /* Already initialized to DIAG */
@@ -2414,7 +1260,7 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 	assert(matrix3[c][r-1].nogap == last_nogap);
 	assert(matrix3[c][r-1].Fgap == c_gap);
 #endif
-	/* debug2(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend)); */
+	debug3(printf("std Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend));
 	if (c_gap /* + extend */ >= (score = last_nogap + open /* + extend */)) {  /* Use >= for jump late */
 	  c_gap += extend;
 	  (*directions_Fgap)[c][r] = VERT;
@@ -2446,7 +1292,7 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 	assert(matrix3[c-1][r].nogap == nogap[r]);
 	assert(matrix3[c-1][r].Egap == r_gap[r]);
 #endif
-	/* debug2(printf("Egap at r %d, c %d: r_gap[r] %d vs nogap[r] + open %d\n",r,c,r_gap[r],nogap[r]+open)); */
+	/* debug3(printf("Egap at r %d, c %d: r_gap[r] %d vs nogap[r] + open %d\n",r,c,r_gap[r],nogap[r]+open)); */
 	if (r_gap[r] /* + extend */ >= (score = nogap[r] + open /* + extend */)) {  /* Use >= for jump late */
 	  r_gap[r] += extend;
 	  (*directions_Egap)[c][r] = HORIZ;
@@ -2491,7 +1337,7 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 #endif
 	last_nogap = prev_nogap + pairscore;
 	/* bestdir2 = DIAG; -- Already initialized to DIAG */
-	/* debug2(printf("assign nogap at r %d, c %d: H + pairscore %d vs r_horiz + extend %d vs vert + extend %d\n",
+	/* debug3(printf("assign nogap at r %d, c %d: H + pairscore %d vs r_horiz + extend %d vs vert + extend %d\n",
 	   r,c,last_nogap,r_gap[r],c_gap)); */
 	if (r_gap[r] >= last_nogap) {  /* Use >= for jump late */
 	  last_nogap = r_gap[r];
@@ -2504,7 +1350,8 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 	/* (*directions_nogap)[c][r] = bestdir2; */
 
 	prev_nogap = nogap[r];	/* Save for next inner loop, before we wipe it out */
-	matrix[c][r] = nogap[r] = last_nogap;	/* Save for next outer loop */
+	matrix[c][r] = nogap[r] =
+	  (last_nogap < saturation) ? saturation : last_nogap;	/* Save for next outer loop */
 	if (r == rlo) {
 	  debug12a(printf("At row %d, storing first_nogap to be nogap[r] %d\n",r,nogap[r]));
 	  first_nogap = last_nogap;
@@ -2587,7 +1434,7 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 	assert(matrix3[c][r-1].nogap == last_nogap);
 	assert(matrix3[c][r-1].Fgap == c_gap);
 #endif
-	/* debug2(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend)); */
+	debug3(printf("std Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend));
 	if (c_gap /* + extend */ > (score = last_nogap + open /* + extend */)) {  /* Use > for jump early */
 	  c_gap += extend;
 	  (*directions_Fgap)[c][r] = VERT;
@@ -2619,7 +1466,7 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 	assert(matrix3[c-1][r].nogap == nogap[r]);
 	assert(matrix3[c-1][r].Egap == r_gap[r]);
 #endif
-	/* debug2(printf("Egap at r %d, c %d: r_gap[r] %d vs nogap[r] + open %d\n",r,c,r_gap[r],nogap[r]+open)); */
+	/* debug3(printf("Egap at r %d, c %d: r_gap[r] %d vs nogap[r] + open %d\n",r,c,r_gap[r],nogap[r]+open)); */
 	if (r_gap[r] /* + extend */ > (score = nogap[r] + open /* + extend */)) {  /* Use > for jump early */
 	  r_gap[r] += extend;
 	  (*directions_Egap)[c][r] = HORIZ;
@@ -2664,7 +1511,7 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 #endif
 	last_nogap = prev_nogap + pairscore;
 	/* bestdir2 = DIAG; -- Already initialized to DIAG */
-	/* debug2(printf("assign nogap at r %d, c %d: H + pairscore %d vs r_horiz + extend %d vs vert + extend %d\n",
+	/* debug3(printf("assign nogap at r %d, c %d: H + pairscore %d vs r_horiz + extend %d vs vert + extend %d\n",
 	   r,c,last_nogap,r_gap[r],c_gap)); */
 	if (r_gap[r] > last_nogap) {  /* Use > for jump early */
 	  last_nogap = r_gap[r];
@@ -2677,7 +1524,8 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 	/* (*directions_nogap)[c][r] = bestdir2; */
 
 	prev_nogap = nogap[r];	/* Save for next inner loop, before we wipe it out */
-	matrix[c][r] = nogap[r] = last_nogap;	/* Save for next outer loop */
+	matrix[c][r] = nogap[r] =
+	  (last_nogap < saturation) ? saturation : last_nogap;	/* Save for next outer loop */
 	if (r == rlo) {
 	  debug12a(printf("At row %d, storing first_nogap to be nogap[r] %d\n",r,nogap[r]));
 	  first_nogap = last_nogap;
@@ -2688,10 +1536,10 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
   }
 
   debug2(Matrix32_print(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
-			goffset,chroffset,chrhigh,watsonp,revp));
+			goffset,chroffset,chrhigh,watsonp,revp,lband,uband));
   debug2(Directions32_print(*directions_nogap,*directions_Egap,*directions_Fgap,
 			    rlength,glength,rsequence,gsequence,gsequence_alt,
-			    goffset,chroffset,chrhigh,watsonp,revp));
+			    goffset,chroffset,chrhigh,watsonp,revp,lband,uband));
   debug12a(Matrix3_print(matrix3,rlength,glength,rsequence,gsequence,gsequence_alt,
 			 goffset,chroffset,chrhigh,watsonp,revp));
 
@@ -2703,9241 +1551,157 @@ compute_scores_standard (Direction32_T ***directions_nogap, Direction32_T ***dir
 #endif
 
 
-#ifdef HAVE_SSE4_1
-static Score8_T **
-compute_scores_simd_8 (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap, Direction8_T ***directions_Fgap,
-		       T this, char *rsequence, char *gsequence, char *gsequence_alt, int goffset,
-		       int rlength, int glength, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-		       Mismatchtype_T mismatchtype, Score8_T open, Score8_T extend,
-		       int lband, int uband, bool jump_late_p, bool revp) {
-  int penalty, rpenalty, c_gap, last_nogap, score;		/* Need to have the ability to go past NEG_INFINITY */
-  Score8_T **matrix, *score_column, *score_ptr;
-  __m128i pairscores_std, pairscores_alt;
-  __m128i H_nogap_r, X_prev_nogap, E_r_gap, T1, *EE;
-  __m128i v_open, v_extend, all_one_bits, end_neg_infinity;
-  __m128i dir_horiz;
-  __m128i bottom_masks[17], E_mask_bottom;
-  int rlength_ceil, r, c;
-  int rlo, rlo_floor, rhigh, rhigh_ceil;
-  int max_rhigh_filled = 1;
-  int na1, na2;
-  char na2_alt;
-  Score8_T *pairscores[5], *pairscores_std_ptr, *pairscores_alt_ptr;
-  Pairdistance_T **pairdistance_array_type;
-
-#ifdef DEBUG14
-  Score32_T **matrix_std;
-  Direction32_T **directions_nogap_std, **directions_Egap_std, **directions_Fgap_std;
-#endif
 
-  rlength_ceil = (int) ((rlength + SIMD_NCHARS - 1)/SIMD_NCHARS) * SIMD_NCHARS;
-  pairdistance_array_type = pairdistance_array[mismatchtype];
-  
-  debug(printf("compute_scores_simd_8: "));
-  debug(printf("Lengths are %d and %d, so bands are %d on left and %d on right\n",rlength,glength,lband,uband));
-  debug(printf("Query length rounded up to %d\n",rlength_ceil));
+#define LAZY_INDEL 1		/* Don't advance to next coordinate on final indel, since could go over chromosome bounds. */
 
-  matrix = aligned_score8_alloc(rlength_ceil,glength,
-				this->aligned_matrix_ptrs,this->aligned_matrix_space);
-  *directions_nogap = aligned_directions8_alloc(rlength_ceil,glength,
-						this->aligned_directions_ptrs_0,this->aligned_directions_space_0);
-  *directions_Egap = aligned_directions8_alloc(rlength_ceil,glength,
-					       this->aligned_directions_ptrs_1,this->aligned_directions_space_1);
-  *directions_Fgap = aligned_directions8_alloc(rlength_ceil,glength,
-					       this->aligned_directions_ptrs_2,this->aligned_directions_space_2);
+/* Identical to Dynprog_traceback_8 and Dynprog_traceback_16, except for types of directions matrices */
 
-  /* Row 0 initialization */
-  /* penalty = open; */
-  for (c = 1; c <= uband && c <= glength; c++) {
-    /* penalty += extend; */
-    (*directions_Egap)[c][0] = HORIZ;
-    (*directions_nogap)[c][0] = HORIZ;
-  }
-#if 0
-  /* Already initialized to DIAG */
-  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
-#endif
-
-  /* Column 0 initialization */
-  /* penalty = open; */
-  for (r = 1; r <= lband && r <= rlength; r++) {
-    /* penalty += extend; */
-    (*directions_Fgap)[0][r] = VERT;
-    (*directions_nogap)[0][r] = VERT;
-  }
-#if 0
-  /* Already initialized to DIAG */
-  (*directions_Fgap)[0][1] = DIAG; /* previously used STOP */
-#endif
-
-
-  /* Load pairscores.  Store match - mismatch */
-  pairscores[0] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
-  pairscores[1] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
-  pairscores[2] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
-  pairscores[3] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
-  pairscores[4] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
-
-#if 0
-  /* Should not be necessary */
-  memset((void *) pairscores[0],0,rlength_ceil*sizeof(Score8_T));
-  memset((void *) pairscores[1],0,rlength_ceil*sizeof(Score8_T));
-  memset((void *) pairscores[2],0,rlength_ceil*sizeof(Score8_T));
-  memset((void *) pairscores[3],0,rlength_ceil*sizeof(Score8_T));
-  memset((void *) pairscores[4],0,rlength_ceil*sizeof(Score8_T));
+List_T
+Dynprog_traceback_std (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		       Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
+		       int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+		       int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		       Univcoord_T chroffset, Univcoord_T chrhigh,
+		       int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction32_T dir;
+#ifdef DEBUG14
+  char c2_single;
 #endif
 
-  if (revp == false) {
-    for (r = 0; r < rlength; r++) {
-      na1 = (int) rsequence[r];
-      pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
-      pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
-      pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
-      pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
-      pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
-    }
-  } else {
-    for (r = 0; r < rlength; r++) {
-      na1 = (int) rsequence[-r];
-      pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
-      pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
-      pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
-      pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
-      pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
-    }
-  }
-
-
-  all_one_bits = _mm_set1_epi8(-1);
-
-  end_neg_infinity = _mm_set1_epi8(NEG_INFINITY_8);
-  end_neg_infinity = _mm_slli_si128(end_neg_infinity,LAST_CHAR);
-  bottom_masks[0] = _mm_set1_epi8(MAX_CHAR);
-  bottom_masks[1] = _mm_or_si128(_mm_srli_si128(bottom_masks[0],ONE_CHAR),end_neg_infinity);
-  bottom_masks[2] = _mm_or_si128(_mm_srli_si128(bottom_masks[1],ONE_CHAR),end_neg_infinity);
-  bottom_masks[3] = _mm_or_si128(_mm_srli_si128(bottom_masks[2],ONE_CHAR),end_neg_infinity);
-  bottom_masks[4] = _mm_or_si128(_mm_srli_si128(bottom_masks[3],ONE_CHAR),end_neg_infinity);
-  bottom_masks[5] = _mm_or_si128(_mm_srli_si128(bottom_masks[4],ONE_CHAR),end_neg_infinity);
-  bottom_masks[6] = _mm_or_si128(_mm_srli_si128(bottom_masks[5],ONE_CHAR),end_neg_infinity);
-  bottom_masks[7] = _mm_or_si128(_mm_srli_si128(bottom_masks[6],ONE_CHAR),end_neg_infinity);
-  bottom_masks[8] = _mm_or_si128(_mm_srli_si128(bottom_masks[7],ONE_CHAR),end_neg_infinity);
-  bottom_masks[9] = _mm_or_si128(_mm_srli_si128(bottom_masks[8],ONE_CHAR),end_neg_infinity);
-  bottom_masks[10] = _mm_or_si128(_mm_srli_si128(bottom_masks[9],ONE_CHAR),end_neg_infinity);
-  bottom_masks[11] = _mm_or_si128(_mm_srli_si128(bottom_masks[10],ONE_CHAR),end_neg_infinity);
-  bottom_masks[12] = _mm_or_si128(_mm_srli_si128(bottom_masks[11],ONE_CHAR),end_neg_infinity);
-  bottom_masks[13] = _mm_or_si128(_mm_srli_si128(bottom_masks[12],ONE_CHAR),end_neg_infinity);
-  bottom_masks[14] = _mm_or_si128(_mm_srli_si128(bottom_masks[13],ONE_CHAR),end_neg_infinity);
-  bottom_masks[15] = _mm_or_si128(_mm_srli_si128(bottom_masks[14],ONE_CHAR),end_neg_infinity);
-  bottom_masks[16] = _mm_or_si128(_mm_srli_si128(bottom_masks[15],ONE_CHAR),end_neg_infinity);
-
-
-  EE = (__m128i *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
-  for (r = 0; r < rlength_ceil/SIMD_NCHARS; r++) {
-    _mm_store_si128(&(EE[r]),_mm_set1_epi8(NEG_INFINITY_8));
-  }
-    
-  v_open = _mm_set1_epi8(open);
-  v_extend = _mm_set1_epi8(extend);
-
-  if (jump_late_p) {
-    penalty = rpenalty = open + extend;
-    for (c = 1; c <= glength; c++) {
-      score_column = matrix[c];
-      if (gsequence) {
-	na2 = revp ? gsequence[1-c] : gsequence[c-1];
-	na2_alt = revp ? gsequence_alt[1-c] : gsequence_alt[c-1];
-      } else if (revp == false) {
-	na2 = get_genomic_nt(&na2_alt,goffset+c-1,chroffset,chrhigh,watsonp);
-      } else {
-	na2 = get_genomic_nt(&na2_alt,goffset+1-c,chroffset,chrhigh,watsonp);
-      }
-      switch (na2) {
-      case 'A': pairscores_std_ptr = pairscores[0]; break;
-      case 'C': pairscores_std_ptr = pairscores[1]; break;
-      case 'G': pairscores_std_ptr = pairscores[2]; break;
-      case 'T': pairscores_std_ptr = pairscores[3]; break;
-      default: pairscores_std_ptr = pairscores[4];
-      }
-      switch (na2_alt) {
-      case 'A': pairscores_alt_ptr = pairscores[0]; break;
-      case 'C': pairscores_alt_ptr = pairscores[1]; break;
-      case 'G': pairscores_alt_ptr = pairscores[2]; break;
-      case 'T': pairscores_alt_ptr = pairscores[3]; break;
-      default: pairscores_alt_ptr = pairscores[4];
-      }
-
-      if (c == 1) {
-	rlo = 1;
-	X_prev_nogap = _mm_set1_epi8(0);
-	last_nogap = penalty;
-
-      } else if ((rlo = c - uband) < 1) {
-	rlo = 1;
-	if (penalty < NEG_INFINITY_8) {
-	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
-	} else {
-	  X_prev_nogap = _mm_set1_epi8(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	penalty += extend;
-	last_nogap = penalty;
-      
-      } else if (rlo == 1) {
-	if (penalty < NEG_INFINITY_8) {
-	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
-	} else {
-	  X_prev_nogap = _mm_set1_epi8(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	/* penalty += extend; */
-	last_nogap = NEG_INFINITY_8;
-
-      } else if ((rlo_floor = (int)((rlo - 1)/SIMD_NCHARS) * SIMD_NCHARS + 1) == 1) {
-	/* first block of 8 */
-	X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8); /* works if we start outside the rlo bounds */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	last_nogap = NEG_INFINITY_8;
-	rlo = rlo_floor;
+  debug(printf("Starting traceback at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
 
-      } else {
-	/* second or greater block of 8 */
-	X_prev_nogap = _mm_set1_epi8(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	last_nogap = NEG_INFINITY_8;
-	rlo = rlo_floor;
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[c][r]) == HORIZ) {
+      dist = 1;
+      while (c > 0 && directions_Egap[c--][r] != DIAG) {
+	dist++;
       }
-
-      if ((rhigh = c + lband) > rlength) {
-	rhigh = rlength;
-	rhigh_ceil = (int) ((rhigh + SIMD_NCHARS - 1)/SIMD_NCHARS) * SIMD_NCHARS;
-	E_mask_bottom = bottom_masks[0];
+      if (c == 0) {
+	/* Directions in column 0 can sometimes be DIAG */
+	dir = VERT;
       } else {
-	rhigh_ceil = (int) ((rhigh + SIMD_NCHARS - 1)/SIMD_NCHARS) * SIMD_NCHARS;
-	E_mask_bottom = bottom_masks[rhigh_ceil-rhigh+1];
-      }
-
-      if (rhigh_ceil > max_rhigh_filled) {
-	for (r = max_rhigh_filled; r <= rhigh_ceil; r++) {
-	  if (r > lband) {
-	    matrix[c-1][r] = NEG_INFINITY_8;
-	  } else if (rpenalty < NEG_INFINITY_8) {
-	    matrix[c-1][r] = NEG_INFINITY_8;
-	    rpenalty += extend;
-	  } else {
-	    matrix[c-1][r] = rpenalty;
-	    rpenalty += extend;
-	  }
-	}
-	max_rhigh_filled = r;
-      }
-
-
-      for (r = rlo; r <= rhigh; r += SIMD_NCHARS) {
-	/* Load previous E vector at this point in the query sequence */
-	/* H vector already loaded before loop or at bottom of loop */
-	E_r_gap = _mm_load_si128(&(EE[(r-1)/SIMD_NCHARS]));
-	H_nogap_r = _mm_load_si128((__m128i *) &(matrix[c-1][r]));
-
-	/* EGAP */
-	T1 = _mm_adds_epi8(H_nogap_r, v_open);
-	dir_horiz = _mm_cmplt_epi8(E_r_gap,T1); /* E < H */
-	dir_horiz = _mm_andnot_si128(dir_horiz,all_one_bits);	/* E >= H, for jump late */
-	_mm_store_si128((__m128i *) &((*directions_Egap)[c][r]),dir_horiz);
-
-	E_r_gap = _mm_max_epi8(E_r_gap, T1); /* Compare H + open with vert */
-	E_r_gap = _mm_adds_epi8(E_r_gap, v_extend); /* Compute scores for Egap (vert + open) */
-	/* print_vector_8(E_r_gap,r,c,"E"); */
-	if (r + SIMD_NCHARS > rhigh) {
-	  /* mask last block (e.g., NM_001193336_71_) */
-	  E_r_gap = _mm_min_epi8(E_r_gap, E_mask_bottom); /* To handle band limitation from below */
-	}
-	_mm_store_si128(&(EE[(r-1)/SIMD_NCHARS]), E_r_gap);
-
-
-	/* NOGAP */
-	T1 = _mm_srli_si128(H_nogap_r,LAST_CHAR);
-	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_CHAR);
-	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
-	X_prev_nogap = T1;
-
-	/* Add pairscores, allowing for alternate genomic nt */
-	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[r-1]));
-	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[r-1]));
-	H_nogap_r = _mm_adds_epi8(H_nogap_r, _mm_max_epi8(pairscores_std,pairscores_alt));
-	/* print_vector_8(H_nogap_r,r,c,"H"); */
-
-	dir_horiz = _mm_cmplt_epi8(E_r_gap,H_nogap_r); /* E < H */
-	dir_horiz = _mm_andnot_si128(dir_horiz,all_one_bits);	/* E >= H, for jump late */
-	_mm_store_si128((__m128i *) &((*directions_nogap)[c][r]),dir_horiz);
-
-	H_nogap_r = _mm_max_epi8(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
-	_mm_store_si128((__m128i *) &(score_column[r]), H_nogap_r);
-      }
-
-      /* Perform F loop on entire column */
-      _mm_lfence();		/* Transition to non-SIMD code */
-      if ((rlo = c - uband) < 1) {
-	rlo = 1;
-      }
-      /* Use same rhigh as computed previously */
-
-      c_gap = NEG_INFINITY_8;
-      score_ptr = &(score_column[rlo]);
-      for (r = rlo; r <= rhigh; r++) {
-
-	/* FGAP */
-	/* debug2(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend)); */
-	if (c_gap /* + extend */ >= (score = last_nogap + open /* + extend */)) {  /* Use >= for jump late */
-	  c_gap += extend;
-	  (*directions_Fgap)[c][r] = VERT;
-	} else {
-	  c_gap = score + extend;
-	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
-	}
-
-	/* NOGAP */
-	last_nogap = *score_ptr;
-	/* debug2(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap)); */
-	if (c_gap >= last_nogap) {  /* Use >= for jump late */
-	  last_nogap = c_gap;
-	  *score_ptr = (c_gap < NEG_INFINITY_8) ? NEG_INFINITY_8 : (Score8_T) c_gap; /* Saturation */
-	  (*directions_nogap)[c][r] = VERT;
-	}
-	score_ptr++;
+	dir = directions_nogap[c][r];
       }
-    }
 
-  } else {
-    /* jump early */
-    penalty = rpenalty = open + extend;
-    for (c = 1; c <= glength; c++) {
-      score_column = matrix[c];
-      if (gsequence) {
-	na2 = revp ? gsequence[1-c] : gsequence[c-1];
-	na2_alt = revp ? gsequence_alt[1-c] : gsequence_alt[c-1];
-      } else if (revp == false) {
-	na2 = get_genomic_nt(&na2_alt,goffset+c-1,chroffset,chrhigh,watsonp);
-      } else {
-	na2 = get_genomic_nt(&na2_alt,goffset+1-c,chroffset,chrhigh,watsonp);
-      }
-      switch (na2) {
-      case 'A': pairscores_std_ptr = pairscores[0]; break;
-      case 'C': pairscores_std_ptr = pairscores[1]; break;
-      case 'G': pairscores_std_ptr = pairscores[2]; break;
-      case 'T': pairscores_std_ptr = pairscores[3]; break;
-      default: pairscores_std_ptr = pairscores[4];
-      }
-      switch (na2_alt) {
-      case 'A': pairscores_alt_ptr = pairscores[0]; break;
-      case 'C': pairscores_alt_ptr = pairscores[1]; break;
-      case 'G': pairscores_alt_ptr = pairscores[2]; break;
-      case 'T': pairscores_alt_ptr = pairscores[3]; break;
-      default: pairscores_alt_ptr = pairscores[4];
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
+				      /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
       }
+      debug(printf("\n"));
 
-      if (c == 1) {
-	rlo = 1;
-	X_prev_nogap = _mm_set1_epi8(0);
-	last_nogap = penalty;
-
-      } else if ((rlo = c - uband) < 1) {
-	rlo = 1;
-	if (penalty < NEG_INFINITY_8) {
-	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
-	} else {
-	  X_prev_nogap = _mm_set1_epi8(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	penalty += extend;
-	last_nogap = penalty;
-      
-      } else if (rlo == 1) {
-	if (penalty < NEG_INFINITY_8) {
-	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
-	} else {
-	  X_prev_nogap = _mm_set1_epi8(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	/* penalty += extend; */
-	last_nogap = NEG_INFINITY_8;
-
-      } else if ((rlo_floor = (int)((rlo - 1)/SIMD_NCHARS) * SIMD_NCHARS + 1) == 1) {
-	/* first block of 8 */
-	X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8); /* works if we start outside the rlo bounds */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	last_nogap = NEG_INFINITY_8;
-	rlo = rlo_floor;
-
-      } else {
-	/* second or greater block of 8 */
-	X_prev_nogap = _mm_set1_epi8(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
-	last_nogap = NEG_INFINITY_8;
-	rlo = rlo_floor;
+    } else if (dir == VERT) {
+      dist = 1;
+      while (r > 0 && directions_Fgap[c][r--] != DIAG) {
+	dist++;
       }
-
-      if ((rhigh = c + lband) > rlength) {
-	rhigh = rlength;
-	rhigh_ceil = (int) ((rhigh + SIMD_NCHARS - 1)/SIMD_NCHARS) * SIMD_NCHARS;
-	E_mask_bottom = bottom_masks[0];
+      if (r == 0) {
+	/* Directions in row 0 can sometimes be DIAG */
+	dir = HORIZ;
       } else {
-	rhigh_ceil = (int) ((rhigh + SIMD_NCHARS - 1)/SIMD_NCHARS) * SIMD_NCHARS;
-	E_mask_bottom = bottom_masks[rhigh_ceil-rhigh+1];
-      }
-
-      if (rhigh_ceil > max_rhigh_filled) {
-	for (r = max_rhigh_filled; r <= rhigh_ceil; r++) {
-	  if (r > lband) {
-	    matrix[c-1][r] = NEG_INFINITY_8;
-	  } else if (rpenalty < NEG_INFINITY_8) {
-	    matrix[c-1][r] = NEG_INFINITY_8;
-	    rpenalty += extend;
-	  } else {
-	    matrix[c-1][r] = rpenalty;
-	    rpenalty += extend;
-	  }
-	}
-	max_rhigh_filled = r;
-      }
-
-
-      for (r = rlo; r <= rhigh; r += SIMD_NCHARS) {
-	/* Load previous E vector at this point in the query sequence */
-	/* H vector already loaded before loop or at bottom of loop */
-	E_r_gap = _mm_load_si128(&(EE[(r-1)/SIMD_NCHARS]));
-	H_nogap_r = _mm_load_si128((__m128i *) &(matrix[c-1][r]));
-
-	/* EGAP */
-	T1 = _mm_adds_epi8(H_nogap_r, v_open);
-	dir_horiz = _mm_cmpgt_epi8(E_r_gap,T1); /* E > H, for jump early */
-	_mm_store_si128((__m128i *) &((*directions_Egap)[c][r]),dir_horiz);
-
-	E_r_gap = _mm_max_epi8(E_r_gap, T1); /* Compare H + open with vert */
-	E_r_gap = _mm_adds_epi8(E_r_gap, v_extend); /* Compute scores for Egap (vert + open) */
-	/* print_vector_8(E_r_gap,r,c,"E"); */
-	if (r + SIMD_NCHARS > rhigh) {
-	  /* mask last block (e.g., NM_001193336_71_) */
-	  E_r_gap = _mm_min_epi8(E_r_gap, E_mask_bottom); /* To handle band limitation from below */
-	}
-	_mm_store_si128(&(EE[(r-1)/SIMD_NCHARS]), E_r_gap);
-
-
-	/* NOGAP */
-	T1 = _mm_srli_si128(H_nogap_r,LAST_CHAR);
-	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_CHAR);
-	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
-	X_prev_nogap = T1;
-
-	/* Add pairscores, allowing for alternate genomic nt */
-	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[r-1]));
-	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[r-1]));
-	H_nogap_r = _mm_adds_epi8(H_nogap_r, _mm_max_epi8(pairscores_std,pairscores_alt));
-	/* print_vector_8(H_nogap_r,r,c,"H"); */
-
-	dir_horiz = _mm_cmpgt_epi8(E_r_gap,H_nogap_r); /* E > H, for jump early */
-	_mm_store_si128((__m128i *) &((*directions_nogap)[c][r]),dir_horiz);
-
-	H_nogap_r = _mm_max_epi8(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
-	_mm_store_si128((__m128i *) &(score_column[r]), H_nogap_r);
-      }
-
-      /* Perform F loop on entire column */
-      _mm_lfence();		/* Transition to non-SIMD code */
-      if ((rlo = c - uband) < 1) {
-	rlo = 1;
+	dir = directions_nogap[c][r];
       }
-      /* Use same rhigh as computed previously */
 
-      c_gap = NEG_INFINITY_8;
-      score_ptr = &(score_column[rlo]);
-      for (r = rlo; r <= rhigh; r++) {
-
-	/* FGAP */
-	/* debug2(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend)); */
-	if (c_gap /* + extend */ > (score = last_nogap + open /* + extend */)) {  /* Use > for jump early */
-	  c_gap += extend;
-	  (*directions_Fgap)[c][r] = VERT;
-	} else {
-	  c_gap = score + extend;
-	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
-	}
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,r+dist,c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
 
-	/* NOGAP */
-	last_nogap = *score_ptr;
-	/* debug2(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap)); */
-	if (c_gap > last_nogap) {  /* Use > for jump early */
-	  last_nogap = c_gap;
-	  *score_ptr = (c_gap < NEG_INFINITY_8) ? NEG_INFINITY_8 : (Score8_T) c_gap; /* Saturation */
-	  (*directions_nogap)[c][r] = VERT;
-	}
-	score_ptr++;
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
       }
-    }
-  }
 
-#ifdef DEBUG2
-  printf("SIMD\n");
-  Matrix8_print(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
-		goffset,chroffset,chrhigh,watsonp,revp);
-  Directions8_print(*directions_nogap,*directions_Egap,*directions_Fgap,
-		    rlength,glength,rsequence,gsequence,gsequence_alt,
-		    goffset,chroffset,chrhigh,watsonp,revp);
-#endif
-  
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
 #ifdef DEBUG14
-  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,&directions_Fgap_std,
-				       this,rsequence,gsequence,gsequence_alt,goffset,rlength,glength,
-				       chroffset,chrhigh,watsonp,mismatchtype,
-				       open,extend,lband,uband,jump_late_p,revp);
-
-#ifdef DEBUG2
-  printf("Banded %s\n",revp ? "rev" : "fwd");
-  Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
-		 goffset,chroffset,chrhigh,watsonp,revp);
-  Directions32_print(directions_nogap_std,directions_Egap_std,directions_Fgap_std,
-		     rlength,glength,rsequence,gsequence,gsequence_alt,
-		     goffset,chroffset,chrhigh,watsonp,revp);
-#endif
-  
-  banded_matrix8_compare(matrix,matrix_std,rlength,glength,lband,uband,
-			 rsequence,gsequence,gsequence_alt,
-			 goffset,chroffset,chrhigh,watsonp,revp);
-
-  banded_directions8_compare_nogap(matrix,*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
-
-  banded_directions8_compare_Egap(matrix,*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
-
-  banded_directions8_compare_Fgap(matrix,*directions_Fgap,directions_Fgap_std,rlength,glength,lband,uband);
-#endif
-
-  _mm_free(EE);
-  _mm_free(pairscores[4]);
-  _mm_free(pairscores[3]);
-  _mm_free(pairscores[2]);
-  _mm_free(pairscores[1]);
-  _mm_free(pairscores[0]);
-
-  return matrix;
-}
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
 #endif
 
-
-#ifdef HAVE_SSE2
-static Score16_T **
-compute_scores_simd_16 (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap, Direction16_T ***directions_Fgap,
-			T this, char *rsequence, char *gsequence, char *gsequence_alt, int goffset,
-			int rlength, int glength, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-			Mismatchtype_T mismatchtype, Score16_T open, Score16_T extend,
-			int lband, int uband, bool jump_late_p, bool revp) {
-  int penalty, rpenalty, c_gap, last_nogap, score;		/* Need to have the ability to go past NEG_INFINITY */
-  Score16_T **matrix, *score_column, *score_ptr;
-  __m128i pairscores_std, pairscores_alt;
-  __m128i H_nogap_r, X_prev_nogap, E_r_gap, T1, *EE;
-  __m128i v_open, v_extend, all_one_bits, end_neg_infinity;
-  __m128i dir_horiz;
-  __m128i bottom_masks[9], E_mask_bottom;
-  int rlength_ceil, r, c;
-  int rlo, rlo_floor, rhigh, rhigh_ceil;
-  int max_rhigh_filled = 1;
-  int na1, na2;
-  char na2_alt;
-  Score16_T *pairscores[5], *pairscores_std_ptr, *pairscores_alt_ptr;
-  Pairdistance_T **pairdistance_array_type;
-
-#ifdef DEBUG14
-  Score32_T **matrix_std;
-  Direction32_T **directions_nogap_std, **directions_Egap_std, **directions_Fgap_std;
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
 #endif
 
-  rlength_ceil = (int) ((rlength + SIMD_NSHORTS - 1)/SIMD_NSHORTS) * SIMD_NSHORTS;
-  pairdistance_array_type = pairdistance_array[mismatchtype];
-  
-  debug(printf("compute_scores_simd_16: "));
-  debug(printf("Lengths are %d and %d, so bands are %d on left and %d on right\n",rlength,glength,lband,uband));
-  debug(printf("Query length rounded up to %d\n",rlength_ceil));
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
 
-  matrix = aligned_score16_alloc(rlength_ceil,glength,
-				 this->aligned_matrix_ptrs,this->aligned_matrix_space);
-  *directions_nogap = aligned_directions16_alloc(rlength_ceil,glength,
-						 this->aligned_directions_ptrs_0,this->aligned_directions_space_0);
-  *directions_Egap = aligned_directions16_alloc(rlength_ceil,glength,
-						this->aligned_directions_ptrs_1,this->aligned_directions_space_1);
-  *directions_Fgap = aligned_directions16_alloc(rlength_ceil,glength,
-						this->aligned_directions_ptrs_2,this->aligned_directions_space_2);
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+	
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
 
-  /* Row 0 initialization */
-  /* penalty = open; */
-  for (c = 1; c <= uband && c <= glength; c++) {
-    /* penalty += extend; */
-    (*directions_Egap)[c][0] = HORIZ;
-    (*directions_nogap)[c][0] = HORIZ;
-  }
-#if 0
-  /* Already initialized to DIAG */
-  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
-#endif
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
 
-  /* Column 0 initialization */
-  /* penalty = open; */
-  for (r = 1; r <= lband && r <= rlength; r++) {
-    /* penalty += extend; */
-    (*directions_Fgap)[0][r] = VERT;
-    (*directions_nogap)[0][r] = VERT;
+      r--; c--;
+    }
   }
-#if 0
-  /* Already initialized to DIAG */
-  (*directions_Fgap)[0][1] = DIAG; /* previously used STOP */
-#endif
-
 
-  /* Load pairscores.  Store match - mismatch */
-  pairscores[0] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
-  pairscores[1] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
-  pairscores[2] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
-  pairscores[3] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
-  pairscores[4] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  if (r == 0 && c == 0) {
+    /* Finished with a diagonal step */
 
-#if 0
-  /* Should not be necessary */
-  memset((void *) pairscores[0],0,rlength_ceil*sizeof(Score16_T));
-  memset((void *) pairscores[1],0,rlength_ceil*sizeof(Score16_T));
-  memset((void *) pairscores[2],0,rlength_ceil*sizeof(Score16_T));
-  memset((void *) pairscores[3],0,rlength_ceil*sizeof(Score16_T));
-  memset((void *) pairscores[4],0,rlength_ceil*sizeof(Score16_T));
-#endif
+  } else if (c == 0) {
+    dist = r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,r,/*c*/0+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
 
-  if (revp == false) {
-    for (r = 0; r < rlength; r++) {
-      na1 = (int) rsequence[r];
-      pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
-      pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
-      pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
-      pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
-      pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
-    }
   } else {
-    for (r = 0; r < rlength; r++) {
-      na1 = (int) rsequence[-r];
-      pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
-      pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
-      pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
-      pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
-      pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+    assert(r == 0);
+    dist = c;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/*r*/0+LAZY_INDEL,c,dist,
+				    /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
     }
+    debug(printf("\n"));
   }
 
+  return pairs;
+}
 
-  all_one_bits = _mm_set1_epi16(-1);
-
-  end_neg_infinity = _mm_set1_epi16(NEG_INFINITY_16);
-  end_neg_infinity = _mm_slli_si128(end_neg_infinity,LAST_SHORT);
-  bottom_masks[0] = _mm_set1_epi16(MAX_SHORT);
-  bottom_masks[1] = _mm_or_si128(_mm_srli_si128(bottom_masks[0],ONE_SHORT),end_neg_infinity);
-  bottom_masks[2] = _mm_or_si128(_mm_srli_si128(bottom_masks[1],ONE_SHORT),end_neg_infinity);
-  bottom_masks[3] = _mm_or_si128(_mm_srli_si128(bottom_masks[2],ONE_SHORT),end_neg_infinity);
-  bottom_masks[4] = _mm_or_si128(_mm_srli_si128(bottom_masks[3],ONE_SHORT),end_neg_infinity);
-  bottom_masks[5] = _mm_or_si128(_mm_srli_si128(bottom_masks[4],ONE_SHORT),end_neg_infinity);
-  bottom_masks[6] = _mm_or_si128(_mm_srli_si128(bottom_masks[5],ONE_SHORT),end_neg_infinity);
-  bottom_masks[7] = _mm_or_si128(_mm_srli_si128(bottom_masks[6],ONE_SHORT),end_neg_infinity);
-  bottom_masks[8] = _mm_or_si128(_mm_srli_si128(bottom_masks[7],ONE_SHORT),end_neg_infinity);
-
-
-  EE = (__m128i *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
-  for (r = 0; r < rlength_ceil/SIMD_NSHORTS; r++) {
-    _mm_store_si128(&(EE[r]),_mm_set1_epi16(NEG_INFINITY_16));
-  }
-    
-  v_open = _mm_set1_epi16(open);
-  v_extend = _mm_set1_epi16(extend);
-
-  if (jump_late_p) {
-    penalty = rpenalty = open + extend;
-    for (c = 1; c <= glength; c++) {
-      score_column = matrix[c];
-      if (gsequence) {
-	na2 = revp ? gsequence[1-c] : gsequence[c-1];
-	na2_alt = revp ? gsequence_alt[1-c] : gsequence_alt[c-1];
-      } else if (revp == false) {
-	na2 = get_genomic_nt(&na2_alt,goffset+c-1,chroffset,chrhigh,watsonp);
-      } else {
-	na2 = get_genomic_nt(&na2_alt,goffset+1-c,chroffset,chrhigh,watsonp);
-      }
-      switch (na2) {
-      case 'A': pairscores_std_ptr = pairscores[0]; break;
-      case 'C': pairscores_std_ptr = pairscores[1]; break;
-      case 'G': pairscores_std_ptr = pairscores[2]; break;
-      case 'T': pairscores_std_ptr = pairscores[3]; break;
-      default: pairscores_std_ptr = pairscores[4];
-      }
-      switch (na2_alt) {
-      case 'A': pairscores_alt_ptr = pairscores[0]; break;
-      case 'C': pairscores_alt_ptr = pairscores[1]; break;
-      case 'G': pairscores_alt_ptr = pairscores[2]; break;
-      case 'T': pairscores_alt_ptr = pairscores[3]; break;
-      default: pairscores_alt_ptr = pairscores[4];
-      }
-
-      if (c == 1) {
-	rlo = 1;
-	X_prev_nogap = _mm_set1_epi16(0);
-	last_nogap = penalty;
-
-      } else if ((rlo = c - uband) < 1) {
-	rlo = 1;
-	if (penalty < NEG_INFINITY_16) {
-	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* Unlikely */
-	} else {
-	  X_prev_nogap = _mm_set1_epi16(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	penalty += extend;
-	last_nogap = penalty;
-      
-      } else if (rlo == 1) {
-	if (penalty < NEG_INFINITY_16) {
-	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16);
-	} else {
-	  X_prev_nogap = _mm_set1_epi16(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	/* penalty += extend; */
-	last_nogap = NEG_INFINITY_16;
-
-      } else if ((rlo_floor = (int)((rlo - 1)/SIMD_NSHORTS) * SIMD_NSHORTS + 1) == 1) {
-	/* first block of 8 */
-	X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* works if we start outside the rlo bounds */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	last_nogap = NEG_INFINITY_16;
-	rlo = rlo_floor;
-
-      } else {
-	/* second or greater block of 8 */
-	X_prev_nogap = _mm_set1_epi16(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	last_nogap = NEG_INFINITY_16;
-	rlo = rlo_floor;
-      }
-
-      if ((rhigh = c + lband) > rlength) {
-	rhigh = rlength;
-	rhigh_ceil = (int) ((rhigh + SIMD_NSHORTS - 1)/SIMD_NSHORTS) * SIMD_NSHORTS;
-	E_mask_bottom = bottom_masks[0];
-      } else {
-	rhigh_ceil = (int) ((rhigh + SIMD_NSHORTS - 1)/SIMD_NSHORTS) * SIMD_NSHORTS;
-	E_mask_bottom = bottom_masks[rhigh_ceil-rhigh+1];
-      }
-
-      if (rhigh_ceil > max_rhigh_filled) {
-	for (r = max_rhigh_filled; r <= rhigh_ceil; r++) {
-	  if (r > lband) {
-	    matrix[c-1][r] = NEG_INFINITY_16;
-	  } else if (rpenalty < NEG_INFINITY_16) {
-	    /* Unlikely */
-	    matrix[c-1][r] = NEG_INFINITY_16;
-	    rpenalty += extend;
-	  } else {
-	    matrix[c-1][r] = rpenalty;
-	    rpenalty += extend;
-	  }
-	}
-	max_rhigh_filled = r;
-      }
-
-
-      for (r = rlo; r <= rhigh; r += SIMD_NSHORTS) {
-	/* Load previous E vector at this point in the query sequence */
-	/* H vector already loaded before loop or at bottom of loop */
-	E_r_gap = _mm_load_si128(&(EE[(r-1)/SIMD_NSHORTS]));
-	debug15(print_vector_16(E_r_gap,r,c,"E_r_gap"));
-	H_nogap_r = _mm_load_si128((__m128i *) &(matrix[c-1][r]));
-	debug15(print_vector_16(H_nogap_r,r,c,"H_nogap_r load"));
-
-	/* EGAP */
-	T1 = _mm_adds_epi16(H_nogap_r, v_open);
-	dir_horiz = _mm_cmplt_epi16(E_r_gap,T1); /* E < H */
-	dir_horiz = _mm_andnot_si128(dir_horiz,all_one_bits);	/* E >= H, for jump late */
-	_mm_store_si128((__m128i *) &((*directions_Egap)[c][r]),dir_horiz);
-
-	E_r_gap = _mm_max_epi16(E_r_gap, T1); /* Compare H + open with vert */
-	E_r_gap = _mm_adds_epi16(E_r_gap, v_extend); /* Compute scores for Egap (vert + open) */
-	debug15(print_vector_16(E_r_gap,r,c,"E"));
-	if (r + SIMD_NSHORTS > rhigh) {
-	  /* mask last block (e.g., NM_001193336_71_) */
-	  E_r_gap = _mm_min_epi16(E_r_gap, E_mask_bottom); /* To handle band limitation from below */
-	}
-	_mm_store_si128(&(EE[(r-1)/SIMD_NSHORTS]), E_r_gap);
-
-
-	/* NOGAP */
-	T1 = _mm_srli_si128(H_nogap_r,LAST_SHORT);
-	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_SHORT);
-	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
-	X_prev_nogap = T1;
-
-	/* Add pairscores, allowing for alternate genomic nt */
-	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[r-1]));
-	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[r-1]));
-	H_nogap_r = _mm_adds_epi16(H_nogap_r, _mm_max_epi16(pairscores_std,pairscores_alt));
-	debug15(print_vector_16(H_nogap_r,r,c,"H"));
-
-	dir_horiz = _mm_cmplt_epi16(E_r_gap,H_nogap_r); /* E < H */
-	dir_horiz = _mm_andnot_si128(dir_horiz,all_one_bits);	/* E >= H, for jump late */
-	_mm_store_si128((__m128i *) &((*directions_nogap)[c][r]),dir_horiz);
-
-	H_nogap_r = _mm_max_epi16(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
-	debug15(print_vector_16(H_nogap_r,r,c,"H_nogap_r store"));
-	_mm_store_si128((__m128i *) &(score_column[r]), H_nogap_r);
-      }
-
-      /* Perform F loop on entire column */
-      _mm_lfence();		/* Transition to non-SIMD code */
-      if ((rlo = c - uband) < 1) {
-	rlo = 1;
-      }
-      /* Use same rhigh as computed previously */
-
-      c_gap = NEG_INFINITY_16;
-      score_ptr = &(score_column[rlo]);
-      for (r = rlo; r <= rhigh; r++) {
-
-	/* FGAP */
-	debug2(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend));
-	if (c_gap /* + extend */ >= (score = last_nogap + open /* + extend */)) {  /* Use >= for jump late */
-	  c_gap += extend;
-	  (*directions_Fgap)[c][r] = VERT;
-	} else {
-	  c_gap = score + extend;
-	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
-	}
-
-	/* NOGAP */
-	last_nogap = *score_ptr;
-	debug2(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap));
-	if (c_gap >= last_nogap) {  /* Use >= for jump late */
-	  last_nogap = c_gap;
-#if 0
-	  /* Should not go past NEG_INFINITY_16 for reasonable matrix sizes */
-	  *score_ptr = (c_gap < NEG_INFINITY_16) ? NEG_INFINITY_16 : (Score16_T) c_gap; /* Saturation */
-#else
-	  *score_ptr = c_gap;
-#endif
-	  (*directions_nogap)[c][r] = VERT;
-	}
-	score_ptr++;
-      }
-    }
-
-  } else {
-    /* jump early */
-    penalty = rpenalty = open + extend;
-    for (c = 1; c <= glength; c++) {
-      score_column = matrix[c];
-      if (gsequence) {
-	na2 = revp ? gsequence[1-c] : gsequence[c-1];
-	na2_alt = revp ? gsequence_alt[1-c] : gsequence_alt[c-1];
-      } else if (revp == false) {
-	na2 = get_genomic_nt(&na2_alt,goffset+c-1,chroffset,chrhigh,watsonp);
-      } else {
-	na2 = get_genomic_nt(&na2_alt,goffset+1-c,chroffset,chrhigh,watsonp);
-      }
-      switch (na2) {
-      case 'A': pairscores_std_ptr = pairscores[0]; break;
-      case 'C': pairscores_std_ptr = pairscores[1]; break;
-      case 'G': pairscores_std_ptr = pairscores[2]; break;
-      case 'T': pairscores_std_ptr = pairscores[3]; break;
-      default: pairscores_std_ptr = pairscores[4];
-      }
-      switch (na2_alt) {
-      case 'A': pairscores_alt_ptr = pairscores[0]; break;
-      case 'C': pairscores_alt_ptr = pairscores[1]; break;
-      case 'G': pairscores_alt_ptr = pairscores[2]; break;
-      case 'T': pairscores_alt_ptr = pairscores[3]; break;
-      default: pairscores_alt_ptr = pairscores[4];
-      }
-
-      if (c == 1) {
-	rlo = 1;
-	X_prev_nogap = _mm_set1_epi16(0);
-	last_nogap = penalty;
-
-      } else if ((rlo = c - uband) < 1) {
-	rlo = 1;
-	if (penalty < NEG_INFINITY_16) {
-	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* Unlikely */
-	} else {
-	  X_prev_nogap = _mm_set1_epi16(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	penalty += extend;
-	last_nogap = penalty;
-      
-      } else if (rlo == 1) {
-	if (penalty < NEG_INFINITY_16) {
-	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* Unlikely */
-	} else {
-	  X_prev_nogap = _mm_set1_epi16(penalty);
-	}
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	/* penalty += extend; */
-	last_nogap = NEG_INFINITY_16;
-
-      } else if ((rlo_floor = (int)((rlo - 1)/SIMD_NSHORTS) * SIMD_NSHORTS + 1) == 1) {
-	/* first block of 8 */
-	X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* works if we start outside the rlo bounds */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	last_nogap = NEG_INFINITY_16;
-	rlo = rlo_floor;
-
-      } else {
-	/* second or greater block of 8 */
-	X_prev_nogap = _mm_set1_epi16(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
-	X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
-	last_nogap = NEG_INFINITY_16;
-	rlo = rlo_floor;
-      }
-
-      if ((rhigh = c + lband) > rlength) {
-	rhigh = rlength;
-	rhigh_ceil = (int) ((rhigh + SIMD_NSHORTS - 1)/SIMD_NSHORTS) * SIMD_NSHORTS;
-	E_mask_bottom = bottom_masks[0];
-      } else {
-	rhigh_ceil = (int) ((rhigh + SIMD_NSHORTS - 1)/SIMD_NSHORTS) * SIMD_NSHORTS;
-	E_mask_bottom = bottom_masks[rhigh_ceil-rhigh+1];
-      }
-
-      if (rhigh_ceil > max_rhigh_filled) {
-	for (r = max_rhigh_filled; r <= rhigh_ceil; r++) {
-	  if (r > lband) {
-	    matrix[c-1][r] = NEG_INFINITY_16;
-	  } else if (rpenalty < NEG_INFINITY_16) {
-	    /* Unlikely */
-	    matrix[c-1][r] = NEG_INFINITY_16;
-	    rpenalty += extend;
-	  } else {
-	    matrix[c-1][r] = rpenalty;
-	    rpenalty += extend;
-	  }
-	}
-	max_rhigh_filled = r;
-      }
-
-
-      for (r = rlo; r <= rhigh; r += SIMD_NSHORTS) {
-	/* Load previous E vector at this point in the query sequence */
-	/* H vector already loaded before loop or at bottom of loop */
-	E_r_gap = _mm_load_si128(&(EE[(r-1)/SIMD_NSHORTS]));
-	debug15(print_vector_16(E_r_gap,r,c,"E_r_gap"));
-	H_nogap_r = _mm_load_si128((__m128i *) &(matrix[c-1][r]));
-	debug15(print_vector_16(H_nogap_r,r,c,"H_nogap_r load"));
-
-	/* EGAP */
-	T1 = _mm_adds_epi16(H_nogap_r, v_open);
-	dir_horiz = _mm_cmpgt_epi16(E_r_gap,T1); /* E > H, for jump early */
-	_mm_store_si128((__m128i *) &((*directions_Egap)[c][r]),dir_horiz);
-
-	E_r_gap = _mm_max_epi16(E_r_gap, T1); /* Compare H + open with vert */
-	E_r_gap = _mm_adds_epi16(E_r_gap, v_extend); /* Compute scores for Egap (vert + open) */
-	debug15(print_vector_16(E_r_gap,r,c,"E"));
-	if (r + SIMD_NSHORTS > rhigh) {
-	  /* mask last block (e.g., NM_001193336_71_) */
-	  E_r_gap = _mm_min_epi16(E_r_gap, E_mask_bottom); /* To handle band limitation from below */
-	}
-	_mm_store_si128(&(EE[(r-1)/SIMD_NSHORTS]), E_r_gap);
-
-
-	/* NOGAP */
-	T1 = _mm_srli_si128(H_nogap_r,LAST_SHORT);
-	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_SHORT);
-	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
-	X_prev_nogap = T1;
-
-	/* Add pairscores, allowing for alternate genomic nt */
-	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[r-1]));
-	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[r-1]));
-	H_nogap_r = _mm_adds_epi16(H_nogap_r, _mm_max_epi16(pairscores_std,pairscores_alt));
-	debug15(print_vector_16(H_nogap_r,r,c,"H"));
-
-	dir_horiz = _mm_cmpgt_epi16(E_r_gap,H_nogap_r); /* E > H, for jump early */
-	_mm_store_si128((__m128i *) &((*directions_nogap)[c][r]),dir_horiz);
-
-	H_nogap_r = _mm_max_epi16(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
-	debug15(print_vector_16(H_nogap_r,r,c,"H_nogap_r store"));
-	_mm_store_si128((__m128i *) &(score_column[r]), H_nogap_r);
-      }
-
-      /* Perform F loop on entire column */
-      _mm_lfence();		/* Transition to non-SIMD code */
-      if ((rlo = c - uband) < 1) {
-	rlo = 1;
-      }
-      /* Use same rhigh as computed previously */
-
-      c_gap = NEG_INFINITY_16;
-      score_ptr = &(score_column[rlo]);
-      for (r = rlo; r <= rhigh; r++) {
-
-	/* FGAP */
-	debug2(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",r,c,c_gap + extend,last_nogap + open + extend));
-	if (c_gap /* + extend */ > (score = last_nogap + open /* + extend */)) {  /* Use > for jump early */
-	  c_gap += extend;
-	  (*directions_Fgap)[c][r] = VERT;
-	} else {
-	  c_gap = score + extend;
-	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
-	}
-
-	/* NOGAP */
-	last_nogap = *score_ptr;
-	debug2(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap));
-	if (c_gap > last_nogap) {  /* Use > for jump early */
-	  last_nogap = c_gap;
-#if 0
-	  /* Should not go past NEG_INFINITY_16 for reasonable matrix sizes */
-	  *score_ptr = (c_gap < NEG_INFINITY_16) ? NEG_INFINITY_16 : (Score16_T) c_gap; /* Saturation */
-#else
-	  *score_ptr = c_gap;
-#endif
-	  (*directions_nogap)[c][r] = VERT;
-	}
-	score_ptr++;
-      }
-    }
-  }
-
-#ifdef DEBUG2
-  printf("SIMD\n");
-  Matrix16_print(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
-		 goffset,chroffset,chrhigh,watsonp,revp);
-  Directions16_print(*directions_nogap,*directions_Egap,*directions_Fgap,
-		     rlength,glength,rsequence,gsequence,gsequence_alt,
-		     goffset,chroffset,chrhigh,watsonp,revp);
-#endif
-
-#ifdef DEBUG14
-  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,&directions_Fgap_std,
-				       this,rsequence,gsequence,gsequence_alt,goffset,rlength,glength,
-				       chroffset,chrhigh,watsonp,mismatchtype,
-				       open,extend,lband,uband,jump_late_p,revp);
-
-#ifdef DEBUG2
-  printf("Banded\n");
-  Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
-		 goffset,chroffset,chrhigh,watsonp,revp);
-  Directions32_print(directions_nogap_std,directions_Egap_std,directions_Fgap_std,
-		     rlength,glength,rsequence,gsequence,gsequence_alt,
-		     goffset,chroffset,chrhigh,watsonp,revp);
-#endif
-  
-  banded_matrix16_compare(matrix,matrix_std,rlength,glength,lband,uband,
-			  rsequence,gsequence,gsequence_alt,
-			  goffset,chroffset,chrhigh,watsonp,revp);
-
-  banded_directions16_compare_nogap(*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
-
-  banded_directions16_compare_Egap(*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
-
-  banded_directions16_compare_Fgap(*directions_Fgap,directions_Fgap_std,rlength,glength,lband,uband);
-#endif
-
-  _mm_free(EE);
-  _mm_free(pairscores[4]);
-  _mm_free(pairscores[3]);
-  _mm_free(pairscores[2]);
-  _mm_free(pairscores[1]);
-  _mm_free(pairscores[0]);
-
-  return matrix;
-}
-#endif
-
-
-#if 0
-static Score16_T **
-compute_scores (Direction16_T ***directions, Score_T ***jump, T this, 
-		char *rsequence, char *gsequence, bool revp, 
-		int rlength, int glength, Mismatchtype_T mismatchtype,
-		Score_T open, Score_T extend, bool init_jump_penalty_p,
-		int extraband, bool widebandp, bool onesidegapp, bool jump_late_p) {
-  Score_T **matrix;
-  int r, c, r1, c1, na1, na2, j;
-  Score_T bestscore, score, bestjump;
-  Direction16_T bestdir;
-  int lband, uband, clo, chigh, rlo;
-  Pairdistance_T **pairdistance_array_type;
-
-  pairdistance_array_type = pairdistance_array[mismatchtype];
-
-  if (widebandp == false) {
-    /* Just go along main diagonal */
-    lband = extraband;
-    uband = extraband;
-  } else if (glength >= rlength) {
-    /* Widen band to right to reach destination */
-    uband = glength - rlength + extraband;
-    lband = extraband;
-  } else {
-    /* Widen band to left to reach destination */
-    lband = rlength - glength + extraband;
-    uband = extraband;
-  }
-
-  matrix = Matrix16_alloc(rlength,glength,this->matrix_ptrs,this->matrix_space);
-  *directions = Directions16_alloc(rlength,glength,this->directions_ptrs,this->directions_space);
-  *jump = Matrix16_alloc(rlength,glength,this->jump_ptrs,this->jump_space);
-
-  matrix[0][0] = 0;
-  /* (*directions)[0][0] = STOP; -- Check for r > 0 && c > 0 instead */
-  (*jump)[0][0] = 0;
-
-  /* Row 0 initialization */
-  if (init_jump_penalty_p == true) {
-    for (c = 1; c <= uband && c <= glength; c++) {
-      matrix[0][c] = jump_penalty(c,open,extend);
-      (*directions)[0][c] = HORIZ;
-      (*jump)[0][c] = c;
-    }
-  } else {
-    for (c = 1; c <= uband && c <= glength; c++) {
-      matrix[0][c] = SINGLE_OPEN_HIGHQ;	/* Needs to be less than 0 to prevent gap and then a single match */
-      (*directions)[0][c] = HORIZ;
-      (*jump)[0][c] = c;
-    }
-  }
-
-  /* Column 0 initialization */
-  if (init_jump_penalty_p == true) {
-    for (r = 1; r <= lband && r <= rlength; r++) {
-      matrix[r][0] = jump_penalty(r,open,extend);
-      (*directions)[r][0] = VERT;
-      (*jump)[r][0] = r;
-    }
-  } else {
-    for (r = 1; r <= lband && r <= rlength; r++) {
-      matrix[r][0] = SINGLE_OPEN_HIGHQ;	/* Needs to be less than 0 to prevent gap and then a single match */
-      (*directions)[r][0] = VERT;
-      (*jump)[r][0] = r;
-    }
-  }
-
-  for (r = 1; r <= rlength; r++) {
-    na1 = revp ? rsequence[1-r] : rsequence[r-1];
-
-    if ((clo = r - lband) < 1) {
-      clo = 1;
-    }
-    if ((chigh = r + uband) > glength) {
-      chigh = glength;
-    }
-    for (c = clo; c <= chigh; c++) {
-      na2 = revp ? gsequence[1-c] : gsequence[c-1];
-
-      /* Diagonal case */
-      bestscore = matrix[r-1][c-1] + pairdistance_array_type[na1][na2];
-      bestdir = DIAG;
-      bestjump = 1;
-      
-      /* Horizontal case */
-      if (onesidegapp == true) {
-	/* Don't allow horizontal jumps below the main diagonal, and
-	   don't cross the main diagonal */
-	if (r <= c) {
-	  for (c1 = c-1, j = 1; c1 >= r; c1--, j++) {
-	    score = matrix[r][c1] + jump_penalty(j,open,extend);
-	    if (score > bestscore || (score == bestscore && jump_late_p)) {
-	      bestscore = score;
-	      bestdir = HORIZ;
-	      bestjump = j;
-	    }
-	  }
-	}
-      } else {
-	for (c1 = c-1, j = 1; c1 >= clo; c1--, j++) {
-	  if ((*directions)[r][c1] == DIAG) {
-	    score = matrix[r][c1] + jump_penalty(j,open,extend);
-	    if (score > bestscore || (score == bestscore && jump_late_p)) {
-	      bestscore = score;
-	      bestdir = HORIZ;
-	      bestjump = j;
-	    }
-#ifdef RIGHTANGLE
-	  } else if ((*directions)[r][c1] == VERT && (*jump)[r][c1] >= 3) {
-	    fprintf(stderr,"Error.  Not allowed to check for dir == VERT.\n");
-	    abort();
-	    score = matrix[r][c1] + jump_penalty(j,open,extend) - open;
-	    if (score > bestscore || (score == bestscore && jump_late_p)) {
-	      bestscore = score;
-	      bestdir = HORIZ;
-	      bestjump = j;
-	    }
-#endif
-	  }
-	}
-      }
-
-      /* Vertical case */
-      if (onesidegapp == true) {
-	/* Don't allow vertical jumps above the main diagonal, and don't
-	   cross the main diagonal */
-	if (c <= r) {
-	  for (r1 = r-1, j = 1; r1 >= c; r1--, j++) {
-	    score = matrix[r1][c] + jump_penalty(j,open,extend);
-	    if (score > bestscore || (score == bestscore && jump_late_p)) {
-	      bestscore = score;
-	      bestdir = VERT;
-	      bestjump = j;
-	    }
-	  }
-	}
-      } else {
-	if ((rlo = c+c-uband-r) < 1) {
-	  rlo = 1;
-	}
-	for (r1 = r-1, j = 1; r1 >= rlo; r1--, j++) {
-	  if ((*directions)[r1][c] == DIAG) {
-	    score = matrix[r1][c] + jump_penalty(j,open,extend);
-	    if (score > bestscore || (score == bestscore && jump_late_p)) {
-	      bestscore = score;
-	      bestdir = VERT;
-	      bestjump = j;
-	    }
-#ifdef RIGHTANGLE
-	  } else if ((*directions)[r1][c] == HORIZ && (*jump)[r1][c] >= 3) {
-	    score = matrix[r1][c] + jump_penalty(j,open,extend) - open;
-	    if (score > bestscore || (score == bestscore && jump_late_p)) {
-	      bestscore = score;
-	      bestdir = VERT;
-	      bestjump = j;
-	    }
-#endif
-	  }
-	}
-      }
-
-      /*
-	debug(printf("At %d,%d, scoreV = %d, scoreH = %d, scoreD = %d\n",
-	r,c,scoreV,scoreH,scoreD));
-      */
-      
-      /* Update */
-      matrix[r][c] = bestscore;
-      (*directions)[r][c] = bestdir;
-      (*jump)[r][c] = bestjump;
-    }
-  }
-
-  debug2(Matrix16_print(matrix,rlength,glength));
-  debug2(Directions16_print(*directions,*jump,rlength,glength,rsequence,gsequence,revp));
-
-  return matrix;
-}
-#endif
-
-
-#ifdef HAVE_SSE4_1
-static void
-find_best_endpoint_8 (int *finalscore, int *bestr, int *bestc, Score8_T **matrix, 
-		      int rlength, int glength, int extraband_end_or_paired,
-		      bool jump_late_p) {
-  Score8_T bestscore = 0;
-  int r, c;
-  int uband, lband, clo, chigh;
-  /* No need for loffset or cmid because they apply only for cdnaend
-     == FIVE, which doesn't require searching */
-
-  *bestr = *bestc = 0;
-
-  /* Just go along main diagonal */
-  uband = extraband_end_or_paired;
-  lband = extraband_end_or_paired;
-
-  if (jump_late_p == false) {
-    /* use > bestscore */
-    for (r = 1; r <= rlength; r++) {
-      if ((clo = r - lband) < 1) {
-	clo = 1;
-      }
-      if ((chigh = r + uband) > glength) {
-	chigh = glength;
-      }
-      for (c = clo; c <= chigh; c++) {
-	if (matrix[c][r] > bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-  } else {
-    /* use >= bestscore */
-    for (r = 1; r <= rlength; r++) {
-      if ((clo = r - lband) < 1) {
-	clo = 1;
-      }
-      if ((chigh = r + uband) > glength) {
-	chigh = glength;
-      }
-      for (c = clo; c <= chigh; c++) {
-	if (matrix[c][r] >= bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-  }
-
-
-  *finalscore = (int) bestscore;
-  return;
-}
-#endif
-
-static void
-find_best_endpoint (int *finalscore, int *bestr, int *bestc,
-#ifdef HAVE_SSE2
-		    Score16_T **matrix, 
-#else
-		    Score32_T **matrix,
-#endif
-		    int rlength, int glength, int extraband_end_or_paired,
-		    bool jump_late_p) {
-#ifdef HAVE_SSE2
-  Score16_T bestscore = 0;
-#else
-  Score32_T bestscore = 0;
-#endif
-  int r, c;
-  int uband, lband, clo, chigh;
-  /* No need for loffset or cmid because they apply only for cdnaend
-     == FIVE, which doesn't require searching */
-
-  *bestr = *bestc = 0;
-
-  /* Just go along main diagonal */
-  uband = extraband_end_or_paired;
-  lband = extraband_end_or_paired;
-
-  if (jump_late_p == false) {
-    /* use > bestscore */
-    for (r = 1; r <= rlength; r++) {
-      if ((clo = r - lband) < 1) {
-	clo = 1;
-      }
-      if ((chigh = r + uband) > glength) {
-	chigh = glength;
-      }
-      for (c = clo; c <= chigh; c++) {
-	if (matrix[c][r] > bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-  } else {
-    /* use >= bestscore */
-    for (r = 1; r <= rlength; r++) {
-      if ((clo = r - lband) < 1) {
-	clo = 1;
-      }
-      if ((chigh = r + uband) > glength) {
-	chigh = glength;
-      }
-      for (c = clo; c <= chigh; c++) {
-	if (matrix[c][r] >= bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-  }
-
-
-  *finalscore = (int) bestscore;
-  return;
-}
-
-
-#ifdef HAVE_SSE4_1
-static void
-find_best_endpoint_to_queryend_indels_8 (int *finalscore, int *bestr, int *bestc, Score8_T **matrix, 
-					 int rlength, int glength, int extraband_end_or_paired,
-					 bool jump_late_p) {
-  Score8_T bestscore = NEG_INFINITY_8;
-  int r, c;
-  int uband, lband, clo, chigh;
-  /* No need for loffset or cmid because they apply only for cdnaend
-     == FIVE, which doesn't require searching */
-
-  if (glength >= rlength) {
-    /* Widen band to right to reach destination */
-    uband = glength - rlength + extraband_end_or_paired;
-    lband = extraband_end_or_paired;
-  } else {
-    /* Widen band to left to reach destination */
-    lband = rlength - glength + extraband_end_or_paired;
-    uband = extraband_end_or_paired;
-  }
-
-  *bestr = r = rlength;
-  *bestc = 0;
-
-  if (jump_late_p == false) {
-    if ((clo = r - lband) < 1) {
-      clo = 1;
-    }
-    if ((chigh = r + uband) > glength) {
-      chigh = glength;
-    }
-    if (clo <= chigh) {
-      for (c = clo; c <= chigh; c++) {
-	/* use > bestscore */
-	if (matrix[c][r] > bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-
-  } else {
-    if ((clo = r - lband) < 1) {
-      clo = 1;
-    }
-    if ((chigh = r + uband) > glength) {
-      chigh = glength;
-    }
-    if (clo <= chigh) {
-      for (c = clo; c <= chigh; c++) {
-	/* use >= bestscore */
-	if (matrix[c][r] >= bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-  }
-
-  *finalscore = (int) bestscore;
-  return;
-}
-#endif
-
-
-static void
-find_best_endpoint_to_queryend_indels (int *finalscore, int *bestr, int *bestc,
-#ifdef HAVE_SSE2
-				       Score16_T **matrix, 
-#else
-				       Score32_T **matrix, 
-#endif
-				       int rlength, int glength, int extraband_end_or_paired,
-				       bool jump_late_p) {
-#ifdef HAVE_SSE2
-  Score16_T bestscore = NEG_INFINITY_16;
-#else
-  Score32_T bestscore = NEG_INFINITY_32;
-#endif
-  int r, c;
-  int uband, lband, clo, chigh;
-  /* No need for loffset or cmid because they apply only for cdnaend
-     == FIVE, which doesn't require searching */
-
-  if (glength >= rlength) {
-    /* Widen band to right to reach destination */
-    uband = glength - rlength + extraband_end_or_paired;
-    lband = extraband_end_or_paired;
-  } else {
-    /* Widen band to left to reach destination */
-    lband = rlength - glength + extraband_end_or_paired;
-    uband = extraband_end_or_paired;
-  }
-
-  *bestr = r = rlength;
-  *bestc = 0;
-
-  if (jump_late_p == false) {
-    if ((clo = r - lband) < 1) {
-      clo = 1;
-    }
-    if ((chigh = r + uband) > glength) {
-      chigh = glength;
-    }
-    if (clo <= chigh) {
-      for (c = clo; c <= chigh; c++) {
-	/* use > bestscore */
-	if (matrix[c][r] > bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-
-  } else {
-    if ((clo = r - lband) < 1) {
-      clo = 1;
-    }
-    if ((chigh = r + uband) > glength) {
-      chigh = glength;
-    }
-    if (clo <= chigh) {
-      for (c = clo; c <= chigh; c++) {
-	/* use >= bestscore */
-	if (matrix[c][r] >= bestscore) {
-	  *bestr = r;
-	  *bestc = c;
-	  bestscore = matrix[c][r];
-	}
-      }
-    }
-  }
-
-  *finalscore = (int) bestscore;
-  return;
-}
-
-
-static void
-find_best_endpoint_to_queryend_nogaps (int *bestr, int *bestc, int rlength, int glength) {
-  if (glength < rlength) {
-    *bestr = glength;
-    *bestc = glength;
-  } else {
-    *bestr = rlength;
-    *bestc = rlength;
-  }
-
-  return;
-}
-
-
-static List_T
-add_queryskip (List_T pairs, int r, int c, int dist, char *querysequence,
-	       int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp, int dynprogindex) {
-  int j;
-  char c1;
-  int querycoord, genomecoord, step;
-
-  querycoord = r-1;
-  genomecoord = c-1;
-
-  if (revp == true) {
-    querycoord = -querycoord;
-    genomecoord = -genomecoord;
-    step = +1;
-  } else {
-    /* Advance to next genomepos */
-    genomecoord++;
-    step = -1;
-  }
-
-  for (j = 0; j < dist; j++) {
-    c1 = querysequence[querycoord];
-    debug(printf("Pushing %d,%d [%d,%d] (%c,-), ",r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1));
-    pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			  c1,INDEL_COMP,/*genome*/' ',/*genomealt*/' ',dynprogindex);
-    debug(r--);
-    querycoord += step;
-  }
-
-  return pairs;
-}
-
-
-static List_T
-add_genomeskip (bool *add_dashes_p, List_T pairs, int r, int c, int dist,
-		char *genomesequence, char *genomesequenceuc,
-		int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-		Univcoord_T chroffset, Univcoord_T chrhigh,
-		int cdna_direction, bool watsonp, int dynprogindex, bool use_genomicseg_p) {
-  int j;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt, c2, c2_alt;
-  int introntype;
-  int querycoord, leftgenomecoord, rightgenomecoord, genomecoord, temp, step;
-
-  querycoord = r-1;
-  leftgenomecoord = c-dist;
-  rightgenomecoord = c-1;
-
-  if (revp == true) {
-    querycoord = -querycoord;
-    temp = leftgenomecoord;
-    leftgenomecoord = -rightgenomecoord;
-    rightgenomecoord = -temp;
-    step = +1;
-  } else {
-    /* Advance to next querypos */
-    querycoord++;
-    step = -1;
-  }
-
-  if (dist < MICROINTRON_LENGTH) {
-    *add_dashes_p = true;
-  } else {
-    /* Check for intron */
-    if (use_genomicseg_p) {
-      left1 = left1_alt = genomesequenceuc[leftgenomecoord];
-      left2 = left2_alt = genomesequenceuc[leftgenomecoord+1];
-      right2 = right2_alt = genomesequenceuc[rightgenomecoord-1];
-      right1 = right1_alt = genomesequenceuc[rightgenomecoord];
-    } else {
-      left1 = get_genomic_nt(&left1_alt,genomeoffset+leftgenomecoord,chroffset,chrhigh,watsonp);
-      left2 = get_genomic_nt(&left2_alt,genomeoffset+leftgenomecoord+1,chroffset,chrhigh,watsonp);
-      right2 = get_genomic_nt(&right2_alt,genomeoffset+rightgenomecoord-1,chroffset,chrhigh,watsonp);
-      right1 = get_genomic_nt(&right1_alt,genomeoffset+rightgenomecoord,chroffset,chrhigh,watsonp);
-    }
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == genomesequenceuc[leftgenomecoord]);
-    assert(left2 == genomesequenceuc[leftgenomecoord+1]);
-    assert(right2 == genomesequenceuc[rightgenomecoord-1]);
-    assert(right1 == genomesequenceuc[rightgenomecoord]);
-#endif
-	
-#ifdef PMAP
-    introntype = Intron_type(left1,left2,right2,right1,
-			     left1_alt,left2_alt,right2_alt,right1_alt,
-			     /*cdna_direction*/+1);
-#else
-    introntype = Intron_type(left1,left2,right2,right1,
-			     left1_alt,left2_alt,right2_alt,right1_alt,
-			     cdna_direction);
-#endif
-    if (introntype == NONINTRON) {
-      *add_dashes_p = true;
-    } else {
-      *add_dashes_p = false;
-    }
-  }
-
-  if (*add_dashes_p == true) {
-    if (revp == true) {
-      genomecoord = leftgenomecoord;
-    } else {
-      genomecoord = rightgenomecoord;
-    }
-    for (j = 0; j < dist; j++) {
-      if (use_genomicseg_p) {
-	c2 = c2_alt = genomesequence[genomecoord];
-      } else {
-	c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
-      }
-#ifdef EXTRACT_GENOMICSEG
-      assert(c2 == genomesequence[genomecoord]);
-#endif
-
-      debug(printf("Pushing %d,%d [%d,%d] (-,%c),",r,c,queryoffset+querycoord,genomeoffset+genomecoord,c2));
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    ' ',INDEL_COMP,c2,c2_alt,dynprogindex);
-      debug(c--);
-      genomecoord += step;
-    }
-  } else {
-    debug(printf("Large gap %c%c..%c%c.  Adding gap of type %d.\n",
-		 left1,left2,right2,right1,introntype));
-#ifndef NOGAPHOLDER
-#if 0
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/dist,/*knownp*/false);
-#endif
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-#endif
-  }
-  
-  return pairs;
-}
-
-
-/* Preferences: Continue in same direction if possible.  This has the
-   effect of extending gaps to maximum size. Then, take diagonal if
-   possible. Finally, take vertical if possible, because this will use
-   up sequence 1, which is the query (cDNA) sequence. */
-
-#if 0
-/* revp means both rev1p and rev2p, which must have equal values */
-/* Iterative version */
-static List_T
-traceback_genomicseg (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		      struct Direction3_T **directions, int r, int c, 
-		      char *querysequence, char *querysequenceuc, char *genomesequence, char *genomesequenceuc,
-		      int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-		      Univcoord_T chroffset, Univcoord_T chrhigh,
-		      int cdna_direction, bool watsonp, int dynprogindex, bool use_genomicseg_p) {
-  char c1, c2, c2_alt;
-  int dist;
-  bool add_dashes_p;
-  int querycoord, genomecoord;
-
-  debug(printf("Starting traceback at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
-
-  while (r > 0 && c > 0) {  /* directions[c][r].nogap != STOP */
-    querycoord = r-1;
-    genomecoord = c-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    if (use_genomicseg_p) {
-      c2 = c2_alt = genomesequence[genomecoord];
-    } else {
-      c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
-    }
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomesequence[genomecoord]);
-#endif
-
-    if (c2 == '*') {
-      /* Don't push pairs past end of chromosome */
-
-    } else if (querysequenceuc[querycoord] == c2) {
-      debug(printf("D1: Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug(printf("D1: Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug(printf("D1: Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-
-    if (directions[c][r].nogap == DIAG) {
-      r--; c--;
-
-    } else if (directions[c][r].nogap == HORIZ) {
-      dist = 1;
-      r--; c--;
-      while (c > 1 && directions[c][r].Egap != DIAG) {
-	dist++;
-	c--;
-      }
-      c--;
-
-      debug(printf("H%d: ",dist));
-      pairs = add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,genomesequence,genomesequenceuc,
-			     queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			     cdna_direction,watsonp,dynprogindex,use_genomicseg_p);
-      if (add_dashes_p == true) {
-	*nopens += 1;
-	*nindels += dist;
-      }
-      debug(printf("\n"));
-
-    } else {
-      /* Must be VERT */
-      dist = 1;
-      r--; c--;
-      while (r > 1 && directions[c][r].Fgap != DIAG) {
-	dist++;
-	r--;
-      }
-      r--;
-
-      debug(printf("V%d: ",dist));
-      pairs = add_queryskip(pairs,r+dist,c,dist,querysequence,
-			    queryoffset,genomeoffset,pairpool,revp,
-			    dynprogindex);
-      *nopens += 1;
-      *nindels += dist;
-      debug(printf("\n"));
-    }
-
-  }
-  return pairs;
-}
-#endif
-
-
-#if 0
-static List_T
-traceback_prev (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		struct Direction3_T **directions, int r, int c, 
-		char *querysequence, char *querysequenceuc,
-		int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-		Univcoord_T chroffset, Univcoord_T chrhigh,
-		int cdna_direction, bool watsonp, int dynprogindex) {
-  char c1, c2, c2_alt;
-  int dist;
-  bool add_dashes_p;
-  int querycoord, genomecoord;
-
-  debug(printf("Starting traceback at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
-
-  while (r > 0 && c > 0) {  /* directions[c][r].nogap != STOP */
-    querycoord = r-1;
-    genomecoord = c-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomesequence[genomecoord]);
-#endif
-
-    if (c2 == '*') {
-      /* Don't push pairs past end of chromosome */
-      debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
-		   genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
-
-    } else if (querysequenceuc[querycoord] == c2) {
-      debug(printf("D1: Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug(printf("D1: Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug(printf("D1: Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-
-    if (directions[c][r].nogap == DIAG) {
-      r--; c--;
-
-    } else if (directions[c][r].nogap == HORIZ) {
-      dist = 1;
-      r--; c--;
-      while (c > 1 && directions[c][r].Egap != DIAG) {
-	dist++;
-	c--;
-      }
-      c--;
-
-      debug(printf("H%d: ",dist));
-      pairs = add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
-			     /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
-			     queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			     cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
-      if (add_dashes_p == true) {
-	*nopens += 1;
-	*nindels += dist;
-      }
-      debug(printf("\n"));
-
-    } else {
-      /* Must be VERT */
-      dist = 1;
-      r--; c--;
-      while (r > 1 && directions[c][r].Fgap != DIAG) {
-	dist++;
-	r--;
-      }
-      r--;
-
-      debug(printf("V%d: ",dist));
-      pairs = add_queryskip(pairs,r+dist,c,dist,querysequence,
-			    queryoffset,genomeoffset,pairpool,revp,
-			    dynprogindex);
-      *nopens += 1;
-      *nindels += dist;
-      debug(printf("\n"));
-    }
-
-  }
-  return pairs;
-}
-#endif
-
-
-#ifdef HAVE_SSE4_1
-static List_T
-traceback_8 (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-	     Direction8_T **directions_nogap, Direction8_T **directions_Egap, Direction8_T **directions_Fgap,
-	     int r, int c, char *querysequence, char *querysequenceuc,
-	     int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-	     Univcoord_T chroffset, Univcoord_T chrhigh,
-	     int cdna_direction, bool watsonp, int dynprogindex) {
-  char c1, c2, c2_alt;
-  int dist;
-  bool add_dashes_p;
-  int querycoord, genomecoord;
-  Direction8_T dir;
-
-  debug(printf("Starting traceback at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
-
-  /* Handle initial indel */
-  if ((dir = directions_nogap[c][r]) == DIAG) {
-    /* Not an indel.  Do nothing. */
-
-  } else if (dir == HORIZ) {
-    dist = 1;
-    while (c > 1 && directions_Egap[c][r] != DIAG) {
-      dist++;
-      c--;
-    }
-    c--;
-    /* dir = directions_nogap[c][r]; */
-
-    debug(printf("H%d: ",dist));
-    pairs = add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
-			   /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
-			   queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			   cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
-    if (add_dashes_p == true) {
-      *nopens += 1;
-      *nindels += dist;
-    }
-    debug(printf("\n"));
-
-  } else {
-    /* Must be VERT */
-    dist = 1;
-    while (r > 1 && directions_Fgap[c][r] != DIAG) {
-      dist++;
-      r--;
-    }
-    r--;
-    /* dir = directions_nogap[c][r]; */
-
-    debug(printf("V%d: ",dist));
-    pairs = add_queryskip(pairs,r+dist,c,dist,querysequence,
-			  queryoffset,genomeoffset,pairpool,revp,
-			  dynprogindex);
-    *nopens += 1;
-    *nindels += dist;
-    debug(printf("\n"));
-  }
-
-  while (r > 0 && c > 0) {  /* dir != STOP */
-    querycoord = r-1;
-    genomecoord = c-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomesequence[genomecoord]);
-#endif
-
-    if (c2 == '*') {
-      /* Don't push pairs past end of chromosome */
-      debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
-		   genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
-
-    } else if (querysequenceuc[querycoord] == c2) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-
-    r--; c--;
-    if (r == 0 && c == 0) {
-      /* STOP condition.  Do nothing. */
-
-    } else if ((dir = directions_nogap[c][r]) == DIAG) {
-      /* Do nothing */
-
-    } else if (dir == HORIZ) {
-      dist = 1;
-      while (c > 1 && directions_Egap[c][r] != DIAG) {
-	dist++;
-	c--;
-      }
-      c--;
-      /* dir = directions_nogap[c][r]; */
-
-      debug(printf("H%d: ",dist));
-      pairs = add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
-			     /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
-			     queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			     cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
-      if (add_dashes_p == true) {
-	*nopens += 1;
-	*nindels += dist;
-      }
-      debug(printf("\n"));
-
-    } else {
-      /* Must be VERT */
-      dist = 1;
-      while (r > 1 && directions_Fgap[c][r] != DIAG) {
-	dist++;
-	r--;
-      }
-      r--;
-      /* dir = directions_nogap[c][r]; */
-
-      debug(printf("V%d: ",dist));
-      pairs = add_queryskip(pairs,r+dist,c,dist,querysequence,
-			    queryoffset,genomeoffset,pairpool,revp,
-			    dynprogindex);
-      *nopens += 1;
-      *nindels += dist;
-      debug(printf("\n"));
-
-    }
-  }
-  return pairs;
-}
-#endif
-
-
-static List_T
-traceback (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-#ifdef HAVE_SSE2
-	   Direction16_T **directions_nogap, Direction16_T **directions_Egap, Direction16_T **directions_Fgap,
-#else
-	   Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
-#endif
-	   int r, int c, char *querysequence, char *querysequenceuc,
-	   int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-	   Univcoord_T chroffset, Univcoord_T chrhigh,
-	   int cdna_direction, bool watsonp, int dynprogindex) {
-  char c1, c2, c2_alt;
-  int dist;
-  bool add_dashes_p;
-  int querycoord, genomecoord;
-#ifdef HAVE_SSE2
-  Direction16_T dir;
-#else
-  Direction32_T dir;
-#endif
-
-  debug(printf("Starting traceback at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
-
-  /* Handle initial indel */
-  if ((dir = directions_nogap[c][r]) == DIAG) {
-    /* Not an indel.  Do nothing. */
-
-  } else if (dir == HORIZ) {
-    dist = 1;
-    while (c > 1 && directions_Egap[c][r] != DIAG) {
-      dist++;
-      c--;
-    }
-    c--;
-    /* dir = directions_nogap[c][r]; */
-
-    debug(printf("H%d: ",dist));
-    pairs = add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
-			   /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
-			   queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			   cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
-    if (add_dashes_p == true) {
-      *nopens += 1;
-      *nindels += dist;
-    }
-    debug(printf("\n"));
-
-  } else {
-    /* Must be VERT */
-    dist = 1;
-    while (r > 1 && directions_Fgap[c][r] != DIAG) {
-      dist++;
-      r--;
-    }
-    r--;
-    /* dir = directions_nogap[c][r]; */
-
-    debug(printf("V%d: ",dist));
-    pairs = add_queryskip(pairs,r+dist,c,dist,querysequence,
-			  queryoffset,genomeoffset,pairpool,revp,
-			  dynprogindex);
-    *nopens += 1;
-    *nindels += dist;
-    debug(printf("\n"));
-  }
-
-  while (r > 0 && c > 0) {  /* dir != STOP */
-    querycoord = r-1;
-    genomecoord = c-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomesequence[genomecoord]);
-#endif
-
-    if (c2 == '*') {
-      /* Don't push pairs past end of chromosome */
-      debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
-		   genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
-
-    } else if (querysequenceuc[querycoord] == c2) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-
-    r--; c--;
-    if (r == 0 && c == 0) {
-      /* STOP condition.  Do nothing. */
-
-    } else if ((dir = directions_nogap[c][r]) == DIAG) {
-      /* Do nothing */
-
-    } else if (dir == HORIZ) {
-      dist = 1;
-      while (c > 1 && directions_Egap[c][r] != DIAG) {
-	dist++;
-	c--;
-      }
-      c--;
-      /* dir = directions_nogap[c][r]; */
-
-      debug(printf("H%d: ",dist));
-      pairs = add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
-			     /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
-			     queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			     cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
-      if (add_dashes_p == true) {
-	*nopens += 1;
-	*nindels += dist;
-      }
-      debug(printf("\n"));
-
-    } else {
-      /* Must be VERT */
-      dist = 1;
-      while (r > 1 && directions_Fgap[c][r] != DIAG) {
-	dist++;
-	r--;
-      }
-      r--;
-      /* dir = directions_nogap[c][r]; */
-
-      debug(printf("V%d: ",dist));
-      pairs = add_queryskip(pairs,r+dist,c,dist,querysequence,
-			    queryoffset,genomeoffset,pairpool,revp,
-			    dynprogindex);
-      *nopens += 1;
-      *nindels += dist;
-      debug(printf("\n"));
-
-    }
-  }
-  return pairs;
-}
-
-
-
-/* revp means both rev1p and rev2p, which must have equal values */
-/* Iterative version */
-static List_T
-traceback_nogaps (List_T pairs, int *nmatches, int *nmismatches,
-		  int r, int c, char *querysequence, char *querysequenceuc,
-		  int queryoffset, int genomeoffset, Pairpool_T pairpool, 
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-		  bool revp, bool watsonp, int dynprogindex) {
-  char c1, c2, c2_alt;
-  int querycoord, genomecoord;
-
-  debug11(printf("Starting traceback_nogaps at r=%d,c=%d (roffset=%d, goffset=%d), revp %d\n",
-		 r,c,queryoffset,genomeoffset,revp));
-
-  /* printf("genome sequence is %s\n",genomesequence); */
-  while (r > 0 && c > 0) {
-    querycoord = r-1;
-    genomecoord = c-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    debug8(printf("genome sequence at %d is %c\n",genomecoord,genomesequence[genomecoord]));
-    assert(c2 == genomesequence[genomecoord]);
-#endif
-
-    if (c2 == '*') {
-      /* Don't push pairs past end of chromosome */
-
-    } else if (querysequenceuc[querycoord] == c2) {
-      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-      
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-    r--; c--;
-  }
-
-  return pairs;
-}
-
-
-#ifdef HAVE_SSE4_1
-static List_T
-traceback_local_8 (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		   Direction8_T **directions_nogap, Direction8_T **directions_Egap, Direction8_T **directions_Fgap,
-		   int *r, int *c, int endc, char *querysequence, char *querysequenceuc,
-		   char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
-		   int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-		   Univcoord_T chroffset, Univcoord_T chrhigh,
-		   int cdna_direction, bool watsonp, int dynprogindex) {
-  char c1, c2, c2_alt;
-  int dist;
-  bool add_dashes_p;
-  int querycoord, genomecoord;
-  Direction8_T dir;
-
-  debug(printf("Starting traceback_local at r=%d,c=%d (roffset=%d, goffset=%d)\n",*r,*c,queryoffset,genomeoffset));
-
-  /* We care only only about genomic coordinate c */
-
-  if (*c <= endc) {
-    /* Do nothing */
-
-  } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
-    /* Not an indel.  Do nothing. */
-
-  } else if (dir == HORIZ) {
-    dist = 1;
-    while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
-      dist++;
-      (*c)--;
-    }
-    (*c)--;
-    /* dir = directions_nogap[*c][*r]; */
-
-    debug(printf("H%d: ",dist));
-    pairs = add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
-			   queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			   cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
-    if (add_dashes_p == true) {
-      *nopens += 1;
-      *nindels += dist;
-    }
-    debug(printf("\n"));
-
-  } else {
-    /* Must be VERT */
-    dist = 1;
-    while (*r > 1 && directions_Fgap[*c][*r] != DIAG) {
-      dist++;
-      (*r)--;
-    }
-    (*r)--;
-    /* dir = directions_nogap[c][r]; */
-
-    debug(printf("V%d: ",dist));
-    pairs = add_queryskip(pairs,(*r)+dist,*c,dist,querysequence,
-			  queryoffset,genomeoffset,pairpool,revp,
-			  dynprogindex);
-    *nopens += 1;
-    *nindels += dist;
-    debug(printf("\n"));
-  }
-
-  while (*r > 0 && *c > endc) {
-    querycoord = (*r)-1;
-    genomecoord = (*c)-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = genomesequence[genomecoord];
-    c2_alt = genomesequencealt[genomecoord];
-
-    if (querysequenceuc[querycoord] == c2) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-
-    (*r)--; (*c)--;
-    if (*r == 0 && *c == 0) {
-      /* STOP condition.  Do nothing. */
-
-    } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
-      /* Do nothing */
-
-    } else if (dir == HORIZ) {
-      dist = 1;
-      while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
-	dist++;
-	(*c)--;
-      }
-      (*c)--;
-      /* dir = directions_nogap[*c][*r]; */
-
-      debug(printf("H%d: ",dist));
-      pairs = add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
-			     queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			     cdna_direction,watsonp,dynprogindex,
-			     /*use_genomicseg_p*/true);
-      if (add_dashes_p == true) {
-	*nopens += 1;
-	*nindels += dist;
-      }
-      debug(printf("\n"));
-
-    } else {
-      /* Must be VERT */
-      dist = 1;
-      while (*r > 1 && directions_Fgap[*c][*r] != DIAG) {
-	dist++;
-	(*r)--;
-      }
-      (*r)--;
-      /* dir = directions_nogap[*c][*r]; */
-
-      debug(printf("V%d: ",dist));
-      pairs = add_queryskip(pairs,(*r)+dist,*c,dist,querysequence,
-			    queryoffset,genomeoffset,pairpool,revp,
-			    dynprogindex);
-      *nopens += 1;
-      *nindels += dist;
-      debug(printf("\n"));
-
-    }
-  }
-
-  return pairs;
-}
-#endif
-
-
-static List_T
-traceback_local (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-#ifdef HAVE_SSE2
-		 Direction16_T **directions_nogap, Direction16_T **directions_Egap, Direction16_T **directions_Fgap,
-#else
-		 Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
-#endif
-		 int *r, int *c, int endc, char *querysequence, char *querysequenceuc,
-		 char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
-		 int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
-		 Univcoord_T chroffset, Univcoord_T chrhigh,
-		 int cdna_direction, bool watsonp, int dynprogindex) {
-  char c1, c2, c2_alt;
-  int dist;
-  bool add_dashes_p;
-  int querycoord, genomecoord;
-#ifdef HAVE_SSE2
-  Direction16_T dir;
-#else
-  Direction32_T dir;
-#endif
-
-  debug(printf("Starting traceback_local at r=%d,c=%d (roffset=%d, goffset=%d)\n",*r,*c,queryoffset,genomeoffset));
-
-  /* We care only only about genomic coordinate c */
-
-  if (*c <= endc) {
-    /* Do nothing */
-
-  } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
-    /* Not an indel.  Do nothing. */
-
-  } else if (dir == HORIZ) {
-    dist = 1;
-    while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
-      dist++;
-      (*c)--;
-    }
-    (*c)--;
-    /* dir = directions_nogap[*c][*r]; */
-
-    debug(printf("H%d: ",dist));
-    pairs = add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
-			   queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			   cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
-    if (add_dashes_p == true) {
-      *nopens += 1;
-      *nindels += dist;
-    }
-    debug(printf("\n"));
-
-  } else {
-    /* Must be VERT */
-    dist = 1;
-    while (*r > 1 && directions_Fgap[*c][*r] != DIAG) {
-      dist++;
-      (*r)--;
-    }
-    (*r)--;
-    /* dir = directions_nogap[c][r]; */
-
-    debug(printf("V%d: ",dist));
-    pairs = add_queryskip(pairs,(*r)+dist,*c,dist,querysequence,
-			  queryoffset,genomeoffset,pairpool,revp,
-			  dynprogindex);
-    *nopens += 1;
-    *nindels += dist;
-    debug(printf("\n"));
-  }
-
-  while (*r > 0 && *c > endc) {
-    querycoord = (*r)-1;
-    genomecoord = (*c)-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = genomesequence[genomecoord];
-    c2_alt = genomesequencealt[genomecoord];
-
-    if (querysequenceuc[querycoord] == c2) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-
-    (*r)--; (*c)--;
-    if (*r == 0 && *c == 0) {
-      /* STOP condition.  Do nothing. */
-
-    } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
-      /* Do nothing */
-
-    } else if (dir == HORIZ) {
-      dist = 1;
-      while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
-	dist++;
-	(*c)--;
-      }
-      (*c)--;
-      /* dir = directions_nogap[*c][*r]; */
-
-      debug(printf("H%d: ",dist));
-      pairs = add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
-			     queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
-			     cdna_direction,watsonp,dynprogindex,
-			     /*use_genomicseg_p*/true);
-      if (add_dashes_p == true) {
-	*nopens += 1;
-	*nindels += dist;
-      }
-      debug(printf("\n"));
-
-    } else {
-      /* Must be VERT */
-      dist = 1;
-      while (*r > 1 && directions_Fgap[*c][*r] != DIAG) {
-	dist++;
-	(*r)--;
-      }
-      (*r)--;
-      /* dir = directions_nogap[*c][*r]; */
-
-      debug(printf("V%d: ",dist));
-      pairs = add_queryskip(pairs,(*r)+dist,*c,dist,querysequence,
-			    queryoffset,genomeoffset,pairpool,revp,
-			    dynprogindex);
-      *nopens += 1;
-      *nindels += dist;
-      debug(printf("\n"));
-
-    }
-  }
-
-  return pairs;
-}
-
-
-
-
-#if 0
-/* revp means both rev1p and rev2p, which must have equal values */
-/* Iterative version */
-static List_T
-traceback_local_nogaps (List_T pairs, int *nmatches, int *nmismatches, int r, int c, int endc,
-			char *querysequence, char *querysequenceuc, char *genomesequence, char *genomesequenceuc,
-			int queryoffset, int genomeoffset, Pairpool_T pairpool, 
-			bool revp, int dynprogindex) {
-  char c1, c2;
-  int querycoord, genomecoord;
-
-  debug11(printf("Starting traceback_local_nogaps at r=%d,c=%d (roffset=%d, goffset=%d), revp %d\n",
-		 r,c,queryoffset,genomeoffset,revp));
-
-  /* We care only about the genomic coordinate c */
-  while (c > endc) {
-    querycoord = r-1;
-    genomecoord = c-1;
-    if (revp == true) {
-      querycoord = -querycoord;
-      genomecoord = -genomecoord;
-    }
-
-    c1 = querysequence[querycoord];
-    c2 = genomesequence[genomecoord];
-    c2_alt = genomesequencealt[genomecoord];
-
-    if (querysequenceuc[querycoord] == genomesequenceuc[genomecoord]) {
-      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - match\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
-      
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
-
-    } else {
-      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
-		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1,c2));
-      *nmismatches += 1;
-      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
-			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
-    }
-    r--; c--;
-  }
-
-  return pairs;
-}
-#endif
-
-
-#ifdef HAVE_SSE4_1
-/* Columns are always genomic.  Rows are always query.  Bridging across common columns */
-static void
-bridge_cdna_gap_8 (int *finalscore, int *bestcL, int *bestcR, int *bestrL, int *bestrR,
-		   Score8_T **matrixL, Score8_T **matrixR,
-		   int glength, int rlengthL, int rlengthR, int extraband_paired,
-		   int open, int extend, int leftoffset, int rightoffset, bool jump_late_p) {
-  int bestscore = NEG_INFINITY_16, score, scoreL, scoreR, pen, end_reward = 0;
-  int rL, rR, cL, cR;
-  int lbandL, ubandL, rloL, rhighL;
-  int lbandR, ubandR, rloR, rhighR;
-
-  /* Perform computations */
-  lbandL = rlengthL - glength + extraband_paired;
-  ubandL = extraband_paired;
-
-  lbandR = rlengthR - glength + extraband_paired;
-  ubandR = extraband_paired;
-
-  /* Need a double loop on rows here, in contrast with a single loop
-     for introns, because we allow a genomic insertion that doesn't
-     match the cDNA.  So we need to add a penalty for a genomic
-     insertion */
-
-  if (jump_late_p) {
-    for (cL = 1; cL < glength; cL++) {
-
-      /* Note: opening penalty is added at the bottom of the loop */
-      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
-	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
-	if ((rloL = cL - ubandL) < 1) {
-	  rloL = 1;
-	}
-	if ((rhighL = cL + lbandL) > rlengthL-1) {
-	  rhighL = rlengthL-1;
-	}
-
-	if ((rloR = cR - ubandR) < 1) {
-	  rloR = 1;
-	}
-	if ((rhighR = cR + lbandR) > rlengthR-1) {
-	  rhighR = rlengthR-1;
-	}
-
-	for (rL = rloL; rL <= rhighL; rL++) {
-	  scoreL = (int) matrixL[cL][rL];
-	
-	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
-	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
-	  for (rR = rloR; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
-			    rL,rR,scoreL,scoreR,pen,end_reward,score));
-
-	      bestscore = score;
-	      *bestcL = cL;
-	      *bestcR = cR;
-	      *bestrL = rL;
-	      *bestrR = rR;
-
-	    } else {
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
-	    }
-	  }
-	}
-	pen = open - extend;	/* Subtract extend to compensate for
-                                   its addition in the for loop */
-      }
-    }
-
-  } else {
-    /* Do not jump late */
-    for (cL = 1; cL < glength; cL++) {
-
-      /* Note: opening penalty is added at the bottom of the loop */
-      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
-	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
-	if ((rloL = cL - ubandL) < 1) {
-	  rloL = 1;
-	}
-	if ((rhighL = cL + lbandL) > rlengthL-1) {
-	  rhighL = rlengthL-1;
-	}
-
-	if ((rloR = cR - ubandR) < 1) {
-	  rloR = 1;
-	}
-	if ((rhighR = cR + lbandR) > rlengthR-1) {
-	  rhighR = rlengthR-1;
-	}
-
-	for (rL = rloL; rL <= rhighL; rL++) {
-	  scoreL = (int) matrixL[cL][rL];
-	
-	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
-	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
-	  for (rR = rloR; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
-			    rL,rR,scoreL,scoreR,pen,end_reward,score));
-
-	      bestscore = score;
-	      *bestcL = cL;
-	      *bestcR = cR;
-	      *bestrL = rL;
-	      *bestrR = rR;
-
-	    } else {
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
-	    }
-	  }
-	}
-	pen = open - extend;	/* Subtract extend to compensate for
-                                   its addition in the for loop */
-      }
-    }
-  }
-      
-  *finalscore = (int) bestscore;
-  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right\n",
-		*finalscore,*bestcL,*bestrL,*bestcR,*bestrR));
-
-  return;
-}
-#endif
-
-
-/* Columns are always genomic.  Rows are always query.  Bridging across common columns */
-static void
-bridge_cdna_gap (int *finalscore, int *bestcL, int *bestcR, int *bestrL, int *bestrR,
-#ifdef HAVE_SSE2
-		 Score16_T **matrixL, Score16_T **matrixR,
-#else
-		 Score32_T **matrixL, Score32_T **matrixR,
-#endif
-		 int glength, int rlengthL, int rlengthR, int extraband_paired,
-		 int open, int extend, int leftoffset, int rightoffset, bool jump_late_p) {
-  int bestscore = NEG_INFINITY_32, score, scoreL, scoreR, pen, end_reward = 0;
-  int rL, rR, cL, cR;
-  int lbandL, ubandL, rloL, rhighL;
-  int lbandR, ubandR, rloR, rhighR;
-
-  /* Perform computations */
-  lbandL = rlengthL - glength + extraband_paired;
-  ubandL = extraband_paired;
-
-  lbandR = rlengthR - glength + extraband_paired;
-  ubandR = extraband_paired;
-
-  /* Need a double loop on rows here, in contrast with a single loop
-     for introns, because we allow a genomic insertion that doesn't
-     match the cDNA.  So we need to add a penalty for a genomic
-     insertion */
-
-  if (jump_late_p) {
-    for (cL = 1; cL < glength; cL++) {
-
-      /* Note: opening penalty is added at the bottom of the loop */
-      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
-	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
-	if ((rloL = cL - ubandL) < 1) {
-	  rloL = 1;
-	}
-	if ((rhighL = cL + lbandL) > rlengthL-1) {
-	  rhighL = rlengthL-1;
-	}
-
-	if ((rloR = cR - ubandR) < 1) {
-	  rloR = 1;
-	}
-	if ((rhighR = cR + lbandR) > rlengthR-1) {
-	  rhighR = rlengthR-1;
-	}
-
-	for (rL = rloL; rL <= rhighL; rL++) {
-	  scoreL = (int) matrixL[cL][rL];
-	
-	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
-	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
-	  for (rR = rloR; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
-			    rL,rR,scoreL,scoreR,pen,end_reward,score));
-
-	      bestscore = score;
-	      *bestcL = cL;
-	      *bestcR = cR;
-	      *bestrL = rL;
-	      *bestrR = rR;
-
-	    } else {
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
-	    }
-	  }
-	}
-	pen = open - extend;	/* Subtract extend to compensate for
-                                   its addition in the for loop */
-      }
-    }
-
-  } else {
-    /* Do not jump late */
-    for (cL = 1; cL < glength; cL++) {
-
-      /* Note: opening penalty is added at the bottom of the loop */
-      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
-	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
-	if ((rloL = cL - ubandL) < 1) {
-	  rloL = 1;
-	}
-	if ((rhighL = cL + lbandL) > rlengthL-1) {
-	  rhighL = rlengthL-1;
-	}
-
-	if ((rloR = cR - ubandR) < 1) {
-	  rloR = 1;
-	}
-	if ((rhighR = cR + lbandR) > rlengthR-1) {
-	  rhighR = rlengthR-1;
-	}
-
-	for (rL = rloL; rL <= rhighL; rL++) {
-	  scoreL = (int) matrixL[cL][rL];
-	
-	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
-	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
-	  for (rR = rloR; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
-			    rL,rR,scoreL,scoreR,pen,end_reward,score));
-
-	      bestscore = score;
-	      *bestcL = cL;
-	      *bestcR = cR;
-	      *bestrL = rL;
-	      *bestrR = rR;
-
-	    } else {
-	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
-	    }
-	  }
-	}
-	pen = open - extend;	/* Subtract extend to compensate for
-                                   its addition in the for loop */
-      }
-    }
-  }
-      
-  *finalscore = (int) bestscore;
-  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right\n",
-		*finalscore,*bestcL,*bestrL,*bestcR,*bestrR));
-
-  return;
-}
-
-
-static int
-intron_score (int *introntype, int leftdi, int rightdi, int cdna_direction, int canonical_reward, 
-	      bool finalp) {
-  int scoreI;
-
-#ifdef PMAP
-  if ((*introntype = leftdi & rightdi) == NONINTRON) {
-    scoreI = 0.0;
-  } else {
-    switch (*introntype) {
-    case GTAG_FWD: scoreI = canonical_reward; break;
-    case GCAG_FWD: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
-    case ATAC_FWD: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
-    default: *introntype = NONINTRON; scoreI = 0.0;
-    }
-  }
-#else
-  if ((*introntype = leftdi & rightdi) == NONINTRON) {
-    scoreI = 0.0;
-  } else if (cdna_direction > 0) {
-    switch (*introntype) {
-    case GTAG_FWD: scoreI = canonical_reward; break;
-    case GCAG_FWD: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
-    case ATAC_FWD: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
-    default: *introntype = NONINTRON; scoreI = 0.0;
-    }
-  } else if (cdna_direction < 0) {
-    switch (*introntype) {
-    case GTAG_REV: scoreI = canonical_reward; break;
-    case GCAG_REV: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
-    case ATAC_REV: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
-    default: *introntype = NONINTRON; scoreI = 0.0;
-    }
-  } else {
-    switch (*introntype) {
-    case GTAG_FWD: case GTAG_REV: scoreI = canonical_reward; break;
-    case GCAG_FWD: case GCAG_REV: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
-    case ATAC_FWD: case ATAC_REV: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
-    default: *introntype = NONINTRON; scoreI = 0.0;
-    }
-  }
-#endif
-
-  return scoreI;
-}
-
-
-static void
-get_splicesite_probs (double *left_prob, double *right_prob, int cL, int cR,
-		      int *left_known, int *right_known, Univcoord_T leftoffset, Univcoord_T rightoffset,
-		      Univcoord_T chroffset, Univcoord_T chrhigh, int cdna_direction, bool watsonp) {
-  Univcoord_T splicesitepos;
-  
-  if (left_known[cL] > 0) {
-    debug9(printf("left position is known, so prob is 1.0\n"));
-    *left_prob = 1.0;
-
-  } else if (watsonp == true) {
-    splicesitepos = chroffset + leftoffset + cL;
-    if (cdna_direction > 0) {
-      *left_prob = Maxent_hr_donor_prob(splicesitepos,chroffset);
-      debug9(printf("1. donor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*left_prob,left_known[cL]));
-
-    } else {
-      *left_prob = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-      debug9(printf("2. antiacceptor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*left_prob,left_known[cL]));
-
-    }
-  } else {
-    splicesitepos = chrhigh - leftoffset - cL + 1;
-    if (cdna_direction > 0) {
-      *left_prob = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-      debug9(printf("3. antidonor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*left_prob,left_known[cL]));
-
-    } else {
-      *left_prob = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-      debug9(printf("4. acceptor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*left_prob,left_known[cL]));
-    }
-  }
-
-  if (right_known[cR] > 0) {
-    debug9(printf("right position is known, so prob is 1.0\n"));
-    *right_prob = 1.0;
-
-  } else if (watsonp == true) {
-    splicesitepos = chroffset + rightoffset - cR + 1;
-    if (cdna_direction > 0) {
-      *right_prob = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-      debug9(printf("5. acceptor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*right_prob,right_known[cR]));
-    } else {
-      *right_prob = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-      debug9(printf("6. antidonor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*right_prob,right_known[cR]));
-
-    }
-  } else {
-    splicesitepos = chrhigh - rightoffset + cR;
-    if (cdna_direction > 0) {
-      *right_prob = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-      debug9(printf("7. antiacceptor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*right_prob,right_known[cR]));
-
-    } else {
-      *right_prob = Maxent_hr_donor_prob(splicesitepos,chroffset);
-      debug9(printf("8. donor splicesitepos is %u, prob %f, known %d\n",
-		    splicesitepos,*right_prob,right_known[cR]));
-    }
-  }
-
-  return;
-}
-
-
-#ifdef HAVE_SSE4_1
-static bool
-bridge_intron_gap_8 (int *finalscore, int *bestrL, int *bestrR, int *bestcL, int *bestcR,
-		     int *best_introntype, double *left_prob, double *right_prob,
-		     Score8_T **matrixL, Score8_T **matrixR,
-		     Direction8_T **directionsL_nogap, Direction8_T **directionsR_nogap, 
-		     int goffsetL, int rev_goffsetR, int rlength, int glengthL, int glengthR,
-		     int cdna_direction, bool watsonp, int extraband_paired, int canonical_reward,
-		     int maxhorizjump, int maxvertjump, int leftoffset, int rightoffset,
-		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-		     bool halfp, bool finalp, bool use_probabilities_p, int score_threshold,
-		     bool jump_late_p) {
-  bool result;
-  int bestscore = NEG_INFINITY_32, score, scoreL, scoreR, scoreI, bestscoreI = NEG_INFINITY_32;
-  int rL, rR, cL, cR;
-  int lbandL, ubandL, cloL, chighL;
-  int lbandR, ubandR, cloR, chighR;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
-  int *leftdi, *rightdi, introntype;
-  int *left_known, *right_known;
-  double *left_probabilities, *right_probabilities, probL, probR, bestprob;
-  Univcoord_T splicesitepos, splicesitepos1, splicesitepos2;
-  bool bestp;
-
-
-  debug(printf("Running bridge_intron_gap_8 with use_probabilities_p %d\n",use_probabilities_p));
-
-  if (glengthL+1 <= 0) {
-    fprintf(stderr,"Problem with glengthL = %d\n",glengthL);
-    abort();
-  }
-
-  if (glengthR+1 <= 0) {
-    fprintf(stderr,"Problem with glengthR = %d\n",glengthR);
-    abort();
-  }
-
-  /* Read dinucleotides */
-  leftdi = (int *) CALLOC(glengthL+1,sizeof(int));
-  rightdi = (int *) CALLOC(glengthR+1,sizeof(int));
-
-  for (cL = 0; cL < glengthL - 1; cL++) {
-    left1 = get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp);
-    left2 = get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == gsequence_ucL[cL]);
-    assert(left2 == gsequence_ucL[cL+1]);
-#endif
-
-    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi[cL] = LEFT_GT;
-    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
-      leftdi[cL] = LEFT_GC;
-    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi[cL] = LEFT_AT;
-#ifndef PMAP
-    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi[cL] = LEFT_CT;
-#endif
-    } else {
-      leftdi[cL] = 0x00;
-    }
-  }
-  leftdi[glengthL-1] = leftdi[glengthL] = 0x00;
-
-  for (cR = 0; cR < glengthR - 1; cR++) {
-    right2 = get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp);
-    right1 = get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(right2 == rev_gsequence_ucR[-cR-1]);
-    assert(right1 == revgsequence_ucR[-cR]);
-#endif
-
-    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
-      rightdi[cR] = RIGHT_AG;
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
-      rightdi[cR] = RIGHT_AC;
-#ifndef PMAP
-    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
-      rightdi[cR] = RIGHT_GC;
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
-      rightdi[cR] = RIGHT_AT;
-#endif
-    } else {
-      rightdi[cR] = 0x00;
-    }
-  }
-  rightdi[glengthR-1] = rightdi[glengthR] = 0x00;
-
-  left_known = (int *) CALLOC(glengthL+1,sizeof(int));
-  right_known = (int *) CALLOC(glengthR+1,sizeof(int));
-  if (splicing_iit != NULL && donor_typeint >= 0 && acceptor_typeint >= 0) {
-    /* Handle known splicing, splice site level */
-    if (watsonp == true) {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-
-    } else {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-    }
-
-  } else if (splicing_iit != NULL) {
-    /* Handle known splicing, intron level */
-    if (watsonp == true) {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos+1U));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos+1U));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-
-    } else {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos+1U));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-    }
-  }
-
-  /* Perform computations */
-#if 0
-  /* Allows unlimited indel lengths */
-  ubandL = glengthL - rlength + extraband_paired;
-  lbandL = extraband_paired;
-
-  ubandR = glengthR - rlength + extraband_paired;
-  lbandR = extraband_paired;
-#else
-  /* Limit indels to 3 bp around splice sites */
-  ubandL = 3;
-  lbandL = 3;
-
-  ubandR = 3;
-  lbandR = 3;
-#endif
-
-
-  if (novelsplicingp == false && splicing_iit != NULL && (donor_typeint < 0 || acceptor_typeint < 0)) {
-    /* Constrain to given introns */
-    if (jump_late_p) {
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (left_known[cL] > 0) {
-	    scoreL = (int) matrixL[cL][rL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (right_known[cR] > 0) {
-		scoreR = (int) matrixR[cR][rR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right... */
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (right_known[cR] > 0) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (left_known[cL] > 0) {
-		scoreL = (int) matrixL[cL][rL];
-	      
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-      }
-
-    } else {
-      /* Do not jump late */
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (left_known[cL] > 0) {
-	    scoreL = (int) matrixL[cL][rL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (right_known[cR] > 0) {
-		scoreR = (int) matrixR[cR][rR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) > bestscore) {  /* Use > for jump early */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right... */
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (right_known[cR] > 0) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (left_known[cL] > 0) {
-		scoreL = (int) matrixL[cL][rL];
-	      
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) > bestscore) {  /* Use > for jump early */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-
-    *finalscore = (int) bestscore;
-    *best_introntype = NONINTRON;
-
-  } else if (use_probabilities_p == false) {
-    /* Check for genomic insertion */
-    if (jump_late_p) {
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (1) {
-	    scoreL = (int) matrixL[cL][rL];
-	    scoreL += left_known[cL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (1) {
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right...*/
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (1) {
-	    scoreR = (int) matrixR[cR][rR];
-	    scoreR += right_known[cR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (1) {
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-
-    } else {
-      /* Do not jump late */
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (1) {
-	    scoreL = (int) matrixL[cL][rL];
-	    scoreL += left_known[cL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (1) {
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) > bestscore) {  /* Use > for jump early */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right...*/
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (1) {
-	    scoreR = (int) matrixR[cR][rR];
-	    scoreR += right_known[cR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (1) {
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) > bestscore) {  /* Use > for jump early */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-
-#if 0
-    /* Previously had code here to allow cDNA insert */
-#endif
-
-    if (halfp == true) {
-      *finalscore = (int) (bestscore - bestscoreI/2);
-    } else {
-      *finalscore = (int) bestscore;
-    }
-
-  } else {
-    /* Do search based on splice site probabilities */
-    left_probabilities = (double *) CALLOC(glengthL+1,sizeof(double));
-    right_probabilities = (double *) CALLOC(glengthR+1,sizeof(double));
-
-    if (watsonp == true) {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chroffset + leftoffset + cL;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_donor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chroffset + rightoffset - cR + 1;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chroffset + leftoffset + cL;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chroffset + rightoffset - cR + 1;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-	}
-      }
-
-    } else {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chrhigh - leftoffset - cL + 1;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chrhigh - rightoffset + cR;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chrhigh - leftoffset - cL + 1;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chrhigh - rightoffset + cR;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_donor_prob(splicesitepos,chroffset);
-	}
-      }
-    }
-
-    bestprob = 0.0;
-
-    /* Check for genomic insert */
-    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-      debug3(printf("\nAt row %d on left and %d on right\n",rL,rR));
-      if ((cloL = rL - lbandL) < 1) {
-	cloL = 1;
-      }
-      if ((chighL = rL + ubandL) > glengthL-1) {
-	chighL = glengthL-1;
-      }
-
-      if ((cloR = rR - lbandR) < 1) {
-	cloR = 1;
-      }
-      if ((chighR = rR + ubandR) > glengthR-1) {
-	chighR = glengthR-1;
-      }
-
-      /* Test indel on left... */
-      for (cL = cloL; cL <= chighL; cL++) {
-	/* The following check limits genomic inserts (horizontal) and
-	   multiple cDNA inserts (vertical). */
-	if (1) {
-	  probL = left_probabilities[cL];
-
-	  /* ...but not on right */
-	  cR = rR;
-
-	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	  if (cR < rightoffset-leftoffset-cL) {
-	    if (1) {
-	      probR = right_probabilities[cR];
-
-	      if (probL + probR <= bestprob) {
-		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			       cL,cR,probL,probR,probL+probR));
-	      } else {
-		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			      cL,cR,probL,probR,probL+probR));
-
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-	    
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if (scoreL + scoreI + scoreR >= score_threshold) {
-		  debug3(printf(" (bestscore where score %d >= threshold %d)\n",
-				scoreL+scoreI+scoreR,score_threshold));
-		  bestprob = probL + probR;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		} else {
-		  debug3a(printf(" (bestscore, but score %d < threshold %d)\n",
-				 scoreL+scoreI+scoreR,score_threshold));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-
-      /* Test indel on right... */
-      for (cR = cloR; cR <= chighR; cR++) {
-	if (1) {
-	  probR = right_probabilities[cR];
-
-	  /* ...but not on left */
-	  cL = rL;
-
-	  /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	  if (cL < rightoffset-leftoffset-cR) {
-	    if (1) {
-	      probL = left_probabilities[cL];
-
-	      if (probL + probR <= bestprob) {
-		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			       cL,cR,probL,probR,probL+probR));
-	      } else {
-		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			      cL,cR,probL,probR,probL+probR));
-
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsL[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-	    
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if (scoreL + scoreI + scoreR >= score_threshold) {
-		  debug3(printf(" (bestscore where score %d >= threshold %d)\n",
-				scoreL+scoreI+scoreR,score_threshold));
-		  bestprob = probL + probR;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		} else {
-		  debug3(printf(" (bestscore, but score %d < threshold %d)\n",
-				scoreL+scoreI+scoreR,score_threshold));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-
-#if 0
-    /* Previously had code to check for cDNA insert of up to 3 */
-#endif
-
-    FREE(left_probabilities);
-    FREE(right_probabilities);
-
-    /* Compute finalscore */
-    scoreL = (int) matrixL[*bestcL][*bestrL];
-    scoreL += left_known[*bestcL];
-
-    if (directionsL_nogap[*bestcL][*bestrL] != DIAG) {
-      /* Favor gaps away from intron if possible */
-      scoreL -= 1;
-    }
-
-    scoreR = (int) matrixR[*bestcR][*bestrR];
-    scoreR += right_known[*bestcR];
-
-    if (directionsR_nogap[*bestcR][*bestrR] != DIAG) {
-      /* Favor gaps away from intron if possible */
-      scoreR -= 1;
-    }
-
-    scoreI = intron_score(&introntype,leftdi[*bestcL],rightdi[*bestcR],
-			  cdna_direction,canonical_reward,finalp);
-
-    if (halfp == true) {
-      *finalscore = (int) (scoreL + scoreI + scoreR - scoreI/2);
-    } else {
-      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-		    *bestcL,*bestcR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-      *finalscore = (int) (scoreL + scoreI + scoreR);
-    }
-  }
-
-  /* Determine if result meets given constraints */
-  if (*finalscore < 0) {
-    result = false;
-  } else if (novelsplicingp == true) {
-    result = true;
-  } else if (splicing_iit == NULL) {
-    result = true;
-  } else if (donor_typeint >= 0 && acceptor_typeint >= 0) {
-    /* If novelsplicingp is false and using splicing at splice site level, require sites to be known */
-    if (left_known[*bestcL] == 0 || right_known[*bestcR] == 0) {
-      debug(printf("Novel splicing not allowed, so bridge_intron_gap returning false\n"));
-      result = false;
-    } else {
-      result = true;
-    }
-  } else {
-    /* If novelsplicingp is false and using splicing at splice site level, result was already constrained */
-    result = true;
-  }
-
-
-  if (finalp == true && result == true) {
-    get_splicesite_probs(&(*left_prob),&(*right_prob),*bestcL,*bestcR,
-			 left_known,right_known,leftoffset,rightoffset,chroffset,chrhigh,
-			 cdna_direction,watsonp);
-  }
-
-  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
-		*finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
-  debug(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
-	       *finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
-
-  FREE(right_known);
-  FREE(left_known);
-
-  FREE(rightdi);
-  FREE(leftdi);
-
-  return result;
-}
-#endif
-
-
-static bool
-bridge_intron_gap (int *finalscore, int *bestrL, int *bestrR, int *bestcL, int *bestcR,
-		   int *best_introntype, double *left_prob, double *right_prob,
-#ifdef HAVE_SSE2
-		   Score16_T **matrixL, Score16_T **matrixR,
-		   Direction16_T **directionsL_nogap, Direction16_T **directionsR_nogap, 
-#else
-		   Score32_T **matrixL, Score32_T **matrixR,
-		   Direction32_T **directionsL_nogap, Direction32_T **directionsR_nogap, 
-#endif
-		   int goffsetL, int rev_goffsetR, int rlength, int glengthL, int glengthR,
-		   int cdna_direction, bool watsonp, int extraband_paired, int canonical_reward,
-		   int maxhorizjump, int maxvertjump, int leftoffset, int rightoffset,
-		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-		   bool halfp, bool finalp, bool use_probabilities_p, int score_threshold,
-		   bool jump_late_p) {
-  bool result;
-  int bestscore = NEG_INFINITY_32, score, scoreL, scoreR, scoreI, bestscoreI = NEG_INFINITY_32;
-  int rL, rR, cL, cR;
-  int lbandL, ubandL, cloL, chighL;
-  int lbandR, ubandR, cloR, chighR;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
-  int *leftdi, *rightdi, introntype;
-  int *left_known, *right_known;
-  double *left_probabilities, *right_probabilities, probL, probR, bestprob;
-  Univcoord_T splicesitepos, splicesitepos1, splicesitepos2;
-  bool bestp;
-
-
-  debug(printf("Running bridge_intron_gap with use_probabilities_p %d\n",use_probabilities_p));
-
-  if (glengthL+1 <= 0) {
-    fprintf(stderr,"Problem with glengthL = %d\n",glengthL);
-    abort();
-  }
-
-  if (glengthR+1 <= 0) {
-    fprintf(stderr,"Problem with glengthR = %d\n",glengthR);
-    abort();
-  }
-
-  /* Read dinucleotides */
-  leftdi = (int *) CALLOC(glengthL+1,sizeof(int));
-  rightdi = (int *) CALLOC(glengthR+1,sizeof(int));
-
-  for (cL = 0; cL < glengthL - 1; cL++) {
-    left1 = get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp);
-    left2 = get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == gsequence_ucL[cL]);
-    assert(left2 == gsequence_ucL[cL+1]);
-#endif
-
-    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi[cL] = LEFT_GT;
-    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
-      leftdi[cL] = LEFT_GC;
-    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi[cL] = LEFT_AT;
-#ifndef PMAP
-    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi[cL] = LEFT_CT;
-#endif
-    } else {
-      leftdi[cL] = 0x00;
-    }
-  }
-  leftdi[glengthL-1] = leftdi[glengthL] = 0x00;
-
-  for (cR = 0; cR < glengthR - 1; cR++) {
-    right2 = get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp);
-    right1 = get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(right2 == rev_gsequence_ucR[-cR-1]);
-    assert(right1 == revgsequence_ucR[-cR]);
-#endif
-
-    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
-      rightdi[cR] = RIGHT_AG;
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
-      rightdi[cR] = RIGHT_AC;
-#ifndef PMAP
-    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
-      rightdi[cR] = RIGHT_GC;
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
-      rightdi[cR] = RIGHT_AT;
-#endif
-    } else {
-      rightdi[cR] = 0x00;
-    }
-  }
-  rightdi[glengthR-1] = rightdi[glengthR] = 0x00;
-
-  left_known = (int *) CALLOC(glengthL+1,sizeof(int));
-  right_known = (int *) CALLOC(glengthR+1,sizeof(int));
-  if (splicing_iit != NULL && donor_typeint >= 0 && acceptor_typeint >= 0) {
-    /* Handle known splicing, splice site level */
-    if (watsonp == true) {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-
-    } else {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_exists_with_divno_typed_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						 splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-    }
-
-  } else if (splicing_iit != NULL) {
-    /* Handle known splicing, intron level */
-    if (watsonp == true) {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos+1U));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = leftoffset + cL;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = rightoffset - cR + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos+1U));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-
-    } else {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/-1) == true) {
-	    debug5(printf("Found known antidonor at %u\n",splicesitepos+1U));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/-1) == true) {
-	    debug5(printf("Found known antiacceptor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1;
-	  if (IIT_high_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				       splicesitepos+1U,/*sign*/+1) == true) {
-	    debug5(printf("Found known acceptor at %u\n",splicesitepos));
-	    left_known[cL] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = (chrhigh - chroffset) - rightoffset + cR;
-	  if (IIT_low_exists_signed_p(splicing_iit,splicing_divint_crosstable[chrnum],
-				      splicesitepos,/*sign*/+1) == true) {
-	    debug5(printf("Found known donor at %u\n",splicesitepos));
-	    right_known[cR] = KNOWN_SPLICESITE_REWARD;
-	  }
-	}
-      }
-    }
-  }
-
-  /* Perform computations */
-#if 0
-  /* Allows unlimited indel lengths */
-  ubandL = glengthL - rlength + extraband_paired;
-  lbandL = extraband_paired;
-
-  ubandR = glengthR - rlength + extraband_paired;
-  lbandR = extraband_paired;
-#else
-  /* Limit indels to 3 bp around splice sites */
-  ubandL = 3;
-  lbandL = 3;
-
-  ubandR = 3;
-  lbandR = 3;
-#endif
-
-
-  if (novelsplicingp == false && splicing_iit != NULL && (donor_typeint < 0 || acceptor_typeint < 0)) {
-    /* Constrain to given introns */
-    if (jump_late_p) {
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (left_known[cL] > 0) {
-	    scoreL = (int) matrixL[cL][rL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (right_known[cR] > 0) {
-		scoreR = (int) matrixR[cR][rR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right... */
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (right_known[cR] > 0) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (left_known[cL] > 0) {
-		scoreL = (int) matrixL[cL][rL];
-	      
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-      }
-
-    } else {
-      /* Do not jump late */
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (left_known[cL] > 0) {
-	    scoreL = (int) matrixL[cL][rL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (right_known[cR] > 0) {
-		scoreR = (int) matrixR[cR][rR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) > bestscore) {  /* Use > for jump early */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right... */
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (right_known[cR] > 0) {
-	    scoreR = (int) matrixR[cR][rR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (left_known[cL] > 0) {
-		scoreL = (int) matrixL[cL][rL];
-	      
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		if ((score = scoreL + scoreR) > bestscore) {  /* Use > for jump early */
-		  bestp = false;
-		  if (watsonp == true) {
-		    splicesitepos1 = leftoffset + cL;
-		    splicesitepos2 = rightoffset - cR + 1;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  } else {
-		    splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
-		    splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
-		    if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
-						     splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
-		      bestp = true;
-		    }
-		  }
-		  if (bestp == true) {
-		    debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
-				  cL,cR,scoreL,scoreR,score));
-		    bestscore = score;
-		    *bestrL = rL;
-		    *bestrR = rR;
-		    *bestcL = cL;
-		    *bestcR = cR;
-		  } else {
-		    debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
-				   cL,cR,scoreL,scoreR,score));
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-
-    *finalscore = (int) bestscore;
-    *best_introntype = NONINTRON;
-
-  } else if (use_probabilities_p == false) {
-    /* Check for genomic insertion */
-    if (jump_late_p) {
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (1) {
-	    scoreL = (int) matrixL[cL][rL];
-	    scoreL += left_known[cL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (1) {
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right...*/
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (1) {
-	    scoreR = (int) matrixR[cR][rR];
-	    scoreR += right_known[cR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (1) {
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) >= bestscore) {  /* Use >= for jump late */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-
-    } else {
-      /* Do not jump late */
-      for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-	debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
-	if ((cloL = rL - lbandL) < 1) {
-	  cloL = 1;
-	}
-	if ((chighL = rL + ubandL) > glengthL-1) {
-	  chighL = glengthL-1;
-	}
-
-	if ((cloR = rR - lbandR) < 1) {
-	  cloR = 1;
-	}
-	if ((chighR = rR + ubandR) > glengthR-1) {
-	  chighR = glengthR-1;
-	}
-
-	/* Test indel on left... */
-	for (cL = cloL; cL <= chighL; cL++) {
-	  /* The following check limits genomic inserts (horizontal) and
-	     multiple cDNA inserts (vertical). */
-	  if (1) {
-	    scoreL = (int) matrixL[cL][rL];
-	    scoreL += left_known[cL];
-
-	    if (directionsL_nogap[cL][rL] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreL -= 1;
-	    }
-
-	    /* ...but not on right */
-	    cR = rR;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	    if (cR < rightoffset-leftoffset-cL) {
-	      if (1) {
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) > bestscore) {  /* Use > for jump early */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-
-	/* Test indel on right...*/
-	for (cR = cloR; cR <= chighR; cR++) {
-	  if (1) {
-	    scoreR = (int) matrixR[cR][rR];
-	    scoreR += right_known[cR];
-
-	    if (directionsR_nogap[cR][rR] != DIAG) {
-	      /* Favor gaps away from intron if possible */
-	      scoreR -= 1;
-	    }
-
-	    /* ...but not on left */
-	    cL = rL;
-
-	    /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	    if (cL < rightoffset-leftoffset-cR) {
-	      if (1) {
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if ((score = scoreL + scoreI + scoreR) > bestscore) {  /* Use > for jump early */
-		  debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
-				cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-		  bestscore = score;
-		  bestscoreI = scoreI;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		  *best_introntype = introntype;
-		} else {
-		  debug3a(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-				 cL,cR,scoreL,scoreI,scoreR,score));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-
-#if 0
-    /* Previously had code here to allow cDNA insert */
-#endif
-
-    if (halfp == true) {
-      *finalscore = (int) (bestscore - bestscoreI/2);
-    } else {
-      *finalscore = (int) bestscore;
-    }
-
-  } else {
-    /* Do search based on splice site probabilities */
-    left_probabilities = (double *) CALLOC(glengthL+1,sizeof(double));
-    right_probabilities = (double *) CALLOC(glengthR+1,sizeof(double));
-
-    if (watsonp == true) {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chroffset + leftoffset + cL;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_donor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chroffset + rightoffset - cR + 1;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chroffset + leftoffset + cL;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chroffset + rightoffset - cR + 1;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-	}
-      }
-
-    } else {
-      if (cdna_direction > 0) {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chrhigh - leftoffset - cL + 1;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chrhigh - rightoffset + cR;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-	}
-
-      } else {
-	for (cL = 0; cL < glengthL - 1; cL++) {
-	  splicesitepos = chrhigh - leftoffset - cL + 1;
-	  left_probabilities[cL] = left_known[cL] ? 1.0 : Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-	}
-
-	for (cR = 0; cR < glengthR - 1; cR++) {
-	  splicesitepos = chrhigh - rightoffset + cR;
-	  right_probabilities[cR] = right_known[cR] ? 1.0 : Maxent_hr_donor_prob(splicesitepos,chroffset);
-	}
-      }
-    }
-
-    bestprob = 0.0;
-
-    /* Check for genomic insert */
-    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
-      debug3(printf("\nAt row %d on left and %d on right\n",rL,rR));
-      if ((cloL = rL - lbandL) < 1) {
-	cloL = 1;
-      }
-      if ((chighL = rL + ubandL) > glengthL-1) {
-	chighL = glengthL-1;
-      }
-
-      if ((cloR = rR - lbandR) < 1) {
-	cloR = 1;
-      }
-      if ((chighR = rR + ubandR) > glengthR-1) {
-	chighR = glengthR-1;
-      }
-
-      /* Test indel on left... */
-      for (cL = cloL; cL <= chighL; cL++) {
-	/* The following check limits genomic inserts (horizontal) and
-	   multiple cDNA inserts (vertical). */
-	if (1) {
-	  probL = left_probabilities[cL];
-
-	  /* ...but not on right */
-	  cR = rR;
-
-	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
-	  if (cR < rightoffset-leftoffset-cL) {
-	    if (1) {
-	      probR = right_probabilities[cR];
-
-	      if (probL + probR <= bestprob) {
-		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			       cL,cR,probL,probR,probL+probR));
-	      } else {
-		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			      cL,cR,probL,probR,probL+probR));
-
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-		if (directionsL_nogap[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-	    
-#if 0
-		/* since we are on diagonal */
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-#endif
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if (scoreL + scoreI + scoreR >= score_threshold) {
-		  debug3(printf(" (bestscore where score %d >= threshold %d)\n",
-				scoreL+scoreI+scoreR,score_threshold));
-		  bestprob = probL + probR;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		} else {
-		  debug3a(printf(" (bestscore, but score %d < threshold %d)\n",
-				 scoreL+scoreI+scoreR,score_threshold));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-
-      /* Test indel on right... */
-      for (cR = cloR; cR <= chighR; cR++) {
-	if (1) {
-	  probR = right_probabilities[cR];
-
-	  /* ...but not on left */
-	  cL = rL;
-
-	  /* Disallow leftoffset + cL >= rightoffset - cR, or cL >= rightoffset - leftoffset - cR */
-	  if (cL < rightoffset-leftoffset-cR) {
-	    if (1) {
-	      probL = left_probabilities[cL];
-
-	      if (probL + probR <= bestprob) {
-		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			       cL,cR,probL,probR,probL+probR));
-	      } else {
-		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
-			      cL,cR,probL,probR,probL+probR));
-
-		scoreL = (int) matrixL[cL][rL];
-		scoreL += left_known[cL];
-
-#if 0
-		/* since we are on diagonal */
-		if (directionsL[cL][rL] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreL -= 1;
-		}
-#endif
-
-		scoreR = (int) matrixR[cR][rR];
-		scoreR += right_known[cR];
-	    
-		if (directionsR_nogap[cR][rR] != DIAG) {
-		  /* Favor gaps away from intron if possible */
-		  scoreR -= 1;
-		}
-
-		scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
-				      cdna_direction,canonical_reward,finalp);
-
-		if (scoreL + scoreI + scoreR >= score_threshold) {
-		  debug3(printf(" (bestscore where score %d >= threshold %d)\n",
-				scoreL+scoreI+scoreR,score_threshold));
-		  bestprob = probL + probR;
-		  *bestrL = rL;
-		  *bestrR = rR;
-		  *bestcL = cL;
-		  *bestcR = cR;
-		} else {
-		  debug3(printf(" (bestscore, but score %d < threshold %d)\n",
-				scoreL+scoreI+scoreR,score_threshold));
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-
-#if 0
-    /* Previously had code to check for cDNA insert of up to 3 */
-#endif
-
-    FREE(left_probabilities);
-    FREE(right_probabilities);
-
-    /* Compute finalscore */
-    scoreL = (int) matrixL[*bestcL][*bestrL];
-    scoreL += left_known[*bestcL];
-
-    if (directionsL_nogap[*bestcL][*bestrL] != DIAG) {
-      /* Favor gaps away from intron if possible */
-      scoreL -= 1;
-    }
-
-    scoreR = (int) matrixR[*bestcR][*bestrR];
-    scoreR += right_known[*bestcR];
-
-    if (directionsR_nogap[*bestcR][*bestrR] != DIAG) {
-      /* Favor gaps away from intron if possible */
-      scoreR -= 1;
-    }
-
-    scoreI = intron_score(&introntype,leftdi[*bestcL],rightdi[*bestcR],
-			  cdna_direction,canonical_reward,finalp);
-
-    if (halfp == true) {
-      *finalscore = (int) (scoreL + scoreI + scoreR - scoreI/2);
-    } else {
-      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
-		    *bestcL,*bestcR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
-      *finalscore = (int) (scoreL + scoreI + scoreR);
-    }
-  }
-
-  /* Determine if result meets given constraints */
-  if (*finalscore < 0) {
-    result = false;
-  } else if (novelsplicingp == true) {
-    result = true;
-  } else if (splicing_iit == NULL) {
-    result = true;
-  } else if (donor_typeint >= 0 && acceptor_typeint >= 0) {
-    /* If novelsplicingp is false and using splicing at splice site level, require sites to be known */
-    if (left_known[*bestcL] == 0 || right_known[*bestcR] == 0) {
-      debug(printf("Novel splicing not allowed, so bridge_intron_gap returning false\n"));
-      result = false;
-    } else {
-      result = true;
-    }
-  } else {
-    /* If novelsplicingp is false and using splicing at splice site level, result was already constrained */
-    result = true;
-  }
-
-
-  if (finalp == true && result == true) {
-    get_splicesite_probs(&(*left_prob),&(*right_prob),*bestcL,*bestcR,
-			 left_known,right_known,leftoffset,rightoffset,chroffset,chrhigh,
-			 cdna_direction,watsonp);
-  }
-
-  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
-		*finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
-  debug(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
-	       *finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
-
-  FREE(right_known);
-  FREE(left_known);
-
-  FREE(rightdi);
-  FREE(leftdi);
-
-  return result;
-}
-
-
-#if 0
-static void
-bridge_dual_break_nogap (int *finalscore, int *bestrcL, int *bestrcR,
-			 Score16_T **matrixL, Score16_T **matrixR,
-			 int diaglength, int goffsetL, int rev_goffsetR,
-			 Univcoord_T chroffset, Univcoord_T chrhigh,
-			 int cdna_direction, bool watsonp, bool jump_late_p) {
-  Score16_T bestscore = NEG_INFINITY_16, score, scoreL, scoreR, scoreI;
-  int rcL, rcR;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
-  int introntype, leftdi, rightdi;
-
-  *bestrcL = *bestrcR = 0;
-
-  for (rcL = 1; rcL <= diaglength; rcL++) {
-    rcR = diaglength - rcL;
-    left1 = get_genomic_nt(&left1_alt,goffsetL+rcL,chroffset,chrhigh,watsonp);
-    left2 = get_genomic_nt(&left2_alt,goffsetL+rcL+1,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == gsequence_ucL[rcL]);
-    assert(left2 == gsequence_ucL[rcL+1]);
-#endif
-    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi = LEFT_GT;
-    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
-      leftdi = LEFT_GC;
-    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi = LEFT_AT;
-    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
-      leftdi = LEFT_CT;
-    } else {
-      leftdi = 0x00;
-    }
-
-    right2 = get_genomic_nt(&right2_alt,rev_goffsetR-rcR-1,chroffset,chrhigh,watsonp);
-    right1 = get_genomic_nt(&right1_alt,rev_goffsetR-rcR,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(right2 == rev_gsequence_ucR[-1-rcR]);
-    assert(right1 == rev_gsequence_ucR[-rcR]);
-#endif
-    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
-      rightdi = RIGHT_AG;
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
-      rightdi = RIGHT_AC;
-    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
-      rightdi = RIGHT_GC;
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
-      rightdi = RIGHT_AT;
-    } else {
-      rightdi = 0x00;
-    }
-    
-    scoreL = matrixL[rcL][rcL];
-    scoreI = intron_score(&introntype,leftdi,rightdi,
-			  cdna_direction,/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-    scoreR = matrixR[rcR][rcR];
-
-    if ((score = scoreL + scoreI + scoreR) > bestscore || (score == bestscore && jump_late_p)) {
-      *bestrcL = rcL;
-      *bestrcR = rcR;
-      bestscore = score;
-    }
-  }
-
-  *finalscore = (int) bestscore;
-  return;
-}
-#endif
-
-
-
-#if 0
-static void
-bridge_dual_break_fwd (int *finalscore, int *bestrcL, int *bestrcR,
-		       Score16_T **matrixL, Score16_T **matrixR,
-		       int diaglength, int goffsetL, int rev_goffsetR,
-		       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp) {
-  Score16_T bestscore, scoreL, scoreR, scoreI;
-  int rcL, rcR;
-  Score16_T bestscoreL_GT, bestscoreL_GC, bestscoreL_AT, bestscoreL_XX;
-  Score16_T bestrcL_GT, bestrcL_GC, bestrcL_AT, bestrcL_XX;
-  Score16_T bestscoreR_AG, bestscoreR_AC, bestscoreR_XX;
-  int bestrcR_AG, bestrcR_AC, bestrcR_XX;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
-  int introntype;
-
-  *bestrcL = *bestrcR = 0;
-
-  bestrcL_GT = bestrcL_GC = bestrcL_AT = bestrcL_XX = 0;
-  bestscoreL_GT = bestscoreL_GC = bestscoreL_AT = bestscoreL_XX = NEG_INFINITY_16;
-
-  for (rcL = 1; rcL <= diaglength; rcL++) {
-    if ((scoreL = matrixL[rcL][rcL]) >= bestscoreL_XX) {
-      bestscoreL_XX = scoreL;
-      bestrcL_XX = rcL;
-    }
-
-    left1 = get_genomic_nt(&left1_alt,goffsetL+rcL,chroffset,chrhigh,watsonp);
-    left2 = get_genomic_nt(&left2_alt,goffsetL+rcL+1,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == gsequence_ucL[rcL]);
-    assert(left2 == gsequence_ucL[rcL+1]);
-#endif
-    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
-      if (scoreL >= bestscoreL_GT) {
-	bestscoreL_GT = scoreL;
-	bestrcL_GT = rcL;
-      }
-    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
-      if (scoreL >= bestscoreL_GC) {
-	bestscoreL_GC = scoreL;
-	bestrcL_GC = rcL;
-      }
-    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
-      if (scoreL >= bestscoreL_AT) {
-	bestscoreL_AT = scoreL;
-	bestrcL_AT = rcL;
-      }
-    }
-  }
-
-
-  bestrcR_AG = bestrcR_AC = bestrcR_XX = 0;
-  bestscoreR_AG = bestscoreR_AC = bestscoreR_XX = NEG_INFINITY_16;
-
-  for (rcR = 1; rcR <= diaglength; rcR++) {
-    if ((scoreR = matrixR[rcR][rcR]) >= bestscoreR_XX) {
-      bestscoreR_XX = scoreR;
-      bestrcR_XX = rcR;
-    }
-    right2 = get_genomic_nt(&right2_alt,rev_goffsetR-rcR-1,chroffset,chrhigh,watsonp);
-    right1 = get_genomic_nt(&right1_alt,rev_goffsetR-rcR,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(right2 == rev_gsequence_ucR[-1-rcR]);
-    assert(right1 == rev_gsequence_ucR[-rcR]);
-#endif
-    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
-      if (scoreR >= bestscoreR_AG) {
-	bestscoreR_AG = scoreR;
-	bestrcR_AG = rcR;
-      }
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
-      if (scoreR >= bestscoreR_AC) {
-	bestscoreR_AC = scoreR;
-	bestrcR_AC = rcR;
-      }
-    }
-  }
-
-  scoreI = intron_score(&introntype,0x00,0x00,/*cdna_direction*/+1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  bestscore = bestscoreL_XX + scoreI + bestscoreR_XX;
-  *bestrcL = bestrcL_XX;
-  *bestrcR = bestrcR_XX;
-
-  scoreI = intron_score(&introntype,LEFT_GT,RIGHT_AG,/*cdna_direction*/+1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  if (bestscoreL_GT + scoreI + bestscoreR_AG >= bestscore) {
-    bestscore = bestscoreL_GT + scoreI + bestscoreR_AG;
-    *bestrcL = bestrcL_GT;
-    *bestrcR = bestrcR_AG;
-  }
-
-  scoreI = intron_score(&introntype,LEFT_GC,RIGHT_AG,/*cdna_direction*/+1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  if (bestscoreL_GC + scoreI + bestscoreR_AG >= bestscore) {
-    bestscore = bestscoreL_GC + scoreI + bestscoreR_AG;
-    *bestrcL = bestrcL_GC;
-    *bestrcR = bestrcR_AG;
-  }
-
-  scoreI = intron_score(&introntype,LEFT_AT,RIGHT_AC,/*cdna_direction*/+1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  if (bestscoreL_AT + scoreI + bestscoreR_AC >= bestscore) {
-    bestscore = bestscoreL_AT + scoreI + bestscoreR_AC;
-    *bestrcL = bestrcL_AT;
-    *bestrcR = bestrcR_AC;
-  }
-
-  *finalscore = (int) bestscore;
-  /*
-  fprintf(stderr,"%d + %d >=? %d\n",*bestrcL,*bestrcR,diaglength);
-  fprintf(stderr,"%d + %d >=? %d\n\n",*bestrcL,*bestrcR,diaglength);
-  */
-  if (*bestrcL + *bestrcR >= diaglength) {
-    bridge_dual_break_nogap(&(*finalscore),&(*bestrcL),&(*bestrcR),matrixL,matrixR,
-			    diaglength,goffsetL,rev_goffsetR,chroffset,chrhigh,
-			    /*cdna_direction*/+1,watsonp,/*jump_late_p*/false);
-  }
-
-  return;
-}
-#endif
-
-
-#if 0
-static void
-bridge_dual_break_rev (int *finalscore, int *bestrcL, int *bestrcR,
-		       Score16_T **matrixL, Score16_T **matrixR,
-		       int diaglength, int goffsetL, int rev_goffsetR,
-		       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp) {
-  Score16_T bestscore, scoreL, scoreR, scoreI;
-  int rcL, rcR;
-  Score16_T bestscoreL_CT, bestscoreL_GT, bestscoreL_XX;
-  Score16_T bestrcL_CT, bestrcL_GT, bestrcL_XX;
-  Score16_T bestscoreR_AC, bestscoreR_GC, bestscoreR_AT, bestscoreR_XX;
-  Score16_T bestrcR_AC, bestrcR_GC, bestrcR_AT, bestrcR_XX;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
-  int introntype;
-
-  *bestrcL = *bestrcR = 0;
-
-  bestrcL_CT = bestrcL_GT = bestrcL_XX = 0;
-  bestscoreL_CT = bestscoreL_GT = bestscoreL_XX = NEG_INFINITY_16;
-
-  for (rcL = 1; rcL <= diaglength; rcL++) {
-    if ((scoreL = matrixL[rcL][rcL]) >= bestscoreL_XX) {
-      bestscoreL_XX = scoreL;
-      bestrcL_XX = rcL;
-    }
-
-    left1 = get_genomic_nt(&left1_alt,goffsetL+rcL,chroffset,chrhigh,watsonp);
-    left2 = get_genomic_nt(&left2_alt,goffsetL+rcL+1,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == gsequence_ucL[rcL]);
-    assert(left2 == gsequence_ucL[rcL+1]);
-#endif
-    if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
-      if (scoreL >= bestscoreL_CT) {
-	bestscoreL_CT = scoreL;
-	bestrcL_CT = rcL;
-      }
-    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
-      if (scoreL >= bestscoreL_GT) {
-	bestscoreL_GT = scoreL;
-	bestrcL_GT = rcL;
-      }
-    }
-  }
-
-
-  bestrcR_AC = bestrcR_GC = bestrcR_AT = bestrcR_XX = 0;
-  bestscoreR_AC = bestscoreR_GC = bestscoreR_AT = bestscoreR_XX = NEG_INFINITY_16;
-
-  for (rcR = 1; rcR <= diaglength; rcR++) {
-    if ((scoreR = matrixR[rcR][rcR]) >= bestscoreR_XX) {
-      bestscoreR_XX = scoreR;
-      bestrcR_XX = rcR;
-    }
-
-    right2 = get_genomic_nt(&right2_alt,rev_goffsetR-rcR-1,chroffset,chrhigh,watsonp);
-    right1 = get_genomic_nt(&right1_alt,rev_goffsetR-rcR,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(right2 == rev_gsequence_ucR[-1-rcR]);
-    assert(right1 == rev_gsequence_ucR[-rcR]);
-#endif
-
-    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
-      if (scoreR >= bestscoreR_AC) {
-	bestscoreR_AC = scoreR;
-	bestrcR_AC = rcR;
-      }
-    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
-      if (scoreR >= bestscoreR_GC) {
-	bestscoreR_GC = scoreR;
-	bestrcR_GC = rcR;
-      }
-    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
-      if (scoreR >= bestscoreR_AT) {
-	bestscoreR_AT = scoreR;
-	bestrcR_AT = rcR;
-      }
-    }
-  }
-
-  scoreI = intron_score(&introntype,0x00,0x00,/*cdna_direction*/-1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  bestscore = bestscoreL_XX + scoreI + bestscoreR_XX;
-  *bestrcL = bestrcL_XX;
-  *bestrcR = bestrcR_XX;
-
-  scoreI = intron_score(&introntype,LEFT_CT,RIGHT_AC,/*cdna_direction*/-1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  if (bestscoreL_CT + scoreI + bestscoreR_AC > bestscore) {
-    bestscore = bestscoreL_CT + scoreI + bestscoreR_AC;
-    *bestrcL = bestrcL_CT;
-    *bestrcR = bestrcR_AC;
-  }
-
-  scoreI = intron_score(&introntype,LEFT_CT,RIGHT_GC,/*cdna_direction*/-1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  if (bestscoreL_CT + scoreI + bestscoreR_GC > bestscore) {
-    bestscore = bestscoreL_CT + scoreI + bestscoreR_GC;
-    *bestrcL = bestrcL_CT;
-    *bestrcR = bestrcR_GC;
-  }
-
-  scoreI = intron_score(&introntype,LEFT_GT,RIGHT_AT,/*cdna_direction*/-1,
-			/*canonical_reward*/FINAL_CANONICAL_INTRON_HIGHQ,/*finalp*/true);
-  if (bestscoreL_GT + scoreI + bestscoreR_AT > bestscore) {
-    bestscore = bestscoreL_GT + scoreI + bestscoreR_AT;
-    *bestrcL = bestrcL_GT;
-    *bestrcR = bestrcR_AT;
-  }
-
-  *finalscore = (int) bestscore;
-  /*
-  fprintf(stderr,"%d + %d >=? %d\n",*bestrcL,*bestrcR,diaglength);
-  fprintf(stderr,"%d + %d >=? %d\n\n",*bestrcL,*bestrcR,diaglength);
-  */
-  if (*bestrcL + *bestrcR >= diaglength) {
-    bridge_dual_break_nogap(&(*finalscore),&(*bestrcL),&(*bestrcR),matrixL,matrixR,
-			    diaglength,goffsetL,rev_goffsetR,chroffset,chrhigh,
-			    /*cdna_direction*/-1,watsonp,/*jump_late_p*/true);
-  }
-
-  return;
-}
-#endif
-
-
-
-/************************************************************************/
-
-List_T
-Dynprog_single_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		    T dynprog, char *rsequence, char *sequenceuc1,
-		    int rlength, int glength, int roffset, int goffset,
-		    Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		    int extraband_single, double defect_rate, int close_indels_mode, bool widebandp) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence;
-#endif
-  Mismatchtype_T mismatchtype;
-  int lband, uband;
-#ifndef HAVE_SSE2
-  Score32_T **matrix, open, extend;
-  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#else
-  Score16_T **matrix, open, extend;
-  Direction16_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Score8_T **matrix8;
-  Direction8_T **directions8_nogap, **directions8_Egap, **directions8_Fgap;
-#endif
-  /* bool onesidegapp; */
-
-  if (defect_rate < DEFECT_HIGHQ) {
-    mismatchtype = HIGHQ;
-    open = SINGLE_OPEN_HIGHQ;
-    extend = SINGLE_EXTEND_HIGHQ;
-    /* onesidegapp = false; */
-  } else if (defect_rate < DEFECT_MEDQ) {
-    mismatchtype = MEDQ;
-    open = SINGLE_OPEN_MEDQ;
-    extend = SINGLE_EXTEND_MEDQ;
-    /* onesidegapp = true; */
-  } else {
-    mismatchtype = LOWQ;
-    open = SINGLE_OPEN_LOWQ;
-    extend = SINGLE_EXTEND_LOWQ;
-    /* onesidegapp = true; */
-  }
-
-#if 0
-  if (close_indels_mode == +1) {
-    /* Allow close indels */
-    onesidegapp = false;
-  } else if (close_indels_mode == -1) {
-    /* Disallow close indels */
-    onesidegapp = true;
-  } else {
-    /* Allow close indels for high quality alignments, as determined above */
-  }
-#endif    
-
-  /* Rlength: maxlookback+MAXPEELBACK.  Glength +EXTRAMATERIAL */
-  debug(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning single gap middle with wideband = %d and extraband %d\n",widebandp,extraband_single);
-	printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
-#ifdef EXTRACT_GENOMICSEG
-  debug(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
-#endif
-  debug(printf("\n"));
-
-#if 0
-  /* Can happen in bad genomic regions.  May want to give up, though, if rlength and glength differ greatly. */
-  assert(glength < 1000);
-#endif
-
-  if (rlength > dynprog->max_rlength || glength > dynprog->max_glength) {
-    debug(printf("rlength %d or glength %d is too long.  Returning NULL\n",rlength,glength));
-    *finalscore = NEG_INFINITY_32;
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-#if 0
-    /* Don't push a gapholder for single gap, because gapholder already exists */
-    pairs = Pairpool_push_gapholder(NULL,pairpool,rlength,glength,/*knownp*/false);
-#endif
-    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-    return (List_T) NULL;
-  }
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(sequenceuc1,queryaaseq,roffset,rlength);
-#endif
-  
-    /* If extraband_single is too large, then gaps may be inserted on
-       both sides, like this
-
-       CACCC   AGAGCAGGCACTGCCT
-       |||||--- ||| ||---||||| 
-       CACCCCAGGGAGGAG   CTGCCC
-
-    */
-
-
-  compute_bands(&lband,&uband,rlength,glength,extraband_single,widebandp);
-#ifdef HAVE_SSE4_1
-  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-  if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-    matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rsequence,
-#else
-				    rsequence,
-#endif
-				    /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				    goffset,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score8_T) open,(Score8_T) extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-    *finalscore = (int) matrix8[glength][rlength];
-
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    pairs = traceback_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			directions8_nogap,directions8_Egap,directions8_Fgap,rlength,glength,
-#ifdef PMAP
-			inst_rsequence,inst_rsequence,
-#else
-			rsequence,sequenceuc1,
-#endif
-			roffset,goffset,pairpool,/*revp*/false,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-  } else {
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rsequence,
-#else
-				    rsequence,
-#endif
-				    /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				    goffset,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-    *finalscore = (int) matrix[glength][rlength];
-
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    pairs = traceback(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-		      directions_nogap,directions_Egap,directions_Fgap,rlength,glength,
-#ifdef PMAP
-		      inst_rsequence,inst_rsequence,
-#else
-		      rsequence,sequenceuc1,
-#endif
-		      roffset,goffset,pairpool,/*revp*/false,
-		      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-  }
-
-#elif defined(HAVE_SSE2)
-
-  matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				  inst_rsequence,
-#else
-				  rsequence,
-#endif
-				  /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				  goffset,rlength,glength,
-				  chroffset,chrhigh,watsonp,
-				  mismatchtype,(Score16_T) open, (Score16_T) extend,
-				  lband,uband,jump_late_p,/*revp*/false);
-  *finalscore = (int) matrix[glength][rlength];
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-  pairs = traceback(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-		    directions_nogap,directions_Egap,directions_Fgap,rlength,glength,
-#ifdef PMAP
-		    inst_rsequence,inst_rsequence,
-#else
-		    rsequence,sequenceuc1,
-#endif
-		    roffset,goffset,pairpool,/*revp*/false,
-		    chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-#else
-
-  matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				   inst_rsequence,
-#else
-				   rsequence,
-#endif
-				   /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				   goffset,rlength,glength,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,open,extend,
-				   lband,uband,jump_late_p,/*revp*/false);
-  *finalscore = (int) matrix[glength][rlength];
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-  pairs = traceback(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-		    directions_nogap,directions_Egap,directions_Fgap,rlength,glength,
-#ifdef PMAP
-		    inst_rsequence,inst_rsequence,
-#else
-		    rsequence,sequenceuc1,
-#endif
-		    roffset,goffset,pairpool,/*revp*/false,
-		    chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#endif
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  /*
-  Directions_free(directions);
-  Matrix_free(matrix);
-  */
-
-  debug(printf("End of dynprog single gap\n"));
-
-  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-  return List_reverse(pairs);
-}
-
-
-/* Sequences rsequenceL and rsequenceR represent the two ends of the cDNA insertion */
-List_T
-Dynprog_cdna_gap (int *dynprogindex, int *finalscore, bool *incompletep,
-		  T dynprogL, T dynprogR, char *rsequenceL, char *rsequence_ucL, 
-		  char *rev_rsequenceR, char *rev_rsequence_ucR,
-#if 0
-		  char *gsequence, char *gsequence_uc,
-#endif
-		  int rlengthL, int rlengthR, int glength,
-		  int roffsetL, int rev_roffsetR, int goffset,
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		  char *queryaaseq,
-#endif
-		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		  int extraband_paired, double defect_rate) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence, *inst_rsequenceL, *inst_rev_rsequenceR;
-#endif
-  Mismatchtype_T mismatchtype;
-#ifndef HAVE_SSE2
-  Score32_T **matrixL, **matrixR, mismatch, open, extend;
-  Direction32_T **directionsL_nogap, **directionsL_Egap, **directionsL_Fgap,
-    **directionsR_nogap, **directionsR_Egap, **directionsR_Fgap;
-#else
-  Score16_T **matrixL, **matrixR, mismatch, open, extend;
-  Direction16_T **directionsL_nogap, **directionsL_Egap, **directionsL_Fgap,
-    **directionsR_nogap, **directionsR_Egap, **directionsR_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Score8_T **matrix8L, **matrix8R;
-  Direction8_T **directions8L_nogap, **directions8L_Egap, **directions8L_Fgap,
-    **directions8R_nogap, **directions8R_Egap, **directions8R_Fgap;
-  bool use8p;
-#endif
-  int rev_goffset, bestrL, bestrR, bestcL, bestcR, lband, uband, k;
-  int nmatches, nmismatches, nopens, nindels;
-  int queryjump, genomejump;
-  char c2, c2_alt;
-
-
-  if (glength <= 1) {
-    return NULL;
-  }
-
-  debug(
-	printf("\n");
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning cdna gap\n");
-	printf("At query offset %d-%d, %.*s\n",roffsetL,roffsetL+rlengthL-1,rlengthL,rsequenceL);
-	printf("At query offset %d-%d, %.*s\n",rev_roffsetR-rlengthR+1,rev_roffsetR,rlengthR,&(rev_rsequenceR[-rlengthR+1]));
-	printf("Whole piece at query offset %d-%d, %.*s\n",roffsetL,rev_roffsetR,rev_roffsetR-roffsetL+1,rsequenceL));
-#ifdef EXTRACT_GENOMICSEG
-  debug(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
-#endif
-  debug(printf("\n"));
-
-  /* ?check if offsets are too close.  But this eliminates a segment
-     of the cDNA.  Should check in stage 3, and do single gap instead. */
-  /*
-  if (roffsetL+rlengthL-1 >= rev_roffsetR-rlengthR+1) {
-    debug(printf("Bounds don't make sense\n"));
-    *finalscore = NEG_INFINITY_16;
-    return NULL;
-  }
-  */
-
-  if (defect_rate < DEFECT_HIGHQ) {
-    mismatchtype = HIGHQ;
-    mismatch = MISMATCH_HIGHQ;
-    open = CDNA_OPEN_HIGHQ;
-    extend = CDNA_EXTEND_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    mismatchtype = MEDQ;
-    mismatch = MISMATCH_MEDQ;
-    open = CDNA_OPEN_MEDQ;
-    extend = CDNA_EXTEND_MEDQ;
-  } else {
-    mismatchtype = LOWQ;
-    mismatch = MISMATCH_LOWQ;
-    open = CDNA_OPEN_LOWQ;
-    extend = CDNA_EXTEND_LOWQ;
-  }
-
-  if (glength > dynprogR->max_glength || rlengthR > dynprogR->max_rlength) {
-    debug(printf("glength %d or rlengthR %d is too long.  Returning NULL\n",glength,rlengthR));
-#if 0
-    rev_goffset = goffset + glength - 1;
-    queryjump = rev_roffsetR - roffsetL + 1;
-    genomejump = rev_goffset - goffset + 1;
-    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,/*knownp*/false);
-#endif
-    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-    return (List_T) NULL;
-  }
-
-  if (glength > dynprogL->max_glength || rlengthL > dynprogL->max_rlength) {
-    debug(printf("glength %d or rlengthL %d is too long.  Returning NULL\n",glength,rlengthL));
-#if 0
-    rev_goffset = goffset + glength - 1;
-    queryjump = rev_roffsetR - roffsetL + 1;
-    genomejump = rev_goffset - goffset + 1;
-    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,/*knownp*/false);
-#endif
-    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-    return (List_T) NULL;
-  }
-
-#if 0
-  /* Right side looks like 5' end */
-  /* Note: sequence 1 and 2 flipped, because 1 has extramaterial */
-  rev_gsequence = &(gsequence[glength-1]);
-  rev_gsequence_uc = &(gsequence_uc[glength-1]);
-#endif
-  rev_goffset = goffset+glength-1;
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(rsequenceL,queryaaseq,roffsetL,rev_roffsetR-roffsetL+1);
-  inst_rsequenceL = inst_rsequence;
-  inst_rev_rsequenceR = &(inst_rsequence[rev_roffsetR-roffsetL]);
-#endif
-
-#ifdef HAVE_SSE4_1
-  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-  if (glength <= SIMD_MAXLENGTH_EPI8 || (rlengthL <= SIMD_MAXLENGTH_EPI8 && rlengthR <= SIMD_MAXLENGTH_EPI8)) {
-    use8p = true;
-  } else {
-    use8p = false;
-  }
-#endif
-
-
-  compute_bands(&lband,&uband,rlengthR,glength,extraband_paired,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    matrix8R = compute_scores_simd_8(&directions8R_nogap,&directions8R_Egap,&directions8R_Fgap,dynprogR,
-#ifdef PMAP
-				     inst_rev_rsequenceR,
-#else
-				     rev_rsequenceR,
-#endif
-				     /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				     rev_goffset,rlengthR,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score8_T) open,(Score8_T) extend,
-				     lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-
-  } else {
-    matrixR = compute_scores_simd_16(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
-#ifdef PMAP
-				     inst_rev_rsequenceR,
-#else
-				     rev_rsequenceR,
-#endif
-				     /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				     rev_goffset,rlengthR,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score16_T) open, (Score16_T) extend,
-				     lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-  }
-
-#elif defined(HAVE_SSE2)
-  matrixR = compute_scores_simd_16(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
-#ifdef PMAP
-				   inst_rev_rsequenceR,
-#else
-				   rev_rsequenceR,
-#endif
-				   /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				   rev_goffset,rlengthR,glength,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,(Score16_T) open, (Score16_T) extend,
-				   lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-#else
-  matrixR = compute_scores_standard(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
-#ifdef PMAP
-				    inst_rev_rsequenceR,
-#else
-				    rev_rsequenceR,
-#endif
-				    /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				    rev_goffset,rlengthR,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,open,extend,
-				    lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-#endif
-
-
-  compute_bands(&lband,&uband,rlengthL,glength,extraband_paired,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    matrix8L = compute_scores_simd_8(&directions8L_nogap,&directions8L_Egap,&directions8L_Fgap,dynprogL,
-#ifdef PMAP
-				     inst_rsequenceL,
-#else
-				     rsequenceL,
-#endif
-				     /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				     goffset,rlengthL,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score8_T) open,(Score8_T) extend,
-				     lband,uband,jump_late_p,/*revp*/false);
-  } else {
-    matrixL = compute_scores_simd_16(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
-#ifdef PMAP
-				     inst_rsequenceL,
-#else
-				     rsequenceL,
-#endif
-				     /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				     goffset,rlengthL,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score16_T) open, (Score16_T) extend,
-				     lband,uband,jump_late_p,/*revp*/false);
-  }
-
-#elif defined(HAVE_SSE2)
-  matrixL = compute_scores_simd_16(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
-#ifdef PMAP
-				   inst_rsequenceL,
-#else
-				   rsequenceL,
-#endif
-				   /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				   goffset,rlengthL,glength,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,(Score16_T) open, (Score16_T) extend,
-				   lband,uband,jump_late_p,/*revp*/false);
-#else
-  matrixL = compute_scores_standard(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
-#ifdef PMAP
-				    inst_rsequenceL,
-#else
-				    rsequenceL,
-#endif
-				    /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				    goffset,rlengthL,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,open,extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-#endif
-
-  nmatches = nmismatches = nopens = nindels = 0;
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    bridge_cdna_gap_8(&(*finalscore),&bestcL,&bestcR,&bestrL,&bestrR,matrix8L,matrix8R,
-		      glength,rlengthL,rlengthR,extraband_paired,
-		      open,extend,roffsetL,rev_roffsetR,jump_late_p);
-
-    pairs = traceback_8(NULL,&nmatches,&nmismatches,&nopens,&nindels,
-			directions8R_nogap,directions8R_Egap,directions8R_Fgap,bestrR,bestcR,
-#ifdef PMAP
-			inst_rev_rsequenceR,inst_rev_rsequenceR,
-#else
-			rev_rsequenceR,rev_rsequence_ucR,
-#endif
-			rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-  } else {
-#endif
-
-    bridge_cdna_gap(&(*finalscore),&bestcL,&bestcR,&bestrL,&bestrR,matrixL,matrixR,
-		    glength,rlengthL,rlengthR,extraband_paired,
-		    open,extend,roffsetL,rev_roffsetR,jump_late_p);
-
-    pairs = traceback(NULL,&nmatches,&nmismatches,&nopens,&nindels,
-		      directionsR_nogap,directionsR_Egap,directionsR_Fgap,bestrR,bestcR,
-#ifdef PMAP
-		      inst_rev_rsequenceR,inst_rev_rsequenceR,
-#else
-		      rev_rsequenceR,rev_rsequence_ucR,
-#endif
-		      rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
-		      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-#ifdef HAVE_SSE4_1
-  }
-#endif
-
-  pairs = List_reverse(pairs);
-
-  queryjump = (rev_roffsetR-bestrR) - (roffsetL+bestrL) + 1;
-  genomejump = (rev_goffset-bestcR) - (goffset+bestcL) + 1;
-  /* No need to revise queryjump or genomejump, because the above
-     coordinates are internal to the gap. */
-
-  if (queryjump == INSERT_PAIRS && genomejump == INSERT_PAIRS) {
-    /* Add cDNA insertion, if any */
-    for (k = rev_roffsetR-bestrR; k >= roffsetL+bestrL; k--) {
-#ifdef PMAP
-      debug(printf("cDNA insertion, Pushing [%d,%d] (%c,-)\n",k,rev_goffset-bestcR+1,inst_rsequenceL[k-roffsetL]));
-      pairs = Pairpool_push(pairs,pairpool,k,rev_goffset-bestcR+1,inst_rsequenceL[k-roffsetL],SHORTGAP_COMP,
-			    /*genome*/' ',/*genomealt*/' ',*dynprogindex);
-#else
-      debug(printf("cDNA insertion, Pushing [%d,%d] (%c,-)\n",k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL]));
-      pairs = Pairpool_push(pairs,pairpool,k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL],SHORTGAP_COMP,
-			    /*genome*/' ',/*genomealt*/' ',*dynprogindex);
-#endif
-    }
-    debug(printf("\n"));
-
-
-    /* This loop not yet checked for get_genomic_nt giving correct answer */
-    for (k = rev_goffset-bestcR; k >= goffset+bestcL; k--) {
-      c2 = get_genomic_nt(&c2_alt,k,chroffset,chrhigh,watsonp);
-      debug(printf("genome insertion, Pushing [%d,%d] (-,%c)\n",roffsetL+bestrL,k,c2));
-#if 0
-      assert(c2 == gsequence[k-goffset]);
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,
-			    gsequence[k-goffset],/*genomealt*/GENOMEALT_DEFERRED,*dynprogindex);
-#else
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,c2,c2_alt,*dynprogindex);
-#endif
-    }
-    debug(printf("\n"));
-
-  } else {
-
-    /* Add gapholder to be solved in the future */
-#ifndef NOGAPHOLDER
-    debug(printf("Pushing a gap with queryjump = %d, genomejump = %d\n",queryjump,genomejump));
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-#endif
-    *incompletep = true;
-  }
-
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    pairs = traceback_8(pairs,&nmatches,&nmismatches,&nopens,&nindels,
-			directions8L_nogap,directions8L_Egap,directions8L_Fgap,bestrL,bestcL,
-#ifdef PMAP
-			inst_rsequenceL,inst_rsequenceL,
-#else
-			rsequenceL,rsequence_ucL,
-#endif
-			roffsetL,goffset,pairpool,/*revp*/false,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-  } else {
-#endif
-
-    pairs = traceback(pairs,&nmatches,&nmismatches,&nopens,&nindels,
-		      directionsL_nogap,directionsL_Egap,directionsL_Fgap,bestrL,bestcL,
-#ifdef PMAP
-		      inst_rsequenceL,inst_rsequenceL,
-#else
-		      rsequenceL,rsequence_ucL,
-#endif
-		      roffsetL,goffset,pairpool,/*revp*/false,
-		      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#ifdef HAVE_SSE4_1
-  }
-#endif
-
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  if (List_length(pairs) == 1) {
-    /* Only a gap added */
-    pairs = (List_T) NULL;
-  }
-
-  debug(printf("End of dynprog cDNA gap\n"));
-
-  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-  return List_reverse(pairs);
-}
-
-
-/* A genome gap is usually an intron.  Sequence 2L and 2R represent
-   the two genomic ends of the intron. */
-List_T
-Dynprog_genome_gap (int *dynprogindex, int *finalscore, int *new_leftgenomepos, int *new_rightgenomepos,
-		    double *left_prob, double *right_prob,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		    int *exonhead, int *introntype, T dynprogL, T dynprogR, 
-		    char *rsequence, char *sequenceuc1,
-		    int rlength, int glengthL, int glengthR, 
-		    int roffset, int goffsetL, int rev_goffsetR, 
-		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool, int extraband_paired,
-		    double defect_rate, int maxpeelback, bool halfp, bool finalp, bool use_probabilities_p,
-		    int score_threshold, bool splicingp) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence, *inst_rev_rsequence;
-#else
-  char *rev_rsequence, *revsequenceuc1;
-#endif
-  Mismatchtype_T mismatchtype;
-  int canonical_reward;
-  int rev_roffset, bestrL, bestrR, bestcL, bestcR, lband, uband;
-  int maxhorizjump, maxvertjump;
-#ifndef HAVE_SSE2
-  Score32_T **matrixL, **matrixR, open, extend;
-  Direction32_T **directionsL_nogap, **directionsL_Egap, **directionsL_Fgap,
-    **directionsR_nogap, **directionsR_Egap, **directionsR_Fgap;
-#else
-  Score16_T **matrixL, **matrixR, open, extend;
-  Direction16_T **directionsL_nogap, **directionsL_Egap, **directionsL_Fgap,
-    **directionsR_nogap, **directionsR_Egap, **directionsR_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Score8_T **matrix8L, **matrix8R;
-  Direction8_T **directions8L_nogap, **directions8L_Egap, **directions8L_Fgap,
-    **directions8R_nogap, **directions8R_Egap, **directions8R_Fgap;
-  bool use8p;
-#endif
-  /* int queryjump, genomejump; */
-
-  debug(
-	printf("\n");
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning genome gap with cdna_direction %d\n",cdna_direction);
-	printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
-#ifdef EXTRACT_GENOMICSEG
-  debug(printf("At genomic offset %d-%d, %.*s\n",goffsetL,goffsetL+glengthL-1,glengthL,gsequenceL));
-  debug(printf("At genomic offset %d-%d, %.*s\n",rev_goffsetR-glengthR+1,rev_goffsetR,glengthR,&(rev_gsequenceR[-glengthR+1])));
-#endif
-  debug(printf("\n"));
-
-  /* ?check if offsets are too close.  But this eliminates a segment
-     of the cDNA.  Should check in stage 3, and do single gap instead. */
-  /*
-  if (goffsetL+glengthL-1 >= rev_goffsetR-glengthR+1) {
-    debug(printf("Bounds don't make sense\n"));
-    *finalscore = NEG_INFINITY_16;
-    return NULL;
-  }
-  */
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-  *left_prob = *right_prob = 0.0;
-  if (rlength <= 1) {
-    *finalscore = NEG_INFINITY_32;
-    *introntype = NONINTRON;
-    return (List_T) NULL;
-  }
-
-  if (defect_rate < DEFECT_HIGHQ) {
-    mismatchtype = HIGHQ;
-    if (rlength > maxpeelback * 4) {
-      debug(printf("rlength %d is greater than maxpeelback %d * 4, so using single gap penalties\n",
-		   rlength,maxpeelback));
-      open = SINGLE_OPEN_HIGHQ;
-      extend = SINGLE_EXTEND_HIGHQ;
-    } else {
-      open = PAIRED_OPEN_HIGHQ;
-      extend = PAIRED_EXTEND_HIGHQ;
-    }
-    if (splicingp == false) {
-      canonical_reward = 0;
-    } else if (finalp == true) {
-      canonical_reward = FINAL_CANONICAL_INTRON_HIGHQ;
-    } else {
-      canonical_reward = CANONICAL_INTRON_HIGHQ;
-    }
-    maxhorizjump = MAXHORIZJUMP_HIGHQ;
-    maxvertjump = MAXVERTJUMP_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    mismatchtype = MEDQ;
-    if (rlength > maxpeelback * 4) {
-      debug(printf("rlength %d is greater than maxpeelback %d * 4, so using single gap penalties\n",
-		   rlength,maxpeelback));
-      open = SINGLE_OPEN_MEDQ;
-      extend = SINGLE_EXTEND_MEDQ;
-    } else {
-      open = PAIRED_OPEN_MEDQ;
-      extend = PAIRED_EXTEND_MEDQ;
-    }
-    if (splicingp == false) {
-      canonical_reward = 0;
-    } else if (finalp == true) {
-      canonical_reward = FINAL_CANONICAL_INTRON_MEDQ;
-    } else {
-      canonical_reward = CANONICAL_INTRON_MEDQ;
-    }
-    maxhorizjump = MAXHORIZJUMP_MEDQ;
-    maxvertjump = MAXVERTJUMP_MEDQ;
-  } else {
-    mismatchtype = LOWQ;
-    if (rlength > maxpeelback * 4) {
-      debug(printf("rlength %d is greater than maxpeelback %d * 4, so using single gap penalties\n",
-		   rlength,maxpeelback));
-      open = SINGLE_OPEN_LOWQ;
-      extend = SINGLE_EXTEND_LOWQ;
-    } else {
-      open = PAIRED_OPEN_LOWQ;
-      extend = PAIRED_EXTEND_LOWQ;
-    }
-    if (splicingp == false) {
-      canonical_reward = 0;
-    } else if (finalp == true) {
-      canonical_reward = FINAL_CANONICAL_INTRON_LOWQ;
-    } else {
-      canonical_reward = CANONICAL_INTRON_LOWQ;
-    }
-    maxhorizjump = MAXHORIZJUMP_LOWQ;
-    maxvertjump = MAXVERTJUMP_LOWQ;
-  }
-
-  if (rlength > dynprogL->max_rlength && glengthL > dynprogL->max_glength) {
-    debug(printf("rlength %d or glengthL %d is too long.  Returning NULL\n",rlength,glengthL));
-    *new_leftgenomepos = goffsetL-1;
-    *new_rightgenomepos = rev_goffsetR+1;
-    *exonhead = rev_roffset = roffset+rlength-1;
-#ifndef NOGAPHOLDER
-    /*
-    queryjump = rev_roffset - roffset + 1;
-    genomejump = rev_goffsetR - goffsetL + 1;
-    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,false);
-    */
-#endif
-    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-    *finalscore = NEG_INFINITY_32;
-    *introntype = NONINTRON;
-    return (List_T) NULL;
-  }
-
-  if (rlength > dynprogR->max_rlength && glengthR > dynprogR->max_glength) {
-    debug(printf("rlength %d or glengthR %d is too long.  Returning NULL\n",rlength,glengthR));
-    *new_leftgenomepos = goffsetL-1;
-    *new_rightgenomepos = rev_goffsetR+1;
-    *exonhead = rev_roffset = roffset+rlength-1;
-#ifndef NOGAPHOLDER
-    /*
-    queryjump = rev_roffset - roffset + 1;
-    genomejump = rev_goffsetR - goffsetL + 1;
-    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,false);
-    */
-#endif
-    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-    *finalscore = NEG_INFINITY_32;
-    *introntype = NONINTRON;
-    return (List_T) NULL;
-  }
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(rsequence,queryaaseq,roffset,rlength);
-  inst_rev_rsequence = &(inst_rsequence[rlength-1]);
-#else
-  rev_rsequence = &(rsequence[rlength-1]);
-  revsequenceuc1 = &(sequenceuc1[rlength-1]);
-#endif
-  rev_roffset = roffset+rlength-1;
-
-#ifdef HAVE_SSE4_1
-  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-  if (rlength <= SIMD_MAXLENGTH_EPI8 || (glengthL <= SIMD_MAXLENGTH_EPI8 && glengthR <= SIMD_MAXLENGTH_EPI8)) {
-    use8p = true;
-  } else {
-    use8p = false;
-  }
-#endif
-
-  compute_bands(&lband,&uband,rlength,glengthL,extraband_paired,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    matrix8L = compute_scores_simd_8(&directions8L_nogap,&directions8L_Egap,&directions8L_Fgap,dynprogL,
-#ifdef PMAP
-				     inst_rsequence,
-#else
-				     rsequence,
-#endif
-				     /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				     goffsetL,rlength,glengthL,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score8_T) open,(Score8_T) extend,
-				     lband,uband,jump_late_p,/*revp*/false);
-  } else {
-    matrixL = compute_scores_simd_16(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
-#ifdef PMAP
-				     inst_rsequence,
-#else
-				     rsequence,
-#endif
-				     /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				     goffsetL,rlength,glengthL,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score16_T) open, (Score16_T) extend,
-				     lband,uband,jump_late_p,/*revp*/false);
-  }
-
-#elif defined(HAVE_SSE2)
-  matrixL = compute_scores_simd_16(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
-#ifdef PMAP
-				   inst_rsequence,
-#else
-				   rsequence,
-#endif
-				   /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				   goffsetL,rlength,glengthL,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,(Score16_T) open, (Score16_T) extend,
-				   lband,uband,jump_late_p,/*revp*/false);
-#else
-  matrixL = compute_scores_standard(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
-#ifdef PMAP
-				    inst_rsequence,
-#else
-				    rsequence,
-#endif
-				    /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				    goffsetL,rlength,glengthL,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,open,extend,lband,uband,
-				    jump_late_p,/*revp*/false);
-#endif
-  
-  compute_bands(&lband,&uband,rlength,glengthR,extraband_paired,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    matrix8R = compute_scores_simd_8(&directions8R_nogap,&directions8R_Egap,&directions8R_Fgap,dynprogR,
-#ifdef PMAP
-				     inst_rev_rsequence,
-#else
-				     rev_rsequence,
-#endif
-				     /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				     rev_goffsetR,rlength,glengthR,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score8_T) open,(Score8_T) extend,
-				     lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-  } else {
-    matrixR = compute_scores_simd_16(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
-#ifdef PMAP
-				     inst_rev_rsequence,
-#else
-				     rev_rsequence,
-#endif
-				     /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				     rev_goffsetR,rlength,glengthR,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,(Score16_T) open, (Score16_T) extend,
-				     lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-  }
-
-#elif defined(HAVE_SSE2)
-  matrixR = compute_scores_simd_16(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
-#ifdef PMAP
-				   inst_rev_rsequence,
-#else
-				   rev_rsequence,
-#endif
-				   /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				   rev_goffsetR,rlength,glengthR,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,(Score16_T) open, (Score16_T) extend,
-				   lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-#else
-  matrixR = compute_scores_standard(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
-#ifdef PMAP
-				    inst_rev_rsequence,
-#else
-				    rev_rsequence,
-#endif
-				    /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				    rev_goffsetR,rlength,glengthR,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,open,extend,
-				    lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-#endif
-
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    if (bridge_intron_gap_8(&(*finalscore),&bestrL,&bestrR,&bestcL,&bestcR,
-			    &(*introntype),&(*left_prob),&(*right_prob),
-			    matrix8L,matrix8R,directions8L_nogap,directions8R_nogap,
-			    goffsetL,rev_goffsetR,rlength,glengthL,glengthR,
-			    cdna_direction,watsonp,extraband_paired,
-			    canonical_reward,maxhorizjump,maxvertjump,goffsetL,rev_goffsetR,
-			    chrnum,chroffset,chrhigh,halfp,finalp,use_probabilities_p,
-			    score_threshold,jump_late_p) == false) {
-      return (List_T) NULL;
-    } else {
-      *new_leftgenomepos = goffsetL+(bestcL-1);
-      *new_rightgenomepos = rev_goffsetR-(bestcR-1);
-      debug(printf("New leftgenomepos = %d, New rightgenomepos = %d\n",*new_leftgenomepos,*new_rightgenomepos));
-
-      *exonhead = rev_roffset-(bestrR-1);
-
-      pairs = traceback_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			  directions8R_nogap,directions8R_Egap,directions8R_Fgap,bestrR,bestcR,
-#ifdef PMAP
-			  inst_rev_rsequence,inst_rev_rsequence,
-#else
-			  rev_rsequence,revsequenceuc1,
-#endif
-			  rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
-			  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-      pairs = List_reverse(pairs);
-
-      /* queryjump = (rev_roffset-bestrR) - (roffset+bestrL) + 1; */
-      /* genomejump = (rev_goffsetR-bestcR) - (goffsetL+bestcL) + 1; */
-      /* No need to revise queryjump or genomejump, because the above
-	 coordinates are internal to the gap. */
-
-      debug(printf("Pushing a gap\n"));
-#ifndef NOGAPHOLDER
-      /* pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,false); */
-      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-#endif
-
-      pairs = traceback_8(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			  directions8L_nogap,directions8L_Egap,directions8L_Fgap,bestrL,bestcL,
-#ifdef PMAP
-			  inst_rsequence,inst_rsequence,
-#else
-			  rsequence,sequenceuc1,
-#endif
-			  roffset,goffsetL,pairpool,/*revp*/false,
-			  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-#ifdef PMAP
-      FREE(inst_rsequence);
-#endif
-
-      if (List_length(pairs) == 1) {
-	/* Only a gap inserted */
-	pairs = (List_T) NULL;
-      }
-
-      debug(printf("End of dynprog genome gap\n"));
-
-      *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-      return List_reverse(pairs);
-    }
-
-  } else {
-#endif  /* HAVE_SSE4_1 */
-
-    if (bridge_intron_gap(&(*finalscore),&bestrL,&bestrR,&bestcL,&bestcR,
-			  &(*introntype),&(*left_prob),&(*right_prob),
-			  matrixL,matrixR,directionsL_nogap,directionsR_nogap,
-			  goffsetL,rev_goffsetR,rlength,glengthL,glengthR,
-			  cdna_direction,watsonp,extraband_paired,
-			  canonical_reward,maxhorizjump,maxvertjump,goffsetL,rev_goffsetR,
-			  chrnum,chroffset,chrhigh,halfp,finalp,use_probabilities_p,
-			  score_threshold,jump_late_p) == false) {
-      return (List_T) NULL;
-    } else {
-      *new_leftgenomepos = goffsetL+(bestcL-1);
-      *new_rightgenomepos = rev_goffsetR-(bestcR-1);
-      debug(printf("New leftgenomepos = %d, New rightgenomepos = %d\n",*new_leftgenomepos,*new_rightgenomepos));
-
-      *exonhead = rev_roffset-(bestrR-1);
-
-      pairs = traceback(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			directionsR_nogap,directionsR_Egap,directionsR_Fgap,bestrR,bestcR,
-#ifdef PMAP
-			inst_rev_rsequence,inst_rev_rsequence,
-#else
-			rev_rsequence,revsequenceuc1,
-#endif
-			rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-      pairs = List_reverse(pairs);
-
-      /* queryjump = (rev_roffset-bestrR) - (roffset+bestrL) + 1; */
-      /* genomejump = (rev_goffsetR-bestcR) - (goffsetL+bestcL) + 1; */
-      /* No need to revise queryjump or genomejump, because the above
-	 coordinates are internal to the gap. */
-
-      debug(printf("Pushing a gap\n"));
-#ifndef NOGAPHOLDER
-      /* pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,false); */
-      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-#endif
-
-      pairs = traceback(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			directionsL_nogap,directionsL_Egap,directionsL_Fgap,bestrL,bestcL,
-#ifdef PMAP
-			inst_rsequence,inst_rsequence,
-#else
-			rsequence,sequenceuc1,
-#endif
-			roffset,goffsetL,pairpool,/*revp*/false,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#ifdef PMAP
-      FREE(inst_rsequence);
-#endif
-
-      if (List_length(pairs) == 1) {
-	/* Only a gap inserted */
-	pairs = (List_T) NULL;
-      }
-
-      debug(printf("End of dynprog genome gap\n"));
-
-      *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-      return List_reverse(pairs);
-    }
-
-#ifdef HAVE_SSE4_1
-  }
-#endif
-
-}
-
-
-
-
-
-static int
-binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
-  int middlei;
-
-  debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
-
-  while (lowi < highi) {
-    middlei = (lowi+highi)/2;
-    debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
-		  lowi,positions[lowi],middlei,positions[middlei],
-		  highi,positions[highi],goal));
-    if (goal < positions[middlei]) {
-      highi = middlei;
-    } else if (goal > positions[middlei]) {
-      lowi = middlei + 1;
-    } else {
-      debug10(printf("binary search returns %d\n",middlei));
-      return middlei;
-    }
-  }
-
-  debug10(printf("binary search returns %d\n",highi));
-  return highi;
-}
-
-
-
-List_T
-Dynprog_end5_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches, 
-		  int *nopens, int *nindels, T dynprog, 
-		  char *rev_rsequence, char *revsequenceuc1,
-		  int rlength, int glength, int rev_roffset, int rev_goffset, 
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		  char *queryaaseq,
-#endif
-		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		  int extraband_end, double defect_rate, Endalign_T endalign) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence, *inst_rev_rsequence;
-#endif
-  Pair_T pair;
-  Mismatchtype_T mismatchtype; 
-  int bestr, bestc, lband, uband;
-#ifndef HAVE_SSE2
-  Score32_T **matrix, open, extend;
-  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#else
-  Score16_T **matrix, open, extend;
-  Direction16_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Direction8_T **directions8_nogap, **directions8_Egap, **directions8_Fgap;
-  Score8_T **matrix8;
-  bool use8p = false;
-#endif
-#ifdef PMAP
-  int initpos, initmod;
-#endif
-
-  debug6(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning 5' end gap with endalign %d\n",endalign);
-	);
-
-  mismatchtype = ENDQ;
-  if (defect_rate < DEFECT_HIGHQ) {
-    open = END_OPEN_HIGHQ;
-    extend = END_EXTEND_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    open = END_OPEN_MEDQ;
-    extend = END_EXTEND_MEDQ;
-  } else {
-    open = END_OPEN_LOWQ;
-    extend = END_EXTEND_LOWQ;
-  }
-
-  /* We can just chop lengths to work, since we're not constrained on 5' end */
-  if (rlength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    debug6(printf("rlength %d <= 0, so returning NULL\n",rlength));
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    return (List_T) NULL;
-  } else if (endalign == QUERYEND_NOGAPS) {
-    /* Don't shorten rlength */
-  } else if (rlength > dynprog->max_rlength) {
-    debug6(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
-    rlength = dynprog->max_rlength;
-  }
-  if (glength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    debug6(printf("glength %d <= 0, so returning NULL\n",glength));
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    return (List_T) NULL;
-  } else if (endalign == QUERYEND_NOGAPS) {
-    /* Don't shorten glength */
-  } else if (glength > dynprog->max_glength) {
-    debug6(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
-    glength = dynprog->max_glength;
-  }
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(&(rev_rsequence[-rlength+1]),queryaaseq,rev_roffset-rlength+1,rlength);
-  inst_rev_rsequence = &(inst_rsequence[rlength-1]);
-  debug6(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(inst_rev_rsequence[-rlength+1])));
-#else
-  debug6(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(rev_rsequence[-rlength+1])));
-#endif
-
-#ifdef EXTRACT_GENOMICSEG
-  debug6(printf("At genomic offset %d-%d, %.*s\n",
-		rev_goffset-glength+1,rev_goffset,glength,&(rev_gsequence[-glength+1])));
-#endif
-
-
-  if (endalign == QUERYEND_GAP || endalign == BEST_LOCAL) {
-    compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-    /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-      use8p = true;
-      matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rev_rsequence,
-#else
-				      rev_rsequence,
-#endif
-				      /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				      rev_goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score8_T) open,(Score8_T) extend,
-				      lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-      find_best_endpoint_8(&(*finalscore),&bestr,&bestc,matrix8,rlength,glength,extraband_end,
-			   !jump_late_p);
-
-    } else {
-      matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rev_rsequence,
-#else
-				      rev_rsequence,
-#endif
-				      /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				      rev_goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score16_T) open, (Score16_T) extend,
-				      lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-      find_best_endpoint(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-			 !jump_late_p);
-    }
-
-#elif defined(HAVE_SSE2)
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rev_rsequence,
-#else
-				    rev_rsequence,
-#endif
-				    /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				    rev_goffset,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-    find_best_endpoint(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-		       !jump_late_p);
-
-#else
-
-    matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				     inst_rev_rsequence,
-#else
-				     rev_rsequence,
-#endif
-				     /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				     rev_goffset,rlength,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,open,extend,
-				     lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-    find_best_endpoint(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-		       !jump_late_p);
-#endif
-
-  } else if (endalign == QUERYEND_INDELS) {
-    compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-    /* Use || because we want the minimum length (which determines the diagonal length) to achive a score less than 128 */
-    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-      use8p = true;
-      matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rev_rsequence,
-#else
-				      rev_rsequence,
-#endif
-				      /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				      rev_goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score8_T) open,(Score8_T) extend,
-				      lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-      find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8,rlength,glength,extraband_end,
-					      !jump_late_p);
-      /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
-
-    } else {
-      matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rev_rsequence,
-#else
-				      rev_rsequence,
-#endif
-				      /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				      rev_goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score16_T) open, (Score16_T) extend,
-				      lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-      find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					    !jump_late_p);
-      /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
-    }
-
-#elif defined(HAVE_SSE2)
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rev_rsequence,
-#else
-				    rev_rsequence,
-#endif
-				    /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				    rev_goffset,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-    find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					  !jump_late_p);
-    /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
-
-#else
-    matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				     inst_rev_rsequence,
-#else
-				     rev_rsequence,
-#endif
-				     /*rev_gsequence*/NULL,/*rev_gsequence_alt*/NULL,
-				     rev_goffset,rlength,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,open,extend,lband,uband,
-				     /*for revp true*/!jump_late_p,/*revp*/true);
-    find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					  !jump_late_p);
-    /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
-
-#endif
-
-
-  } else if (endalign == QUERYEND_NOGAPS) {
-    find_best_endpoint_to_queryend_nogaps(&bestr,&bestc,rlength,glength);
-    /* *finalscore = 0;	-- Splicetrie procedures need to know finalscore */
-
-  } else {
-    fprintf(stderr,"Unexpected endalign value %d\n",endalign);
-    abort();
-  }
-
-
-#ifdef PMAP
-  initpos = rev_roffset-(bestc-1);
-  debug6(printf("Initial query pos is %d\n",initpos));
-  if ((initmod = initpos % 3) > 0) {
-    if (bestr + initmod < rlength && bestc + initmod < glength) {
-      debug6(printf("Rounding down by %d\n",initmod));
-      bestr += initmod;
-      bestc += initmod;
-    }
-  }
-#endif
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-  if (endalign == QUERYEND_NOGAPS) {
-    pairs = traceback_nogaps(NULL,&(*nmatches),&(*nmismatches),bestr,bestc,
-#ifdef PMAP
-			     inst_rev_rsequence,inst_rev_rsequence,
-#else
-			     rev_rsequence,revsequenceuc1,
-#endif
-			     rev_roffset,rev_goffset,pairpool,chroffset,chrhigh,
-			     /*revp*/true,watsonp,*dynprogindex);
-    *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ;
-
-#ifdef HAVE_SSE4_1
-  } else if (use8p == true) {
-    pairs = traceback_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			directions8_nogap,directions8_Egap,directions8_Fgap,bestr,bestc,
-#ifdef PMAP
-			inst_rev_rsequence,inst_rev_rsequence,
-#else
-			rev_rsequence,revsequenceuc1,
-#endif
-			rev_roffset,rev_goffset,pairpool,/*revp*/true,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#endif
-
-  } else {
-    pairs = traceback(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-		      directions_nogap,directions_Egap,directions_Fgap,bestr,bestc,
-#ifdef PMAP
-		      inst_rev_rsequence,inst_rev_rsequence,
-#else
-		      rev_rsequence,revsequenceuc1,
-#endif
-		      rev_roffset,rev_goffset,pairpool,/*revp*/true,
-		      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-  }
-
-
-  if ((endalign == QUERYEND_GAP || endalign == BEST_LOCAL) && (*nmatches + 1) < *nmismatches) {
-    *finalscore = 0;
-    /* No need to free pairs */
-    pairs = NULL;
-  } else {
-    /* Add 1 to count the match already in the alignment */
-    pairs = List_reverse(pairs); /* Look at 5' end to remove excess gaps */
-    while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
-      pairs = List_next(pairs);
-    }
-  }
-
-  /*
-    Directions_free(directions);
-    Matrix_free(matrix);
-  */
-  
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  debug6(printf("End of dynprog end5 gap\n\n"));
-
-  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-  return List_reverse(pairs);
-}
-
-
-
-/* rev_gsequence is the splicejunction */
-List_T
-Dynprog_end5_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
-			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-			     char *rev_rsequence, char *revsequenceuc1,
-			     char *rev_gsequence, char *rev_gsequence_uc, char *rev_gsequence_alt,
-			     int rlength, int glength, int rev_roffset, int rev_goffset_anchor, int rev_goffset_far,
-			     Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-			     char *queryaaseq,
-#endif
-			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-			     int extraband_end, double defect_rate, int contlength) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence, *inst_rev_rsequence;
-#endif
-  Pair_T pair;
-  Mismatchtype_T mismatchtype;
-  int bestr, bestc, lband, uband;
-#ifndef HAVE_SSE2
-  Score32_T **matrix, open, extend;
-  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#else
-  Score16_T **matrix, open, extend;
-  Direction16_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Score8_T **matrix8;
-  Direction8_T **directions8_nogap, **directions8_Egap, **directions8_Fgap;
-  bool use8p = false;
-#endif
-#ifdef PMAP
-  int initpos, initmod;
-#endif
-
-  debug6(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning 5' end gap with endalign QUERYEND_NOGAPS\n");
-	);
-
-  mismatchtype = ENDQ;
-  if (defect_rate < DEFECT_HIGHQ) {
-    open = END_OPEN_HIGHQ;
-    extend = END_EXTEND_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    open = END_OPEN_MEDQ;
-    extend = END_EXTEND_MEDQ;
-  } else {
-    open = END_OPEN_LOWQ;
-    extend = END_EXTEND_LOWQ;
-  }
-
-  /* We can just chop lengths to work, since we're not constrained on 5' end */
-  if (rlength <= 0 || rlength > dynprog->max_rlength) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    debug6(printf("rlength %d <= 0, so returning NULL\n",rlength));
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    *missscore = -100;
-    return (List_T) NULL;
-  }
-  if (glength <= 0 || glength > dynprog->max_glength) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    debug6(printf("glength %d <= 0, so returning NULL\n",glength));
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    *missscore = -100;
-    return (List_T) NULL;
-  }
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(&(rev_rsequence[-rlength+1]),queryaaseq,rev_roffset-rlength+1,rlength);
-  inst_rev_rsequence = &(inst_rsequence[rlength-1]);
-  debug6(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(inst_rev_rsequence[-rlength+1])));
-#else
-  debug6(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(rev_rsequence[-rlength+1])));
-#endif
-
-  debug6(printf("At genomic offset %d-%d, %.*s\n",
-		rev_goffset_anchor-glength+1,rev_goffset_anchor,glength,&(rev_gsequence[-glength+1])));
-  
-#ifdef PMAP
-  initpos = rev_roffset-(bestc-1);
-  debug6(printf("Initial query pos is %d\n",initpos));
-  if ((initmod = initpos % 3) > 0) {
-    if (bestr + initmod < rlength && bestc + initmod < glength) {
-      debug6(printf("Rounding down by %d\n",initmod));
-      bestr += initmod;
-      bestc += initmod;
-    }
-  }
-#endif
-
-  compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-  if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-    use8p = true;
-    matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rev_rsequence,rev_gsequence,rev_gsequence_alt,
-#else
-				    rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
-#endif
-				    /*goffset*/0,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score8_T) open,(Score8_T) extend,
-				    lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-    find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8,rlength,glength,extraband_end,
-					    !jump_late_p);
-
-  } else {
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rev_rsequence,rev_gsequence,rev_gsequence_alt,
-#else
-				    rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
-#endif
-				    /*goffset*/0,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-    find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					  !jump_late_p);
-  }
-
-#elif defined(HAVE_SSE2)
-  matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				  inst_rev_rsequence,rev_gsequence,rev_gsequence_alt,
-#else
-				  rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
-#endif
-				  /*goffset*/0,rlength,glength,
-				  chroffset,chrhigh,watsonp,
-				  mismatchtype,(Score16_T) open, (Score16_T) extend,
-				  lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-  find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					!jump_late_p);
-#else
-  matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				   inst_rev_rsequence,rev_gsequence,rev_gsequence_alt,
-#else
-				   rev_rsequence,rev_gsequence,rev_gsequence_alt,
-#endif
-				   /*goffset*/0,rlength,glength,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,open,extend,
-				   lband,uband,/*for revp true*/!jump_late_p,/*revp*/true);
-  find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					!jump_late_p);
-#endif
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    pairs = traceback_local_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			      directions8_nogap,directions8_Egap,directions8_Fgap,&bestr,&bestc,/*endc*/contlength,
-#ifdef PMAP
-			      inst_rev_rsequence,inst_rev_rsequence,
-#else
-			      rev_rsequence,revsequenceuc1,
-#endif
-			      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
-			      rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
-			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/rev_goffset_anchor - rev_goffset_far,
-				    /*knownp*/true);
-
-    pairs = traceback_local_8(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			      directions8_nogap,directions8_Egap,directions8_Fgap,&bestr,&bestc,/*endc*/0,
-#ifdef PMAP
-			      inst_rev_rsequence,inst_rev_rsequence,
-#else
-			      rev_rsequence,revsequenceuc1,
-#endif
-			      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
-			      rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
-			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-  } else {
-#endif
-
-    pairs = traceback_local(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			    directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/contlength,
-#ifdef PMAP
-			    inst_rev_rsequence,inst_rev_rsequence,
-#else
-			    rev_rsequence,revsequenceuc1,
-#endif
-			    rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
-			    rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
-			    chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/rev_goffset_anchor - rev_goffset_far,
-				    /*knownp*/true);
-
-    pairs = traceback_local(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			    directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/0,
-#ifdef PMAP
-			    inst_rev_rsequence,inst_rev_rsequence,
-#else
-			    rev_rsequence,revsequenceuc1,
-#endif
-			    rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
-			    rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
-			    chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#ifdef HAVE_SSE4_1
-  }
-#endif
-
-  /* Score compared with perfect score, so heavy weight on mismatches may not be necessary */
-  *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ + (*nopens)*open + (*nindels)*extend;
-  *missscore = (*finalscore) - rlength*FULLMATCH;
-  debug6(printf("finalscore %d = %d*%d matches + %d*%d mismatches + %d*%d opens + %d*%d extends\n",
-		*finalscore,FULLMATCH,*nmatches,MISMATCH_ENDQ,*nmismatches,open,*nopens,extend,*nindels));
-  debug6(printf("missscore = %d\n",*missscore));
-
-  /* Add 1 to count the match already in the alignment */
-  pairs = List_reverse(pairs); /* Look at 5' end to remove excess gaps */
-  while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
-    pairs = List_next(pairs);
-  }
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  debug6(Pair_dump_list(pairs,true));
-  debug6(printf("End of dynprog end5 gap splicejunction\n\n"));
-
-  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-  return List_reverse(pairs);
-}
-
-
-
-List_T
-Dynprog_end3_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches, 
-		  int *nopens, int *nindels, T dynprog, 
-		  char *rsequence, char *sequenceuc1,
-		  int rlength, int glength, int roffset, int goffset, 
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		  char *queryaaseq,
-#endif
-		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		  int extraband_end, double defect_rate, Endalign_T endalign) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence;
-#endif
-  Pair_T pair;
-  Mismatchtype_T mismatchtype;
-  int bestr, bestc, lband, uband;
-#ifndef HAVE_SSE2
-  Score32_T **matrix, open, extend;
-  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#else
-  Score16_T **matrix, open, extend;
-  Direction16_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Score8_T **matrix8;
-  Direction8_T **directions8_nogap, **directions8_Egap, **directions8_Fgap;
-  bool use8p = false;
-#endif
-#ifdef PMAP
-  int termpos, termmod;
-#endif
-
-  debug6(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning 3' end gap with endalign = %d\n",endalign);
-	);
-
-  mismatchtype = ENDQ;
-  if (defect_rate < DEFECT_HIGHQ) {
-    open = END_OPEN_HIGHQ;
-    extend = END_EXTEND_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    open = END_OPEN_MEDQ;
-    extend = END_EXTEND_MEDQ;
-  } else {
-    open = END_OPEN_LOWQ;
-    extend = END_EXTEND_LOWQ;
-  }
-
-  /* We can just chop lengths to work, since we're not constrained on 3' end */
-  if (rlength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    return (List_T) NULL;
-  } else if (endalign == QUERYEND_NOGAPS) {
-    /* Don't shorten rlength */
-  } else if (rlength > dynprog->max_rlength) {
-    debug6(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
-    rlength = dynprog->max_rlength;
-  }
-  if (glength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    return (List_T) NULL;
-  } else if (endalign == QUERYEND_NOGAPS) {
-    /* Don't shorten glength */
-  } else if (glength > dynprog->max_glength) {
-    debug6(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
-    glength = dynprog->max_glength;
-  }
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(rsequence,queryaaseq,roffset,rlength);
-  debug6(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,inst_rsequence));
-#else
-  debug6(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
-#endif
-	
-#ifdef EXTRACT_GENOMICSEG
-  debug6(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
-#endif
-
-
-  if (endalign == QUERYEND_GAP || endalign == BEST_LOCAL) {
-    compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-    /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-      use8p = true;
-      matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rsequence,
-#else
-				      rsequence,
-#endif
-				      /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				      goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score8_T) open,(Score8_T) extend,
-				      lband,uband,jump_late_p,/*revp*/false);
-      find_best_endpoint_8(&(*finalscore),&bestr,&bestc,matrix8,rlength,glength,extraband_end,
-			   jump_late_p);
-    } else {
-      matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rsequence,
-#else
-				      rsequence,
-#endif
-				      /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				      goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score16_T) open, (Score16_T) extend,
-				      lband,uband,jump_late_p,/*revp*/false);
-      find_best_endpoint(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-			 jump_late_p);
-    }
-
-#elif defined(HAVE_SSE2)
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rsequence,
-#else
-				    rsequence,
-#endif
-				    /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				    goffset,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-    find_best_endpoint(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-		       jump_late_p);
-
-#else
-
-    matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				     inst_rsequence,
-#else
-				     rsequence,
-#endif
-				     /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				     goffset,rlength,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,open,extend,
-				     lband,uband,jump_late_p,/*revp*/false);
-    find_best_endpoint(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-		       jump_late_p);
-#endif
-
-  } else if (endalign == QUERYEND_INDELS) {
-    compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-    /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-      use8p = true;
-      matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rsequence,
-#else
-				      rsequence,
-#endif
-				      /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				      goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score8_T) open,(Score8_T) extend,
-				      lband,uband,jump_late_p,/*revp*/false);
-      find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8,rlength,glength,extraband_end,
-					      jump_late_p);
-      /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
-
-    } else {
-      matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				      inst_rsequence,
-#else
-				      rsequence,
-#endif
-				      /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				      goffset,rlength,glength,
-				      chroffset,chrhigh,watsonp,
-				      mismatchtype,(Score16_T) open, (Score16_T) extend,
-				      lband,uband,jump_late_p,/*revp*/false);
-      find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					    jump_late_p);
-      /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
-    }
-
-#elif defined(HAVE_SSE2)
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rsequence,
-#else
-				    rsequence,
-#endif
-				    /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				    goffset,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-    find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					  jump_late_p);
-    /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
-
-#else
-
-    matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				     inst_rsequence,
-#else
-				     rsequence,
-#endif
-				     /*gsequence*/NULL,/*gsequence_alt*/NULL,
-				     goffset,rlength,glength,
-				     chroffset,chrhigh,watsonp,
-				     mismatchtype,open,extend,
-				     lband,uband,jump_late_p,/*revp*/false);
-    find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					  jump_late_p);
-    /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
-#endif
-
-  } else if (endalign == QUERYEND_NOGAPS) {
-    find_best_endpoint_to_queryend_nogaps(&bestr,&bestc,rlength,glength);
-    /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
-
-  } else {
-    fprintf(stderr,"Unexpected endalign value %d\n",endalign);
-    abort();
-  }
-
-#ifdef PMAP
-  termpos = roffset+(bestc-1);
-  debug6(printf("Final query pos is %d\n",termpos));
-  if ((termmod = termpos % 3) < 2) {
-    if (bestr + (2 - termmod) < rlength && bestc + (2 - termmod) < glength) {
-      debug6(printf("Rounding up by %d\n",2 - termmod));
-      bestr += 2 - termmod;
-      bestc += 2 - termmod;
-    }
-  }
-#endif
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-  if (endalign == QUERYEND_NOGAPS) {
-    pairs = traceback_nogaps(NULL,&(*nmatches),&(*nmismatches),bestr,bestc,
-#ifdef PMAP
-			     inst_rsequence,inst_rsequence,
-#else
-			     rsequence,sequenceuc1,
-#endif
-			     roffset,goffset,pairpool,chroffset,chrhigh,
-			     /*revp*/false,watsonp,*dynprogindex);
-    *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ;
-
-#ifdef HAVE_SSE4_1
-  } else if (use8p == true) {
-    pairs = traceback_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			directions8_nogap,directions8_Egap,directions8_Fgap,bestr,bestc,
-#ifdef PMAP
-			inst_rsequence,inst_rsequence,
-#else
-			rsequence,sequenceuc1,
-#endif
-			roffset,goffset,pairpool,/*revp*/false,
-			chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#endif
-
-  } else {
-    pairs = traceback(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-		      directions_nogap,directions_Egap,directions_Fgap,bestr,bestc,
-#ifdef PMAP
-		      inst_rsequence,inst_rsequence,
-#else
-		      rsequence,sequenceuc1,
-#endif
-		      roffset,goffset,pairpool,/*revp*/false,
-		      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-  }
-
-  if ((endalign == QUERYEND_GAP || endalign == BEST_LOCAL) && (*nmatches + 1) < *nmismatches) {
-    *finalscore = 0;
-    /* No need to free pairs */
-    pairs = NULL;
-
-  } else {
-    /* Add 1 to count the match already in the alignment */
-    pairs = List_reverse(pairs); /* Look at 3' end to remove excess gaps */
-    while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
-      pairs = List_next(pairs);
-    }
-  }
-
-  /*
-    Directions_free(directions);
-    Matrix_free(matrix);
-  */
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  debug6(printf("End of dynprog end3 gap\n\n"));
-
-  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-  return pairs;			/* not List_reverse(pairs) */
-}
-
-
-/* gsequence is the splicejunction */
-List_T
-Dynprog_end3_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
-			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-			     char *rsequence, char *sequenceuc1,
-			     char *gsequence, char *gsequence_uc, char *gsequence_alt,
-			     int rlength, int glength, int roffset, int goffset_anchor, int goffset_far,
-			     Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-			     char *queryaaseq,
-#endif
-			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-			     int extraband_end, double defect_rate, int contlength) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence;
-#endif
-  Pair_T pair;
-  Mismatchtype_T mismatchtype;
-  int bestr, bestc, lband, uband;
-#ifndef HAVE_SSE2
-  Score32_T **matrix, open, extend;
-  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#else
-  Score16_T **matrix, open, extend;
-  Direction16_T **directions_nogap, **directions_Egap, **directions_Fgap;
-#endif
-#ifdef HAVE_SSE4_1
-  Score8_T **matrix8;
-  Direction8_T **directions8_nogap, **directions8_Egap, **directions8_Fgap;
-  bool use8p = false;
-#endif
-#ifdef PMAP
-  int termpos, termmod;
-#endif
-
-  debug6(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning 3' end gap splicejunction\n");
-	);
-
-  mismatchtype = ENDQ;
-  if (defect_rate < DEFECT_HIGHQ) {
-    open = END_OPEN_HIGHQ;
-    extend = END_EXTEND_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    open = END_OPEN_MEDQ;
-    extend = END_EXTEND_MEDQ;
-  } else {
-    open = END_OPEN_LOWQ;
-    extend = END_EXTEND_LOWQ;
-  }
-
-
-  /* We can just chop lengths to work, since we're not constrained on 3' end */
-  if (rlength <= 0 || rlength > dynprog->max_rlength) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    *missscore = -100;
-    return (List_T) NULL;
-  }
-  if (glength <= 0 || glength > dynprog->max_glength) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *nmatches = *nmismatches = *nopens = *nindels = 0;
-    *finalscore = 0;
-    *missscore = -100;
-    return (List_T) NULL;
-  }
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(rsequence,queryaaseq,roffset,rlength);
-  debug6(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,inst_rsequence));
-#else
-  debug6(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
-#endif
-	
-  debug6(printf("At genomic offset %d-%d, %.*s\n",
-		goffset_anchor,goffset_anchor+glength-1,glength,gsequence));
-
-
-  /* find_best_endpoint_to_queryend_nogaps(&bestr,&bestc,rlength,glength); */
-  /* bestr = bestc = rlength; */
-  /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
-
-#ifdef PMAP
-  termpos = roffset+(bestc-1);
-  debug6(printf("Final query pos is %d\n",termpos));
-  if ((termmod = termpos % 3) < 2) {
-    if (bestr + (2 - termmod) < rlength && bestc + (2 - termmod) < glength) {
-      debug6(printf("Rounding up by %d\n",2 - termmod));
-      bestr += 2 - termmod;
-      bestc += 2 - termmod;
-    }
-  }
-#endif
-
-  compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
-#ifdef HAVE_SSE4_1
-  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
-  if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
-    use8p = true;
-    matrix8 = compute_scores_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rsequence,gsequence,gsequence_alt,
-#else
-				    rsequence,gsequence_uc,gsequence_alt,
-#endif
-				    /*goffset*/0,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score8_T) open,(Score8_T) extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-    find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8,rlength,glength,extraband_end,
-					    jump_late_p);
-
-  } else {
-    matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				    inst_rsequence,gsequence,gsequence_alt,
-#else
-				    rsequence,gsequence_uc,gsequence_alt,
-#endif
-				    /*goffset*/0,rlength,glength,
-				    chroffset,chrhigh,watsonp,
-				    mismatchtype,(Score16_T) open, (Score16_T) extend,
-				    lband,uband,jump_late_p,/*revp*/false);
-    find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					  jump_late_p);
-  }
-
-#elif defined(HAVE_SSE2)
-  matrix = compute_scores_simd_16(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				  inst_rsequence,gsequence,gsequence_alt,
-#else
-				  rsequence,gsequence_uc,gsequence_alt,
-#endif
-				  /*goffset*/0,rlength,glength,
-				  chroffset,chrhigh,watsonp,
-				  mismatchtype,(Score16_T) open, (Score16_T) extend,
-				  lband,uband,jump_late_p,/*revp*/false);
-  find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					jump_late_p);
-
-#else
-
-  matrix = compute_scores_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
-#ifdef PMAP
-				   inst_rsequence,gsequence,gsequence_alt,
-#else
-				   rsequence,gsequence,gsequence_alt,
-#endif
-				   /*goffset*/0,rlength,glength,
-				   chroffset,chrhigh,watsonp,
-				   mismatchtype,open,extend,
-				   lband,uband,jump_late_p,/*revp*/false);
-  find_best_endpoint_to_queryend_indels(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,extraband_end,
-					jump_late_p);
-#endif
-
-  *nmatches = *nmismatches = *nopens = *nindels = 0;
-#ifdef HAVE_SSE4_1
-  if (use8p == true) {
-    pairs = traceback_local_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			      directions8_nogap,directions8_Egap,directions8_Fgap,&bestr,&bestc,/*endc*/contlength,
-#ifdef PMAP
-			      inst_rsequence,inst_rsequence,
-#else
-			      rsequence,sequenceuc1,
-#endif
-			      gsequence,gsequence_uc,gsequence_alt,
-			      roffset,goffset_far,pairpool,/*revp*/false,
-			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffset_far - goffset_anchor,
-				    /*knownp*/true);
-
-    pairs = traceback_local_8(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			      directions8_nogap,directions8_Egap,directions8_Fgap,&bestr,&bestc,/*endc*/0,
-#ifdef PMAP
-			      inst_rsequence,inst_rsequence,
-#else
-			      rsequence,sequenceuc1,
-#endif
-			      gsequence,gsequence_uc,gsequence_alt,
-			      roffset,goffset_anchor,pairpool,/*revp*/false,
-			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-  } else {
-#endif
-
-    pairs = traceback_local(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			    directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/contlength,
-#ifdef PMAP
-			    inst_rsequence,inst_rsequence,
-#else
-			    rsequence,sequenceuc1,
-#endif
-			    gsequence,gsequence_uc,gsequence_alt,
-			    roffset,goffset_far,pairpool,/*revp*/false,
-			    chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffset_far - goffset_anchor,
-				    /*knownp*/true);
-
-    pairs = traceback_local(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
-			    directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/0,
-#ifdef PMAP
-			    inst_rsequence,inst_rsequence,
-#else
-			    rsequence,sequenceuc1,
-#endif
-			    gsequence,gsequence_uc,gsequence_alt,
-			    roffset,goffset_anchor,pairpool,/*revp*/false,
-			    chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
-#ifdef HAVE_SSE4_1
-  }
-#endif
-
-  /* Score compared with perfect score, so heavy weight on mismatches may not be necessary */
-  *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ + (*nopens)*open + (*nindels)*extend;
-  *missscore = (*finalscore) - rlength*FULLMATCH;
-  debug6(printf("finalscore %d = %d*%d matches + %d*%d mismatches + %d*%d opens + %d*%d extends\n",
-		*finalscore,FULLMATCH,*nmatches,MISMATCH_ENDQ,*nmismatches,open,*nopens,extend,*nindels));
-  debug6(printf("missscore = %d\n",*missscore));
-
-  /* Add 1 to count the match already in the alignment */
-  pairs = List_reverse(pairs); /* Look at 3' end to remove excess gaps */
-  while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
-    pairs = List_next(pairs);
-  }
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  debug6(Pair_dump_list(pairs,true));
-  debug6(printf("End of dynprog end3 gap splicejunction\n\n"));
-
-  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-  return pairs;			/* not List_reverse(pairs) */
-}
-
-
-static void
-make_contjunction_5 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
-		     int splicelength, int contlength, Splicetype_T anchor_splicetype,
-		     bool watsonp) {
-  char *proximal, *proximal_alt;
-
-  debug7(printf("make_contjunction_5 at %u, splice (%s), contlength %d, splicelength %d:",
-		splicecoord,Splicetype_string(anchor_splicetype),contlength, splicelength));
-
-  proximal = &(splicejunction[splicelength]);
-  proximal_alt = &(splicejunction_alt[splicelength]);
-
-  if (anchor_splicetype == ACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
-
-  } else if (anchor_splicetype == ANTIDONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
-
-  } else if (anchor_splicetype == ANTIACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
-
-  } else if (anchor_splicetype == DONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
-    
-  } else {
-    fprintf(stderr,"Unexpected anchor_splicetype value %d\n",anchor_splicetype);
-    abort();
-  }
-
-  if (watsonp == false) {
-    make_complement_inplace(proximal,contlength);
-    make_complement_inplace(proximal_alt,contlength);
-  }
-
-#ifdef DEBUG7
-  if (watsonp == true) {
-    printf(" (fwd)  contjunction    : %.*s\n",contlength,proximal);
-    printf(" (fwd)  contjunction_alt: %.*s\n",contlength,proximal_alt);
-  } else {
-    printf(" (rev)  contjunction    : %.*s\n",contlength,proximal);
-    printf(" (rev)  contjunction_alt: %.*s\n",contlength,proximal_alt);
-  }
-#endif
-
-  return;
-}
-
-
-
-/* Fills in just the distal part, keeping the proximal part same for contlength */
-bool
-Dynprog_make_splicejunction_5 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
-			       int splicelength, int contlength, Splicetype_T far_splicetype,
-			       bool watsonp) {
-  char *distal, *distal_alt;
-
-  debug7(printf("make_splicejunction_5 at %u, splice (%s), contlength %d, splicelength %d:\n",
-		splicecoord,Splicetype_string(far_splicetype),contlength, splicelength));
-
-  distal = &(splicejunction[0]);
-  distal_alt = &(splicejunction_alt[0]);
-
-  if (far_splicetype == ACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
-
-  } else if (far_splicetype == ANTIDONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
-
-  } else if (splicecoord <= splicelength) {
-    return false;
-
-  } else if (far_splicetype == ANTIACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
-
-  } else if (far_splicetype == DONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
-    
-  } else {
-    fprintf(stderr,"Unexpected far_splicetype value %d\n",far_splicetype);
-    abort();
-  }
-
-  if (watsonp == false) {
-    make_complement_inplace(distal,splicelength);
-    make_complement_inplace(distal_alt,splicelength);
-  }
-
-#ifdef DEBUG7
-  if (watsonp == true) {
-    printf(" (fwd)  splicejunction    : %s\n",splicejunction);
-    printf(" (fwd)  splicejunction_alt: %s\n",splicejunction_alt);
-  } else {
-    printf(" (rev)  splicejunction    : %s\n",splicejunction);
-    printf(" (rev)  splicejunction_alt: %s\n",splicejunction_alt);
-  }
-#endif
-
-  return true;
-}
-
-
-static void
-make_contjunction_3 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
-		     int splicelength, int contlength, Splicetype_T anchor_splicetype,
-		     bool watsonp) {
-  char *proximal, *proximal_alt;
-
-  debug7(printf("make_contjunction_3 at %u, splice (%s), contlength %d, splicelength %d:\n",
-		splicecoord,Splicetype_string(anchor_splicetype),contlength,splicelength));
-
-  proximal = &(splicejunction[0]);
-  proximal_alt = &(splicejunction_alt[0]);
-
-  if (anchor_splicetype == DONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
-
-  } else if (anchor_splicetype == ANTIACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
-
-  } else if (anchor_splicetype == ANTIDONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
-
-  } else if (anchor_splicetype == ACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
-    
-  } else {
-    fprintf(stderr,"Unexpected anchor_splicetype value %d\n",anchor_splicetype);
-    abort();
-  }
-
-  if (watsonp == false) {
-    make_complement_inplace(proximal,contlength);
-    make_complement_inplace(proximal_alt,contlength);
-  }
-
-#ifdef DEBUG7
-  if (watsonp == true) {
-    printf(" (fwd)  contjunction    : %.*s\n",contlength,proximal);
-    printf(" (fwd)  contjunction_alt: %.*s\n",contlength,proximal_alt);
-  } else {
-    printf(" (rev)  contjunction    : %.*s\n",contlength,proximal);
-    printf(" (rev)  contjunction_alt: %.*s\n",contlength,proximal_alt);
-  }
-#endif
-
-  return;
-}
-
-
-
-/* Fills in just the distal part, keeping the proximal part same for contlength */
-bool
-Dynprog_make_splicejunction_3 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
-			       int splicelength, int contlength, Splicetype_T far_splicetype,
-			       bool watsonp) {
-  char *distal, *distal_alt;
-
-  debug7(printf("make_splicejunction_3 at %u, splice (%s), contlength %d, splicelength %d:\n",
-		splicecoord,Splicetype_string(far_splicetype),contlength,splicelength));
-
-  distal = &(splicejunction[contlength]);
-  distal_alt = &(splicejunction_alt[contlength]);
-
-  if (far_splicetype == ANTIDONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
-
-  } else if (far_splicetype == ACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
-    
-  } else if (splicecoord <= splicelength) {
-    return false;
-
-  } else if (far_splicetype == DONOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
-
-  } else if (far_splicetype == ANTIACCEPTOR) {
-    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
-
-
-  } else {
-    fprintf(stderr,"Unexpected far_splicetype value %d\n",far_splicetype);
-    abort();
-  }
-
-  if (watsonp == false) {
-    make_complement_inplace(distal,splicelength);
-    make_complement_inplace(distal_alt,splicelength);
-  }
-
-#ifdef DEBUG7
-  if (watsonp == true) {
-    printf(" (fwd)  splicejunction    : %s\n",splicejunction);
-    printf(" (fwd)  splicejunction_alt: %s\n",splicejunction_alt);
-  } else {
-    printf(" (rev)  splicejunction    : %s\n",splicejunction);
-    printf(" (rev)  splicejunction_alt: %s\n",splicejunction_alt);
-  }
-#endif
-
-  return true;
-}
-
-
-List_T
-Dynprog_end5_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
-		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-		    char *rev_rsequence, char *revsequenceuc1,
-		    int rlength, int glength, int rev_roffset, int rev_goffset, 
-		    Univcoord_T chroffset, Univcoord_T chrhigh,
-		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		    int extraband_end, double defect_rate) {
-  List_T best_pairs = NULL, orig_pairs;
-  Pair_T pair;
-  Univcoord_T low, high, far_limit_low, far_limit_high;
-  Splicetype_T anchor_splicetype, far_splicetype;
-  int contlength, splicelength, endlength;
-  char *splicejunction, *splicejunction_alt;
-#ifdef EXTRACT_GENOMICSEG
-  char *splicejunction_test;
-#endif
-  int jstart, j;
-
-  int orig_score, threshold_miss_score, perfect_score;
-  int obsmax_penalty;
-
-
-  assert(glength >= rlength);
-
-  debug7(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning 5' end gap, known\n")
-	);
-
-  *ambig_end_length = 0;
-
-  /* We can just chop lengths to work, since we're not constrained on 5' end */
-  if (rlength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *finalscore = 0;
-    *knownsplicep = false;
-    return (List_T) NULL;
-  }
-  if (glength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *finalscore = 0;
-    *knownsplicep = false;
-    return (List_T) NULL;
-  }
-
-  debug7(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(rev_rsequence[-rlength+1])));
-#ifdef EXTRACT_GENOMICSEG
-  debug7(printf("At genomic offset %d-%d, %.*s\n",rev_goffset-glength+1,rev_goffset,glength,&(rev_gsequence[-glength+1])));
-#endif
-
-  perfect_score = rlength*FULLMATCH;
-
-  /* Try without splicing, all the way to query end */
-  best_pairs = Dynprog_end5_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
-				&(*nopens),&(*nindels),dynprog,rev_rsequence,revsequenceuc1,
-				rlength,glength,rev_roffset,rev_goffset,chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq,
-#endif
-				cdna_direction,watsonp,jump_late_p,pairpool,
-				extraband_end,defect_rate,/*endalign*/QUERYEND_NOGAPS);
-  if (*finalscore < 0) {
-    orig_score = 0;
-    orig_pairs = best_pairs = (List_T) NULL;
-  } else {
-    orig_score = *finalscore;
-    orig_pairs = best_pairs;
-  }
-  threshold_miss_score = orig_score - perfect_score;
-  debug7(printf("score %d - perfect score %d = threshold %d",
-		orig_score,perfect_score,threshold_miss_score));
-  if (threshold_miss_score < -2*FULLMATCH) {
-    /* Don't allow more than 2 mismatches in a distant splice */
-    threshold_miss_score = -2*FULLMATCH;
-    debug7(printf(", but revising to %d\n",threshold_miss_score));
-  }
-  debug7(printf("\n"));
-  *knownsplicep = false;
-
-
-  if (threshold_miss_score < 0 && glength > 0) {
-    /* Try known splicing */
-    splicejunction = (char *) CALLOC(glength+1,sizeof(char));
-    splicejunction_alt = (char *) CALLOC(glength+1,sizeof(char));
-#ifdef EXTRACT_GENOMICSEG
-    splicejunction_test = (char *) CALLOC(glength+1,sizeof(char));
-#endif
-
-    endlength = rlength;
-    if (watsonp == true) {
-      low = chroffset + rev_goffset-endlength + 2;
-      high = chroffset + rev_goffset + 1;
-      debug7(printf("5' watson\n"));
-      debug7(printf("Calculating low %u (%u) = %u + %d-%d + 2\n",
-		    low,low-chroffset,chroffset,rev_goffset,endlength));
-      debug7(printf("Calculating high %u (%u) = %u + %d + 1\n",
-		    high,high-chroffset,chroffset,rev_goffset));
-      if (cdna_direction > 0) {
-	anchor_splicetype = ACCEPTOR;
-	far_splicetype = DONOR;
-      } else {
-	anchor_splicetype = ANTIDONOR;
-	far_splicetype = ANTIACCEPTOR;
-      }
-    } else {
-      low = chrhigh - rev_goffset;
-      high = chrhigh - (rev_goffset-endlength) - 1;
-      debug7(printf("5' crick\n"));
-      debug7(printf("Calculating low %u (%u) = %u - %d\n",
-		    low,low-chroffset,chrhigh,rev_goffset));
-      debug7(printf("Calculating high %u (%u) = %u - (%d-%d) - 1\n",
-		    high,high-chroffset,chrhigh,rev_goffset,endlength));
-      if (cdna_direction > 0) {
-	anchor_splicetype = ANTIACCEPTOR;
-	far_splicetype = ANTIDONOR;
-      } else {
-	anchor_splicetype = DONOR;
-	far_splicetype = ACCEPTOR;
-      }
-    }
-
-    far_limit_low = knownsplice_limit_low;
-    far_limit_high = knownsplice_limit_high;
-    debug7(printf("Genomic positions: %u..%u (%u..%u), looking for anchor splicetype %s\n",
-		  low,high,low-chroffset,high-chroffset,Splicetype_string(anchor_splicetype)));
-    j = jstart = binary_search(0,nsplicesites,splicesites,low);
-    while (j < nsplicesites && splicesites[j] <= high) {
-      if (splicetypes[j] == anchor_splicetype) {
-	debug7(printf("Found one at %u (%u)\n",splicesites[j],splicesites[j]-chroffset));
-	if (watsonp == true) {
-	  contlength = high - splicesites[j];
-	} else {
-	  contlength = splicesites[j] - low;
-	}
-	debug7(printf("contlength %d, splicelength %d, rlength %d, glength %d\n",
-		      contlength,glength-contlength,rlength,glength));
-	assert(contlength >= 0 && contlength < rlength);
-
-#ifdef EXTRACT_GENOMICSEG
-	debug7(printf("cont: %.*s\n",contlength,&(rev_gsequence[-contlength+1])));
-#endif
-	splicelength = glength - contlength;
-	assert(splicelength > 0);
-	debug7(printf("  Saw %u (%u) of type %s (cont length %d, splice length %d)\n",
-		      splicesites[j],splicesites[j]-chroffset,Splicetype_string(splicetypes[j]),contlength,splicelength));
-
-	make_contjunction_5(splicejunction,splicejunction_alt,splicesites[j],splicelength,contlength,anchor_splicetype,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-	strncpy(&(splicejunction_test[splicelength]),&(rev_gsequence[-contlength+1]),contlength);
-	debug7(printf("contjunction_gen:  %s\n",&(splicejunction[splicelength])));
-	debug7(printf("contjunction_test: %s\n",&(splicejunction_test[splicelength])));
-	assert(!strncmp(&(splicejunction[splicelength]),&(splicejunction_test[splicelength]),contlength));
-#endif
-
-	if (watsonp) {
-	  far_limit_high = splicesites[j];
-	} else {
-	  far_limit_low = splicesites[j];
-	}
-
-	obsmax_penalty = 0;
-	if (trieoffsets_obs != NULL) {
-	  debug7(printf("  Running Splicetrie_solve_end5 on observed splice sites with rev_goffset %d\n",rev_goffset));
-	  best_pairs = Splicetrie_solve_end5(best_pairs,triecontents_obs,trieoffsets_obs,j,
-					     far_limit_low,far_limit_high,
-					     &(*finalscore),&(*nmatches),&(*nmismatches),
-					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
-					     &threshold_miss_score,/*obsmax_penalty*/0,perfect_score,
-					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
-					     splicelength,contlength,far_splicetype,
-					     chroffset,chrhigh,&(*dynprogindex),dynprog,
-					     rev_rsequence,revsequenceuc1,rlength,glength,rev_roffset,rev_goffset,
-#ifdef PMAP
-					     queryaaseq,
-#endif
-					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
-	  debug7(printf("  Result on obs with ambig_end_length_5 %d\n",*ambig_end_length));
-	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
-	  obsmax_penalty += FULLMATCH;
-	}
-
-	if (threshold_miss_score + obsmax_penalty < 0 && trieoffsets_max != NULL) {
-	  debug7(printf("  Running Splicetrie_solve_end5 on maxdistance splice sites with rev_goffset %d\n",rev_goffset));
-	  best_pairs = Splicetrie_solve_end5(best_pairs,triecontents_max,trieoffsets_max,j,
-					     far_limit_low,far_limit_high,
-					     &(*finalscore),&(*nmatches),&(*nmismatches),
-					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
-					     &threshold_miss_score,obsmax_penalty,perfect_score,
-					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
-					     splicelength,contlength,far_splicetype,
-					     chroffset,chrhigh,&(*dynprogindex),dynprog,
-					     rev_rsequence,revsequenceuc1,rlength,glength,rev_roffset,rev_goffset,
-#ifdef PMAP
-					     queryaaseq,
-#endif
-					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
-	  debug7(printf("  Result on max with ambig_end_length_5 %d\n",*ambig_end_length));
-	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
-	}
-      }
-      j++;
-    }
-
-#ifdef EXTRACT_GENOMICSEG
-    FREE(splicejunction_test);
-#endif
-    FREE(splicejunction_alt);
-    FREE(splicejunction);
-  }
-
-
-  if (best_pairs == NULL) {
-    if (*ambig_end_length == 0) {
-      /* Don't go to query end this time */
-      if (rlength > dynprog->max_rlength) {
-	debug7(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
-	rlength = dynprog->max_rlength;
-      }
-      if (glength > dynprog->max_glength) {
-	debug7(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
-	glength = dynprog->max_glength;
-      }
-      orig_pairs = Dynprog_end5_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
-				    &(*nopens),&(*nindels),dynprog,rev_rsequence,revsequenceuc1,
-				    rlength,glength,rev_roffset,rev_goffset,chroffset,chrhigh,
-#ifdef PMAP
-				    queryaaseq,
-#endif
-				    cdna_direction,watsonp,jump_late_p,pairpool,
-				    extraband_end,defect_rate,/*endalign*/BEST_LOCAL);
-      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
-      debug7(printf("End of dynprog end5 known\n"));
-      *knownsplicep = false;
-      return orig_pairs;
-
-    } else {
-      *ambig_splicetype = anchor_splicetype;
-      debug7(printf("Final result: best_pairs is NULL.  ambig_end_length is %d.  ambig_splicetype is %s.  Result after truncate:\n",
-		    *ambig_end_length,Splicetype_string(*ambig_splicetype)));
-      /* Truncate ambiguous part.  querypos is decreasing. */
-      orig_pairs = List_reverse(orig_pairs);
-      while (orig_pairs != NULL && ((Pair_T) orig_pairs->first)->querypos < *ambig_end_length) {
-	orig_pairs = Pairpool_pop(orig_pairs,&pair);
-      }
-      orig_pairs = List_reverse(orig_pairs);
-      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
-      *knownsplicep = false;
-      *finalscore = orig_score;
-      debug7(printf("End of dynprog end5 known\n"));
-      return orig_pairs;
-    }
-
-  } else {
-    debug7(printf("Found a best splice\n"));
-    *ambig_end_length = 0;
-    debug7(printf("End of dynprog end5 known\n"));
-    if (*knownsplicep == true) {
-      return Pair_protect_end5(best_pairs,pairpool);
-    } else {
-      return best_pairs;
-    }
-  }
-}
-
-
-List_T
-Dynprog_end3_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
-		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-		    char *rsequence, char *sequenceuc1,
-		    int rlength, int glength, int roffset, int goffset, int querylength,
-		    Univcoord_T chroffset, Univcoord_T chrhigh,
-		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		    int extraband_end, double defect_rate) {
-  List_T best_pairs = NULL, orig_pairs;
-  Pair_T pair;
-  Univcoord_T low, high, far_limit_low, far_limit_high;
-  Splicetype_T anchor_splicetype, far_splicetype;
-  int contlength, splicelength, endlength;
-  char *splicejunction, *splicejunction_alt;
-#ifdef EXTRACT_GENOMICSEG
-  char *splicejunction_test;
-#endif
-  int jstart, j;
-
-  int orig_score, threshold_miss_score, perfect_score;
-  int obsmax_penalty;
-
-
-  assert(glength >= rlength);
-
-  debug7(
-	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
-	printf("Aligning 3' end gap, known\n")
-	);
-
-  *ambig_end_length = 0;
-
-  /* We can just chop lengths to work, since we're not constrained on 3' end */
-  if (rlength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *finalscore = 0;
-    *knownsplicep = false;
-    return (List_T) NULL;
-  }
-  if (glength <= 0) {
-    /* Needed to avoid abort by Matrix16_alloc */
-    *finalscore = 0;
-    *knownsplicep = false;
-    return (List_T) NULL;
-  }
-
-
-  debug7(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
-#ifdef EXTRACT_GENOMICSEG
-  debug7(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
-#endif
-
-  perfect_score = rlength*FULLMATCH;
-
-  /* Try without splicing, all the way to query end */
-  best_pairs = Dynprog_end3_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
-				&(*nopens),&(*nindels),dynprog,rsequence,sequenceuc1,
-				rlength,glength,roffset,goffset,chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq,
-#endif
-				cdna_direction,watsonp,jump_late_p,pairpool,
-				extraband_end,defect_rate,/*endalign*/QUERYEND_NOGAPS);
-  if (*finalscore < 0) {
-    orig_score = 0;
-    orig_pairs = best_pairs = (List_T) NULL;
-  } else {
-    orig_score = *finalscore;
-    orig_pairs = best_pairs;
-  }
-  threshold_miss_score = orig_score - perfect_score;
-  debug7(printf("score %d - perfect score %d = threshold %d",
-		orig_score,perfect_score,threshold_miss_score));
-  if (threshold_miss_score < -2*FULLMATCH) {
-    /* Don't allow more than 2 mismatches in a distant splice */
-    threshold_miss_score = -2*FULLMATCH;
-    debug7(printf(", but revising to %d\n",threshold_miss_score));
-  }
-  debug7(printf("\n"));
-  *knownsplicep = false;
-
-
-  if (threshold_miss_score < 0 && glength > 0) {
-    /* Try known splicing */
-    splicejunction = (char *) CALLOC(glength+1,sizeof(char));
-    splicejunction_alt = (char *) CALLOC(glength+1,sizeof(char));
-#ifdef EXTRACT_GENOMICSEG
-    splicejunction_test = (char *) CALLOC(glength+1,sizeof(char));
-#endif
-
-    endlength = rlength;
-    if (watsonp == true) {
-      low = chroffset + goffset;
-      high = chroffset + goffset+endlength - 1;
-      debug7(printf("3' watson\n"));
-      debug7(printf("Calculating low %u (%u) = %u + %d\n",
-		    low,low-chroffset,chroffset,goffset));
-      debug7(printf("Calculating high %u (%u) = %u + %d+%d - 1\n",
-		    high,high-chroffset,chroffset,goffset,endlength));
-      if (cdna_direction > 0) {
-	anchor_splicetype = DONOR;
-	far_splicetype = ACCEPTOR;
-      } else {
-	anchor_splicetype = ANTIACCEPTOR;
-	far_splicetype = ANTIDONOR;
-      }
-    } else {
-      low = chrhigh - (goffset+endlength) + 2;
-      high = chrhigh - goffset + 1;
-      debug7(printf("3' crick\n"));
-      debug7(printf("Calculating low %u (%u) = %u - (%d+%d)\n",
-		    low,low-chroffset,chrhigh,goffset,endlength));
-      debug7(printf("Calculating high %u (%u) = %u - %d + 1\n",
-		    high,high-chroffset,chrhigh,goffset));
-      if (cdna_direction > 0) {
-	anchor_splicetype = ANTIDONOR;
-	far_splicetype = ANTIACCEPTOR;
-      } else {
-	anchor_splicetype = ACCEPTOR;
-	far_splicetype = DONOR;
-      }
-    }
-
-    far_limit_low = knownsplice_limit_low;
-    far_limit_high = knownsplice_limit_high;
-    debug7(printf("Genomic positions: %u..%u (%u..%u), looking for anchor splicetype %s\n",
-		  low,high,low-chroffset,high-chroffset,Splicetype_string(anchor_splicetype)));
-    j = jstart = binary_search(0,nsplicesites,splicesites,low);
-    while (j < nsplicesites && splicesites[j] <= high) {
-      if (splicetypes[j] == anchor_splicetype) {
-	debug7(printf("Found one at %u (%u)\n",splicesites[j],splicesites[j]-chroffset));
-	if (watsonp == true) {
-	  contlength = splicesites[j] - low;
-	} else {
-	  contlength = high - splicesites[j];
-	}
-	debug7(printf("contlength %d, splicelength %d, rlength %d, glength %d\n",
-		      contlength,glength-contlength,rlength,glength));
-	assert(contlength >= 0 && contlength < rlength);
-
-#ifdef EXTRACT_GENOMICSEG
-	debug7(printf("cont: %.*s\n",contlength,gsequence));
-#endif
-	splicelength = glength - contlength;
-	assert(splicelength > 0);
-	debug7(printf("  Saw %u (%u) of type %s (cont length %d, splice length %d)\n",
-		      splicesites[j],splicesites[j]-chroffset,Splicetype_string(splicetypes[j]),contlength,splicelength));
-
-	make_contjunction_3(splicejunction,splicejunction_alt,splicesites[j],splicelength,contlength,anchor_splicetype,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-	strncpy(splicejunction_test,gsequence,contlength);
-	debug7(printf("contjunction_gen:  %s\n",splicejunction));
-	debug7(printf("contjunction_test: %s\n",splicejunction_test));
-	assert(!strncmp(splicejunction,splicejunction_test,contlength));
-#endif
-
-	if (watsonp) {
-	  far_limit_low = splicesites[j];
-	} else {
-	  far_limit_high = splicesites[j];
-	}
-
-	obsmax_penalty = 0;
-	if (trieoffsets_obs != NULL) {
-	  debug7(printf("  Running Splicetrie_solve_end3 on observed splice sites with goffset %d\n",goffset));
-	  best_pairs = Splicetrie_solve_end3(best_pairs,triecontents_obs,trieoffsets_obs,j,
-					     far_limit_low,far_limit_high,
-					     &(*finalscore),&(*nmatches),&(*nmismatches),
-					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
-					     &threshold_miss_score,/*obsmax_penalty*/0,perfect_score,
-					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
-					     splicelength,contlength,far_splicetype,
-					     chroffset,chrhigh,&(*dynprogindex),dynprog,
-					     rsequence,sequenceuc1,rlength,glength,roffset,goffset,
-#ifdef PMAP
-					     queryaaseq,
-#endif
-					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
-	  debug7(printf("  Result on obs with ambig_end_length_3 %d\n",*ambig_end_length));
-	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
-	  obsmax_penalty += FULLMATCH;
-	}
-
-	if (threshold_miss_score + obsmax_penalty < 0 && trieoffsets_max != NULL) {
-	  debug7(printf("  Running Splicetrie_solve_end3 on maxdistance splice sites with goffset %d\n",goffset));
-	  best_pairs = Splicetrie_solve_end3(best_pairs,triecontents_max,trieoffsets_max,j,
-					     far_limit_low,far_limit_high,
-					     &(*finalscore),&(*nmatches),&(*nmismatches),
-					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
-					     &threshold_miss_score,obsmax_penalty,perfect_score,
-					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
-					     splicelength,contlength,far_splicetype,
-					     chroffset,chrhigh,&(*dynprogindex),dynprog,
-					     rsequence,sequenceuc1,rlength,glength,roffset,goffset,
-#ifdef PMAP
-					     queryaaseq,
-#endif
-					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
-	  debug7(printf("  Result on max with ambig_end_length_3 %d\n",*ambig_end_length));
-	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
-	}
-      }
-      j++;
-    }
-
-#ifdef EXTRACT_GENOMICSEG
-    FREE(splicejunction_test);
-#endif
-    FREE(splicejunction_alt);
-    FREE(splicejunction);
-  }
-
-
-  if (best_pairs == NULL) {
-    if (*ambig_end_length == 0) {
-      /* Don't go to query end this time */
-      if (rlength > dynprog->max_rlength) {
-	debug7(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
-	rlength = dynprog->max_rlength;
-      }
-      if (glength > dynprog->max_glength) {
-	debug7(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
-	glength = dynprog->max_glength;
-      }
-      orig_pairs = Dynprog_end3_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
-				    &(*nopens),&(*nindels),dynprog,rsequence,sequenceuc1,
-				    rlength,glength,roffset,goffset,chroffset,chrhigh,
-#ifdef PMAP
-				    queryaaseq,
-#endif
-				    cdna_direction,watsonp,jump_late_p,pairpool,
-				    extraband_end,defect_rate,/*endalign*/BEST_LOCAL);
-      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
-      *knownsplicep = false;
-      debug7(printf("End of dynprog end5 known\n"));
-      return orig_pairs;
-
-    } else {
-      *ambig_splicetype = anchor_splicetype;
-      debug7(printf("Final result: best_pairs is NULL.  ambig_end_length is %d.  ambig_splicetype is %s.  Result after truncate:\n",
-		    *ambig_end_length,Splicetype_string(*ambig_splicetype)));
-      /* Truncate ambiguous part.  querypos is decreasing */
-      while (orig_pairs != NULL && ((Pair_T) orig_pairs->first)->querypos >= querylength - *ambig_end_length) {
-	orig_pairs = Pairpool_pop(orig_pairs,&pair);
-      }
-      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
-      *knownsplicep = false;
-      *finalscore = orig_score;
-      debug7(printf("End of dynprog end5 known\n"));
-      return orig_pairs;
-    }
-
-  } else {
-    debug7(printf("Found a best splice\n"));
-    *ambig_end_length = 0;
-    debug7(printf("End of dynprog end3 known\n"));
-    if (*knownsplicep == true) {
-      return Pair_protect_end3(best_pairs,pairpool);
-    } else {
-      return best_pairs;
-    }
-  }
-}
-
-
-
-
-static const Except_T microexon_error = {"Microexon error"};
-
-static List_T
-make_microexon_pairs_double (int roffsetL, int roffsetM, int roffsetR,
-			     int goffsetL, int goffsetM, int goffsetR,
-			     int lengthL, int lengthM, int lengthR,
-			     char *queryseq, char *queryuc,
-			     Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-			     Pairpool_T pairpool, char gapchar, int dynprogindex) {
-  List_T pairs = NULL;
-  Pair_T gappair;
-  char c1, c2, c2_alt;
-  int i;
-
-  /* Left segment */
-  for (i = 0; i < lengthL; i++) {
-    c1 = queryseq[roffsetL+i];
-
-    c2 = get_genomic_nt(&c2_alt,goffsetL+i,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomicseg[goffsetL+i]);
-#endif
-
-    if (queryuc[roffsetL+i] == c2) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else {
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,MISMATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    }
-  }
-
-  /* First gap */
-  /* Don't have to adjust querypos/genomepos, since no cdna/genome skips allowed */
-#if 0
-  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,goffsetM-(goffsetL+lengthL),/*knownp*/false);
-#endif
-  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-  
-  /* Assign pair->comp, because might occur after assign_gap_types */
-  gappair = (Pair_T) List_head(pairs);
-  gappair->comp = gapchar;
-
-
-  /* Microexon */
-  for (i = 0; i < lengthM; i++) {
-    c1 = queryseq[roffsetM+i];
-
-    c2 = get_genomic_nt(&c2_alt,goffsetM+i,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomicseg[goffsetM+i]);
-#endif
-
-    if (queryuc[roffsetM+i] == c2) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetM+i,goffsetM+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetM+i,goffsetM+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else {
-      pairs = Pairpool_push(pairs,pairpool,roffsetM+i,goffsetM+i,c1,MISMATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    }
-  }
-
-  /* Second gap */
-  /* Don't have to adjust querypos/genomepos, since no cdna/genome skips allowed */
-  if (lengthR == 0) {
-    /* If lengthR is zero, then we will have a gap after a gap */
-    Except_raise(&microexon_error,__FILE__,__LINE__);
-  } else {
-#if 0
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,goffsetR-(goffsetM+lengthM),/*knownp*/false);
-#endif
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-  }
-
-  /* Assign pair->comp, because might occur after assign_gap_types */
-  gappair = (Pair_T) List_head(pairs);
-  gappair->comp = gapchar;
-
-  
-  /* Right segment */
-  for (i = 0; i < lengthR; i++) {
-    c1 = queryseq[roffsetR+i];
-
-    c2 = get_genomic_nt(&c2_alt,goffsetR+i,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomicseg[goffsetR+i]);
-#endif
-
-    if (queryuc[roffsetR+i] == c2) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else {
-      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,MISMATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    }
-  }
-
-  return pairs;
-}
-
-
-#if 0
-static List_T
-make_microexon_pairs_single (int roffsetL, int roffsetR,
-			     int goffsetL, int goffsetR,
-			     int lengthL, int lengthR, char *queryseq, char *queryuc,
-			     Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-			     Pairpool_T pairpool, char gapchar, int dynprogindex) {
-  List_T pairs = NULL;
-  Pair_T gappair;
-  char c1, c2, c2_alt;
-  int i;
-
-  /* Microexon */
-  for (i = 0; i < lengthL; i++) {
-    c1 = queryseq[roffsetL+i];
-
-    c2 = get_genomic_nt(&c2_alt,goffsetL+i,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomicseg[goffsetL+i]);
-#endif
-
-    if (queryuc[roffsetL+i] == c2) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else {
-      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,MISMATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    }
-  }
-
-  /* Gap */
-  /* Don't have to adjust querypos/genomepos, since no cdna/genome skips allowed */
-#if 0
-  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,goffsetR-(goffsetL+lengthL),/*knownp*/false);
-#endif
-  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
-
-  /* Assign pair->comp, because might occur after assign_gap_types */
-  gappair = (Pair_T) List_head(pairs);
-  gappair->comp = gapchar;
-  
-
-  /* Right segment */
-  for (i = 0; i < lengthR; i++) {
-    c1 = queryseq[roffsetR+i];
-
-    c2 = get_genomic_nt(&c2_alt,goffsetR+i,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c2 == genomicseg[goffsetR+i]);
-#endif
-
-    if (queryuc[roffsetR+i] == c2) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else if (consistent_array[(int) c1][(int) c2] == true) {
-      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
-			    dynprogindex);
-    } else {
-      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,MISMATCH_COMP,c2,c2_alt,
-			    dynprogindex);
-    }
-  }
-
-  return pairs;
-}
-#endif
-
-
-List_T
-Dynprog_microexon_int (double *bestprob2, double *bestprob3, int *dynprogindex, int *microintrontype,
-		       char *rsequence, char *sequenceuc1,
-		       int rlength, int glengthL, int glengthR,
-		       int roffset, int goffsetL, int rev_goffsetR, int cdna_direction,
-#ifdef PMAP
-		       char *queryaaseq, char *genomicuc,
-#endif
-		       char *queryseq, char *queryuc,
-		       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-		       Pairpool_T pairpool, double defect_rate) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence;
-#endif
-  Intlist_T hits = NULL, p;
-#ifdef EXTRACT_GENOMICSEG
-  Intlist_T hits_old;
-#endif
-  int bestcL = -1, bestcR = -1, best_middlelength;
-  int middlelength, cL, cR, mincR, maxcR, leftbound, rightbound, textleft, textright, candidate, i;
-  int min_microexon_length, span, nmismatches;
-  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
-  char c, c_alt;
-  char c1_alt, c2_alt, c3_alt, c4_alt;
-  char intron1, intron2, intron3, intron4, gapchar;
-  double pvalue, bestprob = 0.0, prob2, prob3;
-  Univcoord_T splicesitepos;
-
-
-  *bestprob2 = *bestprob3 = 0.0;
-
-  if (defect_rate < DEFECT_HIGHQ) {
-    pvalue = MICROEXON_PVALUE_HIGHQ;
-  } else if (defect_rate < DEFECT_MEDQ) {
-    pvalue = MICROEXON_PVALUE_MEDQ;
-  } else {
-    pvalue = MICROEXON_PVALUE_LOWQ;
-  }
-
-#ifdef PMAP
-  intron1 = 'G';
-  intron2 = 'T';
-  intron3 = 'A';
-  intron4 = 'G';
-  gapchar = FWD_CANONICAL_INTRON_COMP;
-  *microintrontype = GTAG_FWD;
-#else
-  if (cdna_direction > 0) {
-    intron1 = 'G';
-    intron2 = 'T';
-    intron3 = 'A';
-    intron4 = 'G';
-    gapchar = FWD_CANONICAL_INTRON_COMP;
-    *microintrontype = GTAG_FWD;
-  } else if (cdna_direction < 0) {
-    intron1 = 'C';
-    intron2 = 'T';
-    intron3 = 'A';
-    intron4 = 'C';
-    gapchar = REV_CANONICAL_INTRON_COMP;
-    *microintrontype = GTAG_REV;
-  } else {
-    /* Can occur when called by Stage3_merge_local_splice */
-    /* fprintf(stderr,"cdna_direction is 0 in Dynprog_microexon_int\n"); */
-    *microintrontype = NONINTRON;
-    return NULL;
-  }
-#endif
-
-#ifdef EXTRACT_GENOMICSEG
-  debug(printf("Begin microexon search for %.*s and %.*s\n",
-	       glengthL,gsequenceL,glengthR,&(rev_gsequenceR[-glengthR+1])));
-#else
-  debug(printf("Begin microexon search\n"));
-#endif
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(rsequence,queryaaseq,roffset,rlength);
-  debug(printf("  Query sequence is %.*s\n",rlength,inst_rsequence));
-#else
-  debug(printf("  Query sequence is %.*s\n",rlength,rsequence));
-#endif
-  span = rev_goffsetR-goffsetL;
-  debug(printf("  Genomic span is of length %d\n",span));
-
-  if (span <= 0) {
-    fprintf(stderr,"Bug in Dynprog_microexon_int.  span %d <= 0.  Please report to twu at gene.com\n",span);
-    abort();
-  } else {
-    min_microexon_length = ceil(-log(1.0-pow(1.0-pvalue,1.0/(double) span))/log(4));
-  }
-  min_microexon_length -= 8;	/* Two donor-acceptor pairs */
-  debug(printf("  Min microexon length is %d\n",min_microexon_length));
-  if (min_microexon_length > MAX_MICROEXON_LENGTH) {
-#ifdef PMAP
-    FREE(inst_rsequence);
-#endif
-    *microintrontype = NONINTRON;
-    return NULL;
-  } else if (min_microexon_length < MIN_MICROEXON_LENGTH) {
-    min_microexon_length = MIN_MICROEXON_LENGTH;
-  }
-
-  debug(printf("\nFinding starting boundary on left\n"));
-  leftbound = 0;
-  nmismatches = 0;
-  while (leftbound < rlength - 1 && nmismatches <= 1) {
-    debug(printf("  leftbound = %d, nmismatches = %d.",leftbound,nmismatches));
-#ifdef PMAP
-    c = get_genomic_nt(&c_alt,goffsetL+leftbound,chroffset,chrhigh,watsonp);
-    debug(printf("  Comparing %c with %c\n",inst_rsequence[leftbound],c));
-    if (matchtable[inst_rsequence[leftbound]-'A'][c-'A'] == false) {
-      nmismatches++;
-    }
-#else
-    c = get_genomic_nt(&c_alt,goffsetL+leftbound,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c == gsequence_ucL[leftbound]);
-#endif
-    debug(printf("  Comparing %c with %c\n",sequenceuc1[leftbound],c));
-    if (sequenceuc1[leftbound] != c) {
-      nmismatches++;
-    }
-#endif
-    leftbound++;
-  }
-  leftbound--;			/* This is where the leftmost mismatch occurred */
-
-  debug(printf("\nFinding starting boundary on right\n"));
-  rightbound = 0;
-  i = rlength-1;
-  nmismatches = 0;
-  while (i >= 0 && nmismatches <= 1) {
-    debug(printf("  rightbound = %d, nmismatches = %d.",rightbound,nmismatches));
-#ifdef PMAP
-    c = get_genomic_nt(&c_alt,rev_goffsetR-rightbound,chroffset,chrhigh,watsonp);
-    debug(printf("  Comparing %c with %c\n",inst_rsequence[i],c));
-    if (matchtable[inst_rsequence[i]-'A'][c-'A'] == false) {
-      nmismatches++;
-    }
-#else
-    c = get_genomic_nt(&c_alt,rev_goffsetR-rightbound,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(c == rev_gsequence_ucR[-rightbound]);
-#endif
-    debug(printf("  Comparing %c with %c\n",sequenceuc1[i],c));
-    if (sequenceuc1[i] != c) {
-      nmismatches++;
-    }
-#endif
-    rightbound++;
-    i--;
-  }
-  rightbound--;			/* This is where the rightmost mismatch occurred */
-
-  debug(printf("  Left must start before %d from left end of query.  Right must start after %d from right end of query\n",
-	       leftbound,rightbound));
-
-  /* We require that cL >= 1 and cR >= 1 so that lengthL and lengthR are >= 1 */
-  for (cL = 1; cL <= leftbound; cL++) {
-    left1 = get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp);
-    left2 = get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-    assert(left1 == gsequence_ucL[cL]);
-    assert(left2 == gsequence_ucL[cL+1]);
-#endif
-
-    debug(printf("  %d: %c%c\n",cL,left1,left2));
-    if (left1 == intron1 && left2 == intron2) {
-      mincR = rlength - MAX_MICROEXON_LENGTH - cL;
-      if (mincR < 1) {
-	mincR = 1;
-      }
-      maxcR = rlength - min_microexon_length - cL;
-      if (maxcR > rightbound) {
-	maxcR = rightbound;
-	}
-      debug(printf("  Found left GT at %d.  Scanning from %d - cL - (1-7), or %d to %d\n",
-		   cL,rlength,mincR,maxcR));
-      for (cR = mincR; cR <= maxcR; cR++) {
-	right2 = get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp);
-	right1 = get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-	assert(right2 == rev_gsequence_ucR[-cR-1]);
-	assert(right1 == rev_gsequence_ucR[-cR]);
-#endif
-	debug(printf("   Checking %d: %c%c\n",cR,right2,right1));
-	if (right2 == intron3 && right1 == intron4) {
-	  middlelength = rlength - cL - cR;
-#ifdef PMAP
-	  debug(printf("  Found pair at %d to %d, length %d.  Middle sequence is %.*s\n",
-		       cL,cR,middlelength,middlelength,&(inst_rsequence[cL])));
-#else
-	  debug(printf("  Found pair at %d to %d, length %d.  Middle sequence is %.*s\n",
-		       cL,cR,middlelength,middlelength,&(rsequence[cL])));
-#endif
-	  
-	  textleft = goffsetL + cL + MICROINTRON_LENGTH;
-	  textright = rev_goffsetR - cR - MICROINTRON_LENGTH;
-#ifdef PMAP
-	  hits = BoyerMoore(&(inst_rsequence[cL]),middlelength,&(genomicuc[textleft]),textright-textleft);
-#else
-	  hits = BoyerMoore_nt(&(sequenceuc1[cL]),middlelength,textleft,textright-textleft,
-			       chroffset,chrhigh,watsonp);
-#ifdef EXTRACT_GENOMICSEG
-	  hits_old = BoyerMoore(&(sequenceuc1[cL]),middlelength,&(genomicuc[textleft]),textright-textleft);
-	  assert(Intlist_equal(hits,hits_old));
-	  Intlist_free(&hits_old);
-#endif
-#endif
-	  for (p = hits; p != NULL; p = Intlist_next(p)) {
-	    candidate = textleft + Intlist_head(p);
-#ifdef EXTRACT_GENOMICSEG
-	    assert(get_genomic_nt(candidate-2,chroffset,chrhigh,watsonp) == genomicuc[candidate - 2]);
-	    assert(get_genomic_nt(candidate-1,chroffset,chrhigh,watsonp) == genomicuc[candidate - 1]);
-	    assert(get_genomic_nt(candidate+middlelength,chroffset,chrhigh,watsonp) == genomicuc[candidate + middlelength]);
-	    assert(get_genomic_nt(candidate+middlelength+1,chroffset,chrhigh,watsonp) == genomicuc[candidate + middlelength+1]);
-#endif
-	    if (/*genomicuc[candidate - 2]*/ get_genomic_nt(&c3_alt,candidate-2,chroffset,chrhigh,watsonp) == intron3 &&
-		/*genomicuc[candidate - 1]*/ get_genomic_nt(&c4_alt,candidate-1,chroffset,chrhigh,watsonp)  == intron4 &&
-		/*genomicuc[candidate + middlelength]*/ get_genomic_nt(&c1_alt,candidate+middlelength,chroffset,chrhigh,watsonp) == intron1 &&
-		/*genomicuc[candidate + middlelength + 1]*/ get_genomic_nt(&c2_alt,candidate+middlelength+1,chroffset,chrhigh,watsonp) == intron2) {
-	      debug(printf("  Successful microexon at %d >>> %d..%d >>> %d\n",goffsetL+cL,candidate,candidate+middlelength,rev_goffsetR-cR));
-
-	      /* Not handling known splice sites yet */
-	      if (watsonp == true) {
-		if (cdna_direction > 0) {
-		  splicesitepos = chroffset + (candidate-1) + 1;
-		  prob2 = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-		  splicesitepos = chroffset + candidate+middlelength;
-		  prob3 = Maxent_hr_donor_prob(splicesitepos,chroffset);
-		} else {
-		  splicesitepos = chroffset + (candidate-1) + 1;
-		  prob2 = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-		  splicesitepos = chroffset + candidate+middlelength;
-		  prob3 = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-		}
-	      } else {
-		if (cdna_direction > 0) {
-		  splicesitepos = chrhigh - (candidate-1);
-		  prob2 = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
-		  splicesitepos = chrhigh - (candidate+middlelength) + 1;
-		  prob3 = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
-		} else {
-		  splicesitepos = chrhigh - (candidate-1);
-		  prob2 = Maxent_hr_donor_prob(splicesitepos,chroffset);
-		  splicesitepos = chrhigh - (candidate+middlelength) + 1;
-		  prob3 = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
-		}
-	      }
-	      
-	      debug(printf("microexon probabilities: prob2 = %f, prob3 = %f\n",prob2,prob3));
-	      if (prob2 + prob3 > bestprob) {
-		bestcL = cL;
-		bestcR = cR;
-		best_middlelength = middlelength;
-		*bestprob2 = prob2;
-		*bestprob3 = prob3;
-		bestprob = prob2 + prob3;
-	      }
-	    }
-	  }
-	  Intlist_free(&hits);
-	}
-      }
-    }
-  }
-
-  if (bestcL < 0 || bestcR < 0) {
-    debug(printf("End of dynprog microexon int\n"));
-
-#ifdef PMAP
-    FREE(inst_rsequence);
-#endif
-
-    *microintrontype = NONINTRON;
-    return NULL;
-
-  } else {
-    pairs = make_microexon_pairs_double(roffset,roffset+bestcL,roffset+bestcL+best_middlelength,
-					goffsetL,candidate,rev_goffsetR-bestcR+1,
-					/*lengthL*/bestcL,/*lengthM*/best_middlelength,/*lengthR*/bestcR,
-#ifdef PMAP
-					&(inst_rsequence[-roffset]),&(inst_rsequence[-roffset]),
-#else
-					queryseq,queryuc,
-#endif
-					chroffset,chrhigh,watsonp,pairpool,gapchar,*dynprogindex);
-#ifdef PMAP
-    FREE(inst_rsequence);
-#endif
-    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-    return pairs;
-  }
-}
-
-
-#if 0
-/* Based on probability of seeing a pattern of length n in L is
-   1-(1-p1)^L, where p1 is 4^n.  We determine L so chance probability
-   is less than ENDSEQUENCE_PVALUE */
-static int
-search_length (int endlength, int maxlength, bool end_microexons_p) {
-  double p1;
-  int effective_maxlength, extrant, result;
-
-  if (end_microexons_p == true) {
-    extrant = 4;		/* Count the four nucleotides at the intron bounds */
-    effective_maxlength = maxlength;
-  } else {
-    extrant = 0;		/* Don't count the four nucleotides */
-    effective_maxlength = 5000;
-    if (maxlength < effective_maxlength) {
-      effective_maxlength = maxlength;
-    }
-  }
-
-  if (endlength + extrant > 12) {
-    debug(printf("  Search length for endlength of %d is maxlength %d\n",endlength,effective_maxlength));
-    return effective_maxlength;
-  } else {
-    p1 = 1.0/pow(4.0,(double) (endlength + extrant));
-    result = (int) (log(1.0-ENDSEQUENCE_PVALUE)/log(1-p1));
-    debug(printf("  Search length for endlength of %d plus extra nt of %d is %d\n",endlength,extrant,result));
-    if (result > effective_maxlength) {
-      return effective_maxlength;
-    } else {
-      return result;
-    }
-  }
-}
-#endif
-
-
-#if 0
-/* Not currently used */
-List_T
-Dynprog_microexon_5 (int *dynprogindex, int *microintrontype, int *microexonlength,
-		     char *rev_rsequence, char *revsequenceuc1, char *rev_gsequence, char *rev_gsequence_uc,
-		     int rlength, int glength, int rev_roffset, int rev_goffset, int cdna_direction,
-#ifdef PMAP
-		     char *queryaaseq,
-#endif
-		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
-		     Pairpool_T pairpool, bool end_microexons_p) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence, *inst_rev_rsequence;
-#endif
-  Intlist_T hits = NULL, p;
-  int endlength, maxc, c, textleft, textright, candidate, nmismatches = 0;
-  char right2, right1;
-  char intron1, intron2, intron3, intron4, gapchar;
-
-#ifdef PMAP
-  intron1 = 'G';
-  intron2 = 'T';
-  intron3 = 'A';
-  intron4 = 'G';
-  gapchar = FWD_CANONICAL_INTRON_COMP;
-  *microintrontype = GTAG_FWD;
-#else
-  if (cdna_direction > 0) {
-    intron1 = 'G';
-    intron2 = 'T';
-    intron3 = 'A';
-    intron4 = 'G';
-    gapchar = FWD_CANONICAL_INTRON_COMP;
-    *microintrontype = GTAG_FWD;
-  } else if (cdna_direction < 0) {
-    intron1 = 'C';
-    intron2 = 'T';
-    intron3 = 'A';
-    intron4 = 'C';
-    gapchar = REV_CANONICAL_INTRON_COMP;
-    *microintrontype = GTAG_REV;
-  } else {
-    *microintrontype = NONINTRON;
-    return (List_T) NULL;
-    abort();
-  }
-#endif
-
-#ifdef EXTRACT_GENOMICSEG
-  debug(printf("Begin microexon search at 5' for %.*s\n",
-	       glength,&(rev_gsequence[-glength+1])));
-#else
-  debug(printf("Begin microexon search at 5'\n"));
-#endif
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(&(rev_rsequence[-rlength+1]),queryaaseq,rev_roffset-rlength+1,rlength);
-  inst_rev_rsequence = &(inst_rsequence[rlength-1]);
-  debug(printf("  Query sequence is %.*s\n",rlength,&(inst_rev_rsequence[-rlength+1])));
-#else
-  debug(printf("  Query sequence is %.*s\n",rlength,&(rev_rsequence[-rlength+1])));
-#endif
-
-  *microexonlength = 0;
-  if (glength < rlength) {
-    maxc = glength - MIN_MICROEXON_LENGTH;
-  } else {
-    maxc = rlength - MIN_MICROEXON_LENGTH;
-  }
-  for (c = 0; c < maxc; c++) {
-    right2 = rev_gsequence_uc[-c-1];
-    right1 = rev_gsequence_uc[-c];
-    debug(printf("   Checking %c%c\n",right2,right1));
-#ifdef PMAP
-    if (c > 0 && matchtable[inst_rev_rsequence[-c+1]-'A'][rev_gsequence_uc[-c+1]-'A'] == false) {
-      nmismatches++;
-    }
-#else
-    if (c > 0 && revsequenceuc1[-c+1] != rev_gsequence_uc[-c+1]) {
-      nmismatches++;
-    }
-#endif
-    if (nmismatches > 1) {
-#ifdef PMAP
-      debug(printf("   Aborting at %c !~ %c\n",inst_rev_rsequence[-c+1],rev_gsequence[-c+1]));
-      FREE(inst_rsequence);
-#else
-      debug(printf("   Aborting at %c != %c\n",rev_rsequence[-c+1],rev_gsequence[-c+1]));
-#endif
-      *microintrontype = NONINTRON;
-      return NULL;
-    }
-    if (right2 == intron3 && right1 == intron4) {
-      endlength = rlength - c;
-#ifdef PMAP
-      debug(printf("  Found acceptor at %d, length %d.  End sequence is %.*s\n",
-		       c,endlength,endlength,&(inst_rev_rsequence[-endlength+1])));
-#else
-      debug(printf("  Found acceptor at %d, length %d.  End sequence is %.*s\n",
-		       c,endlength,endlength,&(rev_rsequence[-endlength+1])));
-#endif
-
-      textright = rev_goffset - c - MICROINTRON_LENGTH;
-      textleft = textright - search_length(endlength,textright,end_microexons_p) + MICROINTRON_LENGTH;
-#ifdef PMAP
-      hits = BoyerMoore(&(inst_rev_rsequence[-c-endlength+1]),endlength,&(genomicuc[textleft]),textright-textleft);
-#else
-      hits = BoyerMoore(&(revsequenceuc1[-c-endlength+1]),endlength,&(genomicuc[textleft]),textright-textleft);
-#endif
-      for (p = hits; p != NULL; p = Intlist_next(p)) {
-	candidate = textleft + Intlist_head(p);
-	if (genomicseg[candidate + endlength] == intron1 &&
-	    genomicseg[candidate + endlength + 1] == intron2) {
-	  debug(printf("  Successful microexon at %d\n",candidate));
-
-	  Intlist_free(&hits);
-	  *microexonlength = endlength;
-	  pairs = make_microexon_pairs_single(rev_roffset-c-endlength+1,rev_roffset-c+1,
-					      candidate,rev_goffset-c+1,endlength,c,
-#ifdef PMAP
-					      &(inst_rev_rsequence[-rev_roffset]),&(inst_rev_rsequence[-rev_roffset]),
-#else
-					      queryseq,queryuc,
-#endif
-					      chroffset,watsonp,pairpool,gapchar,*dynprogindex);
-#ifdef PMAP
-	  FREE(inst_rsequence);
-#endif
-	  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-	  return pairs;
-	}
-      }
-      
-      Intlist_free(&hits);
-    }
-  }
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  debug(printf("End of dynprog microexon 5\n"));
-
-  *microintrontype = NONINTRON;
-  return NULL;
-}
-#endif
-
-
-#if 0
-/* Not currently used */
-List_T
-Dynprog_microexon_3 (int *dynprogindex, int *microintrontype, int *microexonlength, 
-		     char *rsequence, char *sequenceuc1, char *gsequence, char *gsequence_uc,
-		     int rlength, int glength, int roffset, int goffset, int cdna_direction,
-#ifdef PMAP
-		     char *queryaaseq,
-#endif
-		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
-		     int genomiclength, Pairpool_T pairpool, bool end_microexons_p) {
-  List_T pairs = NULL;
-#ifdef PMAP
-  char *inst_rsequence;
-#endif
-  Intlist_T hits = NULL, p;
-  int endlength, maxc, c, textleft, textright, candidate, nmismatches = 0;
-  char left1, left2;
-  char intron1, intron2, intron3, intron4, gapchar;
-
-#ifdef PMAP
-  intron1 = 'G';
-  intron2 = 'T';
-  intron3 = 'A';
-  intron4 = 'G';
-  gapchar = FWD_CANONICAL_INTRON_COMP;
-  *microintrontype = GTAG_FWD;
-#else
-  if (cdna_direction > 0) {
-    intron1 = 'G';
-    intron2 = 'T';
-    intron3 = 'A';
-    intron4 = 'G';
-    gapchar = FWD_CANONICAL_INTRON_COMP;
-    *microintrontype = GTAG_FWD;
-  } else if (cdna_direction < 0) {
-    intron1 = 'C';
-    intron2 = 'T';
-    intron3 = 'A';
-    intron4 = 'C';
-    gapchar = REV_CANONICAL_INTRON_COMP;
-    *microintrontype = GTAG_REV;
-  } else {
-    *microintrontype = NONINTRON;
-    return (List_T) NULL;
-    abort();
-  }
-#endif
-
-#ifdef EXTRACT_GENOMICSEG
-  debug(printf("Begin microexon search at 3' for %.*s\n",glength,gsequence));
-#else
-  debug(printf("Begin microexon search at 3'\n"));
-#endif
-
-#ifdef PMAP
-  inst_rsequence = instantiate_codons(rsequence,queryaaseq,roffset,rlength);
-  debug(printf("  Query sequence is %.*s\n",rlength,inst_rsequence));
-#else
-  debug(printf("  Query sequence is %.*s\n",rlength,rsequence));
-#endif
-
-  *microexonlength = 0;
-  if (glength < rlength) {
-    maxc = glength - MIN_MICROEXON_LENGTH;
-  } else {
-    maxc = rlength - MIN_MICROEXON_LENGTH;
-  }
-  for (c = 0; c < maxc; c++) {
-    left1 = gsequence_uc[c];
-    left2 = gsequence_uc[c+1];
-    debug(printf("   Checking %c%c\n",left1,left2));
-#ifdef PMAP
-    if (c > 0 && matchtable[inst_rsequence[c-1]-'A'][gsequence_uc[c-1]-'A'] == false) {
-      nmismatches++;
-    }
-#else
-    if (c > 0 && sequenceuc1[c-1] != gsequence_uc[c-1]) {
-      nmismatches++;
-    }
-#endif
-    if (nmismatches > 1) {
-#ifdef PMAP
-      debug(printf("   Aborting at %c !~ %c\n",inst_rsequence[c-1],gsequence[c-1]));
-      FREE(inst_rsequence);
-#else
-      debug(printf("   Aborting at %c != %c\n",rsequence[c-1],gsequence[c-1]));
-#endif
-      *microintrontype = NONINTRON;
-      return NULL;
-    }
-    if (left1 == intron1 && left2 == intron2) {
-      endlength = rlength - c;
-#ifdef PMAP
-      debug(printf("  Found donor at %d, length %d.  End sequence is %.*s\n",
-		   c,endlength,endlength,&(inst_rsequence[c])));
-#else
-      debug(printf("  Found donor at %d, length %d.  End sequence is %.*s\n",
-		   c,endlength,endlength,&(rsequence[c])));
-#endif
-
-      textleft = goffset + c;
-      textright = textleft + search_length(endlength,genomiclength-textleft,end_microexons_p);
-#ifdef PMAP
-      hits = BoyerMoore(&(inst_rsequence[c]),endlength,&(genomicuc[textleft]),textright-textleft);
-#else
-      hits = BoyerMoore(&(sequenceuc1[c]),endlength,&(genomicuc[textleft]),textright-textleft);
-#endif
-      for (p = hits; p != NULL; p = Intlist_next(p)) {
-	candidate = textleft + Intlist_head(p);
-	if (genomicseg[candidate - 2] == intron3 &&
-	    genomicseg[candidate - 1] == intron4) {
-	  debug(printf("  Successful microexon at %d\n",candidate));
-
-	  Intlist_free(&hits);
-	  *microexonlength = endlength;
-	  pairs = make_microexon_pairs_single(roffset,roffset+c,
-					      goffset,candidate,c,endlength,
-#ifdef PMAP
-					      &(inst_rsequence[-roffset]),&(inst_rsequence[-roffset]),
-#else
-					      queryseq,queryuc,
-#endif
-					      genomicseg,genomicuc,
-					      pairpool,gapchar,*dynprogindex);
-#ifdef PMAP
-	  FREE(inst_rsequence);
-#endif
-	  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
-	  return pairs;
-	}
-      }
-      
-      Intlist_free(&hits);
-    }
-  }
-
-#ifdef PMAP
-  FREE(inst_rsequence);
-#endif
-
-  debug(printf("End of dynprog microexon 3\n"));
-
-  *microintrontype = NONINTRON;
-  return NULL;
-}
-#endif
 
diff --git a/src/dynprog.h b/src/dynprog.h
index 878431c..70a2933 100644
--- a/src/dynprog.h
+++ b/src/dynprog.h
@@ -1,4 +1,4 @@
-/* $Id: dynprog.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: dynprog.h 138110 2014-06-04 19:34:22Z twu $ */
 #ifndef DYNPROG_INCLUDED
 #define DYNPROG_INCLUDED
 
@@ -6,7 +6,7 @@
    QUERYEND_NOGAPS are global.  QUERYEND_GAP allows an intron at the
    end */
 typedef enum {QUERYEND_GAP, QUERYEND_INDELS, QUERYEND_NOGAPS, BEST_LOCAL} Endalign_T;
-typedef struct Dynprog_T *Dynprog_T;
+typedef struct Dynprog_T *Dynprog_T; /* Needed before header files below */
 
 #include "bool.h"
 #include "list.h"
@@ -22,264 +22,185 @@ typedef struct Dynprog_T *Dynprog_T;
 #endif
 
 
+typedef enum {HIGHQ, MEDQ, LOWQ, ENDQ} Mismatchtype_T;
+#define NMISMATCHTYPES 4
+
 /* Note: HIGHQ, MEDQ, and LOWQ indicate parameters for high, medium,
    and low sequence quality, respectively */
 #define DEFECT_HIGHQ 0.003
 #define DEFECT_MEDQ 0.014
 
-#define UNKNOWNJUMP -1000000
+#define SINGLE_OPEN_HIGHQ -8
+#define SINGLE_OPEN_MEDQ -6
+#define SINGLE_OPEN_LOWQ -4
 
-#define T Dynprog_T
+#define SINGLE_EXTEND_HIGHQ -3
+#define SINGLE_EXTEND_MEDQ -2
+#define SINGLE_EXTEND_LOWQ -1
 
-extern char *
-Dynprog_endalign_string (Endalign_T endalign);
+#define PAIRED_OPEN_HIGHQ -8
+#define PAIRED_OPEN_MEDQ -6
+#define PAIRED_OPEN_LOWQ -4
 
-extern void
-Dynprog_setup (bool novelsplicingp_in,
-	       IIT_T splicing_iit_in, int *splicing_divint_crosstable_in,
-	       int donor_typeint_in, int acceptor_typeint_in,
-	       Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
-	       Chrpos_T *splicedists_in, int nsplicesites_in,
-	       Trieoffset_T *trieoffsets_obs_in, Triecontent_T *triecontents_obs_in,
-	       Trieoffset_T *trieoffsets_max_in, Triecontent_T *triecontents_max_in);
+#define PAIRED_EXTEND_HIGHQ -3
+#define PAIRED_EXTEND_MEDQ -2
+#define PAIRED_EXTEND_LOWQ -1
 
-extern int
-Dynprog_score (int matches, int mismatches, int qopens, int qindels, int topens, int tindels,
-	       double defect_rate);
 
-extern T
-Dynprog_new (int maxlookback, int extraquerygap, int maxpeelback,
-	     int extramaterial_end, int extramaterial_paired);
-extern void
-Dynprog_free (T *old);
+#define UNKNOWNJUMP -1000000
 
-#ifdef PMAP
-extern char
-Dynprog_codon_char (char aa, int codonpos);
-#endif
+typedef char Score8_T;
+typedef char Direction8_T;
 
-extern int
-Dynprog_pairdistance (int c1, int c2);
+typedef short Score16_T;
+typedef short Direction16_T;
 
-extern void
-Dynprog_term (void);
-extern void
-Dynprog_init (int maxlookback, int extraquerygap, int maxpeelback,
-	      int extramaterial_end, int extramaterial_paired, Mode_T mode);
+typedef short Pairdistance_T;
 
-extern List_T
-Dynprog_single_gap (int *dynprogindex, int *finalscore,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		    T dynprog, char *sequence1, char *sequenceuc1,
-		    int length1, int length2, int offset1, int offset2,
-		    Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		    int extraband_single, double defect_rate, int close_indels_mode, bool widebandp);
+/* For standard dynamic programming.  Use ints, so NEG_INFINITY_32 works. */
+typedef int Score32_T;
+typedef int Direction32_T;
 
-extern List_T
-Dynprog_cdna_gap (int *dynprogindex, int *finalscore, bool *incompletep,
-		  T dynprogL, T dynprogR, char *sequence1L, char *sequenceuc1L,
-		  char *revsequence1R, char *revsequenceuc1R,
-#if 0
-		  char *sequence2, char *sequenceuc2,
-#endif
-		  int length1L, int length1R, int length2,
-		  int offset1L, int revoffset1R, int offset2,
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		  char *queryaaseq,
-#endif
-		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		  int extraband_paired, double defect_rate);
+/* Genome is on the horizontal axis.  Query sequence is on the vertical axis.  Dynamic programming fills in matrices column by column */
+/* The following values are for directions_nogap.  For directions_Egap, the choices are DIAG or not DIAG (meaning HORIZ). */
+/*  For directions_Fgap, the choices are DIAG or not DIAG (meaning VERT) */
+#define VERT -2			/* or VERT == -3 in SIMD code.  Don't check for dir == VERT.  Check instead if dir == DIAG or dir == HORIZ */
+#define HORIZ -1
+#define DIAG 0			/* Pre-dominant case.  Directions_alloc clears to this value. */
 
-extern List_T
-Dynprog_genome_gap (int *dynprogindex, int *finalscore, int *new_leftgenomepos, int *new_rightgenomepos,
-		    double *left_prob, double *right_prob,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels,
-		    int *exonhead, int *introntype, T dynprogL, T dynprogR, 
-		    char *sequence1, char *sequenceuc1,
-		    int length1, int length2L, int length2R, 
-		    int offset1, int offset2L, int revoffset2R, 
-		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool, int extraband_paired,
-		    double defect_rate, int maxpeelback, bool halfp, bool finalp, bool use_probabilities_p,
-		    int score_threshold, bool splicingp);
+#define NEG_INFINITY_8 (-128)
+#define POS_INFINITY_8 (127)
+#define MAX_CHAR (127)
 
-extern List_T
-Dynprog_end5_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches,
-		  int *nopens, int *nindels, T dynprog,
-		  char *revsequence1, char *revsequenceuc1,
-		  int length1, int length2, int revoffset1, int revoffset2, 
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		  char *queryaaseq,
-#endif
-		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		  int extraband_end, double defect_rate, Endalign_T endalign);
+#define NEG_INFINITY_16 (-32768)
+#define POS_INFINITY_16 (32767)
+#define MAX_SHORT (32767)
 
-extern List_T
-Dynprog_end5_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
-			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-			     char *revsequence1, char *revsequenceuc1,
-			     char *revsequence2, char *revsequenceuc2, char *revsequencealt2,
-			     int length1, int length2, int revoffset1, int revoffset2_anchor, int revoffset2_far,
-			     Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-			     char *queryaaseq,
-#endif
-			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-			     int extraband_end, double defect_rate, int contlength);
+/* We can allow -128 and -32768 for NEG_INFINITY in SIMD procedures,
+   because we are using saturation */
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+#define ONE_CHAR 1
+#define LAST_CHAR 15
+#define SIMD_NCHARS 16		/* 16 8-bit chars in 128 bits */
 
-extern List_T
-Dynprog_end3_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches,
-		  int *nopens, int *nindels, T dynprog,
-		  char *sequence1, char *sequenceuc1,
-		  int length1, int length2, int offset1, int offset2, 
-		  Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		  char *queryaaseq,
+#define ONE_SHORT 2
+#define LAST_SHORT 14		/* (8 - 1) * 2 */
+#define SIMD_NSHORTS 8		/* 8 16-bit shorts in 128 bits */
 #endif
-		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		  int extraband_end, double defect_rate, Endalign_T endalign);
 
-extern List_T
-Dynprog_end3_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
-			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog,
-			     char *sequence1, char *sequenceuc1,
-			     char *sequence2, char *sequenceuc2, char *sequencealt2,
-			     int length1, int length2, int offset1, int offset2_anchor, int offset2_far,
-			     Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-			     char *queryaaseq,
+/* Can allow -32768 in non-SIMD procedures, because we are using ints */
+#define NEG_INFINITY_32 (-32768)
+#define NEG_INFINITY_INT (-32768)
+
+
+/* This is still needed, because sequences passed into compute_scores
+   might be lower-case */
+#define PREUC 1			
+
+extern Pairdistance_T **pairdistance_array[NMISMATCHTYPES];
+#ifndef HAVE_SSE4_1
+extern Pairdistance_T **pairdistance_array_plus_128[NMISMATCHTYPES];
 #endif
-			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-			     int extraband_end, double defect_rate, int contlength);
+extern bool **consistent_array;
+extern int *nt_to_int_array;
 
-extern bool
-Dynprog_make_splicejunction_5 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
-			       int splicelength, int contlength, Splicetype_T far_splicetype,
-			       bool watsonp);
 
-extern bool
-Dynprog_make_splicejunction_3 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
-			       int splicelength, int contlength, Splicetype_T far_splicetype,
-			       bool watsonp);
+struct Space_single_T {
+  void **matrix_ptrs, *matrix_space;
+  void **directions_ptrs_0, *directions_space_0;
+  void **directions_ptrs_1, *directions_space_1;
+  void **directions_ptrs_2, *directions_space_2;
+};
 
-#if 0
-extern List_T
-Dynprog_add_known_splice_5 (int *nmatches_distal, List_T pairs, Univcoord_T anchor_splicesite, Univcoord_T far_splicesite,
-			    Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, Pairpool_T pairpool);
+struct Space_double_T {
+  void **upper_matrix_ptrs, *upper_matrix_space;
+  void **upper_directions_ptrs_0, *upper_directions_space_0;
+  void **upper_directions_ptrs_1, *upper_directions_space_1;
+  void **lower_matrix_ptrs, *lower_matrix_space;
+  void **lower_directions_ptrs_0, *lower_directions_space_0;
+  void **lower_directions_ptrs_1, *lower_directions_space_1;
+};
 
-extern List_T
-Dynprog_add_known_splice_3 (int *nmatches_distal, List_T pairs, Univcoord_T anchor_splicesite, Univcoord_T far_splicesite,
-			    Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, Pairpool_T pairpool);
-#endif
 
+#define T Dynprog_T
+struct T {
+  int max_rlength;
+  int max_glength;
 
-extern List_T
-Dynprog_end5_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
-		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-		    char *revsequence1, char *revsequenceuc1,
-		    int length1, int length2, int revoffset1, int revoffset2, 
-		    Univcoord_T chroffset, Univcoord_T chrhigh,
-		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-#ifdef GSNAP
-#ifdef END_KNOWNSPLICING_SHORTCUT
-		    int cutoff_level, char *queryptr, int querylength, Compress_T query_compress,
-#endif
+#ifdef DEBUG12
+  struct Int3_T **matrix3_ptrs, *matrix3_space;
 #endif
-		    int cdna_direction, bool watsonp, bool jump_late_p,
-		    Pairpool_T pairpool, int extraband_end, double defect_rate);
 
-extern List_T
-Dynprog_end3_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
-		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
-		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
-		    char *sequence1, char *sequenceuc1,
-		    int length1, int length2, int offset1, int offset2, int querylength,
-		    Univcoord_T chroffset, Univcoord_T chrhigh,
-		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-#ifdef GSNAP
-#ifdef END_KNOWNSPLICING_SHORTCUT
-		    int cutoff_level, char *queryptr, int querylength, Compress_T query_compress,
+#if !defined(HAVE_SSE2) || defined(DEBUG14)
+  Score32_T **matrix_ptrs, *matrix_space;
+  Direction32_T **directions_ptrs_0, *directions_space_0;
+  Direction32_T **directions_ptrs_1, *directions_space_1;
+  Direction32_T **directions_ptrs_2, *directions_space_2;
 #endif
+#ifdef HAVE_SSE2
+  union {
+    struct Space_single_T one;
+    struct Space_double_T two;
+  } aligned;
 #endif
-		    int cdna_direction, bool watsonp, bool jump_late_p,
-		    Pairpool_T pairpool, int extraband_end, double defect_rate);
+  int nspaces;
+};
 
 
-#if 0
+extern char *
+Dynprog_endalign_string (Endalign_T endalign);
+
 extern int
-Dynprog_internal_gap_stats (T dynprog, char *sequenceuc1, char *sequenceuc2,
-			    int length1, int length2, int offset1, int offset2, 
-#ifdef PMAP
-			    char *queryaaseq,
-#endif
-			    int cdna_direction, int extraband_end, double defect_rate);
-#endif
+Dynprog_score (int matches, int mismatches, int qopens, int qindels, int topens, int tindels,
+	       double defect_rate);
 
-#if 0
-extern List_T
-Dynprog_dual_break (int *dynprogindex, int *finalscore, T dynprogL, T dynprogR, 
-		    char *sequence1L, char *sequenceuc1L,
-		    char *sequence2L, char *sequenceuc2L,
-		    char *revsequence1R, char *revsequenceuc1R,
-		    char *revsequence2R, char *revsequenceuc2R,
-		    int length1, int length2, int offset1L, int offset2L, 
-		    int revoffset1R, int revoffset2R, 
-#ifdef PMAP
-		    char *queryaaseq,
-#endif
-		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
-		    int extraband_end, double defect_rate);
-#endif
+extern T
+Dynprog_new (int maxlookback, int extraquerygap, int maxpeelback,
+	     int extramaterial_end, int extramaterial_paired,
+	     bool doublep);
+extern void
+Dynprog_free (T *old);
 
-extern List_T
-Dynprog_microexon_int (double *bestprob2, double *bestprob3, int *dynprogindex, int *microintrontype,
-		       char *sequence1, char *sequenceuc1,
-		       int length1, int length2L, int length2R,
-		       int offset1, int offset2L, int revoffset2R, int cdna_direction,
-#ifdef PMAP
-		       char *queryaaseq, char *genomicuc,
-#endif
-		       char *queryseq, char *queryuc,
-		       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-		       Pairpool_T pairpool, double defect_rate);
+extern bool
+Dynprog_consistent_p (int c, int g, int g_alt);
 
-extern List_T
-Dynprog_microexon_5 (int *dynprogindex, int *microintrontype, int *microexonlength,
-		     char *revsequence1, char *revsequenceuc1,
-		     char *revsequence2, char *revsequenceuc2,
-		     int length1, int length2, int revoffset1, int revoffset2, int cdna_direction,
-#ifdef PMAP
-		     char *queryaaseq,
-#endif
-		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
-		     Pairpool_T pairpool, bool end_microexons_p);
+extern void
+Dynprog_term (void);
+extern void
+Dynprog_init (Mode_T mode);
+
+extern void
+Dynprog_compute_bands (int *lband, int *uband, int rlength, int glength, int extraband, bool widebandp);
+
+
+extern void
+Dynprog_Matrix32_print (Score32_T **matrix, int rlength, int glength, char *rsequence,
+			char *gsequence, char *gsequencealt,
+			int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
+			bool watsonp, bool revp, int lband, int uband);
+
+extern void
+Dynprog_Directions32_print (Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
+			    int rlength, int glength, char *rsequence, char *gsequence, char *gsequence_alt,
+			    int goffset, Univcoord_T chroffset, Univcoord_T chrhigh,
+			    bool watsonp, bool revp, int lband, int uband);
+
+extern Score32_T **
+Dynprog_standard (Direction32_T ***directions_nogap, Direction32_T ***directions_Egap, Direction32_T ***directions_Fgap,
+		  T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		  int rlength, int glength,
+		  int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+		  Mismatchtype_T mismatchtype, Score32_T open, Score32_T extend,
+		  int lband, int uband, bool jump_late_p, bool revp, int saturation);
 
 extern List_T
-Dynprog_microexon_3 (int *dynprogindex, int *microintrontype, int *microexonlength,
-		     char *sequence1, char *sequenceuc1,
-		     char *sequence2, char *sequenceuc2,
-		     int length1, int length2, int offset1, int offset2, int cdna_direction,
-#ifdef PMAP
-		     char *queryaaseq,
-#endif
-		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
-		     int genomiclength, Pairpool_T pairpool, bool end_microexons_p);
+Dynprog_traceback_std (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		       Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
+		       int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+		       int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		       Univcoord_T chroffset, Univcoord_T chrhigh,
+		       int cdna_direction, bool watsonp, int dynprogindex);
+
 
 #undef T
 #endif
diff --git a/src/dynprog_cdna.c b/src/dynprog_cdna.c
new file mode 100644
index 0000000..497e331
--- /dev/null
+++ b/src/dynprog_cdna.c
@@ -0,0 +1,1321 @@
+static char rcsid[] = "$Id: dynprog_cdna.c 138117 2014-06-04 20:28:44Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "dynprog_genome.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>		/* For ceil, log, pow */
+#include <ctype.h>		/* For tolower */
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+
+
+#include "bool.h"
+#include "except.h"
+#include "assert.h"
+#include "mem.h"
+#include "comp.h"
+#include "pair.h"
+#include "pairdef.h"
+#include "listdef.h"
+#include "complement.h"
+#include "dynprog_simd.h"
+
+/* These values were set to -5, -4, -3, but this led to chopped ends
+   in GMAP alignments, and failure to find chimeras */
+#define MISMATCH_HIGHQ -3
+#define MISMATCH_MEDQ -2
+#define MISMATCH_LOWQ -1
+
+/* cDNA insertions are biologically not meaningful, so look for a good
+   gap opening somewhere */
+#define CDNA_OPEN_HIGHQ -10
+#define CDNA_OPEN_MEDQ -10
+#define CDNA_OPEN_LOWQ -10
+
+#define CDNA_EXTEND_HIGHQ -7
+#define CDNA_EXTEND_MEDQ -7
+#define CDNA_EXTEND_LOWQ -7
+
+#define INSERT_PAIRS 9
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+#define T Dynprog_T
+
+
+/************************************************************************
+ * get_genomic_nt
+ ************************************************************************/
+
+static char complCode[128] = COMPLEMENT_LC;
+
+static char
+get_genomic_nt (char *g_alt, int genomicpos, Univcoord_T chroffset, Univcoord_T chrhigh,
+		bool watsonp) {
+  char c2, c2_alt;
+  Univcoord_T pos;
+
+#if 0
+  /* If the read has a deletion, then we will extend beyond 0 or genomiclength, so do not restrict. */
+  if (genomicpos < 0) {
+    return '*';
+
+  } else if (genomicpos >= genomiclength) {
+    return '*';
+
+  }
+#endif
+
+  if (watsonp) {
+    if ((pos = chroffset + genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char(genome,pos)));
+      return Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char_blocks(&(g_alt),pos)));
+      return Genome_get_char_blocks(&(*g_alt),pos);
+    }
+
+  } else {
+    if ((pos = chrhigh - genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      c2 = Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      c2 = Genome_get_char_blocks(&c2_alt,pos);
+    }
+    debug8(printf("At %u, genomicnt is %c\n",genomicpos,complCode[(int) c2]));
+    *g_alt = complCode[(int) c2_alt];
+    return complCode[(int) c2];
+  }
+}
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+/* Columns are always genomic.  Rows are always query.  Bridging across common columns */
+static void
+bridge_cdna_gap_8_ud (int *finalscore, int *bestcL, int *bestcR, int *bestrL, int *bestrR,
+		      Score8_T **matrixL_upper, Score8_T **matrixL_lower,
+		      Score8_T **matrixR_upper, Score8_T **matrixR_lower,
+		      int glength, int rlengthL, int rlengthR,
+		      int lbandL, int ubandL, int lbandR, int ubandR,
+		      int open, int extend, int leftoffset, int rightoffset, bool jump_late_p) {
+  int bestscore = NEG_INFINITY_16, score, scoreL, scoreR, pen, end_reward = 0;
+  int rL, rR, cL, cR;
+  int rloL, rhighL;
+  int rloR, rhighR;
+
+#if 0
+  /* Perform computations */
+  lbandL = rlengthL - glength + extraband_paired;
+  ubandL = extraband_paired;
+
+  lbandR = rlengthR - glength + extraband_paired;
+  ubandR = extraband_paired;
+#endif
+
+  /* Need a double loop on rows here, in contrast with a single loop
+     for introns, because we allow a genomic insertion that doesn't
+     match the cDNA.  So we need to add a penalty for a genomic
+     insertion */
+
+  if (jump_late_p) {
+    for (cL = 1; cL < glength; cL++) {
+
+      /* Note: opening penalty is added at the bottom of the loop */
+      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
+	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
+	if ((rloL = cL - ubandL) < 1) {
+	  rloL = 1;
+	}
+	if ((rhighL = cL + lbandL) > rlengthL-1) {
+	  rhighL = rlengthL-1;
+	}
+
+	if ((rloR = cR - ubandR) < 1) {
+	  rloR = 1;
+	}
+	if ((rhighR = cR + lbandR) > rlengthR-1) {
+	  rhighR = rlengthR-1;
+	}
+
+	for (rL = rloL; rL < /*to main diagonal*/cL; rL++) {
+	  scoreL = (int) matrixL_upper[cL][rL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	for (/*at main diagonal*/; rL <= rhighL; rL++) {
+	  scoreL = (int) matrixL_lower[rL][cL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	pen = open - extend;	/* Subtract extend to compensate for
+                                   its addition in the for loop */
+      }
+    }
+
+  } else {
+    /* Do not jump late */
+    for (cL = 1; cL < glength; cL++) {
+
+      /* Note: opening penalty is added at the bottom of the loop */
+      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
+	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
+	if ((rloL = cL - ubandL) < 1) {
+	  rloL = 1;
+	}
+	if ((rhighL = cL + lbandL) > rlengthL-1) {
+	  rhighL = rlengthL-1;
+	}
+
+	if ((rloR = cR - ubandR) < 1) {
+	  rloR = 1;
+	}
+	if ((rhighR = cR + lbandR) > rlengthR-1) {
+	  rhighR = rlengthR-1;
+	}
+
+	for (rL = rloL; rL < /*to main diagonal*/cL; rL++) {
+	  scoreL = (int) matrixL_upper[cL][rL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	for (/*at main diagonal*/; rL <= rhighL; rL++) {
+	  scoreL = (int) matrixL_lower[rL][cL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	pen = open - extend;	/* Subtract extend to compensate for
+                                   its addition in the for loop */
+      }
+    }
+  }
+      
+  *finalscore = (int) bestscore;
+  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right\n",
+		*finalscore,*bestcL,*bestrL,*bestcR,*bestrR));
+
+  return;
+}
+#endif
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+/* Columns are always genomic.  Rows are always query.  Bridging across common columns */
+static void
+bridge_cdna_gap_16_ud (int *finalscore, int *bestcL, int *bestcR, int *bestrL, int *bestrR,
+		      Score16_T **matrixL_upper, Score16_T **matrixL_lower,
+		      Score16_T **matrixR_upper, Score16_T **matrixR_lower,
+		      int glength, int rlengthL, int rlengthR,
+		      int lbandL, int ubandL, int lbandR, int ubandR,
+		      int open, int extend, int leftoffset, int rightoffset, bool jump_late_p) {
+  int bestscore = NEG_INFINITY_16, score, scoreL, scoreR, pen, end_reward = 0;
+  int rL, rR, cL, cR;
+  int rloL, rhighL;
+  int rloR, rhighR;
+
+#if 0
+  /* Perform computations */
+  lbandL = rlengthL - glength + extraband_paired;
+  ubandL = extraband_paired;
+
+  lbandR = rlengthR - glength + extraband_paired;
+  ubandR = extraband_paired;
+#endif
+
+  /* Need a double loop on rows here, in contrast with a single loop
+     for introns, because we allow a genomic insertion that doesn't
+     match the cDNA.  So we need to add a penalty for a genomic
+     insertion */
+
+  if (jump_late_p) {
+    for (cL = 1; cL < glength; cL++) {
+
+      /* Note: opening penalty is added at the bottom of the loop */
+      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
+	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
+	if ((rloL = cL - ubandL) < 1) {
+	  rloL = 1;
+	}
+	if ((rhighL = cL + lbandL) > rlengthL-1) {
+	  rhighL = rlengthL-1;
+	}
+
+	if ((rloR = cR - ubandR) < 1) {
+	  rloR = 1;
+	}
+	if ((rhighR = cR + lbandR) > rlengthR-1) {
+	  rhighR = rlengthR-1;
+	}
+
+	for (rL = rloL; rL < /*to main diagonal*/cL; rL++) {
+	  scoreL = (int) matrixL_upper[cL][rL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	for (/*at main diagonal*/; rL <= rhighL; rL++) {
+	  scoreL = (int) matrixL_lower[rL][cL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	pen = open - extend;	/* Subtract extend to compensate for
+                                   its addition in the for loop */
+      }
+    }
+
+  } else {
+    /* Do not jump late */
+    for (cL = 1; cL < glength; cL++) {
+
+      /* Note: opening penalty is added at the bottom of the loop */
+      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
+	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
+	if ((rloL = cL - ubandL) < 1) {
+	  rloL = 1;
+	}
+	if ((rhighL = cL + lbandL) > rlengthL-1) {
+	  rhighL = rlengthL-1;
+	}
+
+	if ((rloR = cR - ubandR) < 1) {
+	  rloR = 1;
+	}
+	if ((rhighR = cR + lbandR) > rlengthR-1) {
+	  rhighR = rlengthR-1;
+	}
+
+	for (rL = rloL; rL < /*to main diagonal*/cL; rL++) {
+	  scoreL = (int) matrixL_upper[cL][rL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	for (/*at main diagonal*/; rL <= rhighL; rL++) {
+	  scoreL = (int) matrixL_lower[rL][cL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR < /*to main diagonal*/cR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_upper[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+
+	  for (/*at main diagonal*/; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR_lower[rR][cR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+
+	pen = open - extend;	/* Subtract extend to compensate for
+                                   its addition in the for loop */
+      }
+    }
+  }
+      
+  *finalscore = (int) bestscore;
+  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right\n",
+		*finalscore,*bestcL,*bestrL,*bestcR,*bestrR));
+
+  return;
+}
+#endif
+
+
+
+#ifndef HAVE_SSE2
+/* Columns are always genomic.  Rows are always query.  Bridging across common columns */
+static void
+bridge_cdna_gap (int *finalscore, int *bestcL, int *bestcR, int *bestrL, int *bestrR,
+#ifdef HAVE_SSE2
+		 Score16_T **matrixL, Score16_T **matrixR,
+#else
+		 Score32_T **matrixL, Score32_T **matrixR,
+#endif
+		 int glength, int rlengthL, int rlengthR, int extraband_paired,
+		 int open, int extend, int leftoffset, int rightoffset, bool jump_late_p) {
+  int bestscore = NEG_INFINITY_32, score, scoreL, scoreR, pen, end_reward = 0;
+  int rL, rR, cL, cR;
+  int lbandL, ubandL, rloL, rhighL;
+  int lbandR, ubandR, rloR, rhighR;
+
+  /* Perform computations */
+  lbandL = rlengthL - glength + extraband_paired;
+  ubandL = extraband_paired;
+
+  lbandR = rlengthR - glength + extraband_paired;
+  ubandR = extraband_paired;
+
+  /* Need a double loop on rows here, in contrast with a single loop
+     for introns, because we allow a genomic insertion that doesn't
+     match the cDNA.  So we need to add a penalty for a genomic
+     insertion */
+
+  if (jump_late_p) {
+    for (cL = 1; cL < glength; cL++) {
+
+      /* Note: opening penalty is added at the bottom of the loop */
+      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
+	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
+	if ((rloL = cL - ubandL) < 1) {
+	  rloL = 1;
+	}
+	if ((rhighL = cL + lbandL) > rlengthL-1) {
+	  rhighL = rlengthL-1;
+	}
+
+	if ((rloR = cR - ubandR) < 1) {
+	  rloR = 1;
+	}
+	if ((rhighR = cR + lbandR) > rlengthR-1) {
+	  rhighR = rlengthR-1;
+	}
+
+	for (rL = rloL; rL <= rhighL; rL++) {
+	  scoreL = (int) matrixL[cL][rL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) >= bestscore) {  /* Use >= for jump late */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+	pen = open - extend;	/* Subtract extend to compensate for
+                                   its addition in the for loop */
+      }
+    }
+
+  } else {
+    /* Do not jump late */
+    for (cL = 1; cL < glength; cL++) {
+
+      /* Note: opening penalty is added at the bottom of the loop */
+      for (cR = glength-cL, pen = 0; cR >= 0; cR--, pen += extend) {
+	/* debug3(printf("\nAt row %d on left and %d on right\n",cL,cR)); */
+	if ((rloL = cL - ubandL) < 1) {
+	  rloL = 1;
+	}
+	if ((rhighL = cL + lbandL) > rlengthL-1) {
+	  rhighL = rlengthL-1;
+	}
+
+	if ((rloR = cR - ubandR) < 1) {
+	  rloR = 1;
+	}
+	if ((rhighR = cR + lbandR) > rlengthR-1) {
+	  rhighR = rlengthR-1;
+	}
+
+	for (rL = rloL; rL <= rhighL; rL++) {
+	  scoreL = (int) matrixL[cL][rL];
+	
+	  /* Disallow leftoffset + rL >= rightoffset - rR, or rR >= rightoffset - leftoffset - rL */
+	  debug3(printf("  Disallowing rR to be >= %d\n",rightoffset-leftoffset-rL));
+	  for (rR = rloR; rR <= rhighR && rR < rightoffset-leftoffset-rL; rR++) {
+	    scoreR = (int) matrixR[cR][rR];
+
+	    if ((score = scoreL + scoreR + pen + end_reward) > bestscore) {  /* Use > for jump early */
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+			    rL,rR,scoreL,scoreR,pen,end_reward,score));
+
+	      bestscore = score;
+	      *bestcL = cL;
+	      *bestcR = cR;
+	      *bestrL = rL;
+	      *bestrR = rR;
+
+	    } else {
+	      debug3(printf("At %d left to %d right, score is (%d)+(%d)+(%d) = %d\n",
+			    rL,rR,scoreL,scoreR,pen,scoreL+scoreR+pen));
+	    }
+	  }
+	}
+	pen = open - extend;	/* Subtract extend to compensate for
+                                   its addition in the for loop */
+      }
+    }
+  }
+      
+  *finalscore = (int) bestscore;
+  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right\n",
+		*finalscore,*bestcL,*bestrL,*bestcR,*bestrR));
+
+  return;
+}
+#endif
+
+
+/* Sequences rsequenceL and rsequenceR represent the two ends of the cDNA insertion */
+List_T
+Dynprog_cdna_gap (int *dynprogindex, int *finalscore, bool *incompletep,
+		  T dynprogL, T dynprogR, char *rsequenceL, char *rsequence_ucL, 
+		  char *rev_rsequenceR, char *rev_rsequence_ucR,
+#if 0
+		  char *gsequence, char *gsequence_uc,
+#endif
+		  int rlengthL, int rlengthR, int glength,
+		  int roffsetL, int rev_roffsetR, int goffset,
+		  Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		  int extraband_paired, double defect_rate) {
+  List_T pairs = NULL;
+  char *gsequence, *gsequence_alt, *rev_gsequence, *rev_gsequence_alt;
+  Mismatchtype_T mismatchtype;
+  int lbandL, ubandL, lbandR, ubandR;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  Score8_T **matrix8L_upper, **matrix8L_lower, **matrix8R_upper, **matrix8R_lower;
+  Direction8_T **directions8L_upper_nogap, **directions8L_upper_Egap,
+    **directions8L_lower_nogap, **directions8L_lower_Egap,
+    **directions8R_upper_nogap, **directions8R_upper_Egap,
+    **directions8R_lower_nogap, **directions8R_lower_Egap;
+  bool use8p;
+
+  Score16_T **matrix16L_upper, **matrix16L_lower, **matrix16R_upper, **matrix16R_lower;
+  Direction16_T **directions16L_upper_nogap, **directions16L_upper_Egap,
+    **directions16L_lower_nogap, **directions16L_lower_Egap,
+    **directions16R_upper_nogap, **directions16R_upper_Egap,
+    **directions16R_lower_nogap, **directions16R_lower_Egap;
+#else
+  Score32_T **matrixL, **matrixR;
+  Direction32_T **directionsL_nogap, **directionsL_Egap, **directionsL_Fgap,
+    **directionsR_nogap, **directionsR_Egap, **directionsR_Fgap;
+#endif
+  int rev_goffset, bestrL, bestrR, bestcL, bestcR, k;
+  int nmatches, nmismatches, nopens, nindels;
+  int queryjump, genomejump;
+  char c2, c2_alt;
+
+
+  if (glength <= 1) {
+    return NULL;
+  }
+
+  debug(printf("\n"));
+  debug(printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A'));
+  debug(printf("Aligning cdna gap\n"));
+#ifdef EXTRACT_GENOMICSEG
+  debug(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
+#endif
+  debug(printf("\n"));
+
+  /* ?check if offsets are too close.  But this eliminates a segment
+     of the cDNA.  Should check in stage 3, and do single gap instead. */
+  /*
+  if (roffsetL+rlengthL-1 >= rev_roffsetR-rlengthR+1) {
+    debug(printf("Bounds don't make sense\n"));
+    *finalscore = NEG_INFINITY_16;
+    return NULL;
+  }
+  */
+
+  if (defect_rate < DEFECT_HIGHQ) {
+    mismatchtype = HIGHQ;
+    /* mismatch = MISMATCH_HIGHQ; */
+    open = CDNA_OPEN_HIGHQ;
+    extend = CDNA_EXTEND_HIGHQ;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    mismatchtype = MEDQ;
+    /* mismatch = MISMATCH_MEDQ; */
+    open = CDNA_OPEN_MEDQ;
+    extend = CDNA_EXTEND_MEDQ;
+  } else {
+    mismatchtype = LOWQ;
+    /* mismatch = MISMATCH_LOWQ; */
+    open = CDNA_OPEN_LOWQ;
+    extend = CDNA_EXTEND_LOWQ;
+  }
+
+  if (glength > dynprogR->max_glength || rlengthR > dynprogR->max_rlength) {
+    debug(printf("glength %d or rlengthR %d is too long.  Returning NULL\n",glength,rlengthR));
+#if 0
+    rev_goffset = goffset + glength - 1;
+    queryjump = rev_roffsetR - roffsetL + 1;
+    genomejump = rev_goffset - goffset + 1;
+    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return (List_T) NULL;
+  }
+
+  if (glength > dynprogL->max_glength || rlengthL > dynprogL->max_rlength) {
+    debug(printf("glength %d or rlengthL %d is too long.  Returning NULL\n",glength,rlengthL));
+#if 0
+    rev_goffset = goffset + glength - 1;
+    queryjump = rev_roffsetR - roffsetL + 1;
+    genomejump = rev_goffset - goffset + 1;
+    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return (List_T) NULL;
+  }
+
+#if 0
+  /* Right side looks like 5' end */
+  /* Note: sequence 1 and 2 flipped, because 1 has extramaterial */
+  rev_gsequence = &(gsequence[glength-1]);
+  rev_gsequence_uc = &(gsequence_uc[glength-1]);
+#endif
+  rev_goffset = goffset+glength-1;
+
+  debug(printf("At query offset %d-%d, %.*s\n",roffsetL,roffsetL+rlengthL-1,rlengthL,rsequenceL));
+  debug(printf("At query offset %d-%d, %.*s\n",rev_roffsetR-rlengthR+1,rev_roffsetR,rlengthR,&(rev_rsequenceR[-rlengthR+1])));
+  debug(printf("Whole piece at query offset %d-%d, %.*s\n",roffsetL,rev_roffsetR,rev_roffsetR-roffsetL+1,rsequenceL));
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+  if (glength <= SIMD_MAXLENGTH_EPI8 || (rlengthL <= SIMD_MAXLENGTH_EPI8 && rlengthR <= SIMD_MAXLENGTH_EPI8)) {
+    use8p = true;
+  } else {
+    use8p = false;
+  }
+#endif
+
+
+  if (watsonp) {
+    rev_gsequence = Genome_get_segment_blocks_left(&rev_gsequence_alt,/*left*/chroffset+rev_goffset+1,glength,chroffset,/*revcomp*/false);
+    gsequence = Genome_get_segment_blocks_right(&gsequence_alt,/*left*/chroffset+goffset,glength,chrhigh,/*revcomp*/false);
+  } else {
+    rev_gsequence = Genome_get_segment_blocks_right(&rev_gsequence_alt,/*left*/chrhigh-rev_goffset,glength,chrhigh,/*revcomp*/true);
+    gsequence = Genome_get_segment_blocks_left(&gsequence_alt,/*left*/chrhigh-goffset+1,glength,chroffset,/*revcomp*/true);
+  }
+  if (gsequence == NULL) {
+    if (rev_gsequence_alt != rev_gsequence) {
+      FREE(rev_gsequence_alt);
+    }
+    FREE(rev_gsequence);
+    return (List_T) NULL;
+  } else if (rev_gsequence == NULL) {
+    if (gsequence_alt != gsequence) {
+      FREE(gsequence_alt);
+    }
+    FREE(gsequence);
+    return (List_T) NULL;
+  }
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  if (use8p == true) {
+    Dynprog_compute_bands(&lbandL,&ubandL,rlengthL,glength,extraband_paired,/*widebandp*/true);
+    matrix8L_upper = Dynprog_simd_8_upper(&directions8L_upper_nogap,&directions8L_upper_Egap,dynprogL,
+					  rsequenceL,gsequence,gsequence_alt,rlengthL,glength,
+#ifdef DEBUG14
+					  goffset,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,ubandL,jump_late_p,/*revp*/false);
+
+    matrix8L_lower = Dynprog_simd_8_lower(&directions8L_lower_nogap,&directions8L_lower_Egap,dynprogL,
+					  rsequenceL,gsequence,gsequence_alt,rlengthL,glength,
+#ifdef DEBUG14
+					  goffset,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,lbandL,jump_late_p,/*revp*/false);
+    
+
+    Dynprog_compute_bands(&lbandR,&ubandR,rlengthR,glength,extraband_paired,/*widebandp*/true);
+    matrix8R_upper = Dynprog_simd_8_upper(&directions8R_upper_nogap,&directions8R_upper_Egap,dynprogR,
+					  rev_rsequenceR,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					  rlengthR,glength,
+#ifdef DEBUG14
+					  rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,ubandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    matrix8R_lower = Dynprog_simd_8_lower(&directions8R_lower_nogap,&directions8R_lower_Egap,dynprogR,
+					  rev_rsequenceR,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					  rlengthR,glength,
+#ifdef DEBUG14
+					  rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,lbandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+
+    nmatches = nmismatches = nopens = nindels = 0;
+    bridge_cdna_gap_8_ud(&(*finalscore),&bestcL,&bestcR,&bestrL,&bestrR,
+			 matrix8L_upper,matrix8L_lower,matrix8R_upper,matrix8R_lower,
+			 glength,rlengthL,rlengthR,lbandL,ubandL,lbandR,ubandR,
+			 open,extend,roffsetL,rev_roffsetR,jump_late_p);
+
+    if (bestcR >= bestrR) {
+      pairs = Dynprog_traceback_8_upper(NULL,&nmatches,&nmismatches,&nopens,&nindels,
+					directions8R_upper_nogap,directions8R_upper_Egap,
+					bestrR,bestcR,rev_rsequenceR,rev_rsequence_ucR,
+					&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_8_lower(NULL,&nmatches,&nmismatches,&nopens,&nindels,
+					directions8R_lower_nogap,directions8R_lower_Egap,
+					bestrR,bestcR,rev_rsequenceR,rev_rsequence_ucR,
+					&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+    pairs = List_reverse(pairs);
+
+    queryjump = (rev_roffsetR-bestrR) - (roffsetL+bestrL) + 1;
+    genomejump = (rev_goffset-bestcR) - (goffset+bestcL) + 1;
+    /* No need to revise queryjump or genomejump, because the above
+       coordinates are internal to the gap. */
+
+    if (queryjump == INSERT_PAIRS && genomejump == INSERT_PAIRS) {
+      /* Add cDNA insertion, if any */
+      for (k = rev_roffsetR-bestrR; k >= roffsetL+bestrL; k--) {
+	debug(printf("cDNA insertion, Pushing [%d,%d] (%c,-)\n",k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL]));
+	pairs = Pairpool_push(pairs,pairpool,k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL],SHORTGAP_COMP,
+			      /*genome*/' ',/*genomealt*/' ',*dynprogindex);
+      }
+      debug(printf("\n"));
+
+
+      /* This loop not yet checked for get_genomic_nt giving correct answer */
+      for (k = rev_goffset-bestcR; k >= goffset+bestcL; k--) {
+	c2 = get_genomic_nt(&c2_alt,k,chroffset,chrhigh,watsonp);
+	debug(printf("genome insertion, Pushing [%d,%d] (-,%c)\n",roffsetL+bestrL,k,c2));
+#if 0
+	assert(c2 == gsequence[k-goffset]);
+	pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,
+			      gsequence[k-goffset],/*genomealt*/GENOMEALT_DEFERRED,*dynprogindex);
+#else
+	pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,c2,c2_alt,*dynprogindex);
+#endif
+      }
+      debug(printf("\n"));
+
+    } else {
+
+      /* Add gapholder to be solved in the future */
+#ifndef NOGAPHOLDER
+      debug(printf("Pushing a gap with queryjump = %d, genomejump = %d\n",queryjump,genomejump));
+      pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+				      /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+      *incompletep = true;
+    }
+
+    if (bestcL >= bestrL) {
+      pairs = Dynprog_traceback_8_upper(pairs,&nmatches,&nmismatches,&nopens,&nindels,
+					directions8L_upper_nogap,directions8L_upper_Egap,
+					bestrL,bestcL,rsequenceL,rsequence_ucL,
+					gsequence,gsequence_alt,roffsetL,goffset,pairpool,/*revp*/false,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_8_lower(pairs,&nmatches,&nmismatches,&nopens,&nindels,
+					directions8L_lower_nogap,directions8L_lower_Egap,
+					bestrL,bestcL,rsequenceL,rsequence_ucL,
+					gsequence,gsequence_alt,roffsetL,goffset,pairpool,/*revp*/false,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+    if (List_length(pairs) == 1) {
+      /* Only a gap added */
+      pairs = (List_T) NULL;
+    }
+
+    if (gsequence_alt != gsequence) {
+      FREE(gsequence_alt);
+      FREE(rev_gsequence_alt);
+    }
+    FREE(gsequence);
+    FREE(rev_gsequence);
+
+    debug(printf("End of dynprog cDNA gap\n"));
+
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return List_reverse(pairs);
+
+  } else {
+    /* Use 16-mers */
+    Dynprog_compute_bands(&lbandL,&ubandL,rlengthL,glength,extraband_paired,/*widebandp*/true);
+    matrix16L_upper = Dynprog_simd_16_upper(&directions16L_upper_nogap,&directions16L_upper_Egap,dynprogL,
+					    rsequenceL,gsequence,gsequence_alt,rlengthL,glength,
+#ifdef DEBUG14
+					    goffset,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,ubandL,jump_late_p,/*revp*/false);
+
+    matrix16L_lower = Dynprog_simd_16_lower(&directions16L_lower_nogap,&directions16L_lower_Egap,dynprogL,
+					    rsequenceL,gsequence,gsequence_alt,rlengthL,glength,
+#ifdef DEBUG14
+					    goffset,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,lbandL,jump_late_p,/*revp*/false);
+
+    Dynprog_compute_bands(&lbandR,&ubandR,rlengthR,glength,extraband_paired,/*widebandp*/true);
+    matrix16R_upper = Dynprog_simd_16_upper(&directions16R_upper_nogap,&directions16R_upper_Egap,dynprogR,
+					    rev_rsequenceR,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					    rlengthR,glength,
+#ifdef DEBUG14
+					    rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,ubandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    matrix16R_lower = Dynprog_simd_16_lower(&directions16R_lower_nogap,&directions16R_lower_Egap,dynprogR,
+					    rev_rsequenceR,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					    rlengthR,glength,
+#ifdef DEBUG14
+					    rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,lbandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    nmatches = nmismatches = nopens = nindels = 0;
+
+    bridge_cdna_gap_16_ud(&(*finalscore),&bestcL,&bestcR,&bestrL,&bestrR,
+			 matrix16L_upper,matrix16L_lower,matrix16R_upper,matrix16R_lower,
+			 glength,rlengthL,rlengthR,lbandL,ubandL,lbandR,ubandR,
+			 open,extend,roffsetL,rev_roffsetR,jump_late_p);
+
+    if (bestcR >= bestrR) {
+      pairs = Dynprog_traceback_16_upper(NULL,&nmatches,&nmismatches,&nopens,&nindels,
+					 directions16R_upper_nogap,directions16R_upper_Egap,
+					 bestrR,bestcR,rev_rsequenceR,rev_rsequence_ucR,
+					 &(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					 rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_16_lower(NULL,&nmatches,&nmismatches,&nopens,&nindels,
+					 directions16R_lower_nogap,directions16R_lower_Egap,
+					 bestrR,bestcR,rev_rsequenceR,rev_rsequence_ucR,
+					 &(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					 rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+    pairs = List_reverse(pairs);
+
+    queryjump = (rev_roffsetR-bestrR) - (roffsetL+bestrL) + 1;
+    genomejump = (rev_goffset-bestcR) - (goffset+bestcL) + 1;
+    /* No need to revise queryjump or genomejump, because the above
+       coordinates are internal to the gap. */
+
+    if (queryjump == INSERT_PAIRS && genomejump == INSERT_PAIRS) {
+      /* Add cDNA insertion, if any */
+      for (k = rev_roffsetR-bestrR; k >= roffsetL+bestrL; k--) {
+	debug(printf("cDNA insertion, Pushing [%d,%d] (%c,-)\n",k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL]));
+	pairs = Pairpool_push(pairs,pairpool,k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL],SHORTGAP_COMP,
+			      /*genome*/' ',/*genomealt*/' ',*dynprogindex);
+      }
+      debug(printf("\n"));
+
+
+      /* This loop not yet checked for get_genomic_nt giving correct answer */
+      for (k = rev_goffset-bestcR; k >= goffset+bestcL; k--) {
+	c2 = get_genomic_nt(&c2_alt,k,chroffset,chrhigh,watsonp);
+	debug(printf("genome insertion, Pushing [%d,%d] (-,%c)\n",roffsetL+bestrL,k,c2));
+#if 0
+	assert(c2 == gsequence[k-goffset]);
+	pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,
+			      gsequence[k-goffset],/*genomealt*/GENOMEALT_DEFERRED,*dynprogindex);
+#else
+	pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,c2,c2_alt,*dynprogindex);
+#endif
+      }
+      debug(printf("\n"));
+
+    } else {
+
+      /* Add gapholder to be solved in the future */
+#ifndef NOGAPHOLDER
+      debug(printf("Pushing a gap with queryjump = %d, genomejump = %d\n",queryjump,genomejump));
+      pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+				      /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+      *incompletep = true;
+    }
+
+    if (bestcL >= bestrL) {
+      pairs = Dynprog_traceback_16_upper(pairs,&nmatches,&nmismatches,&nopens,&nindels,
+					 directions16L_upper_nogap,directions16L_upper_Egap,
+					 bestrL,bestcL,rsequenceL,rsequence_ucL,
+					 gsequence,gsequence_alt,roffsetL,goffset,pairpool,/*revp*/false,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_16_lower(pairs,&nmatches,&nmismatches,&nopens,&nindels,
+					 directions16L_lower_nogap,directions16L_lower_Egap,
+					 bestrL,bestcL,rsequenceL,rsequence_ucL,
+					 gsequence,gsequence_alt,roffsetL,goffset,pairpool,/*revp*/false,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+    if (List_length(pairs) == 1) {
+      /* Only a gap added */
+      pairs = (List_T) NULL;
+    }
+
+    if (gsequence_alt != gsequence) {
+      FREE(gsequence_alt);
+      FREE(rev_gsequence_alt);
+    }
+    FREE(gsequence);
+    FREE(rev_gsequence);
+
+    debug(printf("End of dynprog cDNA gap\n"));
+
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return List_reverse(pairs);
+  }
+
+#else
+  /* Non-SIMD methods */
+  Dynprog_compute_bands(&lbandL,&ubandL,rlengthL,glength,extraband_paired,/*widebandp*/true);
+  matrixL = Dynprog_standard(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
+			     rsequenceL,gsequence,gsequence_alt,rlengthL,glength,
+			     goffset,chroffset,chrhigh,watsonp,
+			     mismatchtype,open,extend,lbandL,ubandL,
+			     jump_late_p,/*revp*/false,/*saturation*/NEG_INFINITY_INT);
+  
+  Dynprog_compute_bands(&lbandR,&ubandR,rlengthR,glength,extraband_paired,/*widebandp*/true);
+  matrixR = Dynprog_standard(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
+			     rev_rsequenceR,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+			     rlengthR,glength,rev_goffset,chroffset,chrhigh,watsonp,
+			     mismatchtype,open,extend,lbandL,ubandR,
+			     /*for revp true*/!jump_late_p,/*revp*/true,/*saturation*/NEG_INFINITY_INT);
+
+  nmatches = nmismatches = nopens = nindels = 0;
+
+  bridge_cdna_gap(&(*finalscore),&bestcL,&bestcR,&bestrL,&bestrR,matrixL,matrixR,
+		  glength,rlengthL,rlengthR,extraband_paired,
+		  open,extend,roffsetL,rev_roffsetR,jump_late_p);
+
+  pairs = Dynprog_traceback_std(NULL,&nmatches,&nmismatches,&nopens,&nindels,
+				directionsR_nogap,directionsR_Egap,directionsR_Fgap,bestrR,bestcR,
+				rev_rsequenceR,rev_rsequence_ucR,
+				&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+				rev_roffsetR,rev_goffset,pairpool,/*revp*/true,
+				chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+
+  pairs = List_reverse(pairs);
+
+  queryjump = (rev_roffsetR-bestrR) - (roffsetL+bestrL) + 1;
+  genomejump = (rev_goffset-bestcR) - (goffset+bestcL) + 1;
+  /* No need to revise queryjump or genomejump, because the above
+     coordinates are internal to the gap. */
+
+  if (queryjump == INSERT_PAIRS && genomejump == INSERT_PAIRS) {
+    /* Add cDNA insertion, if any */
+    for (k = rev_roffsetR-bestrR; k >= roffsetL+bestrL; k--) {
+      debug(printf("cDNA insertion, Pushing [%d,%d] (%c,-)\n",k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL]));
+      pairs = Pairpool_push(pairs,pairpool,k,rev_goffset-bestcR+1,rsequenceL[k-roffsetL],SHORTGAP_COMP,
+			    /*genome*/' ',/*genomealt*/' ',*dynprogindex);
+    }
+    debug(printf("\n"));
+
+
+    /* This loop not yet checked for get_genomic_nt giving correct answer */
+    for (k = rev_goffset-bestcR; k >= goffset+bestcL; k--) {
+      c2 = get_genomic_nt(&c2_alt,k,chroffset,chrhigh,watsonp);
+      debug(printf("genome insertion, Pushing [%d,%d] (-,%c)\n",roffsetL+bestrL,k,c2));
+#if 0
+      assert(c2 == gsequence[k-goffset]);
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,
+			    gsequence[k-goffset],/*genomealt*/GENOMEALT_DEFERRED,*dynprogindex);
+#else
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+bestrL,k,' ',SHORTGAP_COMP,c2,c2_alt,*dynprogindex);
+#endif
+    }
+    debug(printf("\n"));
+
+  } else {
+
+    /* Add gapholder to be solved in the future */
+#ifndef NOGAPHOLDER
+    debug(printf("Pushing a gap with queryjump = %d, genomejump = %d\n",queryjump,genomejump));
+    pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+    *incompletep = true;
+  }
+
+  pairs = Dynprog_traceback_std(pairs,&nmatches,&nmismatches,&nopens,&nindels,
+				directionsL_nogap,directionsL_Egap,directionsL_Fgap,bestrL,bestcL,
+				rsequenceL,rsequence_ucL,
+				gsequence,gsequence_alt,roffsetL,goffset,pairpool,/*revp*/false,
+				chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+
+  if (List_length(pairs) == 1) {
+    /* Only a gap added */
+    pairs = (List_T) NULL;
+  }
+
+  if (gsequence_alt != gsequence) {
+    FREE(gsequence_alt);
+    FREE(rev_gsequence_alt);
+  }
+  FREE(gsequence);
+  FREE(rev_gsequence);
+
+  debug(printf("End of dynprog cDNA gap\n"));
+
+  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+  return List_reverse(pairs);
+
+#endif
+
+}
+
diff --git a/src/dynprog_cdna.h b/src/dynprog_cdna.h
new file mode 100644
index 0000000..ffd77ed
--- /dev/null
+++ b/src/dynprog_cdna.h
@@ -0,0 +1,32 @@
+/* $Id: dynprog_cdna.h 132731 2014-04-08 21:19:57Z twu $ */
+#ifndef DYNPROG_CDNA_INCLUDED
+#define DYNPROG_CDNA_INCLUDED
+
+#include "bool.h"
+#include "list.h"
+#include "pairpool.h"
+#include "chrnum.h"
+#include "iit-read.h"
+#include "types.h"
+#include "dynprog.h"
+
+#define T Dynprog_T
+
+/* Sequences rsequenceL and rsequenceR represent the two ends of the cDNA insertion */
+extern List_T
+Dynprog_cdna_gap (int *dynprogindex, int *finalscore, bool *incompletep,
+		  T dynprogL, T dynprogR, char *rsequenceL, char *rsequence_ucL, 
+		  char *rev_rsequenceR, char *rev_rsequence_ucR,
+#if 0
+		  char *gsequence, char *gsequence_uc,
+#endif
+		  int rlengthL, int rlengthR, int glength,
+		  int roffsetL, int rev_roffsetR, int goffset,
+		  Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		  int extraband_paired, double defect_rate);
+
+
+#undef T
+#endif
+
diff --git a/src/dynprog_end.c b/src/dynprog_end.c
new file mode 100644
index 0000000..ed14180
--- /dev/null
+++ b/src/dynprog_end.c
@@ -0,0 +1,3202 @@
+static char rcsid[] = "$Id: dynprog_end.c 138715 2014-06-11 17:05:56Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "dynprog_end.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>		/* For ceil, log, pow */
+#include <ctype.h>		/* For tolower */
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+
+
+#include "bool.h"
+#include "except.h"
+#include "assert.h"
+#include "mem.h"
+#include "comp.h"
+#include "pair.h"
+#include "pairdef.h"
+#include "listdef.h"
+#include "complement.h"
+#include "splicetrie.h"
+#include "dynprog_simd.h"
+
+
+/* Tests whether get_genomic_nt == genomicseg in compute_scores procedures */
+/* #define EXTRACT_GENOMICSEG 1 */
+
+
+/* Prints parameters and results */
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+/* Ends */
+#ifdef DEBUG6
+#define debug6(x) x
+#else
+#define debug6(x)
+#endif
+
+/* Ends, known splicing.  May want to turn on DEBUG3 in splicetrie.c  */
+#ifdef DEBUG7
+#define debug7(x) x
+#else
+#define debug7(x)
+#endif
+
+/* Getting genomic nt */
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+/* Binary search */
+#ifdef DEBUG10
+#define debug10(x) x
+#else
+#define debug10(x)
+#endif
+
+/* traceback_nogaps */
+#ifdef DEBUG11
+#define debug11(x) x
+#else
+#define debug11(x)
+#endif
+
+
+
+#define FULLMATCH 3
+
+/* Previously allowed lower mismatch scores on end to allow more
+   complete alignments to the end, and because ends are typically of
+   lower quality.  Previously made equal to FULLMATCH, because
+   criterion is nmatches >= nmismatches.  However, extensions at ends
+   appear to defeat purpose of trimming, so increase mismatch at end
+   from -3 to -4. */
+#define MISMATCH_ENDQ -5
+
+/* Ends tend to be of lower quality, so we don't want to introduce gaps.
+   Also, we make then indifferent to the quality of the rest of the
+   sequence. */
+/* was -10 open and -3 extend */
+#define END_OPEN_HIGHQ -10
+#define END_OPEN_MEDQ -8
+#define END_OPEN_LOWQ -6
+
+#define END_EXTEND_HIGHQ -2
+#define END_EXTEND_MEDQ -2
+#define END_EXTEND_LOWQ -2
+
+#define LAZY_INDEL 1		/* Don't advance to next coordinate on final indel, since could go over chromosome bounds. */
+
+
+#define T Dynprog_T
+
+
+static Univcoord_T *splicesites;
+static Splicetype_T *splicetypes;
+static Chrpos_T *splicedists;
+static int nsplicesites;
+
+static Trieoffset_T *trieoffsets_obs;
+static Triecontent_T *triecontents_obs;
+static Trieoffset_T *trieoffsets_max;
+static Triecontent_T *triecontents_max;
+
+bool homopolymerp;
+
+void
+Dynprog_end_setup (Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
+		   Chrpos_T *splicedists_in, int nsplicesites_in,
+		   Trieoffset_T *trieoffsets_obs_in, Triecontent_T *triecontents_obs_in,
+		   Trieoffset_T *trieoffsets_max_in, Triecontent_T *triecontents_max_in) {
+
+  splicesites = splicesites_in;
+  splicetypes = splicetypes_in;
+  splicedists = splicedists_in;
+  nsplicesites = nsplicesites_in;
+  trieoffsets_obs = trieoffsets_obs_in;
+  triecontents_obs = triecontents_obs_in;
+  trieoffsets_max = trieoffsets_max_in;
+  triecontents_max = triecontents_max_in;
+
+  return;
+}
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+static void
+find_best_endpoint_8 (int *finalscore, int *bestr, int *bestc, Score8_T **matrix_upper,
+		      Score8_T **matrix_lower, int rlength, int glength,
+		      int lband, int uband, bool jump_late_p) {
+  Score8_T bestscore = 0;
+  int r, c;
+  int clo, chigh;
+  /* No need for loffset or cmid because they apply only for cdnaend
+     == FIVE, which doesn't require searching */
+
+  *bestr = *bestc = 0;
+
+#if 0
+  /* Just go along main diagonal */
+  uband = extraband_end_or_paired;
+  lband = extraband_end_or_paired;
+#endif
+
+  if (jump_late_p == false) {
+    /* use > bestscore */
+    for (r = 1; r <= rlength; r++) {
+      if ((clo = r - lband) < 1) {
+	clo = 1;
+      }
+      if ((chigh = r + uband) > glength) {
+	chigh = glength;
+      }
+      for (c = clo; c < /*to main diagonal*/r; c++) {
+	if (matrix_lower[r][c] > bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_lower[r][c];
+	}
+      }
+      for (/*at main diagonal*/; c <= chigh; c++) {
+	if (matrix_upper[c][r] > bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_upper[c][r];
+	}
+      }
+
+    }
+  } else {
+    /* use >= bestscore */
+    for (r = 1; r <= rlength; r++) {
+      if ((clo = r - lband) < 1) {
+	clo = 1;
+      }
+      if ((chigh = r + uband) > glength) {
+	chigh = glength;
+      }
+      for (c = clo; c < /*to main diagonal*/r; c++) {
+	if (matrix_lower[r][c] >= bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_lower[r][c];
+	}
+      }
+      for (/*at main diagonal*/; c <= chigh; c++) {
+	if (matrix_upper[c][r] >= bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_upper[c][r];
+	}
+      }
+    }
+  }
+
+
+  *finalscore = (int) bestscore;
+  return;
+}
+#endif
+
+static void
+find_best_endpoint_16 (int *finalscore, int *bestr, int *bestc,
+		       Score16_T **matrix_upper, Score16_T **matrix_lower,
+		       int rlength, int glength, int lband, int uband,
+		       bool jump_late_p) {
+  Score16_T bestscore = 0;
+  int r, c;
+  int clo, chigh;
+  /* No need for loffset or cmid because they apply only for cdnaend
+     == FIVE, which doesn't require searching */
+
+  *bestr = *bestc = 0;
+
+#if 0
+  /* Just go along main diagonal */
+  uband = extraband_end_or_paired;
+  lband = extraband_end_or_paired;
+#endif
+
+  if (jump_late_p == false) {
+    /* use > bestscore */
+    for (r = 1; r <= rlength; r++) {
+      if ((clo = r - lband) < 1) {
+	clo = 1;
+      }
+      if ((chigh = r + uband) > glength) {
+	chigh = glength;
+      }
+      for (c = clo; c < /*to main diagonal*/r; c++) {
+	if (matrix_lower[r][c] > bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_lower[r][c];
+	}
+      }
+      for (/*at main diagonal*/; c <= chigh; c++) {
+	if (matrix_upper[c][r] > bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_upper[c][r];
+	}
+      }
+    }
+  } else {
+    /* use >= bestscore */
+    for (r = 1; r <= rlength; r++) {
+      if ((clo = r - lband) < 1) {
+	clo = 1;
+      }
+      if ((chigh = r + uband) > glength) {
+	chigh = glength;
+      }
+      for (c = clo; c < /*to main diagonal*/r; c++) {
+	if (matrix_lower[r][c] >= bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_lower[r][c];
+	}
+      }
+      for (/*at main diagonal*/; c <= chigh; c++) {
+	if (matrix_upper[c][r] >= bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix_upper[c][r];
+	}
+      }
+    }
+  }
+
+
+  *finalscore = (int) bestscore;
+  return;
+}
+
+static void
+find_best_endpoint_std (int *finalscore, int *bestr, int *bestc, Score32_T **matrix,
+			int rlength, int glength, int lband, int uband,
+			bool jump_late_p) {
+  Score32_T bestscore = 0;
+  int r, c;
+  int clo, chigh;
+  /* No need for loffset or cmid because they apply only for cdnaend
+     == FIVE, which doesn't require searching */
+
+  *bestr = *bestc = 0;
+
+#if 0
+  /* Just go along main diagonal */
+  uband = extraband_end_or_paired;
+  lband = extraband_end_or_paired;
+#endif
+
+  if (jump_late_p == false) {
+    /* use > bestscore */
+    for (r = 1; r <= rlength; r++) {
+      if ((clo = r - lband) < 1) {
+	clo = 1;
+      }
+      if ((chigh = r + uband) > glength) {
+	chigh = glength;
+      }
+      for (c = clo; c <= chigh; c++) {
+	if (matrix[c][r] > bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix[c][r];
+	}
+      }
+    }
+  } else {
+    /* use >= bestscore */
+    for (r = 1; r <= rlength; r++) {
+      if ((clo = r - lband) < 1) {
+	clo = 1;
+      }
+      if ((chigh = r + uband) > glength) {
+	chigh = glength;
+      }
+      for (c = clo; c <= chigh; c++) {
+	if (matrix[c][r] >= bestscore) {
+	  *bestr = r;
+	  *bestc = c;
+	  bestscore = matrix[c][r];
+	}
+      }
+    }
+  }
+
+
+  *finalscore = (int) bestscore;
+  return;
+}
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+static void
+find_best_endpoint_to_queryend_indels_8 (int *finalscore, int *bestr, int *bestc,
+					 Score8_T **matrix_upper, Score8_T **matrix_lower,
+					 int rlength, int glength, int lband, int uband,
+					 bool jump_late_p) {
+  Score8_T bestscore = NEG_INFINITY_8;
+  int r, c;
+  int clo, chigh;
+  /* No need for loffset or cmid because they apply only for cdnaend
+     == FIVE, which doesn't require searching */
+
+#if 0
+  if (glength >= rlength) {
+    /* Widen band to right to reach destination */
+    uband = glength - rlength + extraband_end_or_paired;
+    lband = extraband_end_or_paired;
+  } else {
+    /* Widen band to left to reach destination */
+    lband = rlength - glength + extraband_end_or_paired;
+    uband = extraband_end_or_paired;
+  }
+#endif
+
+  *bestr = r = rlength;
+  *bestc = 0;
+
+  if (jump_late_p == false) {
+    if ((clo = r - lband) < 1) {
+      clo = 1;
+    }
+    if ((chigh = r + uband) > glength) {
+      chigh = glength;
+    }
+    for (c = clo; c < /*to main diagonal*/r; c++) {
+      if (matrix_lower[r][c] > bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_lower[r][c];
+      }
+    }
+    for (/*at main diagonal*/; c <= chigh; c++) {
+      if (matrix_upper[c][r] > bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_upper[c][r];
+      }
+    }
+
+  } else {
+    if ((clo = r - lband) < 1) {
+      clo = 1;
+    }
+    if ((chigh = r + uband) > glength) {
+      chigh = glength;
+    }
+    for (c = clo; c < /*to main diagonal*/r; c++) {
+      if (matrix_lower[r][c] >= bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_lower[r][c];
+      }
+    }
+    for (/*at main diagonal*/; c <= chigh; c++) {
+      if (matrix_upper[c][r] >= bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_upper[c][r];
+      }
+    }
+  }
+
+  *finalscore = (int) bestscore;
+  return;
+}
+#endif
+
+
+static void
+find_best_endpoint_to_queryend_indels_16 (int *finalscore, int *bestr, int *bestc,
+					  Score16_T **matrix_upper, Score16_T **matrix_lower,
+					  int rlength, int glength, int lband, int uband,
+					  bool jump_late_p) {
+  Score16_T bestscore = NEG_INFINITY_16;
+  int r, c;
+  int clo, chigh;
+  /* No need for loffset or cmid because they apply only for cdnaend
+     == FIVE, which doesn't require searching */
+
+#if 0
+  if (glength >= rlength) {
+    /* Widen band to right to reach destination */
+    uband = glength - rlength + extraband_end_or_paired;
+    lband = extraband_end_or_paired;
+  } else {
+    /* Widen band to left to reach destination */
+    lband = rlength - glength + extraband_end_or_paired;
+    uband = extraband_end_or_paired;
+  }
+#endif
+
+  *bestr = r = rlength;
+  *bestc = 0;
+
+  if (jump_late_p == false) {
+    if ((clo = r - lband) < 1) {
+      clo = 1;
+    }
+    if ((chigh = r + uband) > glength) {
+      chigh = glength;
+    }
+    for (c = clo; c < /*to main diagonal*/r; c++) {
+      if (matrix_lower[r][c] > bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_lower[r][c];
+      }
+    }
+    for (/*at main diagonal*/; c <= chigh; c++) {
+      if (matrix_upper[c][r] > bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_upper[c][r];
+      }
+    }
+
+  } else {
+    if ((clo = r - lband) < 1) {
+      clo = 1;
+    }
+    if ((chigh = r + uband) > glength) {
+      chigh = glength;
+    }
+    for (c = clo; c < /*to main diagonal*/r; c++) {
+      if (matrix_lower[r][c] >= bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_lower[r][c];
+      }
+    }
+    for (/*at main diagonal*/; c <= chigh; c++) {
+      if (matrix_upper[c][r] >= bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix_upper[c][r];
+      }
+    }
+  }
+
+  *finalscore = (int) bestscore;
+  return;
+}
+
+
+static void
+find_best_endpoint_to_queryend_indels_std (int *finalscore, int *bestr, int *bestc, Score32_T **matrix, 
+					   int rlength, int glength, int lband, int uband,
+					   bool jump_late_p) {
+  Score32_T bestscore = NEG_INFINITY_32;
+  int r, c;
+  int clo, chigh;
+  /* No need for loffset or cmid because they apply only for cdnaend
+     == FIVE, which doesn't require searching */
+
+#if 0
+  if (glength >= rlength) {
+    /* Widen band to right to reach destination */
+    uband = glength - rlength + extraband_end_or_paired;
+    lband = extraband_end_or_paired;
+  } else {
+    /* Widen band to left to reach destination */
+    lband = rlength - glength + extraband_end_or_paired;
+    uband = extraband_end_or_paired;
+  }
+#endif
+
+  *bestr = r = rlength;
+  *bestc = 0;
+
+  if (jump_late_p == false) {
+    if ((clo = r - lband) < 1) {
+      clo = 1;
+    }
+    if ((chigh = r + uband) > glength) {
+      chigh = glength;
+    }
+    for (c = clo; c <= chigh; c++) {
+      if (matrix[c][r] > bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix[c][r];
+      }
+    }
+
+  } else {
+    if ((clo = r - lband) < 1) {
+      clo = 1;
+    }
+    if ((chigh = r + uband) > glength) {
+      chigh = glength;
+    }
+    for (c = clo; c <= chigh; c++) {
+      if (matrix[c][r] >= bestscore) {
+	*bestr = r;
+	*bestc = c;
+	bestscore = matrix[c][r];
+      }
+    }
+  }
+
+  *finalscore = (int) bestscore;
+  return;
+}
+
+
+static void
+find_best_endpoint_to_queryend_nogaps (int *bestr, int *bestc, int rlength, int glength) {
+  if (glength < rlength) {
+    *bestr = glength;
+    *bestc = glength;
+  } else {
+    *bestr = rlength;
+    *bestc = rlength;
+  }
+
+  return;
+}
+
+
+/* revp means both rev1p and rev2p, which must have equal values */
+/* Iterative version */
+static List_T
+traceback_nogaps (List_T pairs, int *nmatches, int *nmismatches,
+		  int r, int c, char *rsequence, char *rsequenceuc,
+		  char *gsequence, char *gsequence_alt,
+		  int queryoffset, int genomeoffset, Pairpool_T pairpool, 
+#ifdef DEBUG14
+		  Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		  bool revp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int querycoord, genomecoord;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug11(printf("Starting traceback_nogaps at r=%d,c=%d (roffset=%d, goffset=%d), revp %d\n",
+		 r,c,queryoffset,genomeoffset,revp));
+
+  /* printf("genome sequence is %s\n",genomesequence); */
+  while (r > 0 && c > 0) {
+    querycoord = r-1;
+    genomecoord = c-1;
+    if (revp == true) {
+      querycoord = -querycoord;
+      genomecoord = -genomecoord;
+    }
+
+    c1 = rsequence[querycoord];
+    c1_uc = rsequenceuc[querycoord];
+    c2 = gsequence[genomecoord];
+    c2_alt = gsequence_alt[genomecoord];
+
+#ifdef DEBUG14
+    c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+    if (c2 != c2_single) {
+      abort();
+    }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+    debug8(printf("genome sequence at %d is %c\n",genomecoord,genomesequence[genomecoord]));
+    assert(c2 == genomesequence[genomecoord]);
+#endif
+
+    if (c2 == '*') {
+      /* Don't push pairs past end of chromosome */
+
+    } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+      *nmatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+      
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+      *nmatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+    } else {
+      debug11(printf("D: Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+      *nmismatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+    }
+    r--; c--;
+  }
+
+  return pairs;
+}
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+/* Want to keep pointers to r and c because traceback is interrupted */
+static List_T
+traceback_local_8_upper (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			 Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+			 int *r, int *c, int endc, char *rsequence, char *rsequenceuc,
+			 char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
+			 int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			 Univcoord_T chroffset, Univcoord_T chrhigh,
+			 int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction8_T dir;
+
+  debug(printf("Starting traceback_local_8_upper at r=%d,c=%d (roffset=%d, goffset=%d)\n",
+	       *r,*c,queryoffset,genomeoffset));
+
+  /* We care only only about genomic coordinate c */
+
+#if 0
+  if (*c <= endc) {
+    /* Do nothing */
+
+  } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
+    /* Not an indel.  Do nothing. */
+
+  } else {
+    /* Must be HORIZ */
+    dist = 1;
+    while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
+      dist++;
+      (*c)--;
+    }
+    (*c)--;
+    /* dir = directions_nogap[*c][*r]; */
+
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+
+  }
+#endif
+
+  while (*r > 0 && *c > endc) {
+    if ((dir = directions_nogap[*c][*r]) != DIAG) {
+      /* Must be HORIZ */
+      dist = 1;
+      while (*c > endc && directions_Egap[(*c)--][*r] != DIAG) {
+	dist++;
+      }
+      assert(c != endc);
+      dir = directions_nogap[*c][*r];
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,
+				      genomesequence,genomesequenceuc,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = (*r)-1;
+      genomecoord = (*c)-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = genomesequence[genomecoord];
+      c2_alt = genomesequencealt[genomecoord];
+
+      if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+    (*r)--; (*c)--;
+
+    }
+  }
+
+  /* assert(*r == 0); */
+  if (/* *r == 0 && */ *c == endc) {
+    /* Finished with a diagonal step */
+
+  } else {
+    dist = (*c) - endc;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/**r*/0+LAZY_INDEL,*c,dist,genomesequence,genomesequenceuc,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,
+				    /*use_genomicseg_p*/true);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+#endif
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+static List_T
+traceback_local_8_lower (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			 Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+			 int *r, int *c, int endc, char *rsequence, char *rsequenceuc,
+			 char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
+			 int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			 Univcoord_T chroffset, Univcoord_T chrhigh,
+			 int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  int querycoord, genomecoord;
+  Direction8_T dir;
+
+  debug(printf("Starting traceback_local at r=%d,c=%d (roffset=%d, goffset=%d)\n",*r,*c,queryoffset,genomeoffset));
+
+  /* We care only only about genomic coordinate c */
+
+#if 0
+  if (*c <= endc) {
+    /* Do nothing */
+
+  } else if ((dir = directions_nogap[*r][*c]) == DIAG) {
+    /* Not an indel.  Do nothing. */
+
+  } else {
+    /* Must be VERT */
+    dist = 1;
+    while (*r > 1 && directions_Egap[*r][*c] != DIAG) {
+      dist++;
+      (*r)--;
+    }
+    (*r)--;
+    /* dir = directions_nogap[*r][*c]; */
+
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,(*r)+dist,*c,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+#endif
+
+  while (*r > 0 && *c > endc) {
+    if ((dir = directions_nogap[*r][*c]) != DIAG) {
+      /* Must be VERT */
+      dist = 1;
+      /* Should not need to check for r > 0 if the main diagonal is populated with DIAG */
+      while (/* r > 0 && */ directions_Egap[(*r)--][*c] != DIAG) {
+	dist++;
+      }
+      assert(r != 0);
+      dir = directions_nogap[*r][*c];
+
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,(*r)+dist,*c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = (*r)-1;
+      genomecoord = (*c)-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = genomesequence[genomecoord];
+      c2_alt = genomesequencealt[genomecoord];
+
+      if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+	
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+      (*r)--; (*c)--;
+    }
+  }
+
+  /* assert(*c == endc); */
+  if (*r == 0 /* && *c == endc */) {
+    /* Finished with a diagonal step */
+
+  } else {
+    /* Must be VERT */
+    dist = *r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,*r,/**c*/endc+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+#endif
+
+
+static List_T
+traceback_local_16_upper (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			  Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+			  int *r, int *c, int endc, char *rsequence, char *rsequenceuc,
+			  char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
+			  int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			  Univcoord_T chroffset, Univcoord_T chrhigh,
+			  int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction16_T dir;
+
+  debug(printf("Starting traceback_local_upper at r=%d,c=%d (roffset=%d, goffset=%d)\n",*r,*c,queryoffset,genomeoffset));
+
+  /* We care only only about genomic coordinate c */
+
+#if 0
+  if (*c <= endc) {
+    /* Do nothing */
+
+  } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
+    /* Not an indel.  Do nothing. */
+
+  } else {
+    /* Must be HORIZ */
+    dist = 1;
+    while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
+      dist++;
+      (*c)--;
+    }
+    (*c)--;
+    /* dir = directions_nogap[c][r]; */
+
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+#endif
+
+  while (*r > 0 && *c > endc) {
+    if ((dir = directions_nogap[*c][*r]) != DIAG) {
+      /* Must be HORIZ */
+      dist = 1;
+      while (*c > endc && directions_Egap[(*c)--][*r] != DIAG) {
+	dist++;
+      }
+      dir = directions_nogap[*c][*r];
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,
+				      genomesequence,genomesequenceuc,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = (*r)-1;
+      genomecoord = (*c)-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = genomesequence[genomecoord];
+      c2_alt = genomesequencealt[genomecoord];
+
+      if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+    (*r)--; (*c)--;
+
+    }
+  }
+
+  /* assert(*r == 0); */
+  if (/* *r == 0 && */ *c == endc) {
+    /* Finished with a diagonal step */
+
+  } else {
+    /* Must be HORIZ */
+    dist = (*c) - endc;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/**r*/0+LAZY_INDEL,*c,dist,genomesequence,genomesequenceuc,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,
+				      /*use_genomicseg_p*/true);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+
+
+static List_T
+traceback_local_16_lower (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			  Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+			  int *r, int *c, int endc, char *rsequence, char *rsequenceuc,
+			  char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
+			  int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			  Univcoord_T chroffset, Univcoord_T chrhigh,
+			  int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  int querycoord, genomecoord;
+  Direction16_T dir;
+
+  debug(printf("Starting traceback_local at r=%d,c=%d (roffset=%d, goffset=%d)\n",*r,*c,queryoffset,genomeoffset));
+
+  /* We care only only about genomic coordinate c */
+
+#if 0
+  if (*c <= endc) {
+    /* Do nothing */
+
+  } else if ((dir = directions_nogap[*r][*c]) == DIAG) {
+    /* Not an indel.  Do nothing. */
+
+  } else {
+    /* Must be VERT */
+    dist = 1;
+    while (*r > 1 && directions_Egap[*r][*c] != DIAG) {
+      dist++;
+      (*r)--;
+    }
+    (*r)--;
+    /* dir = directions_nogap[*r][*c]; */
+
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,(*r)+dist,*c,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+#endif
+
+  while (*r > 0 && *c > endc) {
+    if ((dir = directions_nogap[*r][*c]) != DIAG) {
+      /* Must be VERT */
+      dist = 1;
+      /* Should not need to check for r > 0 if the main diagonal is populated with DIAG */
+      while (/* r > 0 && */ directions_Egap[(*r)--][*c] != DIAG) {
+	dist++;
+      }
+      assert(*r != 0);
+      dir = directions_nogap[*r][*c];
+
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,(*r)+dist,*c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = (*r)-1;
+      genomecoord = (*c)-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = genomesequence[genomecoord];
+      c2_alt = genomesequencealt[genomecoord];
+
+      if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     *r,*c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+      (*r)--; (*c)--;
+      
+    }
+  }
+
+  /* assert(*c == endc); */
+  if (*r == 0 /* && *c == endc */) {
+    /* Finished with a diagonal step */
+
+  } else {
+    /* Must be VERT */
+    dist = *r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,*r,/**c*/endc+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+
+
+static List_T
+traceback_local_std (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		     Direction32_T **directions_nogap, Direction32_T **directions_Egap, Direction32_T **directions_Fgap,
+		     int *r, int *c, int endc, char *rsequence, char *rsequenceuc,
+		     char *genomesequence, char *genomesequenceuc, char *genomesequencealt,
+		     int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		     Univcoord_T chroffset, Univcoord_T chrhigh,
+		     int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction32_T dir;
+
+  debug(printf("Starting traceback_local at r=%d,c=%d (roffset=%d, goffset=%d)\n",*r,*c,queryoffset,genomeoffset));
+
+  /* We care only only about genomic coordinate c */
+
+  if (*c <= endc) {
+    /* Do nothing */
+
+  } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
+    /* Not an indel.  Do nothing. */
+
+  } else if (dir == HORIZ) {
+    dist = 1;
+    while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
+      dist++;
+      (*c)--;
+    }
+    (*c)--;
+    /* dir = directions_nogap[*c][*r]; */
+
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/true);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+
+  } else {
+    /* Must be VERT */
+    dist = 1;
+    while (*r > 1 && directions_Fgap[*c][*r] != DIAG) {
+      dist++;
+      (*r)--;
+    }
+    (*r)--;
+    /* dir = directions_nogap[*c][*r]; */
+
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,(*r)+dist,*c,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+
+  while (*r > 0 && *c > endc) {
+    querycoord = (*r)-1;
+    genomecoord = (*c)-1;
+    if (revp == true) {
+      querycoord = -querycoord;
+      genomecoord = -genomecoord;
+    }
+
+    c1 = rsequence[querycoord];
+    c1_uc = rsequenceuc[querycoord];
+    c2 = genomesequence[genomecoord];
+    c2_alt = genomesequencealt[genomecoord];
+
+    if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+      *nmatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+      *nmatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+    } else {
+      debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		   r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+      *nmismatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+    }
+
+    (*r)--; (*c)--;
+    if (*r == 0 && *c == 0) {
+      /* STOP condition.  Do nothing. */
+
+    } else if ((dir = directions_nogap[*c][*r]) == DIAG) {
+      /* Do nothing */
+
+    } else if (dir == HORIZ) {
+      dist = 1;
+      while (*c > 1 && directions_Egap[*c][*r] != DIAG) {
+	dist++;
+	(*c)--;
+      }
+      (*c)--;
+      /* dir = directions_nogap[*c][*r]; */
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,*r,(*c)+dist,dist,genomesequence,genomesequenceuc,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,
+				      /*use_genomicseg_p*/true);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+
+    } else {
+      /* Must be VERT */
+      dist = 1;
+      while (*r > 1 && directions_Fgap[*c][*r] != DIAG) {
+	dist++;
+	(*r)--;
+      }
+      (*r)--;
+      /* dir = directions_nogap[*c][*r]; */
+
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,(*r)+dist,*c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+
+    }
+  }
+
+  return pairs;
+}
+
+
+
+List_T
+Dynprog_end5_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches, 
+		  int *nopens, int *nindels, T dynprog, 
+		  char *rev_rsequence, char *rev_rsequenceuc,
+		  int rlength, int glength, int rev_roffset, int rev_goffset, 
+		  Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		  int extraband_end, double defect_rate, Endalign_T endalign) {
+  List_T pairs = NULL;
+  char *rev_gsequence, *rev_gsequence_alt;
+  Pair_T pair;
+  Mismatchtype_T mismatchtype; 
+  int bestr, bestc, lband, uband;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  bool use8p = false;
+  Score8_T **matrix8_upper, **matrix8_lower;
+  Direction8_T **directions8_upper_nogap, **directions8_upper_Egap,
+    **directions8_lower_nogap, **directions8_lower_Egap;
+
+  Score16_T **matrix16_upper, **matrix16_lower;
+  Direction16_T **directions16_upper_nogap, **directions16_upper_Egap,
+    **directions16_lower_nogap, **directions16_lower_Egap;
+#else
+  Score32_T **matrix;
+  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
+#endif
+#ifdef PMAP
+  int initpos, initmod;
+#endif
+
+  debug6(
+	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
+	printf("Aligning 5' end gap with endalign %d\n",endalign);
+	);
+
+  mismatchtype = ENDQ;
+  if (defect_rate < DEFECT_HIGHQ) {
+    open = END_OPEN_HIGHQ;
+    extend = END_EXTEND_HIGHQ;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    open = END_OPEN_MEDQ;
+    extend = END_EXTEND_MEDQ;
+  } else {
+    open = END_OPEN_LOWQ;
+    extend = END_EXTEND_LOWQ;
+  }
+
+  /* We can just chop lengths to work, since we're not constrained on 5' end */
+  if (rlength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    debug6(printf("rlength %d <= 0, so returning NULL\n",rlength));
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    return (List_T) NULL;
+  } else if (endalign == QUERYEND_NOGAPS) {
+    /* Don't shorten rlength */
+  } else if (rlength > dynprog->max_rlength) {
+    debug6(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
+    rlength = dynprog->max_rlength;
+  }
+  if (glength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    debug6(printf("glength %d <= 0, so returning NULL\n",glength));
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    return (List_T) NULL;
+  } else if (endalign == QUERYEND_NOGAPS) {
+    /* Don't shorten glength */
+  } else if (glength > dynprog->max_glength) {
+    debug6(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
+    glength = dynprog->max_glength;
+  }
+
+  debug6(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(rev_rsequence[-rlength+1])));
+
+#ifdef EXTRACT_GENOMICSEG
+  debug6(printf("At genomic offset %d-%d, %.*s\n",
+		rev_goffset-glength+1,rev_goffset,glength,&(rev_gsequence[-glength+1])));
+#endif
+
+
+  if (watsonp) {
+    rev_gsequence = Genome_get_segment_blocks_left(&rev_gsequence_alt,/*left*/chroffset+rev_goffset+1,glength,chroffset,/*revcomp*/false);
+  } else {
+    rev_gsequence = Genome_get_segment_blocks_right(&rev_gsequence_alt,/*left*/chrhigh-rev_goffset,glength,chrhigh,/*revcomp*/true);
+  }
+  if (rev_gsequence == NULL) {
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    return (List_T) NULL;
+  }
+
+  if (endalign == QUERYEND_GAP || endalign == BEST_LOCAL) {
+    Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+    /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+      use8p = true;
+      matrix8_upper = Dynprog_simd_8_upper(&directions8_upper_nogap,&directions8_upper_Egap,dynprog,
+					   rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					   rlength,glength,
+#ifdef DEBUG14
+					   rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   uband,/*for revp true*/!jump_late_p,/*revp*/true);
+      matrix8_lower = Dynprog_simd_8_lower(&directions8_lower_nogap,&directions8_lower_Egap,dynprog,
+					   rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					   rlength,glength,
+#ifdef DEBUG14
+					   rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   lband,/*for revp true*/!jump_late_p,/*revp*/true);
+
+      find_best_endpoint_8(&(*finalscore),&bestr,&bestc,matrix8_upper,matrix8_lower,
+			   rlength,glength,lband,uband,!jump_late_p);
+
+    } else {
+      matrix16_upper = Dynprog_simd_16_upper(&directions16_upper_nogap,&directions16_upper_Egap,dynprog,
+					     rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					     rlength,glength,
+#ifdef DEBUG14
+					     rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     uband,/*for revp true*/!jump_late_p,/*revp*/true);
+      matrix16_lower = Dynprog_simd_16_lower(&directions16_lower_nogap,&directions16_lower_Egap,dynprog,
+					     rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					     rlength,glength,
+#ifdef DEBUG14
+					     rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     lband,/*for revp true*/!jump_late_p,/*revp*/true);
+
+      find_best_endpoint_16(&(*finalscore),&bestr,&bestc,matrix16_upper,matrix16_lower,
+			    rlength,glength,lband,uband,!jump_late_p);
+    }
+
+#else
+    /* Non-SIMD methods */
+    matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			      rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+			      rlength,glength,rev_goffset,chroffset,chrhigh,watsonp,
+			      mismatchtype,open,extend,lband,uband,
+			      /*for revp true*/!jump_late_p,/*revp*/true,/*saturation*/NEG_INFINITY_INT);
+    find_best_endpoint_std(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,lband,uband,
+			   !jump_late_p);
+#endif
+
+  } else if (endalign == QUERYEND_INDELS) {
+    Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+    /* Use || because we want the minimum length (which determines the diagonal length) to achive a score less than 128 */
+    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+
+
+      use8p = true;
+      matrix8_upper = Dynprog_simd_8_upper(&directions8_upper_nogap,&directions8_upper_Egap,dynprog,
+					   rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					   rlength,glength,
+#ifdef DEBUG14
+					   rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   uband,/*for revp true*/!jump_late_p,/*revp*/true);
+      matrix8_lower = Dynprog_simd_8_lower(&directions8_lower_nogap,&directions8_lower_Egap,dynprog,
+					   rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					   rlength,glength,
+#ifdef DEBUG14
+					   rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   lband,/*for revp true*/!jump_late_p,/*revp*/true);
+      find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8_upper,matrix8_lower,
+					      rlength,glength,lband,uband,!jump_late_p);
+      /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
+
+    } else {
+      matrix16_upper = Dynprog_simd_16_upper(&directions16_upper_nogap,&directions16_upper_Egap,dynprog,
+					     rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					     rlength,glength,
+#ifdef DEBUG14
+					     rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     uband,/*for revp true*/!jump_late_p,/*revp*/true);
+      matrix16_lower = Dynprog_simd_16_lower(&directions16_lower_nogap,&directions16_lower_Egap,dynprog,
+					     rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					     rlength,glength,
+#ifdef DEBUG14
+					     rev_goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     lband,/*for revp true*/!jump_late_p,/*revp*/true);
+      find_best_endpoint_to_queryend_indels_16(&(*finalscore),&bestr,&bestc,matrix16_upper,matrix16_lower,
+					       rlength,glength,lband,uband,!jump_late_p);
+      /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
+    }
+
+#else
+    /* Non-SIMD methods */
+    matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			      rev_rsequence,&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+			      rlength,glength,rev_goffset,chroffset,chrhigh,watsonp,
+			      mismatchtype,open,extend,lband,uband,
+			      /*for revp true*/!jump_late_p,/*revp*/true,/*saturation*/NEG_INFINITY_INT);
+    find_best_endpoint_to_queryend_indels_std(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,lband,uband,
+					      !jump_late_p);
+    /* *finalscore = 0 -- Splicetrie procedures need to know finalscore */
+
+#endif
+
+
+  } else if (endalign == QUERYEND_NOGAPS) {
+    find_best_endpoint_to_queryend_nogaps(&bestr,&bestc,rlength,glength);
+    /* *finalscore = 0;	-- Splicetrie procedures need to know finalscore */
+
+  } else {
+    fprintf(stderr,"Unexpected endalign value %d\n",endalign);
+    abort();
+  }
+
+
+#ifdef PMAP
+  initpos = rev_roffset-(bestc-1);
+  debug6(printf("Initial query pos is %d\n",initpos));
+  if ((initmod = initpos % 3) > 0) {
+    if (bestr + initmod < rlength && bestc + initmod < glength) {
+      debug6(printf("Rounding down by %d\n",initmod));
+      bestr += initmod;
+      bestc += initmod;
+    }
+  }
+#endif
+
+  *nmatches = *nmismatches = *nopens = *nindels = 0;
+  if (endalign == QUERYEND_NOGAPS) {
+    pairs = traceback_nogaps(NULL,&(*nmatches),&(*nmismatches),bestr,bestc,
+			     rev_rsequence,rev_rsequenceuc,
+			     &(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+			     rev_roffset,rev_goffset,pairpool,
+#ifdef DEBUG14
+			     chroffset,chrhigh,watsonp,
+#endif
+			     /*revp*/true,*dynprogindex);
+    *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ;
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  } else if (use8p == true) {
+    if (bestc >= bestr) {
+      pairs = Dynprog_traceback_8_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					directions8_upper_nogap,directions8_upper_Egap,
+					bestr,bestc,rev_rsequence,rev_rsequenceuc,
+					&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					rev_roffset,rev_goffset,pairpool,/*revp*/true,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_8_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					directions8_lower_nogap,directions8_lower_Egap,
+					bestr,bestc,rev_rsequence,rev_rsequenceuc,
+					&(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					rev_roffset,rev_goffset,pairpool,/*revp*/true,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+  } else {
+    if (bestc >= bestr) {
+      pairs = Dynprog_traceback_16_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					 directions16_upper_nogap,directions16_upper_Egap,
+					 bestr,bestc,rev_rsequence,rev_rsequenceuc,
+					 &(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					 rev_roffset,rev_goffset,pairpool,/*revp*/true,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_16_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					 directions16_lower_nogap,directions16_lower_Egap,
+					 bestr,bestc,rev_rsequence,rev_rsequenceuc,
+					 &(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+					 rev_roffset,rev_goffset,pairpool,/*revp*/true,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+#else
+  } else {
+    pairs = Dynprog_traceback_std(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				  directions_nogap,directions_Egap,directions_Fgap,bestr,bestc,
+				  rev_rsequence,rev_rsequenceuc,
+				  &(rev_gsequence[glength-1]),&(rev_gsequence_alt[glength-1]),
+				  rev_roffset,rev_goffset,pairpool,/*revp*/true,
+				  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+#endif
+  }
+
+
+  if ((endalign == QUERYEND_GAP || endalign == BEST_LOCAL) && (*nmatches + 1) < *nmismatches) {
+    *finalscore = 0;
+    /* No need to free pairs */
+    pairs = NULL;
+  } else {
+    /* Add 1 to count the match already in the alignment */
+    pairs = List_reverse(pairs); /* Look at 5' end to remove excess gaps */
+    while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
+      pairs = List_next(pairs);
+    }
+  }
+
+  /*
+    Directions_free(directions);
+    Matrix_free(matrix);
+  */
+  
+  if (rev_gsequence_alt != rev_gsequence) {
+    FREE(rev_gsequence_alt);
+  }
+  FREE(rev_gsequence);
+
+  debug6(printf("End of dynprog end5 gap\n\n"));
+
+  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+  return List_reverse(pairs);
+}
+
+
+
+/* rev_gsequence is the splicejunction */
+List_T
+Dynprog_end5_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
+			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+			     char *rev_rsequence, char *rev_rsequenceuc,
+			     char *rev_gsequence, char *rev_gsequence_uc, char *rev_gsequence_alt,
+			     int rlength, int glength, int rev_roffset, int rev_goffset_anchor, int rev_goffset_far,
+			     Univcoord_T chroffset, Univcoord_T chrhigh,
+			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+			     int extraband_end, double defect_rate, int contlength) {
+  List_T pairs = NULL;
+  Pair_T pair;
+  Mismatchtype_T mismatchtype;
+  int bestr, bestc, lband, uband;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  bool use8p = false;
+  Score8_T **matrix8_upper, **matrix8_lower;
+  Direction8_T **directions8_upper_nogap, **directions8_upper_Egap,
+    **directions8_lower_nogap, **directions8_lower_Egap;
+
+  Score16_T **matrix16_upper, **matrix16_lower;
+  Direction16_T **directions16_upper_nogap, **directions16_upper_Egap,
+    **directions16_lower_nogap, **directions16_lower_Egap;
+#else
+  Score32_T **matrix;
+  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
+#endif
+#ifdef PMAP
+  int initpos, initmod;
+#endif
+
+  debug6(
+	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
+	printf("Aligning 5' end gap with endalign QUERYEND_NOGAPS\n");
+	);
+
+  mismatchtype = ENDQ;
+  if (defect_rate < DEFECT_HIGHQ) {
+    open = END_OPEN_HIGHQ;
+    extend = END_EXTEND_HIGHQ;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    open = END_OPEN_MEDQ;
+    extend = END_EXTEND_MEDQ;
+  } else {
+    open = END_OPEN_LOWQ;
+    extend = END_EXTEND_LOWQ;
+  }
+
+  /* We can just chop lengths to work, since we're not constrained on 5' end */
+  if (rlength <= 0 || rlength > dynprog->max_rlength) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    debug6(printf("rlength %d <= 0, so returning NULL\n",rlength));
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    *missscore = -100;
+    return (List_T) NULL;
+  }
+  if (glength <= 0 || glength > dynprog->max_glength) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    debug6(printf("glength %d <= 0, so returning NULL\n",glength));
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    *missscore = -100;
+    return (List_T) NULL;
+  }
+
+  debug6(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(rev_rsequence[-rlength+1])));
+  debug6(printf("At genomic offset %d-%d, %.*s\n",
+		rev_goffset_anchor-glength+1,rev_goffset_anchor,glength,&(rev_gsequence[-glength+1])));
+  
+#ifdef PMAP
+  initpos = rev_roffset-(bestc-1);
+  debug6(printf("Initial query pos is %d\n",initpos));
+  if ((initmod = initpos % 3) > 0) {
+    if (bestr + initmod < rlength && bestc + initmod < glength) {
+      debug6(printf("Rounding down by %d\n",initmod));
+      bestr += initmod;
+      bestc += initmod;
+    }
+  }
+#endif
+
+  Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+  if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+    use8p = true;
+    matrix8_upper = Dynprog_simd_8_upper(&directions8_upper_nogap,&directions8_upper_Egap,dynprog,
+					 rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
+					 rlength,glength,
+#ifdef DEBUG14
+					 /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					 mismatchtype,open,extend,
+					 uband,/*for revp true*/!jump_late_p,/*revp*/true);
+    matrix8_lower = Dynprog_simd_8_lower(&directions8_lower_nogap,&directions8_lower_Egap,dynprog,
+					 rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
+					 rlength,glength,
+#ifdef DEBUG14
+					 /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					 mismatchtype,open,extend,
+					 lband,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8_upper,matrix8_lower,
+					    rlength,glength,lband,uband,!jump_late_p);
+
+  } else {
+    matrix16_upper = Dynprog_simd_16_upper(&directions16_upper_nogap,&directions16_upper_Egap,dynprog,
+					   rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
+					   rlength,glength,
+#ifdef DEBUG14
+					   /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   uband,/*for revp true*/!jump_late_p,/*revp*/true);
+    matrix16_lower = Dynprog_simd_16_upper(&directions16_lower_nogap,&directions16_lower_Egap,dynprog,
+					   rev_rsequence,rev_gsequence_uc,rev_gsequence_alt,
+					   rlength,glength,
+#ifdef DEBUG14
+					   /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   lband,/*for revp true*/!jump_late_p,/*revp*/true);
+    find_best_endpoint_to_queryend_indels_16(&(*finalscore),&bestr,&bestc,matrix16_upper,matrix16_lower,
+					     rlength,glength,lband,uband,!jump_late_p);
+  }
+
+#else
+  /* Non-SIMD methods */
+  matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			    rev_rsequence,rev_gsequence,rev_gsequence_alt,
+			    rlength,glength,/*goffset*/0,chroffset,chrhigh,watsonp,
+			    mismatchtype,open,extend,lband,uband,
+			    /*for revp true*/!jump_late_p,/*revp*/true,/*saturation*/NEG_INFINITY_INT);
+  find_best_endpoint_to_queryend_indels_std(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,lband,uband,
+					    !jump_late_p);
+#endif
+
+  *nmatches = *nmismatches = *nopens = *nindels = 0;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  if (use8p == true) {
+    if (bestc >= bestr) {
+      pairs = traceback_local_8_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_upper_nogap,directions8_upper_Egap,&bestr,&bestc,/*endc*/contlength,
+				      rev_rsequence,rev_rsequenceuc,
+				      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				      rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_8_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_lower_nogap,directions8_lower_Egap,&bestr,&bestc,/*endc*/contlength,
+				      rev_rsequence,rev_rsequenceuc,
+				      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				      rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/rev_goffset_anchor - rev_goffset_far,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/true);
+
+    if (bestc >= bestr) {
+      pairs = traceback_local_8_upper(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_upper_nogap,directions8_upper_Egap,&bestr,&bestc,/*endc*/0,
+				      rev_rsequence,rev_rsequenceuc,
+				      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				      rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_8_lower(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_lower_nogap,directions8_lower_Egap,&bestr,&bestc,/*endc*/0,
+				      rev_rsequence,rev_rsequenceuc,
+				      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				      rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+  } else {
+    if (bestc >= bestr) {
+      pairs = traceback_local_16_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				       directions16_upper_nogap,directions16_upper_Egap,&bestr,&bestc,/*endc*/contlength,
+				       rev_rsequence,rev_rsequenceuc,
+				       rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				       rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
+				       chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_16_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				       directions16_lower_nogap,directions16_lower_Egap,&bestr,&bestc,/*endc*/contlength,
+				       rev_rsequence,rev_rsequenceuc,
+				       rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				       rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
+				       chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/rev_goffset_anchor - rev_goffset_far,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/true);
+
+    if (bestc >= bestr) {
+      pairs = traceback_local_16_upper(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				       directions16_upper_nogap,directions16_upper_Egap,&bestr,&bestc,/*endc*/0,
+				       rev_rsequence,rev_rsequenceuc,
+				       rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				       rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
+				       chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_16_lower(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				       directions16_lower_nogap,directions16_lower_Egap,&bestr,&bestc,/*endc*/0,
+				       rev_rsequence,rev_rsequenceuc,
+				       rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+				       rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
+				       chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+  }
+
+#else
+  pairs = traceback_local_std(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+			      directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/contlength,
+			      rev_rsequence,rev_rsequenceuc,
+			      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+			      rev_roffset,rev_goffset_far,pairpool,/*revp*/true,
+			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+
+  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/rev_goffset_anchor - rev_goffset_far,
+				  /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/true);
+
+  pairs = traceback_local_std(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+			      directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/0,
+			      rev_rsequence,rev_rsequenceuc,
+			      rev_gsequence,rev_gsequence_uc,rev_gsequence_alt,
+			      rev_roffset,rev_goffset_anchor,pairpool,/*revp*/true,
+			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+#endif
+
+
+  /* Score compared with perfect score, so heavy weight on mismatches may not be necessary */
+  *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ + (*nopens)*open + (*nindels)*extend;
+  *missscore = (*finalscore) - rlength*FULLMATCH;
+  debug6(printf("finalscore %d = %d*%d matches + %d*%d mismatches + %d*%d opens + %d*%d extends\n",
+		*finalscore,FULLMATCH,*nmatches,MISMATCH_ENDQ,*nmismatches,open,*nopens,extend,*nindels));
+  debug6(printf("missscore = %d\n",*missscore));
+
+  /* Add 1 to count the match already in the alignment */
+  pairs = List_reverse(pairs); /* Look at 5' end to remove excess gaps */
+  while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
+    pairs = List_next(pairs);
+  }
+
+  debug6(Pair_dump_list(pairs,true));
+  debug6(printf("End of dynprog end5 gap splicejunction\n\n"));
+
+  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+  return List_reverse(pairs);
+}
+
+
+
+List_T
+Dynprog_end3_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches, 
+		  int *nopens, int *nindels, T dynprog, 
+		  char *rsequence, char *rsequenceuc,
+		  int rlength, int glength, int roffset, int goffset, 
+		  Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		  int extraband_end, double defect_rate, Endalign_T endalign) {
+  List_T pairs = NULL;
+  char *gsequence, *gsequence_alt;
+  Pair_T pair;
+  Mismatchtype_T mismatchtype;
+  int bestr, bestc, lband, uband;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  bool use8p = false;
+  Score8_T **matrix8_upper, **matrix8_lower;
+  Direction8_T **directions8_upper_nogap, **directions8_upper_Egap,
+    **directions8_lower_nogap, **directions8_lower_Egap;
+
+  Score16_T **matrix16_upper, **matrix16_lower;
+  Direction16_T **directions16_upper_nogap, **directions16_upper_Egap,
+    **directions16_lower_nogap, **directions16_lower_Egap;
+#else
+  Score32_T **matrix;
+  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
+#endif
+#ifdef PMAP
+  int termpos, termmod;
+#endif
+
+  debug6(
+	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
+	printf("Aligning 3' end gap with endalign = %d\n",endalign);
+	);
+
+  mismatchtype = ENDQ;
+  if (defect_rate < DEFECT_HIGHQ) {
+    open = END_OPEN_HIGHQ;
+    extend = END_EXTEND_HIGHQ;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    open = END_OPEN_MEDQ;
+    extend = END_EXTEND_MEDQ;
+  } else {
+    open = END_OPEN_LOWQ;
+    extend = END_EXTEND_LOWQ;
+  }
+
+  /* We can just chop lengths to work, since we're not constrained on 3' end */
+  if (rlength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    return (List_T) NULL;
+  } else if (endalign == QUERYEND_NOGAPS) {
+    /* Don't shorten rlength */
+  } else if (rlength > dynprog->max_rlength) {
+    debug6(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
+    rlength = dynprog->max_rlength;
+  }
+  if (glength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    return (List_T) NULL;
+  } else if (endalign == QUERYEND_NOGAPS) {
+    /* Don't shorten glength */
+  } else if (glength > dynprog->max_glength) {
+    debug6(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
+    glength = dynprog->max_glength;
+  }
+
+  debug6(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
+#ifdef EXTRACT_GENOMICSEG
+  debug6(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
+#endif
+
+
+  if (watsonp) {
+    gsequence = Genome_get_segment_blocks_right(&gsequence_alt,/*left*/chroffset+goffset,glength,chrhigh,/*revcomp*/false);
+  } else {
+    gsequence = Genome_get_segment_blocks_left(&gsequence_alt,/*left*/chrhigh-goffset+1,glength,chroffset,/*revcomp*/true);
+  }
+  if (gsequence == NULL) {
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    return (List_T) NULL;
+  }
+
+  if (endalign == QUERYEND_GAP || endalign == BEST_LOCAL) {
+    Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+    /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+      use8p = true;
+      matrix8_upper = Dynprog_simd_8_upper(&directions8_upper_nogap,&directions8_upper_Egap,dynprog,
+					   rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					   goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   uband,jump_late_p,/*revp*/false);
+      matrix8_lower = Dynprog_simd_8_lower(&directions8_lower_nogap,&directions8_lower_Egap,dynprog,
+					   rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					   goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   lband,jump_late_p,/*revp*/false);
+      find_best_endpoint_8(&(*finalscore),&bestr,&bestc,matrix8_upper,matrix8_lower,
+			   rlength,glength,lband,uband,jump_late_p);
+
+    } else {
+      matrix16_upper = Dynprog_simd_16_upper(&directions16_upper_nogap,&directions16_upper_Egap,dynprog,
+					     rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					     goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     uband,jump_late_p,/*revp*/false);
+      matrix16_lower = Dynprog_simd_16_upper(&directions16_lower_nogap,&directions16_lower_Egap,dynprog,
+					     rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					     goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     lband,jump_late_p,/*revp*/false);
+      find_best_endpoint_16(&(*finalscore),&bestr,&bestc,matrix16_upper,matrix16_lower,
+			    rlength,glength,lband,uband,jump_late_p);
+    }
+
+#else
+    /* Non-SIMD methods */
+    matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			      rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+			      goffset,chroffset,chrhigh,watsonp,mismatchtype,open,extend,
+			      lband,uband,jump_late_p,/*revp*/false,/*saturation*/NEG_INFINITY_INT);
+    find_best_endpoint_std(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,lband,uband,
+			   jump_late_p);
+#endif
+
+  } else if (endalign == QUERYEND_INDELS) {
+    Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+    /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+    if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+      use8p = true;
+      matrix8_upper = Dynprog_simd_8_upper(&directions8_upper_nogap,&directions8_upper_Egap,dynprog,
+					   rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					   goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   uband,jump_late_p,/*revp*/false);
+      matrix8_lower = Dynprog_simd_8_lower(&directions8_lower_nogap,&directions8_lower_Egap,dynprog,
+					   rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					   goffset,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   lband,jump_late_p,/*revp*/false);
+      find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8_upper,matrix8_lower,
+					      rlength,glength,lband,uband,jump_late_p);
+      /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
+
+    } else {
+      matrix16_upper = Dynprog_simd_16_upper(&directions16_upper_nogap,&directions16_upper_Egap,dynprog,
+					     rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					     goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     uband,jump_late_p,/*revp*/false);
+      matrix16_lower = Dynprog_simd_16_lower(&directions16_lower_nogap,&directions16_lower_Egap,dynprog,
+					     rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					     goffset,chroffset,chrhigh,watsonp,
+#endif
+					     mismatchtype,open,extend,
+					     lband,jump_late_p,/*revp*/false);
+      find_best_endpoint_to_queryend_indels_16(&(*finalscore),&bestr,&bestc,matrix16_upper,matrix16_lower,
+					       rlength,glength,lband,uband,jump_late_p);
+      /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
+    }
+
+#else
+    /* Non-SIMD methods */
+    matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			      rsequenceuc,gsequence,gsequence_alt,rlength,glength,
+			      goffset,chroffset,chrhigh,watsonp,mismatchtype,open,extend,
+			      lband,uband,jump_late_p,/*revp*/false,/*saturation*/NEG_INFINITY_INT);
+    find_best_endpoint_to_queryend_indels_std(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,lband,uband,
+					      jump_late_p);
+    /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
+#endif
+
+  } else if (endalign == QUERYEND_NOGAPS) {
+    find_best_endpoint_to_queryend_nogaps(&bestr,&bestc,rlength,glength);
+    /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
+
+  } else {
+    fprintf(stderr,"Unexpected endalign value %d\n",endalign);
+    abort();
+  }
+
+#ifdef PMAP
+  termpos = roffset+(bestc-1);
+  debug6(printf("Final query pos is %d\n",termpos));
+  if ((termmod = termpos % 3) < 2) {
+    if (bestr + (2 - termmod) < rlength && bestc + (2 - termmod) < glength) {
+      debug6(printf("Rounding up by %d\n",2 - termmod));
+      bestr += 2 - termmod;
+      bestc += 2 - termmod;
+    }
+  }
+#endif
+
+  *nmatches = *nmismatches = *nopens = *nindels = 0;
+  if (endalign == QUERYEND_NOGAPS) {
+    pairs = traceback_nogaps(NULL,&(*nmatches),&(*nmismatches),bestr,bestc,
+			     rsequence,rsequenceuc,
+			     gsequence,gsequence_alt,roffset,goffset,pairpool,
+#ifdef DEBUG14
+			     chroffset,chrhigh,watsonp,
+#endif
+			     /*revp*/false,*dynprogindex);
+    *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ;
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  } else if (use8p == true) {
+    if (bestc >= bestr) {
+      pairs = Dynprog_traceback_8_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					directions8_upper_nogap,directions8_upper_Egap,bestr,bestc,
+					rsequence,rsequenceuc,
+					gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_8_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					directions8_lower_nogap,directions8_lower_Egap,bestr,bestc,
+					rsequence,rsequenceuc,
+					gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+					chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+  } else {
+    if (bestc >= bestr) {
+      pairs = Dynprog_traceback_16_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					 directions16_upper_nogap,directions16_upper_Egap,bestr,bestc,
+					 rsequence,rsequenceuc,
+					 gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = Dynprog_traceback_16_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					 directions16_lower_nogap,directions16_lower_Egap,bestr,bestc,
+					 rsequence,rsequenceuc,
+					 gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+					 chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+#else
+  } else {
+    pairs = Dynprog_traceback_std(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				  directions_nogap,directions_Egap,directions_Fgap,bestr,bestc,
+				  rsequence,rsequenceuc,
+				  gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+				  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+#endif
+  }
+
+  if ((endalign == QUERYEND_GAP || endalign == BEST_LOCAL) && (*nmatches + 1) < *nmismatches) {
+    *finalscore = 0;
+    /* No need to free pairs */
+    pairs = NULL;
+
+  } else {
+    /* Add 1 to count the match already in the alignment */
+    pairs = List_reverse(pairs); /* Look at 3' end to remove excess gaps */
+    while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
+      pairs = List_next(pairs);
+    }
+  }
+
+  /*
+    Directions_free(directions);
+    Matrix_free(matrix);
+  */
+
+  if (gsequence_alt != gsequence) {
+    FREE(gsequence_alt);
+  }
+  FREE(gsequence);
+
+  debug6(printf("End of dynprog end3 gap\n\n"));
+
+  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+  return pairs;			/* not List_reverse(pairs) */
+}
+
+
+/* gsequence is the splicejunction */
+List_T
+Dynprog_end3_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
+			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+			     char *rsequence, char *rsequenceuc,
+			     char *gsequence, char *gsequence_uc, char *gsequence_alt,
+			     int rlength, int glength, int roffset, int goffset_anchor, int goffset_far,
+			     Univcoord_T chroffset, Univcoord_T chrhigh,
+			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+			     int extraband_end, double defect_rate, int contlength) {
+  List_T pairs = NULL;
+  Pair_T pair;
+  Mismatchtype_T mismatchtype;
+  int bestr, bestc, lband, uband;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  bool use8p = false;
+  Score8_T **matrix8_upper, **matrix8_lower;
+  Direction8_T **directions8_upper_nogap, **directions8_upper_Egap,
+    **directions8_lower_nogap, **directions8_lower_Egap;
+
+  Score16_T **matrix16_upper, **matrix16_lower;
+  Direction16_T **directions16_upper_nogap, **directions16_upper_Egap,
+    **directions16_lower_nogap, **directions16_lower_Egap;
+#else
+  Score32_T **matrix;
+  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
+#endif
+#ifdef PMAP
+  int termpos, termmod;
+#endif
+
+  debug6(
+	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
+	printf("Aligning 3' end gap splicejunction\n");
+	);
+
+  mismatchtype = ENDQ;
+  if (defect_rate < DEFECT_HIGHQ) {
+    open = END_OPEN_HIGHQ;
+    extend = END_EXTEND_HIGHQ;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    open = END_OPEN_MEDQ;
+    extend = END_EXTEND_MEDQ;
+  } else {
+    open = END_OPEN_LOWQ;
+    extend = END_EXTEND_LOWQ;
+  }
+
+
+  /* We can just chop lengths to work, since we're not constrained on 3' end */
+  if (rlength <= 0 || rlength > dynprog->max_rlength) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    *missscore = -100;
+    return (List_T) NULL;
+  }
+  if (glength <= 0 || glength > dynprog->max_glength) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    *finalscore = 0;
+    *missscore = -100;
+    return (List_T) NULL;
+  }
+
+  debug6(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
+  debug6(printf("At genomic offset %d-%d, %.*s\n",
+		goffset_anchor,goffset_anchor+glength-1,glength,gsequence));
+
+
+  /* find_best_endpoint_to_queryend_nogaps(bestr,bestc,rlength,glength); */
+  /* bestr = bestc = rlength; */
+  /* *finalscore = 0; -- Splicetrie procedures need to know finalscore */
+
+#ifdef PMAP
+  termpos = roffset+(bestc-1);
+  debug6(printf("Final query pos is %d\n",termpos));
+  if ((termmod = termpos % 3) < 2) {
+    if (bestr + (2 - termmod) < rlength && bestc + (2 - termmod) < glength) {
+      debug6(printf("Rounding up by %d\n",2 - termmod));
+      bestr += 2 - termmod;
+      bestc += 2 - termmod;
+    }
+  }
+#endif
+
+  Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_end,/*widebandp*/true);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+  if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+    use8p = true;
+    matrix8_upper = Dynprog_simd_8_upper(&directions8_upper_nogap,&directions8_upper_Egap,dynprog,
+					 rsequenceuc,gsequence_uc,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					 /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					 mismatchtype,open,extend,
+					 uband,jump_late_p,/*revp*/false);
+    matrix8_lower = Dynprog_simd_8_lower(&directions8_lower_nogap,&directions8_lower_Egap,dynprog,
+					 rsequenceuc,gsequence_uc,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					 /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					 mismatchtype,open,extend,
+					 lband,jump_late_p,/*revp*/false);
+
+
+    find_best_endpoint_to_queryend_indels_8(&(*finalscore),&bestr,&bestc,matrix8_upper,matrix8_lower,
+					    rlength,glength,lband,uband,jump_late_p);
+
+  } else {
+    matrix16_upper = Dynprog_simd_16_upper(&directions16_upper_nogap,&directions16_upper_Egap,dynprog,
+					   rsequenceuc,gsequence_uc,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					   /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   uband,jump_late_p,/*revp*/false);
+    matrix16_lower = Dynprog_simd_16_lower(&directions16_lower_nogap,&directions16_lower_Egap,dynprog,
+					   rsequenceuc,gsequence_uc,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+					   /*goffset*/0,chroffset,chrhigh,watsonp,
+#endif
+					   mismatchtype,open,extend,
+					   lband,jump_late_p,/*revp*/false);
+
+    find_best_endpoint_to_queryend_indels_16(&(*finalscore),&bestr,&bestc,matrix16_upper,matrix16_lower,
+					     rlength,glength,lband,uband,jump_late_p);
+  }
+
+#else
+  /* Non-SIMD methods */
+  matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			    rsequenceuc,gsequence_uc,gsequence_alt,rlength,glength,
+			    /*goffset*/0,chroffset,chrhigh,watsonp,mismatchtype,open,extend,
+			    lband,uband,jump_late_p,/*revp*/false,/*saturation*/NEG_INFINITY_INT);
+  find_best_endpoint_to_queryend_indels_std(&(*finalscore),&bestr,&bestc,matrix,rlength,glength,lband,uband,
+					    jump_late_p);
+#endif
+
+  *nmatches = *nmismatches = *nopens = *nindels = 0;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  if (use8p == true) {
+    if (bestc >= bestr) {
+      pairs = traceback_local_8_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_upper_nogap,directions8_upper_Egap,&bestr,&bestc,/*endc*/contlength,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_far,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_8_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_lower_nogap,directions8_lower_Egap,&bestr,&bestc,/*endc*/contlength,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_far,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffset_far - goffset_anchor,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/true);
+    if (bestc >= bestr) {
+      pairs = traceback_local_8_upper(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_upper_nogap,directions8_upper_Egap,&bestr,&bestc,/*endc*/0,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_anchor,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_8_lower(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions8_lower_nogap,directions8_lower_Egap,&bestr,&bestc,/*endc*/0,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_anchor,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+
+  } else {
+    if (bestc >= bestr) {
+      pairs = traceback_local_16_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions16_upper_nogap,directions16_upper_Egap,&bestr,&bestc,/*endc*/contlength,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_far,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_16_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions16_lower_nogap,directions16_lower_Egap,&bestr,&bestc,/*endc*/contlength,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_far,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffset_far - goffset_anchor,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/true);
+    if (bestc >= bestr) {
+      pairs = traceback_local_16_upper(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions16_upper_nogap,directions16_upper_Egap,&bestr,&bestc,/*endc*/0,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_anchor,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    } else {
+      pairs = traceback_local_16_lower(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				      directions16_lower_nogap,directions16_lower_Egap,&bestr,&bestc,/*endc*/0,
+				      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+				      roffset,goffset_anchor,pairpool,/*revp*/false,
+				      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    }
+  }
+
+#else
+  /* Non-SIMD methods */
+  pairs = traceback_local_std(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+			      directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/contlength,
+			      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+			      roffset,goffset_far,pairpool,/*revp*/false,
+			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+  
+  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffset_far - goffset_anchor,
+				  /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/true);
+
+  pairs = traceback_local_std(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+			      directions_nogap,directions_Egap,directions_Fgap,&bestr,&bestc,/*endc*/0,
+			      rsequence,rsequenceuc,gsequence,gsequence_uc,gsequence_alt,
+			      roffset,goffset_anchor,pairpool,/*revp*/false,
+			      chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+#endif
+
+  /* Score compared with perfect score, so heavy weight on mismatches may not be necessary */
+  *finalscore = (*nmatches)*FULLMATCH + (*nmismatches)*MISMATCH_ENDQ + (*nopens)*open + (*nindels)*extend;
+  *missscore = (*finalscore) - rlength*FULLMATCH;
+  debug6(printf("finalscore %d = %d*%d matches + %d*%d mismatches + %d*%d opens + %d*%d extends\n",
+		*finalscore,FULLMATCH,*nmatches,MISMATCH_ENDQ,*nmismatches,open,*nopens,extend,*nindels));
+  debug6(printf("missscore = %d\n",*missscore));
+
+  /* Add 1 to count the match already in the alignment */
+  pairs = List_reverse(pairs); /* Look at 3' end to remove excess gaps */
+  while (pairs != NULL && (pair = List_head(pairs)) && pair->comp == INDEL_COMP) {
+    pairs = List_next(pairs);
+  }
+
+  debug6(Pair_dump_list(pairs,true));
+  debug6(printf("End of dynprog end3 gap splicejunction\n\n"));
+
+  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+  return pairs;			/* not List_reverse(pairs) */
+}
+
+
+static char complCode[128] = COMPLEMENT_LC;
+
+static void
+make_complement_inplace (char *sequence, unsigned int length) {
+  char temp;
+  unsigned int i, j;
+
+  for (i = 0, j = length-1; i < length/2; i++, j--) {
+    temp = complCode[(int) sequence[i]];
+    sequence[i] = complCode[(int) sequence[j]];
+    sequence[j] = temp;
+  }
+  if (i == j) {
+    sequence[i] = complCode[(int) sequence[i]];
+  }
+
+  return;
+}
+
+
+static void
+make_contjunction_5 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
+		     int splicelength, int contlength, Splicetype_T anchor_splicetype,
+		     bool watsonp) {
+  char *proximal, *proximal_alt;
+
+  debug7(printf("make_contjunction_5 at %u, splice (%s), contlength %d, splicelength %d:",
+		splicecoord,Splicetype_string(anchor_splicetype),contlength, splicelength));
+
+  proximal = &(splicejunction[splicelength]);
+  proximal_alt = &(splicejunction_alt[splicelength]);
+
+  if (anchor_splicetype == ACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
+
+  } else if (anchor_splicetype == ANTIDONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
+
+  } else if (anchor_splicetype == ANTIACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
+
+  } else if (anchor_splicetype == DONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
+    
+  } else {
+    fprintf(stderr,"Unexpected anchor_splicetype value %d\n",anchor_splicetype);
+    abort();
+  }
+
+  if (watsonp == false) {
+    make_complement_inplace(proximal,contlength);
+    make_complement_inplace(proximal_alt,contlength);
+  }
+
+#ifdef DEBUG7
+  if (watsonp == true) {
+    printf(" (fwd)  contjunction    : %.*s\n",contlength,proximal);
+    printf(" (fwd)  contjunction_alt: %.*s\n",contlength,proximal_alt);
+  } else {
+    printf(" (rev)  contjunction    : %.*s\n",contlength,proximal);
+    printf(" (rev)  contjunction_alt: %.*s\n",contlength,proximal_alt);
+  }
+#endif
+
+  return;
+}
+
+
+
+/* Fills in just the distal part, keeping the proximal part same for contlength */
+bool
+Dynprog_make_splicejunction_5 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
+			       int splicelength, int contlength, Splicetype_T far_splicetype,
+			       bool watsonp) {
+  char *distal, *distal_alt;
+
+  debug7(printf("make_splicejunction_5 at %u, splice (%s), contlength %d, splicelength %d:\n",
+		splicecoord,Splicetype_string(far_splicetype),contlength, splicelength));
+
+  distal = &(splicejunction[0]);
+  distal_alt = &(splicejunction_alt[0]);
+
+  if (far_splicetype == ACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
+
+  } else if (far_splicetype == ANTIDONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
+
+  } else if (splicecoord <= splicelength) {
+    return false;
+
+  } else if (far_splicetype == ANTIACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
+
+  } else if (far_splicetype == DONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
+    
+  } else {
+    fprintf(stderr,"Unexpected far_splicetype value %d\n",far_splicetype);
+    abort();
+  }
+
+  if (watsonp == false) {
+    make_complement_inplace(distal,splicelength);
+    make_complement_inplace(distal_alt,splicelength);
+  }
+
+#ifdef DEBUG7
+  if (watsonp == true) {
+    printf(" (fwd)  splicejunction    : %s\n",splicejunction);
+    printf(" (fwd)  splicejunction_alt: %s\n",splicejunction_alt);
+  } else {
+    printf(" (rev)  splicejunction    : %s\n",splicejunction);
+    printf(" (rev)  splicejunction_alt: %s\n",splicejunction_alt);
+  }
+#endif
+
+  return true;
+}
+
+
+static void
+make_contjunction_3 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
+		     int splicelength, int contlength, Splicetype_T anchor_splicetype,
+		     bool watsonp) {
+  char *proximal, *proximal_alt;
+
+  debug7(printf("make_contjunction_3 at %u, splice (%s), contlength %d, splicelength %d:\n",
+		splicecoord,Splicetype_string(anchor_splicetype),contlength,splicelength));
+
+  proximal = &(splicejunction[0]);
+  proximal_alt = &(splicejunction_alt[0]);
+
+  if (anchor_splicetype == DONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
+
+  } else if (anchor_splicetype == ANTIACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-contlength,contlength,proximal,proximal_alt);
+
+  } else if (anchor_splicetype == ANTIDONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
+
+  } else if (anchor_splicetype == ACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,contlength,proximal,proximal_alt);
+    
+  } else {
+    fprintf(stderr,"Unexpected anchor_splicetype value %d\n",anchor_splicetype);
+    abort();
+  }
+
+  if (watsonp == false) {
+    make_complement_inplace(proximal,contlength);
+    make_complement_inplace(proximal_alt,contlength);
+  }
+
+#ifdef DEBUG7
+  if (watsonp == true) {
+    printf(" (fwd)  contjunction    : %.*s\n",contlength,proximal);
+    printf(" (fwd)  contjunction_alt: %.*s\n",contlength,proximal_alt);
+  } else {
+    printf(" (rev)  contjunction    : %.*s\n",contlength,proximal);
+    printf(" (rev)  contjunction_alt: %.*s\n",contlength,proximal_alt);
+  }
+#endif
+
+  return;
+}
+
+
+
+/* Fills in just the distal part, keeping the proximal part same for contlength */
+bool
+Dynprog_make_splicejunction_3 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
+			       int splicelength, int contlength, Splicetype_T far_splicetype,
+			       bool watsonp) {
+  char *distal, *distal_alt;
+
+  debug7(printf("make_splicejunction_3 at %u, splice (%s), contlength %d, splicelength %d:\n",
+		splicecoord,Splicetype_string(far_splicetype),contlength,splicelength));
+
+  distal = &(splicejunction[contlength]);
+  distal_alt = &(splicejunction_alt[contlength]);
+
+  if (far_splicetype == ANTIDONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
+
+  } else if (far_splicetype == ACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord,splicelength,distal,distal_alt);
+    
+  } else if (splicecoord <= splicelength) {
+    return false;
+
+  } else if (far_splicetype == DONOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
+
+  } else if (far_splicetype == ANTIACCEPTOR) {
+    Genome_fill_buffer_blocks_noterm(splicecoord-splicelength,splicelength,distal,distal_alt);
+
+
+  } else {
+    fprintf(stderr,"Unexpected far_splicetype value %d\n",far_splicetype);
+    abort();
+  }
+
+  if (watsonp == false) {
+    make_complement_inplace(distal,splicelength);
+    make_complement_inplace(distal_alt,splicelength);
+  }
+
+#ifdef DEBUG7
+  if (watsonp == true) {
+    printf(" (fwd)  splicejunction    : %s\n",splicejunction);
+    printf(" (fwd)  splicejunction_alt: %s\n",splicejunction_alt);
+  } else {
+    printf(" (rev)  splicejunction    : %s\n",splicejunction);
+    printf(" (rev)  splicejunction_alt: %s\n",splicejunction_alt);
+  }
+#endif
+
+  return true;
+}
+
+
+static int
+binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
+  int middlei;
+
+  debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
+
+  while (lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
+    debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		  lowi,positions[lowi],middlei,positions[middlei],
+		  highi,positions[highi],goal));
+    if (goal < positions[middlei]) {
+      highi = middlei;
+    } else if (goal > positions[middlei]) {
+      lowi = middlei + 1;
+    } else {
+      debug10(printf("binary search returns %d\n",middlei));
+      return middlei;
+    }
+  }
+
+  debug10(printf("binary search returns %d\n",highi));
+  return highi;
+}
+
+
+List_T
+Dynprog_end5_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
+		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+		    char *rev_rsequence, char *rev_rsequenceuc,
+		    int rlength, int glength, int rev_roffset, int rev_goffset, 
+		    Univcoord_T chroffset, Univcoord_T chrhigh,
+		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		    int extraband_end, double defect_rate) {
+  List_T best_pairs = NULL, orig_pairs;
+  Pair_T pair;
+  Univcoord_T low, high, far_limit_low, far_limit_high;
+  Splicetype_T anchor_splicetype, far_splicetype;
+  int contlength, splicelength, endlength;
+  char *splicejunction, *splicejunction_alt;
+#ifdef EXTRACT_GENOMICSEG
+  char *splicejunction_test;
+#endif
+  int jstart, j;
+
+  int orig_score, threshold_miss_score, perfect_score;
+  int obsmax_penalty;
+
+
+  assert(glength >= rlength);
+
+  debug7(
+	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
+	printf("Aligning 5' end gap, known\n")
+	);
+
+  *ambig_end_length = 0;
+
+  /* We can just chop lengths to work, since we're not constrained on 5' end */
+  if (rlength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *finalscore = 0;
+    *knownsplicep = false;
+    return (List_T) NULL;
+  }
+  if (glength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *finalscore = 0;
+    *knownsplicep = false;
+    return (List_T) NULL;
+  }
+
+  debug7(printf("At query offset %d-%d, %.*s\n",rev_roffset-rlength+1,rev_roffset,rlength,&(rev_rsequence[-rlength+1])));
+#ifdef EXTRACT_GENOMICSEG
+  debug7(printf("At genomic offset %d-%d, %.*s\n",rev_goffset-glength+1,rev_goffset,glength,&(rev_gsequence[-glength+1])));
+#endif
+
+  perfect_score = rlength*FULLMATCH;
+
+  /* Try without splicing, all the way to query end */
+  best_pairs = Dynprog_end5_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
+				&(*nopens),&(*nindels),dynprog,rev_rsequence,rev_rsequenceuc,
+				rlength,glength,rev_roffset,rev_goffset,chroffset,chrhigh,
+				cdna_direction,watsonp,jump_late_p,pairpool,
+				extraband_end,defect_rate,/*endalign*/QUERYEND_NOGAPS);
+  if (*finalscore < 0) {
+    orig_score = 0;
+    orig_pairs = best_pairs = (List_T) NULL;
+  } else {
+    orig_score = *finalscore;
+    orig_pairs = best_pairs;
+  }
+  threshold_miss_score = orig_score - perfect_score;
+  debug7(printf("score %d - perfect score %d = threshold %d",
+		orig_score,perfect_score,threshold_miss_score));
+  if (threshold_miss_score < -2*FULLMATCH) {
+    /* Don't allow more than 2 mismatches in a distant splice */
+    threshold_miss_score = -2*FULLMATCH;
+    debug7(printf(", but revising to %d\n",threshold_miss_score));
+  }
+  debug7(printf("\n"));
+  *knownsplicep = false;
+
+
+  if (threshold_miss_score < 0 && glength > 0) {
+    /* Try known splicing */
+    splicejunction = (char *) CALLOC(glength+1,sizeof(char));
+    splicejunction_alt = (char *) CALLOC(glength+1,sizeof(char));
+#ifdef EXTRACT_GENOMICSEG
+    splicejunction_test = (char *) CALLOC(glength+1,sizeof(char));
+#endif
+
+    endlength = rlength;
+    if (watsonp == true) {
+      low = chroffset + rev_goffset-endlength + 2;
+      high = chroffset + rev_goffset + 1;
+      debug7(printf("5' watson\n"));
+      debug7(printf("Calculating low %u (%u) = %u + %d-%d + 2\n",
+		    low,low-chroffset,chroffset,rev_goffset,endlength));
+      debug7(printf("Calculating high %u (%u) = %u + %d + 1\n",
+		    high,high-chroffset,chroffset,rev_goffset));
+      if (cdna_direction > 0) {
+	anchor_splicetype = ACCEPTOR;
+	far_splicetype = DONOR;
+      } else {
+	anchor_splicetype = ANTIDONOR;
+	far_splicetype = ANTIACCEPTOR;
+      }
+    } else {
+      low = chrhigh - rev_goffset;
+      high = chrhigh - (rev_goffset-endlength) - 1;
+      debug7(printf("5' crick\n"));
+      debug7(printf("Calculating low %u (%u) = %u - %d\n",
+		    low,low-chroffset,chrhigh,rev_goffset));
+      debug7(printf("Calculating high %u (%u) = %u - (%d-%d) - 1\n",
+		    high,high-chroffset,chrhigh,rev_goffset,endlength));
+      if (cdna_direction > 0) {
+	anchor_splicetype = ANTIACCEPTOR;
+	far_splicetype = ANTIDONOR;
+      } else {
+	anchor_splicetype = DONOR;
+	far_splicetype = ACCEPTOR;
+      }
+    }
+
+    far_limit_low = knownsplice_limit_low;
+    far_limit_high = knownsplice_limit_high;
+    debug7(printf("Genomic positions: %u..%u (%u..%u), looking for anchor splicetype %s\n",
+		  low,high,low-chroffset,high-chroffset,Splicetype_string(anchor_splicetype)));
+    j = jstart = binary_search(0,nsplicesites,splicesites,low);
+    while (j < nsplicesites && splicesites[j] <= high) {
+      if (splicetypes[j] == anchor_splicetype) {
+	debug7(printf("Found one at %u (%u)\n",splicesites[j],splicesites[j]-chroffset));
+	if (watsonp == true) {
+	  contlength = high - splicesites[j];
+	} else {
+	  contlength = splicesites[j] - low;
+	}
+	debug7(printf("contlength %d, splicelength %d, rlength %d, glength %d\n",
+		      contlength,glength-contlength,rlength,glength));
+	assert(contlength >= 0 && contlength < rlength);
+
+#ifdef EXTRACT_GENOMICSEG
+	debug7(printf("cont: %.*s\n",contlength,&(rev_gsequence[-contlength+1])));
+#endif
+	splicelength = glength - contlength;
+	assert(splicelength > 0);
+	debug7(printf("  Saw %u (%u) of type %s (cont length %d, splice length %d)\n",
+		      splicesites[j],splicesites[j]-chroffset,Splicetype_string(splicetypes[j]),contlength,splicelength));
+
+	make_contjunction_5(splicejunction,splicejunction_alt,splicesites[j],splicelength,contlength,anchor_splicetype,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+	strncpy(&(splicejunction_test[splicelength]),&(rev_gsequence[-contlength+1]),contlength);
+	debug7(printf("contjunction_gen:  %s\n",&(splicejunction[splicelength])));
+	debug7(printf("contjunction_test: %s\n",&(splicejunction_test[splicelength])));
+	assert(!strncmp(&(splicejunction[splicelength]),&(splicejunction_test[splicelength]),contlength));
+#endif
+
+	if (watsonp) {
+	  far_limit_high = splicesites[j];
+	} else {
+	  far_limit_low = splicesites[j];
+	}
+
+	obsmax_penalty = 0;
+	if (trieoffsets_obs != NULL) {
+	  debug7(printf("  Running Splicetrie_solve_end5 on observed splice sites with rev_goffset %d\n",rev_goffset));
+	  best_pairs = Splicetrie_solve_end5(best_pairs,triecontents_obs,trieoffsets_obs,j,
+					     far_limit_low,far_limit_high,
+					     &(*finalscore),&(*nmatches),&(*nmismatches),
+					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
+					     &threshold_miss_score,/*obsmax_penalty*/0,perfect_score,
+					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
+					     splicelength,contlength,far_splicetype,
+					     chroffset,chrhigh,&(*dynprogindex),dynprog,
+					     rev_rsequence,rev_rsequenceuc,rlength,glength,rev_roffset,rev_goffset,
+					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
+	  debug7(printf("  Result on obs with ambig_end_length_5 %d\n",*ambig_end_length));
+	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
+	  obsmax_penalty += FULLMATCH;
+	}
+
+	if (threshold_miss_score + obsmax_penalty < 0 && trieoffsets_max != NULL) {
+	  debug7(printf("  Running Splicetrie_solve_end5 on maxdistance splice sites with rev_goffset %d\n",rev_goffset));
+	  best_pairs = Splicetrie_solve_end5(best_pairs,triecontents_max,trieoffsets_max,j,
+					     far_limit_low,far_limit_high,
+					     &(*finalscore),&(*nmatches),&(*nmismatches),
+					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
+					     &threshold_miss_score,obsmax_penalty,perfect_score,
+					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
+					     splicelength,contlength,far_splicetype,
+					     chroffset,chrhigh,&(*dynprogindex),dynprog,
+					     rev_rsequence,rev_rsequenceuc,rlength,glength,rev_roffset,rev_goffset,
+					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
+	  debug7(printf("  Result on max with ambig_end_length_5 %d\n",*ambig_end_length));
+	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
+	}
+      }
+      j++;
+    }
+
+#ifdef EXTRACT_GENOMICSEG
+    FREE(splicejunction_test);
+#endif
+    FREE(splicejunction_alt);
+    FREE(splicejunction);
+  }
+
+
+  if (best_pairs == NULL) {
+    if (*ambig_end_length == 0) {
+      /* Don't go to query end this time */
+      if (rlength > dynprog->max_rlength) {
+	debug7(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
+	rlength = dynprog->max_rlength;
+      }
+      if (glength > dynprog->max_glength) {
+	debug7(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
+	glength = dynprog->max_glength;
+      }
+      orig_pairs = Dynprog_end5_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
+				    &(*nopens),&(*nindels),dynprog,rev_rsequence,rev_rsequenceuc,
+				    rlength,glength,rev_roffset,rev_goffset,chroffset,chrhigh,
+				    cdna_direction,watsonp,jump_late_p,pairpool,
+				    extraband_end,defect_rate,/*endalign*/BEST_LOCAL);
+      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
+      debug7(printf("End of dynprog end5 known\n"));
+      *knownsplicep = false;
+      return orig_pairs;
+
+    } else {
+      *ambig_splicetype = anchor_splicetype;
+      debug7(printf("Final result: best_pairs is NULL.  ambig_end_length is %d.  ambig_splicetype is %s.  Result after truncate:\n",
+		    *ambig_end_length,Splicetype_string(*ambig_splicetype)));
+      /* Truncate ambiguous part.  querypos is decreasing. */
+      orig_pairs = List_reverse(orig_pairs);
+      while (orig_pairs != NULL && ((Pair_T) orig_pairs->first)->querypos < *ambig_end_length) {
+	orig_pairs = Pairpool_pop(orig_pairs,&pair);
+      }
+      orig_pairs = List_reverse(orig_pairs);
+      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
+      *knownsplicep = false;
+      *finalscore = orig_score;
+      debug7(printf("End of dynprog end5 known\n"));
+      return orig_pairs;
+    }
+
+  } else {
+    debug7(printf("Found a best splice\n"));
+    *ambig_end_length = 0;
+    debug7(printf("End of dynprog end5 known\n"));
+    if (*knownsplicep == true) {
+      return Pair_protect_end5(best_pairs,pairpool);
+    } else {
+      return best_pairs;
+    }
+  }
+}
+
+
+List_T
+Dynprog_end3_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
+		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+		    char *rsequence, char *rsequenceuc,
+		    int rlength, int glength, int roffset, int goffset, int querylength,
+		    Univcoord_T chroffset, Univcoord_T chrhigh,
+		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		    int extraband_end, double defect_rate) {
+  List_T best_pairs = NULL, orig_pairs;
+  Pair_T pair;
+  Univcoord_T low, high, far_limit_low, far_limit_high;
+  Splicetype_T anchor_splicetype, far_splicetype;
+  int contlength, splicelength, endlength;
+  char *splicejunction, *splicejunction_alt;
+#ifdef EXTRACT_GENOMICSEG
+  char *splicejunction_test;
+#endif
+  int jstart, j;
+
+  int orig_score, threshold_miss_score, perfect_score;
+  int obsmax_penalty;
+
+
+  assert(glength >= rlength);
+
+  debug7(
+	printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A');
+	printf("Aligning 3' end gap, known\n")
+	);
+
+  *ambig_end_length = 0;
+
+  /* We can just chop lengths to work, since we're not constrained on 3' end */
+  if (rlength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *finalscore = 0;
+    *knownsplicep = false;
+    return (List_T) NULL;
+  }
+  if (glength <= 0) {
+    /* Needed to avoid abort by Matrix16_alloc */
+    *finalscore = 0;
+    *knownsplicep = false;
+    return (List_T) NULL;
+  }
+
+
+  debug7(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
+#ifdef EXTRACT_GENOMICSEG
+  debug7(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
+#endif
+
+  perfect_score = rlength*FULLMATCH;
+
+  /* Try without splicing, all the way to query end */
+  best_pairs = Dynprog_end3_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
+				&(*nopens),&(*nindels),dynprog,rsequence,rsequenceuc,
+				rlength,glength,roffset,goffset,chroffset,chrhigh,
+				cdna_direction,watsonp,jump_late_p,pairpool,
+				extraband_end,defect_rate,/*endalign*/QUERYEND_NOGAPS);
+  if (*finalscore < 0) {
+    orig_score = 0;
+    orig_pairs = best_pairs = (List_T) NULL;
+  } else {
+    orig_score = *finalscore;
+    orig_pairs = best_pairs;
+  }
+  threshold_miss_score = orig_score - perfect_score;
+  debug7(printf("score %d - perfect score %d = threshold %d",
+		orig_score,perfect_score,threshold_miss_score));
+  if (threshold_miss_score < -2*FULLMATCH) {
+    /* Don't allow more than 2 mismatches in a distant splice */
+    threshold_miss_score = -2*FULLMATCH;
+    debug7(printf(", but revising to %d\n",threshold_miss_score));
+  }
+  debug7(printf("\n"));
+  *knownsplicep = false;
+
+
+  if (threshold_miss_score < 0 && glength > 0) {
+    /* Try known splicing */
+    splicejunction = (char *) CALLOC(glength+1,sizeof(char));
+    splicejunction_alt = (char *) CALLOC(glength+1,sizeof(char));
+#ifdef EXTRACT_GENOMICSEG
+    splicejunction_test = (char *) CALLOC(glength+1,sizeof(char));
+#endif
+
+    endlength = rlength;
+    if (watsonp == true) {
+      low = chroffset + goffset;
+      high = chroffset + goffset+endlength - 1;
+      debug7(printf("3' watson\n"));
+      debug7(printf("Calculating low %u (%u) = %u + %d\n",
+		    low,low-chroffset,chroffset,goffset));
+      debug7(printf("Calculating high %u (%u) = %u + %d+%d - 1\n",
+		    high,high-chroffset,chroffset,goffset,endlength));
+      if (cdna_direction > 0) {
+	anchor_splicetype = DONOR;
+	far_splicetype = ACCEPTOR;
+      } else {
+	anchor_splicetype = ANTIACCEPTOR;
+	far_splicetype = ANTIDONOR;
+      }
+    } else {
+      low = chrhigh - (goffset+endlength) + 2;
+      high = chrhigh - goffset + 1;
+      debug7(printf("3' crick\n"));
+      debug7(printf("Calculating low %u (%u) = %u - (%d+%d)\n",
+		    low,low-chroffset,chrhigh,goffset,endlength));
+      debug7(printf("Calculating high %u (%u) = %u - %d + 1\n",
+		    high,high-chroffset,chrhigh,goffset));
+      if (cdna_direction > 0) {
+	anchor_splicetype = ANTIDONOR;
+	far_splicetype = ANTIACCEPTOR;
+      } else {
+	anchor_splicetype = ACCEPTOR;
+	far_splicetype = DONOR;
+      }
+    }
+
+    far_limit_low = knownsplice_limit_low;
+    far_limit_high = knownsplice_limit_high;
+    debug7(printf("Genomic positions: %u..%u (%u..%u), looking for anchor splicetype %s\n",
+		  low,high,low-chroffset,high-chroffset,Splicetype_string(anchor_splicetype)));
+    j = jstart = binary_search(0,nsplicesites,splicesites,low);
+    while (j < nsplicesites && splicesites[j] <= high) {
+      if (splicetypes[j] == anchor_splicetype) {
+	debug7(printf("Found one at %u (%u)\n",splicesites[j],splicesites[j]-chroffset));
+	if (watsonp == true) {
+	  contlength = splicesites[j] - low;
+	} else {
+	  contlength = high - splicesites[j];
+	}
+	debug7(printf("contlength %d, splicelength %d, rlength %d, glength %d\n",
+		      contlength,glength-contlength,rlength,glength));
+	assert(contlength >= 0 && contlength < rlength);
+
+#ifdef EXTRACT_GENOMICSEG
+	debug7(printf("cont: %.*s\n",contlength,gsequence));
+#endif
+	splicelength = glength - contlength;
+	assert(splicelength > 0);
+	debug7(printf("  Saw %u (%u) of type %s (cont length %d, splice length %d)\n",
+		      splicesites[j],splicesites[j]-chroffset,Splicetype_string(splicetypes[j]),contlength,splicelength));
+
+	make_contjunction_3(splicejunction,splicejunction_alt,splicesites[j],splicelength,contlength,anchor_splicetype,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+	strncpy(splicejunction_test,gsequence,contlength);
+	debug7(printf("contjunction_gen:  %s\n",splicejunction));
+	debug7(printf("contjunction_test: %s\n",splicejunction_test));
+	assert(!strncmp(splicejunction,splicejunction_test,contlength));
+#endif
+
+	if (watsonp) {
+	  far_limit_low = splicesites[j];
+	} else {
+	  far_limit_high = splicesites[j];
+	}
+
+	obsmax_penalty = 0;
+	if (trieoffsets_obs != NULL) {
+	  debug7(printf("  Running Splicetrie_solve_end3 on observed splice sites with goffset %d\n",goffset));
+	  best_pairs = Splicetrie_solve_end3(best_pairs,triecontents_obs,trieoffsets_obs,j,
+					     far_limit_low,far_limit_high,
+					     &(*finalscore),&(*nmatches),&(*nmismatches),
+					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
+					     &threshold_miss_score,/*obsmax_penalty*/0,perfect_score,
+					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
+					     splicelength,contlength,far_splicetype,
+					     chroffset,chrhigh,&(*dynprogindex),dynprog,
+					     rsequence,rsequenceuc,rlength,glength,roffset,goffset,
+					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
+	  debug7(printf("  Result on obs with ambig_end_length_3 %d\n",*ambig_end_length));
+	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
+	  obsmax_penalty += FULLMATCH;
+	}
+
+	if (threshold_miss_score + obsmax_penalty < 0 && trieoffsets_max != NULL) {
+	  debug7(printf("  Running Splicetrie_solve_end3 on maxdistance splice sites with goffset %d\n",goffset));
+	  best_pairs = Splicetrie_solve_end3(best_pairs,triecontents_max,trieoffsets_max,j,
+					     far_limit_low,far_limit_high,
+					     &(*finalscore),&(*nmatches),&(*nmismatches),
+					     &(*nopens),&(*nindels),&(*knownsplicep),&(*ambig_end_length),
+					     &threshold_miss_score,obsmax_penalty,perfect_score,
+					     /*anchor_splicesite*/splicesites[j],splicejunction,splicejunction_alt,
+					     splicelength,contlength,far_splicetype,
+					     chroffset,chrhigh,&(*dynprogindex),dynprog,
+					     rsequence,rsequenceuc,rlength,glength,roffset,goffset,
+					     cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
+	  debug7(printf("  Result on max with ambig_end_length_3 %d\n",*ambig_end_length));
+	  debug7(Pair_dump_list(best_pairs,/*zerobasedp*/true));
+	}
+      }
+      j++;
+    }
+
+#ifdef EXTRACT_GENOMICSEG
+    FREE(splicejunction_test);
+#endif
+    FREE(splicejunction_alt);
+    FREE(splicejunction);
+  }
+
+
+  if (best_pairs == NULL) {
+    if (*ambig_end_length == 0) {
+      /* Don't go to query end this time */
+      if (rlength > dynprog->max_rlength) {
+	debug7(printf("rlength %d is too long.  Chopping to %d\n",rlength,dynprog->max_rlength));
+	rlength = dynprog->max_rlength;
+      }
+      if (glength > dynprog->max_glength) {
+	debug7(printf("glength %d is too long.  Chopping to %d\n",glength,dynprog->max_glength));
+	glength = dynprog->max_glength;
+      }
+      orig_pairs = Dynprog_end3_gap(&(*dynprogindex),&(*finalscore),&(*nmatches),&(*nmismatches),
+				    &(*nopens),&(*nindels),dynprog,rsequence,rsequenceuc,
+				    rlength,glength,roffset,goffset,chroffset,chrhigh,
+				    cdna_direction,watsonp,jump_late_p,pairpool,
+				    extraband_end,defect_rate,/*endalign*/BEST_LOCAL);
+      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
+      *knownsplicep = false;
+      debug7(printf("End of dynprog end5 known\n"));
+      return orig_pairs;
+
+    } else {
+      *ambig_splicetype = anchor_splicetype;
+      debug7(printf("Final result: best_pairs is NULL.  ambig_end_length is %d.  ambig_splicetype is %s.  Result after truncate:\n",
+		    *ambig_end_length,Splicetype_string(*ambig_splicetype)));
+      /* Truncate ambiguous part.  querypos is decreasing */
+      while (orig_pairs != NULL && ((Pair_T) orig_pairs->first)->querypos >= querylength - *ambig_end_length) {
+	orig_pairs = Pairpool_pop(orig_pairs,&pair);
+      }
+      debug7(Pair_dump_list(orig_pairs,/*zerobasedp*/true));
+      *knownsplicep = false;
+      *finalscore = orig_score;
+      debug7(printf("End of dynprog end5 known\n"));
+      return orig_pairs;
+    }
+
+  } else {
+    debug7(printf("Found a best splice\n"));
+    *ambig_end_length = 0;
+    debug7(printf("End of dynprog end3 known\n"));
+    if (*knownsplicep == true) {
+      return Pair_protect_end3(best_pairs,pairpool);
+    } else {
+      return best_pairs;
+    }
+  }
+}
+
+
diff --git a/src/dynprog_end.h b/src/dynprog_end.h
new file mode 100644
index 0000000..027bc14
--- /dev/null
+++ b/src/dynprog_end.h
@@ -0,0 +1,117 @@
+/* $Id: dynprog_end.h 132731 2014-04-08 21:19:57Z twu $ */
+#ifndef DYNPROG_END_INCLUDED
+#define DYNPROG_END_INCLUDED
+
+#include "bool.h"
+#include "list.h"
+#include "pairpool.h"
+#include "chrnum.h"
+#include "iit-read.h"
+#include "splicetrie_build.h"	/* For splicetype */
+#include "types.h"
+#include "dynprog.h"
+
+#define T Dynprog_T
+
+extern void
+Dynprog_end_setup (Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
+		   Chrpos_T *splicedists_in, int nsplicesites_in,
+		   Trieoffset_T *trieoffsets_obs_in, Triecontent_T *triecontents_obs_in,
+		   Trieoffset_T *trieoffsets_max_in, Triecontent_T *triecontents_max_in);
+
+
+extern List_T
+Dynprog_end5_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches,
+		  int *nopens, int *nindels, T dynprog,
+		  char *revsequence1, char *revsequenceuc1,
+		  int length1, int length2, int revoffset1, int revoffset2, 
+		  Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		  int extraband_end, double defect_rate, Endalign_T endalign);
+
+extern List_T
+Dynprog_end5_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
+			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+			     char *revsequence1, char *revsequenceuc1,
+			     char *revsequence2, char *revsequenceuc2, char *revsequencealt2,
+			     int length1, int length2, int revoffset1, int revoffset2_anchor, int revoffset2_far,
+			     Univcoord_T chroffset, Univcoord_T chrhigh,
+			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+			     int extraband_end, double defect_rate, int contlength);
+
+extern List_T
+Dynprog_end3_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches,
+		  int *nopens, int *nindels, T dynprog,
+		  char *sequence1, char *sequenceuc1,
+		  int length1, int length2, int offset1, int offset2, 
+		  Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		  int extraband_end, double defect_rate, Endalign_T endalign);
+
+extern List_T
+Dynprog_end3_splicejunction (int *dynprogindex, int *finalscore, int *missscore,
+			     int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog,
+			     char *sequence1, char *sequenceuc1,
+			     char *sequence2, char *sequenceuc2, char *sequencealt2,
+			     int length1, int length2, int offset1, int offset2_anchor, int offset2_far,
+			     Univcoord_T chroffset, Univcoord_T chrhigh,
+			     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+			     int extraband_end, double defect_rate, int contlength);
+
+extern bool
+Dynprog_make_splicejunction_5 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
+			       int splicelength, int contlength, Splicetype_T far_splicetype,
+			       bool watsonp);
+
+extern bool
+Dynprog_make_splicejunction_3 (char *splicejunction, char *splicejunction_alt, Univcoord_T splicecoord,
+			       int splicelength, int contlength, Splicetype_T far_splicetype,
+			       bool watsonp);
+
+#if 0
+extern List_T
+Dynprog_add_known_splice_5 (int *nmatches_distal, List_T pairs, Univcoord_T anchor_splicesite, Univcoord_T far_splicesite,
+			    Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, Pairpool_T pairpool);
+
+extern List_T
+Dynprog_add_known_splice_3 (int *nmatches_distal, List_T pairs, Univcoord_T anchor_splicesite, Univcoord_T far_splicesite,
+			    Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, Pairpool_T pairpool);
+#endif
+
+
+extern List_T
+Dynprog_end5_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
+		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+		    char *revsequence1, char *revsequenceuc1,
+		    int length1, int length2, int revoffset1, int revoffset2, 
+		    Univcoord_T chroffset, Univcoord_T chrhigh,
+		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+		    int cutoff_level, char *queryptr, int querylength, Compress_T query_compress,
+#endif
+#endif
+		    int cdna_direction, bool watsonp, bool jump_late_p,
+		    Pairpool_T pairpool, int extraband_end, double defect_rate);
+
+extern List_T
+Dynprog_end3_known (bool *knownsplicep, int *dynprogindex, int *finalscore,
+		    int *ambig_end_length, Splicetype_T *ambig_splicetype,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels, T dynprog, 
+		    char *sequence1, char *sequenceuc1,
+		    int length1, int length2, int offset1, int offset2, int querylength,
+		    Univcoord_T chroffset, Univcoord_T chrhigh,
+		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+		    int cutoff_level, char *queryptr, int querylength, Compress_T query_compress,
+#endif
+#endif
+		    int cdna_direction, bool watsonp, bool jump_late_p,
+		    Pairpool_T pairpool, int extraband_end, double defect_rate);
+
+
+#undef T
+#endif
+
diff --git a/src/dynprog_genome.c b/src/dynprog_genome.c
new file mode 100644
index 0000000..5f6de4f
--- /dev/null
+++ b/src/dynprog_genome.c
@@ -0,0 +1,3900 @@
+static char rcsid[] = "$Id: dynprog_genome.c 138118 2014-06-04 20:28:58Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "dynprog_genome.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>		/* For ceil, log, pow */
+#include <ctype.h>		/* For tolower */
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+
+
+#include "bool.h"
+#include "except.h"
+#include "assert.h"
+#include "mem.h"
+#include "comp.h"
+#include "pair.h"
+#include "pairdef.h"
+#include "listdef.h"
+#include "intron.h"
+#include "complement.h"
+#include "maxent.h"
+#include "maxent_hr.h"
+#include "dynprog_simd.h"
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+/* Prints all winning bridge scores */
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
+/* Prints all losing bridge scores */
+#ifdef DEBUG3A
+#define debug3a(x) x
+#else
+#define debug3a(x)
+#endif
+
+/* Known splicing */
+#ifdef DEBUG5
+#define debug5(x) x
+#else
+#define debug5(x)
+#endif
+
+/* Getting genomic nt */
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+/* Splice site probabilities */
+#ifdef DEBUG9
+#define debug9(x) x
+#else
+#define debug9(x)
+#endif
+
+/* print_vector */
+#ifdef DEBUG15
+#define debug15(x) x
+#else
+#define debug15(x)
+#endif
+
+
+#define PROB_CEILING 0.85
+#define PROB_FLOOR 0.75
+
+/* Prefer alternate intron to other non-canonicals, but don't
+   introduce mismatches or gaps to identify */
+#define GCAG_INTRON 15
+#define ATAC_INTRON 12
+#define FINAL_GCAG_INTRON 20    /* Amount above regular should approximately
+				   match FINAL_CANONICAL_INTRON - CANONICAL_INTRON */
+#define FINAL_ATAC_INTRON 12
+
+/* Don't want to make too high, otherwise we will harm evaluation of
+   dual introns vs. single intron */
+#define CANONICAL_INTRON_HIGHQ 10 /* GT-AG */
+#define CANONICAL_INTRON_MEDQ  16
+#define CANONICAL_INTRON_LOWQ  22
+
+#define FINAL_CANONICAL_INTRON_HIGHQ 30 /* GT-AG */
+#define FINAL_CANONICAL_INTRON_MEDQ  36
+#define FINAL_CANONICAL_INTRON_LOWQ  42
+
+#define KNOWN_SPLICESITE_REWARD 20
+
+
+
+static bool novelsplicingp;
+
+static IIT_T splicing_iit;
+static int *splicing_divint_crosstable;
+static int donor_typeint;
+static int acceptor_typeint;
+
+#define T Dynprog_T
+
+void
+Dynprog_genome_setup (bool novelsplicingp_in,
+		      IIT_T splicing_iit_in, int *splicing_divint_crosstable_in,
+		      int donor_typeint_in, int acceptor_typeint_in) {
+  novelsplicingp = novelsplicingp_in;
+
+  splicing_iit = splicing_iit_in;
+  splicing_divint_crosstable = splicing_divint_crosstable_in;
+  donor_typeint = donor_typeint_in;
+  acceptor_typeint = acceptor_typeint_in;
+
+  return;
+}
+
+
+/************************************************************************
+ * get_genomic_nt
+ ************************************************************************/
+
+static char complCode[128] = COMPLEMENT_LC;
+
+static char
+get_genomic_nt (char *g_alt, int genomicpos, Univcoord_T chroffset, Univcoord_T chrhigh,
+		bool watsonp) {
+  char c2, c2_alt;
+  Univcoord_T pos;
+
+#if 0
+  /* If the read has a deletion, then we will extend beyond 0 or genomiclength, so do not restrict. */
+  if (genomicpos < 0) {
+    return '*';
+
+  } else if (genomicpos >= genomiclength) {
+    return '*';
+
+  }
+#endif
+
+  if (watsonp) {
+    if ((pos = chroffset + genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char(genome,pos)));
+      return Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char_blocks(pos)));
+      return Genome_get_char_blocks(&(*g_alt),pos);
+    }
+
+  } else {
+    if ((pos = chrhigh - genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      c2 = Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      c2 = Genome_get_char_blocks(&c2_alt,pos);
+    }
+    debug8(printf("At %u, genomicnt is %c\n",genomicpos,complCode[(int) c2]));
+    *g_alt = complCode[(int) c2_alt];
+    return complCode[(int) c2];
+  }
+}
+
+
+
+static int
+intron_score (int *introntype, int leftdi, int rightdi, int cdna_direction, int canonical_reward, 
+	      bool finalp) {
+  int scoreI;
+
+#ifdef PMAP
+  if ((*introntype = leftdi & rightdi) == NONINTRON) {
+    scoreI = 0.0;
+  } else {
+    switch (*introntype) {
+    case GTAG_FWD: scoreI = canonical_reward; break;
+    case GCAG_FWD: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
+    case ATAC_FWD: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
+    default: *introntype = NONINTRON; scoreI = 0.0;
+    }
+  }
+#else
+  if ((*introntype = leftdi & rightdi) == NONINTRON) {
+    scoreI = 0.0;
+  } else if (cdna_direction > 0) {
+    switch (*introntype) {
+    case GTAG_FWD: scoreI = canonical_reward; break;
+    case GCAG_FWD: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
+    case ATAC_FWD: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
+    default: *introntype = NONINTRON; scoreI = 0.0;
+    }
+  } else if (cdna_direction < 0) {
+    switch (*introntype) {
+    case GTAG_REV: scoreI = canonical_reward; break;
+    case GCAG_REV: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
+    case ATAC_REV: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
+    default: *introntype = NONINTRON; scoreI = 0.0;
+    }
+  } else {
+    switch (*introntype) {
+    case GTAG_FWD: case GTAG_REV: scoreI = canonical_reward; break;
+    case GCAG_FWD: case GCAG_REV: scoreI = finalp == true ? FINAL_GCAG_INTRON : GCAG_INTRON; break;
+    case ATAC_FWD: case ATAC_REV: scoreI = finalp == true ? FINAL_ATAC_INTRON : ATAC_INTRON; break;
+    default: *introntype = NONINTRON; scoreI = 0.0;
+    }
+  }
+#endif
+
+  return scoreI;
+}
+
+
+static void
+get_splicesite_probs (double *left_prob, double *right_prob, int cL, int cR,
+		      int *left_known, int *right_known, Univcoord_T leftoffset, Univcoord_T rightoffset,
+		      Univcoord_T chroffset, Univcoord_T chrhigh, int cdna_direction, bool watsonp) {
+  Univcoord_T splicesitepos;
+  
+  if (left_known[cL] > 0) {
+    debug9(printf("left position is known, so prob is 1.0\n"));
+    *left_prob = 1.0;
+
+  } else if (watsonp == true) {
+    splicesitepos = chroffset + leftoffset + cL;
+    if (cdna_direction > 0) {
+      *left_prob = Maxent_hr_donor_prob(splicesitepos,chroffset);
+      debug9(printf("1. donor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*left_prob,left_known[cL]));
+
+    } else {
+      *left_prob = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+      debug9(printf("2. antiacceptor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*left_prob,left_known[cL]));
+
+    }
+  } else {
+    splicesitepos = chrhigh - leftoffset - cL + 1;
+    if (cdna_direction > 0) {
+      *left_prob = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+      debug9(printf("3. antidonor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*left_prob,left_known[cL]));
+
+    } else {
+      *left_prob = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+      debug9(printf("4. acceptor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*left_prob,left_known[cL]));
+    }
+  }
+
+  if (right_known[cR] > 0) {
+    debug9(printf("right position is known, so prob is 1.0\n"));
+    *right_prob = 1.0;
+
+  } else if (watsonp == true) {
+    splicesitepos = chroffset + rightoffset - cR + 1;
+    if (cdna_direction > 0) {
+      *right_prob = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+      debug9(printf("5. acceptor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*right_prob,right_known[cR]));
+    } else {
+      *right_prob = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+      debug9(printf("6. antidonor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*right_prob,right_known[cR]));
+
+    }
+  } else {
+    splicesitepos = chrhigh - rightoffset + cR;
+    if (cdna_direction > 0) {
+      *right_prob = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+      debug9(printf("7. antiacceptor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*right_prob,right_known[cR]));
+
+    } else {
+      *right_prob = Maxent_hr_donor_prob(splicesitepos,chroffset);
+      debug9(printf("8. donor splicesitepos is %u, prob %f, known %d\n",
+		    splicesitepos,*right_prob,right_known[cR]));
+    }
+  }
+
+  return;
+}
+
+
+static void
+get_known_splicesites (int *left_known, int *right_known, int glengthL, int glengthR,
+		       int leftoffset, int rightoffset, int cdna_direction, bool watsonp,
+		       Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh) {
+
+  int *matches, nmatches, i;
+  Univcoord_T splicesitepos;
+
+  if (splicing_iit != NULL && donor_typeint >= 0 && acceptor_typeint >= 0) {
+    /* Handle known splicing, splice site level */
+    if (watsonp == true) {
+      if (cdna_direction > 0) {
+	/* splicesitepos = leftoffset + cL;  cL = 0 to < glengthL - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  leftoffset+1,leftoffset+glengthL-2,donor_typeint,/*sign*/+1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("1. Found known donor at %u\n",splicesitepos));
+	  left_known[splicesitepos - leftoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos = rightoffset - cR + 1; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  rightoffset-glengthR+4,rightoffset+1,acceptor_typeint,/*sign*/+1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("2. Found known acceptor at %u\n",splicesitepos));
+	  right_known[rightoffset - splicesitepos + 1] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+      } else {
+	/* splicesitepos = leftoffset + cL;  cL = 0 to < glengthL - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  leftoffset+1,leftoffset+glengthL-2,acceptor_typeint,/*sign*/-1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("3. Found known antiacceptor at %u\n",splicesitepos));
+	  left_known[splicesitepos - leftoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos = rightoffset - cR + 1; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  rightoffset-glengthR+4,rightoffset+1,donor_typeint,/*sign*/-1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("4. Found known antidonor at %u\n",splicesitepos));
+	  right_known[rightoffset - splicesitepos + 1] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+      }
+
+    } else {
+      if (cdna_direction > 0) {
+	/* splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1; cL = 0 to < glengthL - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  (chrhigh - chroffset) - leftoffset - glengthL + 4,
+						  (chrhigh - chroffset) - leftoffset + 1,
+						  donor_typeint,/*sign*/-1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("5. Found known antidonor at %u\n",splicesitepos));
+	  left_known[(chrhigh - chroffset) - leftoffset - splicesitepos + 1] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos = (chrhigh - chroffset) - rightoffset + cR; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  (chrhigh - chroffset) - rightoffset + 1,
+						  (chrhigh - chroffset) - rightoffset + glengthR - 2,
+						  acceptor_typeint,/*sign*/-1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("6. Found known antiacceptor at %u\n",splicesitepos));
+	  right_known[splicesitepos - (chrhigh - chroffset) + rightoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+      } else {
+	/* splicesitepos = (chrhigh - chroffset) - leftoffset - cL + 1; cL = 0 to < glengthL - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  (chrhigh - chroffset) - leftoffset - glengthL + 4,
+						  (chrhigh - chroffset) - leftoffset + 1,
+						  acceptor_typeint,/*sign*/+1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("7. Found known acceptor at %u\n",splicesitepos));
+	  left_known[(chrhigh - chroffset) - leftoffset - splicesitepos + 1] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos = (chrhigh - chroffset) - rightoffset + cR; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_typed_signed_with_divno(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+						  (chrhigh - chroffset) - rightoffset + 1,
+						  (chrhigh - chroffset) - rightoffset + glengthR - 2,
+						  donor_typeint,/*sign*/+1,/*sortp*/false);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("8. Found known donor at %u\n",splicesitepos));
+	  right_known[splicesitepos - (chrhigh - chroffset) + rightoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+	  
+      }
+    }
+
+  } else if (splicing_iit != NULL) {
+    /* Handle known splicing, intron level */
+    if (watsonp == true) {
+      if (cdna_direction > 0) {
+	/* splicesitepos = leftoffset + cL; cL = 0 to < glengthL - 1 */
+	matches = IIT_get_lows_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				      leftoffset,leftoffset+glengthL-2,/*sign*/+1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("1. Found known donor at %u\n",splicesitepos));
+	  left_known[splicesitepos - leftoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos+1U = rightoffset - cR + 2; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_highs_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				       rightoffset-glengthR+4,rightoffset+2,/*sign*/+1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_high(splicing_iit,matches[i]);
+	  debug5(printf("2. Found known acceptor at %u\n",splicesitepos));
+	  right_known[rightoffset - splicesitepos + 2] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+      } else {
+	/* splicesitepos = leftoffset + cL; cL = 0 to < glengthL - 1 */
+	matches = IIT_get_lows_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				      leftoffset,leftoffset+glengthL-2,/*sign*/-1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("3. Found known antiacceptor at %u\n",splicesitepos));
+	  left_known[splicesitepos - leftoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos+1U = rightoffset - cR + 2; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_highs_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				       rightoffset-glengthR+4,rightoffset+2,/*sign*/-1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_high(splicing_iit,matches[i]);
+	  debug5(printf("4. Found known antidonor at %u\n",splicesitepos));
+	  right_known[rightoffset - splicesitepos + 2] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+      }
+    } else {
+      if (cdna_direction > 0) {
+	/* splicesitepos+1U = (chrhigh - chroffset) - leftoffset - cL + 2; cL = 0 to < glengthL - 1 */
+	matches = IIT_get_highs_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				       (chrhigh - chroffset) - leftoffset - glengthL + 4,
+				       (chrhigh - chroffset) - leftoffset + 2,/*sign*/-1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_high(splicing_iit,matches[i]);
+	  debug5(printf("5. Found known antidonor at %u\n",splicesitepos));
+	  left_known[(chrhigh - chroffset) - leftoffset - splicesitepos + 2] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos = (chrhigh - chroffset) - rightoffset + cR; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_lows_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				      (chrhigh - chroffset) - rightoffset,
+				      (chrhigh - chroffset) - rightoffset + glengthR - 2,/*sign*/-1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("6. Found known antiacceptor at %u\n",splicesitepos));
+	  right_known[splicesitepos - (chrhigh - chroffset) + rightoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+      } else {
+	/* splicesitepos+1U = (chrhigh - chroffset) - leftoffset - cL + 2; cL = 0 to < glengthL - 1 */
+	matches = IIT_get_highs_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				       (chrhigh - chroffset) - leftoffset - glengthL + 4,
+				       (chrhigh - chroffset) - leftoffset + 2,/*sign*/+1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_high(splicing_iit,matches[i]);
+	  debug5(printf("7. Found known acceptor at %u\n",splicesitepos));
+	  left_known[(chrhigh - chroffset) - leftoffset - splicesitepos + 2] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+
+	/* splicesitepos = (chrhigh - chroffset) - rightoffset + cR; cR = 0 to < glengthR - 1 */
+	matches = IIT_get_lows_signed(&nmatches,splicing_iit,splicing_divint_crosstable[chrnum],
+				      (chrhigh - chroffset) - rightoffset,
+				      (chrhigh - chroffset) - rightoffset + glengthR - 2,/*sign*/+1);
+	for (i = 0; i < nmatches; i++) {
+	  splicesitepos = IIT_interval_low(splicing_iit,matches[i]);
+	  debug5(printf("8. Found known donor at %u\n",splicesitepos));
+	  right_known[splicesitepos - (chrhigh - chroffset) + rightoffset] = KNOWN_SPLICESITE_REWARD;
+	}
+	FREE(matches);
+      }
+    }
+  }
+
+  return;
+}
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+static bool
+bridge_intron_gap_8_ud (int *finalscore, int *bestrL, int *bestrR, int *bestcL, int *bestcR,
+			int *best_introntype, double *left_prob, double *right_prob,
+			Score8_T **matrixL_upper, Score8_T **matrixL_lower,
+			Score8_T **matrixR_upper, Score8_T **matrixR_lower,
+			Direction8_T **directionsL_upper_nogap, Direction8_T **directionsL_lower_nogap, 
+			Direction8_T **directionsR_upper_nogap, Direction8_T **directionsR_lower_nogap,
+			char *gsequenceL, char *gsequenceL_alt, char *rev_gsequenceR, char *rev_gsequenceR_alt,
+			int goffsetL, int rev_goffsetR, int rlength, int glengthL, int glengthR,
+			int cdna_direction, bool watsonp, int lbandL, int ubandL, int lbandR, int ubandR,
+			double defect_rate, int canonical_reward, int leftoffset, int rightoffset,
+			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+			bool halfp, bool finalp, bool jump_late_p) {
+  bool result;
+  int bestscore = NEG_INFINITY_8, score, scoreL, scoreR, scoreI;
+#if 0
+  int bestscoreI = NEG_INFINITY_8;
+#endif
+  int bestscore_with_prob = NEG_INFINITY_8;
+  int rL, rR, cL, cR;
+  int bestrL_with_prob, bestrR_with_prob, bestcL_with_prob, bestcR_with_prob;
+  int cloL, chighL;
+  int cloR, chighR;
+  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
+  int *leftdi, *rightdi, introntype;
+  int *left_known, *right_known;
+  double *left_probabilities, *right_probabilities, probL, probR, probL_trunc, probR_trunc, bestprob, bestprob_trunc;
+  Univcoord_T splicesitepos, splicesitepos1, splicesitepos2;
+  bool bestp;
+
+
+  debug(printf("Running bridge_intron_gap_8_ud\n"));
+
+  if (glengthL+1 <= 0) {
+    fprintf(stderr,"Problem with glengthL = %d\n",glengthL);
+    abort();
+  }
+
+  if (glengthR+1 <= 0) {
+    fprintf(stderr,"Problem with glengthR = %d\n",glengthR);
+    abort();
+  }
+
+  /* Read dinucleotides */
+  leftdi = (int *) CALLOC(glengthL+1,sizeof(int));
+  rightdi = (int *) CALLOC(glengthR+1,sizeof(int));
+
+  for (cL = 0; cL < glengthL - 1; cL++) {
+    left1 = gsequenceL[cL];
+    left1_alt = gsequenceL_alt[cL];
+    left2 = gsequenceL[cL+1];
+    left2_alt = gsequenceL_alt[cL+1];
+    assert(left1 == get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp));
+    assert(left2 == get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp));
+
+    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_GT;
+    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
+      leftdi[cL] = LEFT_GC;
+    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_AT;
+#ifndef PMAP
+    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_CT;
+#endif
+    } else {
+      leftdi[cL] = 0x00;
+    }
+  }
+  leftdi[glengthL-1] = leftdi[glengthL] = 0x00;
+
+  for (cR = 0; cR < glengthR - 1; cR++) {
+    right2 = rev_gsequenceR[-cR-1];
+    right2_alt = rev_gsequenceR_alt[-cR-1];
+    right1 = rev_gsequenceR[-cR];
+    right1_alt = rev_gsequenceR_alt[-cR];
+    assert(right2 == get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp));
+    assert(right1 == get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp));
+
+    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
+      rightdi[cR] = RIGHT_AG;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi[cR] = RIGHT_AC;
+#ifndef PMAP
+    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi[cR] = RIGHT_GC;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
+      rightdi[cR] = RIGHT_AT;
+#endif
+    } else {
+      rightdi[cR] = 0x00;
+    }
+  }
+  rightdi[glengthR-1] = rightdi[glengthR] = 0x00;
+
+  left_known = (int *) CALLOC(glengthL+1,sizeof(int));
+  right_known = (int *) CALLOC(glengthR+1,sizeof(int));
+  get_known_splicesites(left_known,right_known,glengthL,glengthR,
+			/*leftoffset*/goffsetL,/*rightoffset*/rev_goffsetR,
+			cdna_direction,watsonp,chrnum,chroffset,chrhigh);
+
+  /* Perform computations */
+#if 0
+  /* Bands already computed during dynamic programming */
+#if 1
+  /* Allows unlimited indel lengths */
+  ubandL = glengthL - rlength + extraband_paired;
+  lbandL = extraband_paired;
+
+  ubandR = glengthR - rlength + extraband_paired;
+  lbandR = extraband_paired;
+#else
+  /* Limit indels to 3 bp around splice sites.  Doesn't work on PacBio reads. */
+  ubandL = 3;
+  lbandL = 3;
+
+  ubandR = 3;
+  lbandR = 3;
+#endif
+#endif
+
+
+  if (novelsplicingp == false && splicing_iit != NULL && (donor_typeint < 0 || acceptor_typeint < 0)) {
+    /* Constrain to given introns */
+    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+      debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
+      if ((cloL = rL - lbandL) < 1) {
+	cloL = 1;
+      }
+      if ((chighL = rL + ubandL) > glengthL-1) {
+	chighL = glengthL-1;
+      }
+
+      if ((cloR = rR - lbandR) < 1) {
+	cloR = 1;
+      }
+      if ((chighR = rR + ubandR) > glengthR-1) {
+	chighR = glengthR-1;
+      }
+
+      /* Test indels on left and right */
+      for (cL = cloL; cL < /* left of main diagonal*/rL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (left_known[cL] > 0) {
+	  scoreL = (int) matrixL_lower[rL][cL];
+	  if (directionsL_lower_nogap[rL][cL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR < /* left of main diagonal*/rR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_lower[rR][cR];
+	      if (directionsR_lower_nogap[rR][cR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) { /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+
+	  for (/* at main diagonal*/; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_upper[cR][rR];
+	      if (directionsR_upper_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+	}
+      }
+
+      for (/* at main diagonal*/; cL <= chighL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (left_known[cL] > 0) {
+	  scoreL = (int) matrixL_upper[cL][rL];
+	  if (directionsL_upper_nogap[cL][rL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR < /* left of main diagonal*/rR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_lower[rR][cR];
+	      if (directionsR_lower_nogap[rR][cR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+
+	  for (/* at main diagonal*/; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_upper[cR][rR];
+	      if (directionsR_upper_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+	}
+      }
+    }
+
+    *finalscore = (int) bestscore;
+    *best_introntype = NONINTRON;
+
+  } else {
+    left_probabilities = (double *) CALLOC(glengthL+1,sizeof(double));
+    right_probabilities = (double *) CALLOC(glengthR+1,sizeof(double));
+
+    if (watsonp == true) {
+      if (cdna_direction > 0) {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chroffset + leftoffset + cL;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_donor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chroffset + rightoffset - cR + 1;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+      } else {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chroffset + leftoffset + cL;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chroffset + rightoffset - cR + 1;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+	  }
+	}
+      }
+
+    } else {
+      if (cdna_direction > 0) {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chrhigh - leftoffset - cL + 1;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chrhigh - rightoffset + cR;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+      } else {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chrhigh - leftoffset - cL + 1;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chrhigh - rightoffset + cR;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_donor_prob(splicesitepos,chroffset);
+	  }
+	}
+      }
+    }
+
+    /* Search using probs and without simultaneously */
+    bestscore = NEG_INFINITY_8;
+    bestprob = bestprob_trunc = 0.0;
+    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+      debug3(printf("\nAt row %d on left and %d on right\n",rL,rR));
+      if ((cloL = rL - lbandL) < 1) {
+	cloL = 1;
+      }
+      if ((chighL = rL + ubandL) > glengthL-1) {
+	chighL = glengthL-1;
+      }
+
+      if ((cloR = rR - lbandR) < 1) {
+	cloR = 1;
+      }
+      if ((chighR = rR + ubandR) > glengthR-1) {
+	chighR = glengthR-1;
+      }
+
+#ifdef ALLOW_DUAL_INDELS
+      fprintf(stderr,"Dual indels not implemented\n");
+      abort();
+      /* Test indels on left and right */
+      for (cL = cloL; cL <= chighL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (1) {
+	  probL = left_probabilities[cL];
+	  if (probL > PROB_CEILING) {
+	    probL_trunc = PROB_CEILING;
+	  } else if (probL < PROB_FLOOR) {
+	    probL_trunc = PROB_FLOOR;
+	  } else {
+	    probL_trunc = probL;
+	  }
+	  scoreL = (int) matrixL[cL][rL];
+	  if (directionsL_nogap[cL][rL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (1) {
+	      probR = right_probabilities[cR];
+	      if (probR > PROB_CEILING) {
+		probR_trunc = PROB_CEILING;
+	      } else if (probR < PROB_FLOOR) {
+		probR_trunc = PROB_FLOOR;
+	      } else {
+		probR_trunc = probR;
+	      }
+	      scoreR = (int) matrixR[cR][rR];
+	      if (directionsR_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+				    cdna_direction,canonical_reward,finalp);
+
+	      if ((score = scoreL + scoreI + scoreR) > bestscore) {
+		debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			      cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+		bestscore = score;
+		*bestrL = rL;
+		*bestrR = rR;
+		*bestcL = cL;
+		*bestcR = cR;
+		bestprob = probL + probR;
+	      } else if (score == bestscore && probL + probR > bestprob) {
+		*bestrL = rL;
+		*bestrR = rR;
+		*bestcL = cL;
+		*bestcR = cR;
+		bestprob = probL + probR;
+	      }
+
+
+	      if (probL_trunc + probR_trunc < bestprob_trunc) {
+		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			       cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+	      } else if (probL_trunc + probR_trunc == bestprob_trunc) {
+		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			      cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+		if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+		  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+		  bestprob_trunc = probL_trunc + probR_trunc;
+		  bestcL_with_prob = cL;
+		  bestcR_with_prob = cR;
+		  bestrL_with_prob = rL;
+		  bestrR_with_prob = rR;
+		  bestscore_with_prob = scoreL + scoreI + scoreR;
+		}
+		  
+	      } else {
+		/* probL_trunc + probR_trunc > bestprob_trunc */
+		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			      cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+		debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+		bestprob_trunc = probL_trunc + probR_trunc;
+		bestcL_with_prob = cL;
+		bestcR_with_prob = cR;
+		bestrL_with_prob = rL;
+		bestrR_with_prob = rR;
+		bestscore_with_prob = scoreL + scoreI + scoreR;
+	      }
+	    }
+	  }
+	}
+      }
+
+#else
+      /* Test indel on right */
+      cL = rL;
+      probL = left_probabilities[cL];
+      if (probL > PROB_CEILING) {
+	probL_trunc = PROB_CEILING;
+      } else if (probL < PROB_FLOOR) {
+	probL_trunc = PROB_FLOOR;
+      } else {
+	probL_trunc = probL;
+      }
+      scoreL = (int) matrixL_upper[cL][rL];
+      if (directionsL_upper_nogap[cL][rL] != DIAG) {
+	/* Favor gaps away from intron if possible */
+	scoreL -= 1;
+      }
+
+      /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+      for (cR = cloR; cR < /*to main diagonal*/rR && cR < rightoffset-leftoffset-cL; cR++) {
+	probR = right_probabilities[cR];
+	if (probR > PROB_CEILING) {
+	  probR_trunc = PROB_CEILING;
+	} else if (probR < PROB_FLOOR) {
+	  probR_trunc = PROB_FLOOR;
+	} else {
+	  probR_trunc = probR;
+	}
+	scoreR = (int) matrixR_lower[rR][cR];
+	if (directionsR_lower_nogap[rR][cR] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreR -= 1;
+	}
+	
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+	
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+		  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+      for (/*at main diagonal*/; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	probR = right_probabilities[cR];
+	if (probR > PROB_CEILING) {
+	  probR_trunc = PROB_CEILING;
+	} else if (probR < PROB_FLOOR) {
+	  probR_trunc = PROB_FLOOR;
+	} else {
+	  probR_trunc = probR;
+	}
+	scoreR = (int) matrixR_upper[cR][rR];
+	if (directionsR_upper_nogap[cR][rR] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreR -= 1;
+	}
+	
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+	
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+		  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+
+      /* Test indel on left */
+      cR = rR;
+      probR = right_probabilities[cR];
+      if (probR > PROB_CEILING) {
+	probR_trunc = PROB_CEILING;
+      } else if (probR < PROB_FLOOR) {
+	probR_trunc = PROB_FLOOR;
+      } else {
+	probR_trunc = probR;
+      }
+      scoreR = (int) matrixR_upper[cR][rR];
+      if (directionsR_upper_nogap[cR][rR] != DIAG) {
+	/* Favor gaps away from intron if possible */
+	scoreR -= 1;
+      }
+
+      /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+      for (cL = cloL; cL < /*to main diagonal*/rL && cL < rightoffset-leftoffset-cR; cL++) {
+	probL = left_probabilities[cL];
+	if (probL > PROB_CEILING) {
+	  probL_trunc = PROB_CEILING;
+	} else if (probL < PROB_FLOOR) {
+	  probL_trunc = PROB_FLOOR;
+	} else {
+	  probL_trunc = probL;
+	}
+	scoreL = (int) matrixL_lower[rL][cL];
+	if (directionsL_lower_nogap[rL][cL] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreL -= 1;
+	}
+
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+	  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+      for (/*at main diagonal*/; cL <= chighL && cL < rightoffset-leftoffset-cR; cL++) {
+	probL = left_probabilities[cL];
+	if (probL > PROB_CEILING) {
+	  probL_trunc = PROB_CEILING;
+	} else if (probL < PROB_FLOOR) {
+	  probL_trunc = PROB_FLOOR;
+	} else {
+	  probL_trunc = probL;
+	}
+	scoreL = (int) matrixL_upper[cL][rL];
+	if (directionsL_upper_nogap[cL][rL] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreL -= 1;
+	}
+
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+	  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+#endif
+
+    }
+
+    debug(printf("bestscore %d (bestprob %f) vs bestscore_with_prob %d (bestprob_trunc %f)\n",
+		 bestscore,bestprob,bestscore_with_prob,bestprob_trunc));
+    if (left_probabilities[bestcL_with_prob] < PROB_CEILING || right_probabilities[bestcR_with_prob] < PROB_CEILING) {
+      /* Use score without prob */
+    } else {
+      if (defect_rate < DEFECT_HIGHQ) {
+	if (bestscore_with_prob > bestscore - 15) {
+	  *bestcL = bestcL_with_prob;
+	  *bestcR = bestcR_with_prob;
+	  *bestrL = bestrL_with_prob;
+	  *bestrR = bestrR_with_prob;
+	  bestscore = bestscore_with_prob;
+	}
+
+      } else if (defect_rate < DEFECT_MEDQ) {
+	if (bestscore_with_prob > bestscore - 25) {
+	  *bestcL = bestcL_with_prob;
+	  *bestcR = bestcR_with_prob;
+	  *bestrL = bestrL_with_prob;
+	  *bestrR = bestrR_with_prob;
+	  bestscore = bestscore_with_prob;
+	}
+
+      } else {
+	*bestcL = bestcL_with_prob;
+	*bestcR = bestcR_with_prob;
+	*bestrL = bestrL_with_prob;
+	*bestrR = bestrR_with_prob;
+	bestscore = bestscore_with_prob;
+      }
+    }
+    
+    scoreI = intron_score(&introntype,leftdi[*bestcL],rightdi[*bestcR],
+			  cdna_direction,canonical_reward,finalp);
+
+    if (halfp == true) {
+      *finalscore = (int) (bestscore - scoreI/2);
+    } else {
+      *finalscore = (int) bestscore;
+    }
+
+    FREE(left_probabilities);
+    FREE(right_probabilities);
+  }
+
+
+  /* Determine if result meets given constraints */
+  if (*finalscore < 0) {
+    result = false;
+  } else if (novelsplicingp == true) {
+    result = true;
+  } else if (splicing_iit == NULL) {
+    result = true;
+  } else if (donor_typeint >= 0 && acceptor_typeint >= 0) {
+    /* If novelsplicingp is false and using splicing at splice site level, require sites to be known */
+    if (left_known[*bestcL] == 0 || right_known[*bestcR] == 0) {
+      debug(printf("Novel splicing not allowed, so bridge_intron_gap returning false\n"));
+      result = false;
+    } else {
+      result = true;
+    }
+  } else {
+    /* If novelsplicingp is false and using splicing at splice site level, result was already constrained */
+    result = true;
+  }
+
+
+  if (/*finalp == true &&*/ result == true) {
+    get_splicesite_probs(&(*left_prob),&(*right_prob),*bestcL,*bestcR,
+			 left_known,right_known,leftoffset,rightoffset,chroffset,chrhigh,
+			 cdna_direction,watsonp);
+  }
+
+  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
+		*finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
+  debug(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
+	       *finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
+
+  FREE(right_known);
+  FREE(left_known);
+
+  FREE(rightdi);
+  FREE(leftdi);
+
+  return result;
+}
+#endif
+
+
+#if defined(HAVE_SSE2)
+static bool
+bridge_intron_gap_16_ud (int *finalscore, int *bestrL, int *bestrR, int *bestcL, int *bestcR,
+			 int *best_introntype, double *left_prob, double *right_prob,
+			 Score16_T **matrixL_upper, Score16_T **matrixL_lower,
+			 Score16_T **matrixR_upper, Score16_T **matrixR_lower,
+			 Direction16_T **directionsL_upper_nogap, Direction16_T **directionsL_lower_nogap, 
+			 Direction16_T **directionsR_upper_nogap, Direction16_T **directionsR_lower_nogap,
+			 char *gsequenceL, char *gsequenceL_alt, char *rev_gsequenceR, char *rev_gsequenceR_alt,
+			 int goffsetL, int rev_goffsetR, int rlength, int glengthL, int glengthR,
+			 int cdna_direction, bool watsonp, int lbandL, int ubandL, int lbandR, int ubandR,
+			 double defect_rate, int canonical_reward, int leftoffset, int rightoffset,
+			 Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+			 bool halfp, bool finalp, bool jump_late_p) {
+  bool result;
+  int bestscore = NEG_INFINITY_16, score, scoreL, scoreR, scoreI;
+#if 0
+  int bestscoreI = NEG_INFINITY_16;
+#endif
+  int bestscore_with_prob = NEG_INFINITY_16;
+  int rL, rR, cL, cR;
+  int bestrL_with_prob, bestrR_with_prob, bestcL_with_prob, bestcR_with_prob;
+  int cloL, chighL;
+  int cloR, chighR;
+  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
+  int *leftdi, *rightdi, introntype;
+  int *left_known, *right_known;
+  double *left_probabilities, *right_probabilities, probL, probR, probL_trunc, probR_trunc, bestprob, bestprob_trunc;
+  Univcoord_T splicesitepos, splicesitepos1, splicesitepos2;
+  bool bestp;
+
+
+  debug(printf("Running bridge_intron_gap_16_ud\n"));
+
+  if (glengthL+1 <= 0) {
+    fprintf(stderr,"Problem with glengthL = %d\n",glengthL);
+    abort();
+  }
+
+  if (glengthR+1 <= 0) {
+    fprintf(stderr,"Problem with glengthR = %d\n",glengthR);
+    abort();
+  }
+
+  /* Read dinucleotides */
+  leftdi = (int *) CALLOC(glengthL+1,sizeof(int));
+  rightdi = (int *) CALLOC(glengthR+1,sizeof(int));
+
+  for (cL = 0; cL < glengthL - 1; cL++) {
+    left1 = gsequenceL[cL];
+    left1_alt = gsequenceL_alt[cL];
+    left2 = gsequenceL[cL+1];
+    left2_alt = gsequenceL_alt[cL+1];
+    assert(left1 == get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp));
+    assert(left2 == get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp));
+
+    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_GT;
+    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
+      leftdi[cL] = LEFT_GC;
+    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_AT;
+#ifndef PMAP
+    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_CT;
+#endif
+    } else {
+      leftdi[cL] = 0x00;
+    }
+  }
+  leftdi[glengthL-1] = leftdi[glengthL] = 0x00;
+
+  for (cR = 0; cR < glengthR - 1; cR++) {
+    right2 = rev_gsequenceR[-cR-1];
+    right2_alt = rev_gsequenceR_alt[-cR-1];
+    right1 = rev_gsequenceR[-cR];
+    right1_alt = rev_gsequenceR_alt[-cR];
+    assert(right2 == get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp));
+    assert(right1 == get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp));
+
+    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
+      rightdi[cR] = RIGHT_AG;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi[cR] = RIGHT_AC;
+#ifndef PMAP
+    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi[cR] = RIGHT_GC;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
+      rightdi[cR] = RIGHT_AT;
+#endif
+    } else {
+      rightdi[cR] = 0x00;
+    }
+  }
+  rightdi[glengthR-1] = rightdi[glengthR] = 0x00;
+
+  left_known = (int *) CALLOC(glengthL+1,sizeof(int));
+  right_known = (int *) CALLOC(glengthR+1,sizeof(int));
+  get_known_splicesites(left_known,right_known,glengthL,glengthR,
+			/*leftoffset*/goffsetL,/*rightoffset*/rev_goffsetR,
+			cdna_direction,watsonp,chrnum,chroffset,chrhigh);
+
+  /* Perform computations */
+#if 0
+  /* Bands already computed for dynamic programming */
+#if 1
+  /* Allows unlimited indel lengths */
+  ubandL = glengthL - rlength + extraband_paired;
+  lbandL = extraband_paired;
+
+  ubandR = glengthR - rlength + extraband_paired;
+  lbandR = extraband_paired;
+#else
+  /* Limit indels to 3 bp around splice sites.  Doesn't work on PacBio reads. */
+  ubandL = 3;
+  lbandL = 3;
+
+  ubandR = 3;
+  lbandR = 3;
+#endif
+#endif
+
+
+  if (novelsplicingp == false && splicing_iit != NULL && (donor_typeint < 0 || acceptor_typeint < 0)) {
+    /* Constrain to given introns */
+    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+      debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
+      if ((cloL = rL - lbandL) < 1) {
+	cloL = 1;
+      }
+      if ((chighL = rL + ubandL) > glengthL-1) {
+	chighL = glengthL-1;
+      }
+
+      if ((cloR = rR - lbandR) < 1) {
+	cloR = 1;
+      }
+      if ((chighR = rR + ubandR) > glengthR-1) {
+	chighR = glengthR-1;
+      }
+
+      /* Test indels on left and right */
+      for (cL = cloL; cL < /* left of main diagonal*/rL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (left_known[cL] > 0) {
+	  scoreL = (int) matrixL_lower[rL][cL];
+	  if (directionsL_lower_nogap[rL][cL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR < /* left of main diagonal*/rR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_lower[rR][cR];
+	      if (directionsR_lower_nogap[rR][cR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+
+	  for (/* at main diagonal*/; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_upper[cR][rR];
+	      if (directionsR_upper_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+	}
+      }
+
+      for (/* at main diagonal*/; cL <= chighL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (left_known[cL] > 0) {
+	  scoreL = (int) matrixL_upper[cL][rL];
+	  if (directionsL_upper_nogap[cL][rL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR < /* left of main diagonal*/rR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_lower[rR][cR];
+	      if (directionsR_lower_nogap[rR][cR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+
+	  for (/* at main diagonal*/; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR_upper[cR][rR];
+	      if (directionsR_upper_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+	}
+      }
+    }
+
+    *finalscore = (int) bestscore;
+    *best_introntype = NONINTRON;
+
+  } else {
+    left_probabilities = (double *) CALLOC(glengthL+1,sizeof(double));
+    right_probabilities = (double *) CALLOC(glengthR+1,sizeof(double));
+
+    if (watsonp == true) {
+      if (cdna_direction > 0) {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chroffset + leftoffset + cL;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_donor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chroffset + rightoffset - cR + 1;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+      } else {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chroffset + leftoffset + cL;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chroffset + rightoffset - cR + 1;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+	  }
+	}
+      }
+
+    } else {
+      if (cdna_direction > 0) {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chrhigh - leftoffset - cL + 1;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chrhigh - rightoffset + cR;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+      } else {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chrhigh - leftoffset - cL + 1;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chrhigh - rightoffset + cR;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_donor_prob(splicesitepos,chroffset);
+	  }
+	}
+      }
+    }
+
+    /* Search using probs and without simultaneously */
+    bestscore = NEG_INFINITY_16;
+    bestprob = bestprob_trunc = 0.0;
+    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+      debug3(printf("\nAt row %d on left and %d on right\n",rL,rR));
+      if ((cloL = rL - lbandL) < 1) {
+	cloL = 1;
+      }
+      if ((chighL = rL + ubandL) > glengthL-1) {
+	chighL = glengthL-1;
+      }
+
+      if ((cloR = rR - lbandR) < 1) {
+	cloR = 1;
+      }
+      if ((chighR = rR + ubandR) > glengthR-1) {
+	chighR = glengthR-1;
+      }
+
+#ifdef ALLOW_DUAL_INDELS
+      fprintf(stderr,"Dual indels not implemented\n");
+      abort();
+      /* Test indels on left and right */
+      for (cL = cloL; cL <= chighL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (1) {
+	  probL = left_probabilities[cL];
+	  if (probL > PROB_CEILING) {
+	    probL_trunc = PROB_CEILING;
+	  } else if (probL < PROB_FLOOR) {
+	    probL_trunc = PROB_FLOOR;
+	  } else {
+	    probL_trunc = probL;
+	  }
+	  scoreL = (int) matrixL[cL][rL];
+	  if (directionsL_nogap[cL][rL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (1) {
+	      probR = right_probabilities[cR];
+	      if (probR > PROB_CEILING) {
+		probR_trunc = PROB_CEILING;
+	      } else if (probR < PROB_FLOOR) {
+		probR_trunc = PROB_FLOOR;
+	      } else {
+		probR_trunc = probR;
+	      }
+	      scoreR = (int) matrixR[cR][rR];
+	      if (directionsR_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+				    cdna_direction,canonical_reward,finalp);
+
+	      if ((score = scoreL + scoreI + scoreR) > bestscore) {
+		debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			      cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+		bestscore = score;
+		*bestrL = rL;
+		*bestrR = rR;
+		*bestcL = cL;
+		*bestcR = cR;
+		bestprob = probL + probR;
+	      } else if (score == bestscore && probL + probR > bestprob) {
+		*bestrL = rL;
+		*bestrR = rR;
+		*bestcL = cL;
+		*bestcR = cR;
+		bestprob = probL + probR;
+	      }
+
+
+	      if (probL_trunc + probR_trunc < bestprob_trunc) {
+		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			       cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+	      } else if (probL_trunc + probR_trunc == bestprob_trunc) {
+		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			      cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+		if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+		  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+		  bestprob_trunc = probL_trunc + probR_trunc;
+		  bestcL_with_prob = cL;
+		  bestcR_with_prob = cR;
+		  bestrL_with_prob = rL;
+		  bestrR_with_prob = rR;
+		  bestscore_with_prob = scoreL + scoreI + scoreR;
+		}
+		  
+	      } else {
+		/* probL_trunc + probR_trunc > bestprob_trunc */
+		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			      cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+		debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+		bestprob_trunc = probL_trunc + probR_trunc;
+		bestcL_with_prob = cL;
+		bestcR_with_prob = cR;
+		bestrL_with_prob = rL;
+		bestrR_with_prob = rR;
+		bestscore_with_prob = scoreL + scoreI + scoreR;
+	      }
+	    }
+	  }
+	}
+      }
+
+#else
+      /* Test indel on right */
+      cL = rL;
+      probL = left_probabilities[cL];
+      if (probL > PROB_CEILING) {
+	probL_trunc = PROB_CEILING;
+      } else if (probL < PROB_FLOOR) {
+	probL_trunc = PROB_FLOOR;
+      } else {
+	probL_trunc = probL;
+      }
+      scoreL = (int) matrixL_upper[cL][rL];
+      if (directionsL_upper_nogap[cL][rL] != DIAG) {
+	/* Favor gaps away from intron if possible */
+	scoreL -= 1;
+      }
+
+      /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+      for (cR = cloR; cR < /*to main diagonal*/rR && cR < rightoffset-leftoffset-cL; cR++) {
+	probR = right_probabilities[cR];
+	if (probR > PROB_CEILING) {
+	  probR_trunc = PROB_CEILING;
+	} else if (probR < PROB_FLOOR) {
+	  probR_trunc = PROB_FLOOR;
+	} else {
+	  probR_trunc = probR;
+	}
+	scoreR = (int) matrixR_lower[rR][cR];
+	if (directionsR_lower_nogap[rR][cR] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreR -= 1;
+	}
+	
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+	
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+		  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+      for (/*at main diagonal*/; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	probR = right_probabilities[cR];
+	if (probR > PROB_CEILING) {
+	  probR_trunc = PROB_CEILING;
+	} else if (probR < PROB_FLOOR) {
+	  probR_trunc = PROB_FLOOR;
+	} else {
+	  probR_trunc = probR;
+	}
+	scoreR = (int) matrixR_upper[cR][rR];
+	if (directionsR_upper_nogap[cR][rR] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreR -= 1;
+	}
+	
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+	
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+		  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+
+      /* Test indel on left */
+      cR = rR;
+      probR = right_probabilities[cR];
+      if (probR > PROB_CEILING) {
+	probR_trunc = PROB_CEILING;
+      } else if (probR < PROB_FLOOR) {
+	probR_trunc = PROB_FLOOR;
+      } else {
+	probR_trunc = probR;
+      }
+      scoreR = (int) matrixR_upper[cR][rR];
+      if (directionsR_upper_nogap[cR][rR] != DIAG) {
+	/* Favor gaps away from intron if possible */
+	scoreR -= 1;
+      }
+
+      /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+      for (cL = cloL; cL < /*to main diagonal*/rL && cL < rightoffset-leftoffset-cR; cL++) {
+	probL = left_probabilities[cL];
+	if (probL > PROB_CEILING) {
+	  probL_trunc = PROB_CEILING;
+	} else if (probL < PROB_FLOOR) {
+	  probL_trunc = PROB_FLOOR;
+	} else {
+	  probL_trunc = probL;
+	}
+	scoreL = (int) matrixL_lower[rL][cL];
+	if (directionsL_lower_nogap[rL][cL] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreL -= 1;
+	}
+
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+	  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+      for (/*at main diagonal*/; cL <= chighL && cL < rightoffset-leftoffset-cR; cL++) {
+	probL = left_probabilities[cL];
+	if (probL > PROB_CEILING) {
+	  probL_trunc = PROB_CEILING;
+	} else if (probL < PROB_FLOOR) {
+	  probL_trunc = PROB_FLOOR;
+	} else {
+	  probL_trunc = probL;
+	}
+	scoreL = (int) matrixL_upper[cL][rL];
+	if (directionsL_upper_nogap[cL][rL] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreL -= 1;
+	}
+
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+	
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+	  
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+#endif
+
+    }
+
+    debug(printf("bestscore %d (bestprob %f) vs bestscore_with_prob %d (bestprob_trunc %f)\n",
+		 bestscore,bestprob,bestscore_with_prob,bestprob_trunc));
+    if (left_probabilities[bestcL_with_prob] < PROB_CEILING || right_probabilities[bestcR_with_prob] < PROB_CEILING) {
+      /* Use score without prob */
+    } else {
+      if (defect_rate < DEFECT_HIGHQ) {
+	if (bestscore_with_prob > bestscore - 15) {
+	  *bestcL = bestcL_with_prob;
+	  *bestcR = bestcR_with_prob;
+	  *bestrL = bestrL_with_prob;
+	  *bestrR = bestrR_with_prob;
+	  bestscore = bestscore_with_prob;
+	}
+
+      } else if (defect_rate < DEFECT_MEDQ) {
+	if (bestscore_with_prob > bestscore - 25) {
+	  *bestcL = bestcL_with_prob;
+	  *bestcR = bestcR_with_prob;
+	  *bestrL = bestrL_with_prob;
+	  *bestrR = bestrR_with_prob;
+	  bestscore = bestscore_with_prob;
+	}
+
+      } else {
+	*bestcL = bestcL_with_prob;
+	*bestcR = bestcR_with_prob;
+	*bestrL = bestrL_with_prob;
+	*bestrR = bestrR_with_prob;
+	bestscore = bestscore_with_prob;
+      }
+    }
+    
+    scoreI = intron_score(&introntype,leftdi[*bestcL],rightdi[*bestcR],
+			  cdna_direction,canonical_reward,finalp);
+
+    if (halfp == true) {
+      *finalscore = (int) (bestscore - scoreI/2);
+    } else {
+      *finalscore = (int) bestscore;
+    }
+
+    FREE(left_probabilities);
+    FREE(right_probabilities);
+  }
+
+
+  /* Determine if result meets given constraints */
+  if (*finalscore < 0) {
+    result = false;
+  } else if (novelsplicingp == true) {
+    result = true;
+  } else if (splicing_iit == NULL) {
+    result = true;
+  } else if (donor_typeint >= 0 && acceptor_typeint >= 0) {
+    /* If novelsplicingp is false and using splicing at splice site level, require sites to be known */
+    if (left_known[*bestcL] == 0 || right_known[*bestcR] == 0) {
+      debug(printf("Novel splicing not allowed, so bridge_intron_gap returning false\n"));
+      result = false;
+    } else {
+      result = true;
+    }
+  } else {
+    /* If novelsplicingp is false and using splicing at splice site level, result was already constrained */
+    result = true;
+  }
+
+
+  if (/*finalp == true &&*/ result == true) {
+    get_splicesite_probs(&(*left_prob),&(*right_prob),*bestcL,*bestcR,
+			 left_known,right_known,leftoffset,rightoffset,chroffset,chrhigh,
+			 cdna_direction,watsonp);
+  }
+
+  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
+		*finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
+  debug(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
+	       *finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
+
+  FREE(right_known);
+  FREE(left_known);
+
+  FREE(rightdi);
+  FREE(leftdi);
+
+  return result;
+}
+#endif
+
+#ifndef HAVE_SSE2
+static bool
+bridge_intron_gap (int *finalscore, int *bestrL, int *bestrR, int *bestcL, int *bestcR,
+		   int *best_introntype, double *left_prob, double *right_prob,
+		   Score32_T **matrixL, Score32_T **matrixR,
+		   Direction32_T **directionsL_nogap, Direction32_T **directionsR_nogap, 
+		   char *gsequenceL, char *gsequenceL_alt, char *rev_gsequenceR, char *rev_gsequenceR_alt,
+		   int goffsetL, int rev_goffsetR, int rlength, int glengthL, int glengthR,
+		   int cdna_direction, bool watsonp, int extraband_paired, double defect_rate, int canonical_reward,
+		   int leftoffset, int rightoffset,
+		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		   bool halfp, bool finalp, bool jump_late_p) {
+  bool result;
+  int bestscore = NEG_INFINITY_32, score, scoreL, scoreR, scoreI;
+  /* int bestscoreI = NEG_INFINITY_32; */
+  int bestscore_with_prob = NEG_INFINITY_32;
+  int rL, rR, cL, cR;
+  int bestrL_with_prob, bestrR_with_prob, bestcL_with_prob, bestcR_with_prob;
+  int lbandL, ubandL, cloL, chighL;
+  int lbandR, ubandR, cloR, chighR;
+  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
+  int *leftdi, *rightdi, introntype;
+  int *left_known, *right_known;
+  double *left_probabilities, *right_probabilities, probL, probR, probL_trunc, probR_trunc, bestprob, bestprob_trunc;
+  Univcoord_T splicesitepos, splicesitepos1, splicesitepos2;
+  bool bestp;
+
+  debug(printf("Running bridge_intron_gap\n"));
+
+  if (glengthL+1 <= 0) {
+    fprintf(stderr,"Problem with glengthL = %d\n",glengthL);
+    abort();
+  }
+
+  if (glengthR+1 <= 0) {
+    fprintf(stderr,"Problem with glengthR = %d\n",glengthR);
+    abort();
+  }
+
+  /* Read dinucleotides */
+  leftdi = (int *) CALLOC(glengthL+1,sizeof(int));
+  rightdi = (int *) CALLOC(glengthR+1,sizeof(int));
+
+  for (cL = 0; cL < glengthL - 1; cL++) {
+    left1 = gsequenceL[cL];
+    left1_alt = gsequenceL_alt[cL];
+    left2 = gsequenceL[cL+1];
+    left2_alt = gsequenceL_alt[cL+1];
+    assert(left1 == get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp));
+    assert(left2 == get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp));
+
+    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_GT;
+    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
+      leftdi[cL] = LEFT_GC;
+    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_AT;
+#ifndef PMAP
+    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi[cL] = LEFT_CT;
+#endif
+    } else {
+      leftdi[cL] = 0x00;
+    }
+  }
+  leftdi[glengthL-1] = leftdi[glengthL] = 0x00;
+
+  for (cR = 0; cR < glengthR - 1; cR++) {
+    right2 = rev_gsequenceR[-cR-1];
+    right2_alt = rev_gsequenceR_alt[-cR-1];
+    right1 = rev_gsequenceR[-cR];
+    right1_alt = rev_gsequenceR_alt[-cR];
+    assert(right2 == get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp));
+    assert(right1 == get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp));
+
+    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
+      rightdi[cR] = RIGHT_AG;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi[cR] = RIGHT_AC;
+#ifndef PMAP
+    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi[cR] = RIGHT_GC;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
+      rightdi[cR] = RIGHT_AT;
+#endif
+    } else {
+      rightdi[cR] = 0x00;
+    }
+  }
+  rightdi[glengthR-1] = rightdi[glengthR] = 0x00;
+
+  left_known = (int *) CALLOC(glengthL+1,sizeof(int));
+  right_known = (int *) CALLOC(glengthR+1,sizeof(int));
+  get_known_splicesites(left_known,right_known,glengthL,glengthR,
+			/*leftoffset*/goffsetL,/*rightoffset*/rev_goffsetR,
+			cdna_direction,watsonp,chrnum,chroffset,chrhigh);
+
+  /* Perform computations */
+#if 1
+  /* Allows unlimited indel lengths */
+  ubandL = glengthL - rlength + extraband_paired;
+  lbandL = extraband_paired;
+
+  ubandR = glengthR - rlength + extraband_paired;
+  lbandR = extraband_paired;
+#else
+  /* Limit indels to 3 bp around splice sites.  Doesn't work on PacBio reads. */
+  ubandL = 3;
+  lbandL = 3;
+
+  ubandR = 3;
+  lbandR = 3;
+#endif
+
+
+  if (novelsplicingp == false && splicing_iit != NULL && (donor_typeint < 0 || acceptor_typeint < 0)) {
+    /* Constrain to given introns */
+    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+      debug3(printf("\nGenomic insert: At row %d on left and %d on right\n",rL,rR));
+      if ((cloL = rL - lbandL) < 1) {
+	cloL = 1;
+      }
+      if ((chighL = rL + ubandL) > glengthL-1) {
+	chighL = glengthL-1;
+      }
+
+      if ((cloR = rR - lbandR) < 1) {
+	cloR = 1;
+      }
+      if ((chighR = rR + ubandR) > glengthR-1) {
+	chighR = glengthR-1;
+      }
+
+      /* Test indels on left and right */
+      for (cL = cloL; cL <= chighL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (left_known[cL] > 0) {
+	  scoreL = (int) matrixL[cL][rL];
+	  if (directionsL_nogap[cL][rL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (right_known[cR] > 0) {
+	      scoreR = (int) matrixR[cR][rR];
+	      if (directionsR_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+
+	      if ((score = scoreL + scoreR) > bestscore ||
+		  (score >= bestscore && jump_late_p)) {  /* Use >= for jump late */
+		bestp = false;
+		if (watsonp == true) {
+		  splicesitepos1 = leftoffset + cL;
+		  splicesitepos2 = rightoffset - cR + 1;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos1,splicesitepos2+1U,/*sign*/cdna_direction) == true) {
+		    bestp = true;
+		  }
+		} else {
+		  splicesitepos1 = (chrhigh - chroffset) - leftoffset - cL + 1;
+		  splicesitepos2 = (chrhigh - chroffset) - rightoffset + cR;
+		  if (IIT_exists_with_divno_signed(splicing_iit,splicing_divint_crosstable[chrnum],
+						   splicesitepos2,splicesitepos1+1U,/*sign*/-cdna_direction) == true) {
+		    bestp = true;
+		  }
+		}
+		if (bestp == true) {
+		  debug3(printf("At %d left to %d right, score is (%d)+(%d) = %d (bestscore)\n",
+				cL,cR,scoreL,scoreR,score));
+		  bestscore = score;
+		  *bestrL = rL;
+		  *bestrR = rR;
+		  *bestcL = cL;
+		  *bestcR = cR;
+		} else {
+		  debug3a(printf("At %d left to %d right, score is (%d)+(%d) = %d\n",
+				 cL,cR,scoreL,scoreR,score));
+		}
+	      }
+	    }
+	  }
+	}
+      }
+    }
+
+    *finalscore = (int) bestscore;
+    *best_introntype = NONINTRON;
+
+  } else {
+    left_probabilities = (double *) CALLOC(glengthL+1,sizeof(double));
+    right_probabilities = (double *) CALLOC(glengthR+1,sizeof(double));
+
+    if (watsonp == true) {
+      if (cdna_direction > 0) {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chroffset + leftoffset + cL;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_donor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chroffset + rightoffset - cR + 1;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+      } else {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chroffset + leftoffset + cL;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chroffset + rightoffset - cR + 1;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+	  }
+	}
+      }
+
+    } else {
+      if (cdna_direction > 0) {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chrhigh - leftoffset - cL + 1;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chrhigh - rightoffset + cR;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+      } else {
+	for (cL = 0; cL < glengthL - 1; cL++) {
+	  splicesitepos = chrhigh - leftoffset - cL + 1;
+	  if (left_known[cL]) {
+	    left_probabilities[cL] = 1.0;
+	  } else {
+	    left_probabilities[cL] = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+	  }
+	}
+
+	for (cR = 0; cR < glengthR - 1; cR++) {
+	  splicesitepos = chrhigh - rightoffset + cR;
+	  if (right_known[cR]) {
+	    right_probabilities[cR] = 1.0;
+	  } else {
+	    right_probabilities[cR] = Maxent_hr_donor_prob(splicesitepos,chroffset);
+	  }
+	}
+      }
+    }
+
+    /* Search using probs and without simultaneously */
+    bestscore = NEG_INFINITY_16;
+    bestprob = bestprob_trunc = 0.0;
+    for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+      debug3(printf("\nAt row %d on left and %d on right\n",rL,rR));
+      if ((cloL = rL - lbandL) < 1) {
+	cloL = 1;
+      }
+      if ((chighL = rL + ubandL) > glengthL-1) {
+	chighL = glengthL-1;
+      }
+
+      if ((cloR = rR - lbandR) < 1) {
+	cloR = 1;
+      }
+      if ((chighR = rR + ubandR) > glengthR-1) {
+	chighR = glengthR-1;
+      }
+
+#ifdef ALLOW_DUAL_INDELS
+      /* Test indels on left and right */
+      for (cL = cloL; cL <= chighL; cL++) {
+	/* The following check limits genomic inserts (horizontal) and
+	   multiple cDNA inserts (vertical). */
+	if (1) {
+	  probL = left_probabilities[cL];
+	  if (probL > PROB_CEILING) {
+	    probL_trunc = PROB_CEILING;
+	  } else if (probL < PROB_FLOOR) {
+	    probL_trunc = PROB_FLOOR;
+	  } else {
+	    probL_trunc = probL;
+	  }
+	  scoreL = (int) matrixL[cL][rL];
+	  if (directionsL_nogap[cL][rL] != DIAG) {
+	    /* Favor gaps away from intron if possible */
+	    scoreL -= 1;
+	  }
+
+	  /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+	  for (cR = cloR; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	    if (1) {
+	      probR = right_probabilities[cR];
+	      if (probR > PROB_CEILING) {
+		probR_trunc = PROB_CEILING;
+	      } else if (probR < PROB_FLOOR) {
+		probR_trunc = PROB_FLOOR;
+	      } else {
+		probR_trunc = probR;
+	      }
+	      scoreR = (int) matrixR[cR][rR];
+	      if (directionsR_nogap[cR][rR] != DIAG) {
+		/* Favor gaps away from intron if possible */
+		scoreR -= 1;
+	      }
+	      
+	      scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+				    cdna_direction,canonical_reward,finalp);
+
+	      if ((score = scoreL + scoreI + scoreR) > bestscore) {
+		debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			      cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+		bestscore = score;
+		*bestrL = rL;
+		*bestrR = rR;
+		*bestcL = cL;
+		*bestcR = cR;
+		bestprob = probL + probR;
+	      } else if (score == bestscore && probL + probR > bestprob) {
+		*bestrL = rL;
+		*bestrR = rR;
+		*bestcL = cL;
+		*bestcR = cR;
+		bestprob = probL + probR;
+	      }
+
+
+	      if (probL_trunc + probR_trunc < bestprob_trunc) {
+		debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			       cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+	      } else if (probL_trunc + probR_trunc == bestprob_trunc) {
+		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			      cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+		if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+		  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+		  bestprob_trunc = probL_trunc + probR_trunc;
+		  bestcL_with_prob = cL;
+		  bestcR_with_prob = cR;
+		  bestrL_with_prob = rL;
+		  bestrR_with_prob = rR;
+		  bestscore_with_prob = scoreL + scoreI + scoreR;
+		}
+
+	      } else {
+		/* probL_trunc + probR_trunc > bestprob_trunc */
+		debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			      cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+
+		debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+		bestprob_trunc = probL_trunc + probR_trunc;
+		bestcL_with_prob = cL;
+		bestcR_with_prob = cR;
+		bestrL_with_prob = rL;
+		bestrR_with_prob = rR;
+		bestscore_with_prob = scoreL + scoreI + scoreR;
+	      }
+	    }
+	  }
+	}
+      }
+#else
+      /* Test indel on right */
+      cL = rL;
+      probL = left_probabilities[cL];
+      if (probL > PROB_CEILING) {
+	probL_trunc = PROB_CEILING;
+      } else if (probL < PROB_FLOOR) {
+	probL_trunc = PROB_FLOOR;
+      } else {
+	probL_trunc = probL;
+      }
+      scoreL = (int) matrixL[cL][rL];
+      if (directionsL_nogap[cL][rL] != DIAG) {
+	/* Favor gaps away from intron if possible */
+	scoreL -= 1;
+      }
+
+      /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+      for (cR = cloR; cR <= chighR && cR < rightoffset-leftoffset-cL; cR++) {
+	probR = right_probabilities[cR];
+	if (probR > PROB_CEILING) {
+	  probR_trunc = PROB_CEILING;
+	} else if (probR < PROB_FLOOR) {
+	  probR_trunc = PROB_FLOOR;
+	} else {
+	  probR_trunc = probR;
+	}
+	scoreR = (int) matrixR[cR][rR];
+	if (directionsR_nogap[cR][rR] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreR -= 1;
+	}
+	      
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+	
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+
+      /* Test indel on left */
+      cR = rR;
+      probR = right_probabilities[cR];
+      if (probR > PROB_CEILING) {
+	probR_trunc = PROB_CEILING;
+      } else if (probR < PROB_FLOOR) {
+	probR_trunc = PROB_FLOOR;
+      } else {
+	probR_trunc = probR;
+      }
+      scoreR = (int) matrixR[cR][rR];
+      if (directionsR_nogap[cR][rR] != DIAG) {
+	/* Favor gaps away from intron if possible */
+	scoreR -= 1;
+      }
+
+      /* Disallow leftoffset + cL >= rightoffset - cR, or cR >= rightoffset - leftoffset - cL */
+      for (cL = cloL; cL <= chighL && cL < rightoffset-leftoffset-cR; cL++) {
+	probL = left_probabilities[cL];
+	if (probL > PROB_CEILING) {
+	  probL_trunc = PROB_CEILING;
+	} else if (probL < PROB_FLOOR) {
+	  probL_trunc = PROB_FLOOR;
+	} else {
+	  probL_trunc = probL;
+	}
+	scoreL = (int) matrixL[cL][rL];
+	if (directionsL_nogap[cL][rL] != DIAG) {
+	  /* Favor gaps away from intron if possible */
+	  scoreL -= 1;
+	}
+
+	scoreI = intron_score(&introntype,leftdi[cL],rightdi[cR],
+			      cdna_direction,canonical_reward,finalp);
+	
+	if ((score = scoreL + scoreI + scoreR) > bestscore) {
+	  debug3(printf("No prob: At %d left to %d right, score is (%d)+(%d)+(%d) = %d (bestscore)\n",
+			cL,cR,scoreL,scoreI,scoreR,scoreL+scoreI+scoreR));
+	  bestscore = score;
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	} else if (score == bestscore && probL + probR > bestprob) {
+	  *bestrL = rL;
+	  *bestrR = rR;
+	  *bestcL = cL;
+	  *bestcR = cR;
+	  bestprob = probL + probR;
+	}
+
+	if (probL_trunc + probR_trunc < bestprob_trunc) {
+	  debug3a(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			 cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	} else if (probL_trunc + probR_trunc == bestprob_trunc) {
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  if (scoreL + scoreI + scoreR > bestscore_with_prob) {
+	    debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	    bestprob_trunc = probL_trunc + probR_trunc;
+	    bestcL_with_prob = cL;
+	    bestcR_with_prob = cR;
+	    bestrL_with_prob = rL;
+	    bestrR_with_prob = rR;
+	    bestscore_with_prob = scoreL + scoreI + scoreR;
+	  }
+
+	} else {
+	  /* probL_trunc + probR_trunc > bestprob_trunc */
+	  debug3(printf("At %d left to %d right, prob is %f + %f = %f\n",
+			cL,cR,probL_trunc,probR_trunc,probL_trunc+probR_trunc));
+	  
+	  debug3(printf(" (bestscore %d)\n",scoreL+scoreI+scoreR));
+	  bestprob_trunc = probL_trunc + probR_trunc;
+	  bestcL_with_prob = cL;
+	  bestcR_with_prob = cR;
+	  bestrL_with_prob = rL;
+	  bestrR_with_prob = rR;
+	  bestscore_with_prob = scoreL + scoreI + scoreR;
+	}
+      }
+#endif
+
+    }
+
+    debug(printf("bestscore %d (bestprob %f) vs bestscore_with_prob %d (bestprob_trunc %f)\n",
+		 bestscore,bestprob,bestscore_with_prob,bestprob_trunc));
+    if (left_probabilities[bestcL_with_prob] < PROB_CEILING || right_probabilities[bestcR_with_prob] < PROB_CEILING) {
+      /* Use score without prob */
+    } else {
+      if (defect_rate < DEFECT_HIGHQ) {
+	if (bestscore_with_prob > bestscore - 15) {
+	  *bestcL = bestcL_with_prob;
+	  *bestcR = bestcR_with_prob;
+	  *bestrL = bestrL_with_prob;
+	  *bestrR = bestrR_with_prob;
+	  bestscore = bestscore_with_prob;
+	}
+
+      } else if (defect_rate < DEFECT_MEDQ) {
+	if (bestscore_with_prob > bestscore - 25) {
+	  *bestcL = bestcL_with_prob;
+	  *bestcR = bestcR_with_prob;
+	  *bestrL = bestrL_with_prob;
+	  *bestrR = bestrR_with_prob;
+	  bestscore = bestscore_with_prob;
+	}
+
+      } else {
+	*bestcL = bestcL_with_prob;
+	*bestcR = bestcR_with_prob;
+	*bestrL = bestrL_with_prob;
+	*bestrR = bestrR_with_prob;
+	bestscore = bestscore_with_prob;
+      }
+    }
+
+    scoreI = intron_score(&introntype,leftdi[*bestcL],rightdi[*bestcR],
+			  cdna_direction,canonical_reward,finalp);
+
+    if (halfp == true) {
+      *finalscore = (int) (bestscore - scoreI/2);
+    } else {
+      *finalscore = (int) bestscore;
+    }
+
+    FREE(left_probabilities);
+    FREE(right_probabilities);
+  }
+
+
+  /* Determine if result meets given constraints */
+  if (*finalscore < 0) {
+    result = false;
+  } else if (novelsplicingp == true) {
+    result = true;
+  } else if (splicing_iit == NULL) {
+    result = true;
+  } else if (donor_typeint >= 0 && acceptor_typeint >= 0) {
+    /* If novelsplicingp is false and using splicing at splice site level, require sites to be known */
+    if (left_known[*bestcL] == 0 || right_known[*bestcR] == 0) {
+      debug(printf("Novel splicing not allowed, so bridge_intron_gap returning false\n"));
+      result = false;
+    } else {
+      result = true;
+    }
+  } else {
+    /* If novelsplicingp is false and using splicing at splice site level, result was already constrained */
+    result = true;
+  }
+
+
+  if (/*finalp == true &&*/ result == true) {
+    get_splicesite_probs(&(*left_prob),&(*right_prob),*bestcL,*bestcR,
+			 left_known,right_known,leftoffset,rightoffset,chroffset,chrhigh,
+			 cdna_direction,watsonp);
+  }
+
+  debug3(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
+		*finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
+  debug(printf("Returning final score of %d at (%d,%d) left to (%d,%d) right, with probs %f and %f\n",
+	       *finalscore,*bestrL,*bestcL,*bestrR,*bestcR,*left_prob,*right_prob));
+
+  FREE(right_known);
+  FREE(left_known);
+
+  FREE(rightdi);
+  FREE(leftdi);
+
+  return result;
+}
+#endif
+
+
+static List_T
+genome_gap_simple (int *finalscore, int *best_introntype, int *new_leftgenomepos, int *new_rightgenomepos,
+		   double *left_prob, double *right_prob, int *exonhead, int *nmatches, int *nmismatches,
+		   char *rsequence, char *rsequenceuc, char *rev_rsequence, char *rev_rsequenceuc, int rlength, 
+		   char *gsequenceL, char *gsequenceL_alt, char *rev_gsequenceR, char *rev_gsequenceR_alt,
+		   int roffset, int rev_roffset, int leftoffset, int rightoffset,
+		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Pairpool_T pairpool,
+		   int mismatchtype, int canonical_reward,
+		   int cdna_direction, bool watsonp, int dynprogindex, bool halfp) {
+  List_T pairs = NULL;
+  Pair_T gappair;
+  bool result;
+  int bestrL, bestrR, rL, rR, r;
+  int querycoord, genomecoord;
+  int na1, na2, na2_alt, c1, c1_uc, c2, c2_alt;
+  char left1, left1_alt, left2, left2_alt, right2, right2_alt, right1, right1_alt;
+  int bestscore = 0, bestscoreI = 0, scoreL, scoreI, scoreR, pairscore, score;
+  int leftdi, rightdi;
+  int *left_known, *right_known;
+  int introntype;
+  Pairdistance_T **pairdistance_array_type;
+
+  debug(printf("Starting genome_gap_simple with cdna_direction %d and watsonp %d\n",cdna_direction,watsonp));
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+
+  left_known = (int *) CALLOC(rlength+1,sizeof(int));
+  right_known = (int *) CALLOC(rlength+1,sizeof(int));
+  get_known_splicesites(left_known,right_known,/*glengthL*/rlength,/*glengthR*/rlength,
+			leftoffset,rightoffset,
+			cdna_direction,watsonp,chrnum,chroffset,chrhigh);
+
+  scoreR = 0;
+  for (rR = 1; rR < rlength; rR++) {
+    na1 = rev_rsequenceuc[1-rR];
+    na2 = rev_gsequenceR[1-rR];
+    na2_alt = rev_gsequenceR_alt[1-rR];
+    pairscore = pairdistance_array_type[na1][na2];
+    if ((score = pairdistance_array_type[na1][na2_alt]) > pairscore) {
+      pairscore = score;
+    }
+    scoreR += pairscore;
+  }
+
+  scoreL = 0;
+  for (rL = 1, rR = rlength-1; rL < rlength; rL++, rR--) {
+    na1 = rsequenceuc[rL-1];
+    na2 = gsequenceL[rL-1];
+    na2_alt = gsequenceL_alt[rL-1];
+    pairscore = pairdistance_array_type[na1][na2];
+    if ((score = pairdistance_array_type[na1][na2_alt]) > pairscore) {
+      pairscore = score;
+    }
+    scoreL += pairscore;
+
+    /* Read dinucleotides */
+    left1 = gsequenceL[rL];
+    left1_alt = gsequenceL_alt[rL];
+    left2 = gsequenceL[rL+1];
+    left2_alt = gsequenceL_alt[rL+1];
+
+    if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi = LEFT_GT;
+    } else if ((left1 == 'G' || left1_alt == 'G') && (left2 == 'C' || left2_alt == 'C')) {
+      leftdi = LEFT_GC;
+    } else if ((left1 == 'A' || left1_alt == 'A') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi = LEFT_AT;
+#ifndef PMAP
+    } else if ((left1 == 'C' || left1_alt == 'C') && (left2 == 'T' || left2_alt == 'T')) {
+      leftdi = LEFT_CT;
+#endif
+    } else {
+      leftdi = 0x00;
+    }
+
+    right2 = rev_gsequenceR[-rR-1];
+    right2_alt = rev_gsequenceR_alt[-rR-1];
+    right1 = rev_gsequenceR[-rR];
+    right1_alt = rev_gsequenceR_alt[-rR];
+    if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'G' || right1_alt == 'G')) {
+      rightdi = RIGHT_AG;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi = RIGHT_AC;
+#ifndef PMAP
+    } else if ((right2 == 'G' || right2_alt == 'G') && (right1 == 'C' || right1_alt == 'C')) {
+      rightdi = RIGHT_GC;
+    } else if ((right2 == 'A' || right2_alt == 'A') && (right1 == 'T' || right1_alt == 'T')) {
+      rightdi = RIGHT_AT;
+#endif
+    } else {
+      rightdi = 0x00;
+    }
+
+    scoreI = intron_score(&introntype,leftdi,rightdi,cdna_direction,canonical_reward,/*finalp*/false);
+    if ((introntype != NONINTRON || left_known[rL] > 0 || right_known[rR] > 0) &&
+	(score = scoreL + left_known[rL] + scoreI + right_known[rR] + scoreR) >= bestscore) {  /* Use >= for jump late */
+      debug(printf("At %d left (%c%c) to %d right (%c%c), score is (%d)+(%d)+(%d)+(%d)+(%d) = %d (bestscore)\n",
+		   rL,left1,left2,rR,right2,right1,scoreL,left_known[rL],scoreI,right_known[rR],scoreR,
+		   scoreL+left_known[rL]+scoreI+right_known[rR]+scoreR));
+      bestscore = score;
+      bestscoreI = scoreI;
+      bestrL = /* *bestcL = */ rL;
+      bestrR = /* *bestcR = */ rR;
+      *best_introntype = introntype;
+    } else {
+      debug(printf("At %d left (%c%c) to %d right (%c%c), score is (%d)+(%d)+(%d)+(%d)+(%d) = %d\n",
+		   rL,left1,left2,rR,right2,right1,scoreL,left_known[rL],scoreI,right_known[rR],scoreR,
+		   scoreL+left_known[rL]+scoreI+right_known[rR]+scoreR));
+    }
+
+    /* Subtract pairscore from cumulative scoreR */
+    na1 = rev_rsequenceuc[1-rR];
+    na2 = rev_gsequenceR[1-rR];
+    na2_alt = rev_gsequenceR_alt[1-rR];
+    pairscore = pairdistance_array_type[na1][na2];
+    if ((score = pairdistance_array_type[na1][na2_alt]) > pairscore) {
+      pairscore = score;
+    }
+    scoreR -= pairscore;
+  }
+
+  if (halfp == true) {
+    *finalscore = (int) (bestscore - bestscoreI/2);
+  } else {
+    *finalscore = (int) bestscore;
+  }
+
+  if (*finalscore <= 0) {
+    result = false;
+  } else if (novelsplicingp == true) {
+    result = true;
+  } else if (splicing_iit == NULL) {
+    result = true;
+  } else if (donor_typeint >= 0 && acceptor_typeint >= 0) {
+    /* If novelsplicingp is false and using splicing at splice site level, require sites to be known */
+    if (left_known[bestrL] == 0 || right_known[bestrR] == 0) {
+      debug(printf("Novel splicing not allowed, so bridge_intron_gap returning false\n"));
+      result = false;
+    } else {
+      result = true;
+    }
+  } else {
+    /* If novelsplicingp is false and using splicing at splice site level, result was already constrained */
+    result = true;
+  }
+
+  if (result == true) {
+    get_splicesite_probs(&(*left_prob),&(*right_prob),bestrL,bestrR,
+			 left_known,right_known,leftoffset,rightoffset,
+			 chroffset,chrhigh,cdna_direction,watsonp);
+    debug(printf("Probabilities are %f and %f\n",*left_prob,*right_prob));
+    if (*left_prob < 0.90 || *right_prob < 0.90) {
+      result = false;
+    }
+  }
+
+  if (result == true) {
+    *nmatches = *nmismatches = 0;
+
+    /* Push from left to right, so we don't need to do List_reverse() later */
+    for (r = 1; r <= bestrL; r++) {
+      querycoord = genomecoord = r-1;
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequenceL[genomecoord];
+      c2_alt = gsequenceL_alt[genomecoord];
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     leftoffset,genomecoord,chroffset,chrhigh,watsonp));
+
+      } else if (c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,/*c*/r,roffset+querycoord,leftoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,roffset+querycoord,leftoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+	
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,/*c*/r,roffset+querycoord,leftoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,roffset+querycoord,leftoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+	
+      } else {
+	debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,/*c*/r,roffset+querycoord,leftoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,roffset+querycoord,leftoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+    }
+
+    debug(printf("Pushing a gap\n"));
+    *new_leftgenomepos = leftoffset+(bestrL-1);
+    *new_rightgenomepos = *exonhead = rightoffset-(bestrR-1);
+#ifndef NOGAPHOLDER
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/(*new_rightgenomepos)-(*new_leftgenomepos)-1,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+    gappair = (Pair_T) pairs->first;
+    gappair->introntype = introntype;
+    gappair->donor_prob = *left_prob;
+    gappair->acceptor_prob = *right_prob;
+#endif
+
+    for (r = bestrR; r > 0; r--) {
+      querycoord = genomecoord = 1-r;
+
+      c1 = rev_rsequence[querycoord];
+      c1_uc = rev_rsequenceuc[querycoord];
+      c2 = rev_gsequenceR[genomecoord];
+      c2_alt = rev_gsequenceR_alt[genomecoord];
+      
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     rightoffset,genomecoord,chroffset,chrhigh,watsonp));
+
+      } else if (c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,/*c*/r,rev_roffset+querycoord,rightoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,rev_roffset+querycoord,rightoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+	
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,/*c*/r,rev_roffset+querycoord,rightoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,rev_roffset+querycoord,rightoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+	
+      } else {
+	debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,/*c*/r,rev_roffset+querycoord,rightoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,rev_roffset+querycoord,rightoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+    }
+
+  }
+
+  FREE(right_known);
+  FREE(left_known);
+
+  return pairs;
+}
+
+
+
+
+/* A genome gap is usually an intron.  Sequence 2L and 2R represent
+   the two genomic ends of the intron. */
+List_T
+Dynprog_genome_gap (int *dynprogindex, int *finalscore, int *new_leftgenomepos, int *new_rightgenomepos,
+		    double *left_prob, double *right_prob,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels, int *exonhead, int *introntype,
+		    T dynprogL, T dynprogR,
+		    char *rsequence, char *rsequenceuc, int rlength, int glengthL, int glengthR, 
+		    int roffset, int goffsetL, int rev_goffsetR, 
+		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool, int extraband_paired,
+		    double defect_rate, int maxpeelback, bool halfp, bool finalp,
+		    bool splicingp) {
+  List_T pairs = NULL;
+  Pair_T gappair;
+  char *gsequenceL, *gsequenceL_alt, *rev_gsequenceR, *rev_gsequenceR_alt;
+  char *rev_rsequence, *rev_rsequenceuc;
+  Mismatchtype_T mismatchtype;
+  int canonical_reward;
+  int rev_roffset, bestrL, bestrR, bestcL, bestcR;
+  int lbandL, ubandL, lbandR, ubandR;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  Score8_T **matrix8L_upper, **matrix8L_lower, **matrix8R_upper, **matrix8R_lower;
+  Direction8_T **directions8L_upper_nogap, **directions8L_upper_Egap,
+    **directions8L_lower_nogap, **directions8L_lower_Egap,
+    **directions8R_upper_nogap, **directions8R_upper_Egap,
+    **directions8R_lower_nogap, **directions8R_lower_Egap;
+  bool use8p;
+
+  Score16_T **matrix16L_upper, **matrix16L_lower, **matrix16R_upper, **matrix16R_lower;
+  Direction16_T **directions16L_upper_nogap, **directions16L_upper_Egap,
+    **directions16L_lower_nogap, **directions16L_lower_Egap,
+    **directions16R_upper_nogap, **directions16R_upper_Egap,
+    **directions16R_lower_nogap, **directions16R_lower_Egap;
+#else
+  Score32_T **matrixL, **matrixR;
+  Direction32_T **directionsL_nogap, **directionsL_Egap, **directionsL_Fgap,
+    **directionsR_nogap, **directionsR_Egap, **directionsR_Fgap;
+#endif
+  /* int queryjump, genomejump; */
+
+  debug(printf("\n"));
+  debug(printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A'));
+  debug(printf("Aligning genome gap with cdna_direction %d, defect_rate %f\n",cdna_direction,defect_rate));
+#ifdef EXTRACT_GENOMICSEG
+  debug(printf("At genomic offset %d-%d, %.*s\n",goffsetL,goffsetL+glengthL-1,glengthL,gsequenceL));
+  debug(printf("At genomic offset %d-%d, %.*s\n",rev_goffsetR-glengthR+1,rev_goffsetR,glengthR,&(rev_gsequenceR[-glengthR+1])));
+#endif
+  debug(printf("\n"));
+
+  /* ?check if offsets are too close.  But this eliminates a segment
+     of the cDNA.  Should check in stage 3, and do single gap instead. */
+  /*
+  if (goffsetL+glengthL-1 >= rev_goffsetR-glengthR+1) {
+    debug(printf("Bounds don't make sense\n"));
+    *finalscore = NEG_INFINITY_16;
+    return NULL;
+  }
+  */
+
+  *nmatches = *nmismatches = *nopens = *nindels = 0;
+  *left_prob = *right_prob = 0.0;
+  *introntype = NONINTRON;
+  if (rlength <= 1) {
+    *finalscore = NEG_INFINITY_32;
+    return (List_T) NULL;
+  }
+
+  if (defect_rate < DEFECT_HIGHQ) {
+    mismatchtype = HIGHQ;
+    if (rlength > maxpeelback * 4) {
+      debug(printf("rlength %d is greater than maxpeelback %d * 4, so using single gap penalties\n",
+		   rlength,maxpeelback));
+      open = SINGLE_OPEN_HIGHQ;
+      extend = SINGLE_EXTEND_HIGHQ;
+    } else {
+      open = PAIRED_OPEN_HIGHQ;
+      extend = PAIRED_EXTEND_HIGHQ;
+    }
+    if (splicingp == false) {
+      canonical_reward = 0;
+    } else if (finalp == true) {
+      canonical_reward = FINAL_CANONICAL_INTRON_HIGHQ;
+    } else {
+      canonical_reward = CANONICAL_INTRON_HIGHQ;
+    }
+  } else if (defect_rate < DEFECT_MEDQ) {
+    mismatchtype = MEDQ;
+    if (rlength > maxpeelback * 4) {
+      debug(printf("rlength %d is greater than maxpeelback %d * 4, so using single gap penalties\n",
+		   rlength,maxpeelback));
+      open = SINGLE_OPEN_MEDQ;
+      extend = SINGLE_EXTEND_MEDQ;
+    } else {
+      open = PAIRED_OPEN_MEDQ;
+      extend = PAIRED_EXTEND_MEDQ;
+    }
+    if (splicingp == false) {
+      canonical_reward = 0;
+    } else if (finalp == true) {
+      canonical_reward = FINAL_CANONICAL_INTRON_MEDQ;
+    } else {
+      canonical_reward = CANONICAL_INTRON_MEDQ;
+    }
+  } else {
+    mismatchtype = LOWQ;
+    if (rlength > maxpeelback * 4) {
+      debug(printf("rlength %d is greater than maxpeelback %d * 4, so using single gap penalties\n",
+		   rlength,maxpeelback));
+      open = SINGLE_OPEN_LOWQ;
+      extend = SINGLE_EXTEND_LOWQ;
+    } else {
+      open = PAIRED_OPEN_LOWQ;
+      extend = PAIRED_EXTEND_LOWQ;
+    }
+    if (splicingp == false) {
+      canonical_reward = 0;
+    } else if (finalp == true) {
+      canonical_reward = FINAL_CANONICAL_INTRON_LOWQ;
+    } else {
+      canonical_reward = CANONICAL_INTRON_LOWQ;
+    }
+  }
+
+  if (rlength > dynprogL->max_rlength || glengthL > dynprogL->max_glength) {
+    debug(printf("rlength %d or glengthL %d is too long.  Returning NULL\n",rlength,glengthL));
+    *new_leftgenomepos = goffsetL-1;
+    *new_rightgenomepos = rev_goffsetR+1;
+    *exonhead = rev_roffset = roffset+rlength-1;
+#ifndef NOGAPHOLDER
+    /*
+    queryjump = rev_roffset - roffset + 1;
+    genomejump = rev_goffsetR - goffsetL + 1;
+    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,false);
+    */
+#endif
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    *finalscore = NEG_INFINITY_32;
+    *introntype = NONINTRON;
+    return (List_T) NULL;
+  }
+
+  if (rlength > dynprogR->max_rlength || glengthR > dynprogR->max_glength) {
+    debug(printf("rlength %d or glengthR %d is too long.  Returning NULL\n",rlength,glengthR));
+    *new_leftgenomepos = goffsetL-1;
+    *new_rightgenomepos = rev_goffsetR+1;
+    *exonhead = rev_roffset = roffset+rlength-1;
+#ifndef NOGAPHOLDER
+    /*
+    queryjump = rev_roffset - roffset + 1;
+    genomejump = rev_goffsetR - goffsetL + 1;
+    pairs = Pairpool_push_gapholder(NULL,pairpool,queryjump,genomejump,false);
+    */
+#endif
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    *finalscore = NEG_INFINITY_32;
+    *introntype = NONINTRON;
+    return (List_T) NULL;
+  }
+
+  rev_rsequence = &(rsequence[rlength-1]);
+  rev_rsequenceuc = &(rsequenceuc[rlength-1]);
+  debug(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
+
+  rev_roffset = roffset+rlength-1;
+
+  if (watsonp) {
+    gsequenceL = Genome_get_segment_blocks_right(&gsequenceL_alt,/*left*/chroffset+goffsetL,glengthL,chrhigh,/*revcomp*/false);
+    rev_gsequenceR = Genome_get_segment_blocks_left(&rev_gsequenceR_alt,/*left*/chroffset+rev_goffsetR+1,glengthR,chroffset,/*revcomp*/false);
+  } else {
+    gsequenceL = Genome_get_segment_blocks_left(&gsequenceL_alt,/*left*/chrhigh-goffsetL+1,glengthL,chroffset,/*revcomp*/true);
+    rev_gsequenceR = Genome_get_segment_blocks_right(&rev_gsequenceR_alt,/*left*/chrhigh-rev_goffsetR,glengthR,chrhigh,/*revcomp*/true);
+  }
+  if (gsequenceL == NULL) {
+    if (rev_gsequenceR_alt != rev_gsequenceR) {
+      FREE(rev_gsequenceR_alt);
+    }
+    FREE(rev_gsequenceR);
+    *finalscore = NEG_INFINITY_32;
+    return (List_T) NULL;
+  } else if (rev_gsequenceR == NULL) {
+    if (gsequenceL_alt != gsequenceL) {
+      FREE(gsequenceL_alt);
+    }
+    FREE(gsequenceL);
+    *finalscore = NEG_INFINITY_32;
+    return (List_T) NULL;
+  }
+
+
+  debug(printf("At genomic offset %d-%d, %.*s\n",goffsetL,goffsetL+glengthL-1,glengthL,gsequenceL));
+  debug(printf("At genomic offset %d-%d, %.*s\n",rev_goffsetR-glengthR+1,rev_goffsetR,glengthR,rev_gsequenceR));
+
+  /* In low-identity alignments, the simple procedure can
+     lead to multiple mismatches, which will invalidate the intron
+     because of its neighborhood */
+  if (finalp == false && defect_rate < DEFECT_MEDQ &&
+      (pairs = genome_gap_simple(&(*finalscore),&(*introntype),&(*new_leftgenomepos),&(*new_rightgenomepos),
+				 &(*left_prob),&(*right_prob),&(*exonhead),&(*nmatches),&(*nmismatches),
+				 rsequence,rsequenceuc,rev_rsequence,rev_rsequenceuc,
+				 rlength,gsequenceL,gsequenceL_alt,
+				 &(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+				 roffset,rev_roffset,goffsetL,rev_goffsetR,
+				 chrnum,chroffset,chrhigh,pairpool,mismatchtype,canonical_reward,
+				 cdna_direction,watsonp,*dynprogindex,halfp)) != NULL) {
+    debug(printf("simple procedure worked\n"));
+
+    if (gsequenceL_alt != gsequenceL) {
+      FREE(gsequenceL_alt);
+      FREE(rev_gsequenceR_alt);
+    }
+    FREE(gsequenceL);
+    FREE(rev_gsequenceR);
+
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return pairs;		/* Already reversed */
+  }
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+  if (rlength <= SIMD_MAXLENGTH_EPI8 || (glengthL <= SIMD_MAXLENGTH_EPI8 && glengthR <= SIMD_MAXLENGTH_EPI8)) {
+    use8p = true;
+  } else {
+    use8p = false;
+  }
+#endif
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  if (use8p == true) {
+    Dynprog_compute_bands(&lbandL,&ubandL,rlength,glengthL,extraband_paired,/*widebandp*/true);
+    matrix8L_upper = Dynprog_simd_8_upper(&directions8L_upper_nogap,&directions8L_upper_Egap,dynprogL,
+					  rsequence,gsequenceL,gsequenceL_alt,rlength,glengthL,
+#ifdef DEBUG14
+					  goffsetL,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,ubandL,jump_late_p,/*revp*/false);
+
+    matrix8L_lower = Dynprog_simd_8_lower(&directions8L_lower_nogap,&directions8L_lower_Egap,dynprogL,
+					  rsequence,gsequenceL,gsequenceL_alt,rlength,glengthL,
+#ifdef DEBUG14
+					  goffsetL,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,lbandL,jump_late_p,/*revp*/false);
+    
+
+    Dynprog_compute_bands(&lbandR,&ubandR,rlength,glengthR,extraband_paired,/*widebandp*/true);
+    matrix8R_upper = Dynprog_simd_8_upper(&directions8R_upper_nogap,&directions8R_upper_Egap,dynprogR,
+					  rev_rsequence,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					  rlength,glengthR,
+#ifdef DEBUG14
+					  rev_goffsetR,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,ubandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    matrix8R_lower = Dynprog_simd_8_lower(&directions8R_lower_nogap,&directions8R_lower_Egap,dynprogR,
+					  rev_rsequence,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					  rlength,glengthR,
+#ifdef DEBUG14
+					  rev_goffsetR,chroffset,chrhigh,watsonp,
+#endif
+					  mismatchtype,open,extend,lbandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    if (bridge_intron_gap_8_ud(&(*finalscore),&bestrL,&bestrR,&bestcL,&bestcR,
+			       &(*introntype),&(*left_prob),&(*right_prob),
+			       matrix8L_upper,matrix8L_lower,matrix8R_upper,matrix8R_lower,
+			       directions8L_upper_nogap,directions8L_lower_nogap,
+			       directions8R_upper_nogap,directions8R_lower_nogap,
+			       gsequenceL,gsequenceL_alt,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+			       goffsetL,rev_goffsetR,rlength,glengthL,glengthR,
+			       cdna_direction,watsonp,lbandL,ubandL,lbandR,ubandR,defect_rate,
+			       canonical_reward,goffsetL,rev_goffsetR,
+			       chrnum,chroffset,chrhigh,halfp,finalp,jump_late_p) == false) {
+      if (gsequenceL_alt != gsequenceL) {
+	FREE(gsequenceL_alt);
+	FREE(rev_gsequenceR_alt);
+      }
+      FREE(gsequenceL);
+      FREE(rev_gsequenceR);
+
+      return (List_T) NULL;
+
+    } else {
+      *new_leftgenomepos = goffsetL+(bestcL-1);
+      *new_rightgenomepos = rev_goffsetR-(bestcR-1);
+      debug(printf("New leftgenomepos = %d, New rightgenomepos = %d\n",*new_leftgenomepos,*new_rightgenomepos));
+
+      *exonhead = rev_roffset-(bestrR-1);
+
+      if (bestcR >= bestrR) {
+	pairs = Dynprog_traceback_8_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					  directions8R_upper_nogap,directions8R_upper_Egap,
+					  bestrR,bestcR,rev_rsequence,rev_rsequenceuc,
+					  &(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					  rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
+					  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      } else {
+	pairs = Dynprog_traceback_8_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					  directions8R_lower_nogap,directions8R_lower_Egap,
+					  bestrR,bestcR,rev_rsequence,rev_rsequenceuc,
+					  &(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					  rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
+					  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      }
+      pairs = List_reverse(pairs);
+
+      /* queryjump = (rev_roffset-bestrR) - (roffset+bestrL) + 1; */
+      /* genomejump = (rev_goffsetR-bestcR) - (goffsetL+bestcL) + 1; */
+      /* No need to revise queryjump or genomejump, because the above
+	 coordinates are internal to the gap. */
+
+      debug(printf("Pushing a gap with genomejump %d, introntype %s, prob %f and %f\n",
+		   (*new_rightgenomepos)-(*new_leftgenomepos)-1,
+		   Intron_type_string(*introntype),*left_prob,*right_prob));
+#ifndef NOGAPHOLDER
+      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/(rev_roffset-bestrR) - (roffset+bestrL) + 1,
+				      /*genomejump*/(*new_rightgenomepos)-(*new_leftgenomepos)-1,
+				      /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      gappair = (Pair_T) pairs->first;
+      gappair->introntype = *introntype;
+      gappair->donor_prob = *left_prob;
+      gappair->acceptor_prob = *right_prob;
+#endif
+
+      if (bestcL >= bestrL) {
+	pairs = Dynprog_traceback_8_upper(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					  directions8L_upper_nogap,directions8L_upper_Egap,
+					  bestrL,bestcL,rsequence,rsequenceuc,gsequenceL,gsequenceL_alt,
+					  roffset,goffsetL,pairpool,/*revp*/false,
+					  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      } else {
+	pairs = Dynprog_traceback_8_lower(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					  directions8L_lower_nogap,directions8L_lower_Egap,
+					  bestrL,bestcL,rsequence,rsequenceuc,gsequenceL,gsequenceL_alt,
+					  roffset,goffsetL,pairpool,/*revp*/false,
+					  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      }
+
+      if (List_length(pairs) == 1) {
+	/* Only a gap inserted */
+	pairs = (List_T) NULL;
+      }
+
+      if (gsequenceL_alt != gsequenceL) {
+	FREE(gsequenceL_alt);
+	FREE(rev_gsequenceR_alt);
+      }
+      FREE(gsequenceL);
+      FREE(rev_gsequenceR);
+
+      debug(printf("End of dynprog genome gap\n"));
+
+      *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+      return List_reverse(pairs);
+    }
+
+  } else {
+    /* Use 16-mers */
+    Dynprog_compute_bands(&lbandL,&ubandL,rlength,glengthL,extraband_paired,/*widebandp*/true);
+    matrix16L_upper = Dynprog_simd_16_upper(&directions16L_upper_nogap,&directions16L_upper_Egap,dynprogL,
+					    rsequence,gsequenceL,gsequenceL_alt,rlength,glengthL,
+#ifdef DEBUG14
+					    goffsetL,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,ubandL,jump_late_p,/*revp*/false);
+
+    matrix16L_lower = Dynprog_simd_16_lower(&directions16L_lower_nogap,&directions16L_lower_Egap,dynprogL,
+					    rsequence,gsequenceL,gsequenceL_alt,rlength,glengthL,
+#ifdef DEBUG14
+					    goffsetL,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,lbandL,jump_late_p,/*revp*/false);
+
+    Dynprog_compute_bands(&lbandR,&ubandR,rlength,glengthR,extraband_paired,/*widebandp*/true);
+    matrix16R_upper = Dynprog_simd_16_upper(&directions16R_upper_nogap,&directions16R_upper_Egap,dynprogR,
+					    rev_rsequence,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					    rlength,glengthR,
+#ifdef DEBUG14
+					    rev_goffsetR,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,ubandR,/*for revp true*/!jump_late_p,/*revp*/true);
+
+    matrix16R_lower = Dynprog_simd_16_lower(&directions16R_lower_nogap,&directions16R_lower_Egap,dynprogR,
+					    rev_rsequence,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					    rlength,glengthR,
+#ifdef DEBUG14
+					    rev_goffsetR,chroffset,chrhigh,watsonp,
+#endif
+					    mismatchtype,open,extend,lbandR,/*for revp true*/!jump_late_p,/*revp*/true);
+    
+    if (bridge_intron_gap_16_ud(&(*finalscore),&bestrL,&bestrR,&bestcL,&bestcR,
+				&(*introntype),&(*left_prob),&(*right_prob),
+				matrix16L_upper,matrix16L_lower,matrix16R_upper,matrix16R_lower,
+				directions16L_upper_nogap,directions16L_lower_nogap,
+				directions16R_upper_nogap,directions16R_lower_nogap,
+				gsequenceL,gsequenceL_alt,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+				goffsetL,rev_goffsetR,rlength,glengthL,glengthR,
+				cdna_direction,watsonp,lbandL,ubandL,lbandR,ubandR,defect_rate,
+				canonical_reward,goffsetL,rev_goffsetR,
+				chrnum,chroffset,chrhigh,halfp,finalp,jump_late_p) == false) {
+
+      if (gsequenceL_alt != gsequenceL) {
+	FREE(gsequenceL_alt);
+	FREE(rev_gsequenceR_alt);
+      }
+      FREE(gsequenceL);
+      FREE(rev_gsequenceR);
+
+      return (List_T) NULL;
+
+    } else {
+      *new_leftgenomepos = goffsetL+(bestcL-1);
+      *new_rightgenomepos = rev_goffsetR-(bestcR-1);
+      debug(printf("New leftgenomepos = %d, New rightgenomepos = %d\n",*new_leftgenomepos,*new_rightgenomepos));
+
+      *exonhead = rev_roffset-(bestrR-1);
+
+      if (bestcR >= bestrR) {
+	pairs = Dynprog_traceback_16_upper(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					   directions16R_upper_nogap,directions16R_upper_Egap,
+					   bestrR,bestcR,rev_rsequence,rev_rsequenceuc,
+					   &(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					   rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
+					   chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      } else {
+	pairs = Dynprog_traceback_16_lower(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					   directions16R_lower_nogap,directions16R_lower_Egap,
+					   bestrR,bestcR,rev_rsequence,rev_rsequenceuc,
+					   &(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+					   rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
+					   chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      }
+      pairs = List_reverse(pairs);
+
+      /* queryjump = (rev_roffset-bestrR) - (roffset+bestrL) + 1; */
+      /* genomejump = (rev_goffsetR-bestcR) - (goffsetL+bestcL) + 1; */
+      /* No need to revise queryjump or genomejump, because the above
+	 coordinates are internal to the gap. */
+
+      debug(printf("Pushing a gap with genomejump %d, introntype %s, prob %f and %f\n",
+		   (*new_rightgenomepos)-(*new_leftgenomepos)-1,
+		   Intron_type_string(*introntype),*left_prob,*right_prob));
+#ifndef NOGAPHOLDER
+      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/(rev_roffset-bestrR) - (roffset+bestrL) + 1,
+				      /*genomejump*/(*new_rightgenomepos)-(*new_leftgenomepos)-1,
+				      /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      gappair = (Pair_T) pairs->first;
+      gappair->introntype = *introntype;
+      gappair->donor_prob = *left_prob;
+      gappair->acceptor_prob = *right_prob;
+#endif
+
+      if (bestcL >= bestrL) {
+	pairs = Dynprog_traceback_16_upper(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					   directions16L_upper_nogap,directions16L_upper_Egap,
+					   bestrL,bestcL,rsequence,rsequenceuc,
+					   gsequenceL,gsequenceL_alt,roffset,goffsetL,pairpool,/*revp*/false,
+					   chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      } else {
+	pairs = Dynprog_traceback_16_lower(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+					   directions16L_lower_nogap,directions16L_lower_Egap,
+					   bestrL,bestcL,rsequence,rsequenceuc,
+					   gsequenceL,gsequenceL_alt,roffset,goffsetL,pairpool,/*revp*/false,
+					   chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+      }
+
+      if (List_length(pairs) == 1) {
+	/* Only a gap inserted */
+	pairs = (List_T) NULL;
+      }
+
+      if (gsequenceL_alt != gsequenceL) {
+	FREE(gsequenceL_alt);
+	FREE(rev_gsequenceR_alt);
+      }
+      FREE(gsequenceL);
+      FREE(rev_gsequenceR);
+
+      debug(printf("End of dynprog genome gap\n"));
+
+      *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+      return List_reverse(pairs);
+    }
+
+  }
+
+#else
+  /* Non-SIMD methods */
+  Dynprog_compute_bands(&lbandL,&ubandL,rlength,glengthL,extraband_paired,/*widebandp*/true);
+  matrixL = Dynprog_standard(&directionsL_nogap,&directionsL_Egap,&directionsL_Fgap,dynprogL,
+			     rsequence,gsequenceL,gsequenceL_alt,rlength,glengthL,
+			     goffsetL,chroffset,chrhigh,watsonp,
+			     mismatchtype,open,extend,lbandL,ubandL,
+			     jump_late_p,/*revp*/false,/*saturation*/NEG_INFINITY_INT);
+  
+  Dynprog_compute_bands(&lbandR,&ubandR,rlength,glengthR,extraband_paired,/*widebandp*/true);
+  matrixR = Dynprog_standard(&directionsR_nogap,&directionsR_Egap,&directionsR_Fgap,dynprogR,
+			     rev_rsequence,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+			     rlength,glengthR,rev_goffsetR,chroffset,chrhigh,watsonp,
+			     mismatchtype,open,extend,lbandL,ubandR,
+			     /*for revp true*/!jump_late_p,/*revp*/true,/*saturation*/NEG_INFINITY_INT);
+  
+  if (bridge_intron_gap(&(*finalscore),&bestrL,&bestrR,&bestcL,&bestcR,
+			&(*introntype),&(*left_prob),&(*right_prob),
+			matrixL,matrixR,directionsL_nogap,directionsR_nogap,
+			gsequenceL,gsequenceL_alt,&(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+			goffsetL,rev_goffsetR,rlength,glengthL,glengthR,
+			cdna_direction,watsonp,extraband_paired,defect_rate,
+			canonical_reward,goffsetL,rev_goffsetR,
+			chrnum,chroffset,chrhigh,halfp,finalp,jump_late_p) == false) {
+    if (gsequenceL_alt != gsequenceL) {
+      FREE(gsequenceL_alt);
+      FREE(rev_gsequenceR_alt);
+    }
+    FREE(gsequenceL);
+    FREE(rev_gsequenceR);
+
+    return (List_T) NULL;
+    
+  } else {
+    *new_leftgenomepos = goffsetL+(bestcL-1);
+    *new_rightgenomepos = rev_goffsetR-(bestcR-1);
+    debug(printf("New leftgenomepos = %d, New rightgenomepos = %d\n",*new_leftgenomepos,*new_rightgenomepos));
+    
+    *exonhead = rev_roffset-(bestrR-1);
+
+    pairs = Dynprog_traceback_std(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				  directionsR_nogap,directionsR_Egap,directionsR_Fgap,bestrR,bestcR,
+				  rev_rsequence,rev_rsequenceuc,
+				  &(rev_gsequenceR[glengthR-1]),&(rev_gsequenceR_alt[glengthR-1]),
+				  rev_roffset,rev_goffsetR,pairpool,/*revp*/true,
+				  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+    pairs = List_reverse(pairs);
+
+    /* queryjump = (rev_roffset-bestrR) - (roffset+bestrL) + 1; */
+    /* genomejump = (rev_goffsetR-bestcR) - (goffsetL+bestcL) + 1; */
+    /* No need to revise queryjump or genomejump, because the above
+       coordinates are internal to the gap. */
+    
+    debug(printf("Pushing a gap with genomejump %d, introntype %s, prob %f and %f\n",
+		 (*new_rightgenomepos)-(*new_leftgenomepos)-1,
+		 Intron_type_string(*introntype),*left_prob,*right_prob));
+#ifndef NOGAPHOLDER
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/(rev_roffset-bestrR) - (roffset+bestrL) + 1,
+				    /*genomejump*/(*new_rightgenomepos)-(*new_leftgenomepos)-1,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+    gappair = (Pair_T) pairs->first;
+    gappair->introntype = *introntype;
+    gappair->donor_prob = *left_prob;
+    gappair->acceptor_prob = *right_prob;
+#endif
+
+    pairs = Dynprog_traceback_std(pairs,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				  directionsL_nogap,directionsL_Egap,directionsL_Fgap,bestrL,bestcL,
+				  rsequence,rsequenceuc,
+				  gsequenceL,gsequenceL_alt,roffset,goffsetL,pairpool,/*revp*/false,
+				  chroffset,chrhigh,cdna_direction,watsonp,*dynprogindex);
+
+    if (List_length(pairs) == 1) {
+      /* Only a gap inserted */
+      pairs = (List_T) NULL;
+    }
+
+    if (gsequenceL_alt != gsequenceL) {
+      FREE(gsequenceL_alt);
+      FREE(rev_gsequenceR_alt);
+    }
+    FREE(gsequenceL);
+    FREE(rev_gsequenceR);
+
+    debug(printf("End of dynprog genome gap\n"));
+    
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return List_reverse(pairs);
+  }
+#endif
+
+}
+
+
diff --git a/src/dynprog_genome.h b/src/dynprog_genome.h
new file mode 100644
index 0000000..472417e
--- /dev/null
+++ b/src/dynprog_genome.h
@@ -0,0 +1,35 @@
+/* $Id: dynprog_genome.h 132731 2014-04-08 21:19:57Z twu $ */
+#ifndef DYNPROG_GENOME_INCLUDED
+#define DYNPROG_GENOME_INCLUDED
+
+#include "bool.h"
+#include "list.h"
+#include "pairpool.h"
+#include "chrnum.h"
+#include "iit-read.h"
+#include "types.h"
+#include "dynprog.h"
+
+#define T Dynprog_T
+
+extern void
+Dynprog_genome_setup (bool novelsplicingp_in,
+		      IIT_T splicing_iit_in, int *splicing_divint_crosstable_in,
+		      int donor_typeint_in, int acceptor_typeint_in);
+
+
+extern List_T
+Dynprog_genome_gap (int *dynprogindex, int *finalscore, int *new_leftgenomepos, int *new_rightgenomepos,
+		    double *left_prob, double *right_prob,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels, int *exonhead, int *introntype,
+		    T dynprogL, T dynprogR,
+		    char *rsequence, char *rsequenceuc, int rlength, int glengthL, int glengthR, 
+		    int roffset, int goffsetL, int rev_goffsetR, 
+		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		    int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool, int extraband_paired,
+		    double defect_rate, int maxpeelback, bool halfp, bool finalp, bool splicingp);
+
+
+#undef T
+#endif
+
diff --git a/src/dynprog_simd.c b/src/dynprog_simd.c
new file mode 100644
index 0000000..3ca7304
--- /dev/null
+++ b/src/dynprog_simd.c
@@ -0,0 +1,4928 @@
+static char rcsid[] = "$Id: dynprog_simd.c 138119 2014-06-04 20:29:09Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "dynprog_simd.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>		/* For ceil, log, pow */
+#include <ctype.h>		/* For tolower */
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+
+#include "mem.h"
+#include "comp.h"
+#include "assert.h"
+
+
+#define LAZY_INDEL 1		/* Don't advance to next coordinate on final indel, since could go over chromosome bounds. */
+
+/* Row 0 and column 0 directions */
+/* Was useful in finding a saturation bug, but can fail because of saturation */
+#ifdef CHECK1
+#define check1(x) x
+#else
+#define check1(x)
+#endif
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+/* Fgap */
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
+
+#ifdef DEBUG15
+#define debug15(x) x
+#else
+#define debug15(x)
+#endif
+
+
+
+#include "complement.h"
+#define NEG_INFINITY_DISPLAY -99
+
+
+/************************************************************************
+ *   Debugging procedures
+ ************************************************************************/
+
+#ifdef DEBUG15
+/* For debugging of SIMD procedures*/
+static void
+print_vector_8 (__m128i x, int r, int c, char *label) {
+  __m128i a[1];
+  Score8_T *s = a;
+
+  _mm_lfence();			/* Needed to print correct values */
+  _mm_store_si128(a,x);
+  printf("%d,%d %s: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
+	 r,c,label,s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9],s[10],s[11],s[12],s[13],s[14],s[15]);
+  return;
+}
+
+static void
+print_vector_16 (__m128i x, int r, int c, char *label) {
+  __m128i a[1];
+  Score16_T *s = a;
+
+  _mm_lfence();			/* Needed to print correct values */
+  _mm_store_si128(a,x);
+  printf("%d,%d %s: %d %d %d %d %d %d %d %d\n",r,c,label,s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7]);
+  return;
+}
+#endif
+
+
+#if defined(DEBUG14) || defined(DEBUG2)
+static void
+Matrix8_print (Score8_T **matrix, int rlength, int glength, char *rsequence,
+	       char *gsequence, char *gsequencealt,
+	       bool revp, int lband, int uband) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d ",j);
+  }
+  printf("\n");
+
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c ",' ');
+	} else {
+	  printf("  %c ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    for (j = 0; j <= glength; ++j) {
+      if (j < i - lband) {
+	printf("  . ");
+      } else if (j > i + uband) {
+	printf("  . ");
+      } else if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
+	printf("%3d ",NEG_INFINITY_DISPLAY);
+      } else {
+	printf("%3d ",matrix[j][i]);
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+static void
+Matrix8_print_ud (Score8_T **matrix, int rlength, int glength, char *rsequence,
+		  char *gsequence, char *gsequencealt,
+		  bool revp, int band, bool upperp) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c ",' ');
+	} else {
+	  printf("  %c ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    if (upperp == true) {
+      for (j = 0; j <= glength; ++j) {
+	if (j < i) {
+	  printf("  . ");
+	} else if (j > i + band) {
+	  printf("  . ");
+	} else if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
+	  printf("%3d ",NEG_INFINITY_DISPLAY);
+	} else {
+	  printf("%3d ",matrix[j][i]);
+	}
+      }
+    } else {
+      for (j = 0; j <= glength; ++j) {
+	if (i < j) {
+	  printf("  . ");
+	} else if (i > j + band) {
+	  printf("  . ");
+	} else if (matrix[i][j] < NEG_INFINITY_DISPLAY) {
+	  printf("%3d ",NEG_INFINITY_DISPLAY);
+	} else {
+	  printf("%3d ",matrix[i][j]);
+	}
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+
+static void
+Matrix16_print (Score16_T **matrix, int rlength, int glength, char *rsequence,
+		char *gsequence, char *gsequencealt,
+		bool revp, int lband, int uband) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c ",' ');
+	} else {
+	  printf("  %c ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    for (j = 0; j <= glength; ++j) {
+      if (j < i - lband) {
+	printf("  . ");
+      } else if (j > i + uband) {
+	printf("  . ");
+      } else if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
+	printf("%3d ",NEG_INFINITY_DISPLAY);
+      } else {
+	printf("%3d ",matrix[j][i]);
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+static void
+Matrix16_print_ud (Score16_T **matrix, int rlength, int glength, char *rsequence,
+		   char *gsequence, char *gsequencealt,
+		   bool revp, int band, bool upperp) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	printf("  %c ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("    ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c ",' ');
+	} else {
+	  printf("  %c ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    if (upperp == true) {
+      for (j = 0; j <= glength; ++j) {
+	if (j < i) {
+	  printf("  . ");
+	} else if (j > i + band) {
+	  printf("  . ");
+	} else if (matrix[j][i] < NEG_INFINITY_DISPLAY) {
+	  printf("%3d ",NEG_INFINITY_DISPLAY);
+	} else {
+	  printf("%3d ",matrix[j][i]);
+	}
+      }
+    } else {
+      for (j = 0; j <= glength; ++j) {
+	if (i < j) {
+	  printf("  . ");
+	} else if (i > j + band) {
+	  printf("  . ");
+	} else if (matrix[i][j] < NEG_INFINITY_DISPLAY) {
+	  printf("%3d ",NEG_INFINITY_DISPLAY);
+	} else {
+	  printf("%3d ",matrix[i][j]);
+	}
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+#endif
+
+#if defined(DEBUG14) || defined(DEBUG2)
+static void
+Directions8_print (Direction8_T **directions_nogap, Direction8_T **directions_Egap, Direction8_T **directions_Fgap,
+		   int rlength, int glength, char *rsequence, char *gsequence, char *gsequencealt,
+		   bool revp, int lband, int uband) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d   ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c   ",' ');
+	} else {
+	  printf("  %c   ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    for (j = 0; j <= glength; ++j) {
+      if (j < i - lband) {
+	printf("     ");
+      } else if (j > i + uband) {
+	printf("     ");
+      } else {
+	if (directions_Egap[j][i] == DIAG) {
+	  printf("D");
+	} else {
+	  /* Must be HORIZ */
+	  printf("H");
+	}
+	printf("|");
+	if (directions_nogap[j][i] == DIAG) {
+	  printf("D");
+	} else if (directions_nogap[j][i] == HORIZ) {
+	  printf("H");
+	} else {
+	  /* Must be VERT */
+	  printf("V");
+	}
+	printf("|");
+	if (directions_Fgap[j][i] == DIAG) {
+	  printf("D");
+	} else {
+	  /* Must be VERT */
+	  printf("V");
+	}
+      }
+      printf(" ");
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+static void
+Directions8_print_ud (Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+		      int rlength, int glength, char *rsequence, char *gsequence, char *gsequencealt,
+		      bool revp, int band, bool upperp) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d   ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c   ",' ');
+	} else {
+	  printf("  %c   ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    if (upperp == true) {
+      for (j = 0; j <= glength; ++j) {
+	if (j < i) {
+	  printf("   ");
+	} else if (j > i + band) {
+	  printf("   ");
+	} else {
+	  if (directions_Egap[j][i] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	  printf("|");
+	  if (directions_nogap[j][i] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	}
+	printf("  ");		/* For Fgap */
+	printf(" ");
+      }
+    } else {
+      for (j = 0; j <= glength; ++j) {
+	printf("  ");		/* For Fgap */
+	if (i < j) {
+	  printf("   ");
+	} else if (i > j + band) {
+	  printf("   ");
+	} else {
+	  if (directions_nogap[i][j] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	  printf("|");
+	  if (directions_Egap[i][j] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	}
+	printf(" ");
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+
+static void
+Directions16_print (Direction16_T **directions_nogap, Direction16_T **directions_Egap, Direction16_T **directions_Fgap,
+		    int rlength, int glength, char *rsequence, char *gsequence, char *gsequencealt,
+		    bool revp, int lband, int uband) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d   ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c   ",' ');
+	} else {
+	  printf("  %c   ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    for (j = 0; j <= glength; ++j) {
+      if (j < i - lband) {
+	printf("     ");
+      } else if (j > i + uband) {
+	printf("     ");
+      } else {
+	if (directions_Egap[j][i] == DIAG) {
+	  printf("D");
+	} else {
+	  /* Must be HORIZ */
+	  printf("H");
+	}
+	printf("|");
+	if (directions_nogap[j][i] == DIAG) {
+	  printf("D");
+	} else if (directions_nogap[j][i] == HORIZ) {
+	  printf("H");
+	} else {
+	  /* Must be VERT */
+	  printf("V");
+	}
+	printf("|");
+	if (directions_Fgap[j][i] == DIAG) {
+	  printf("D");
+	} else {
+	  /* Must be VERT */
+	  printf("V");
+	}
+      }
+      printf(" ");
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+static void
+Directions16_print_ud (Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+		       int rlength, int glength, char *rsequence, char *gsequence, char *gsequencealt,
+		       bool revp, int band, bool upperp) {
+  int i, j;
+  char g, g_alt;
+
+  _mm_lfence();
+
+  /* j */
+  printf("   ");		/* For i */
+  printf("  ");
+  for (j = 0; j <= glength; ++j) {
+    printf(" %2d   ",j);
+  }
+  printf("\n");
+
+  if (gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	printf("  %c   ",revp ? gsequence[-j+1] : gsequence[j-1]);
+      }
+    }
+    printf("\n");
+  }
+
+  if (gsequencealt != gsequence) {
+    printf("   ");		/* For i */
+    printf("  ");
+    for (j = 0; j <= glength; ++j) {
+      if (j == 0) {
+	printf("      ");
+      } else {
+	g = revp ? gsequence[-j+1] : gsequence[j-1];
+	g_alt = revp ? gsequencealt[-j+1] : gsequencealt[j-1];
+	if (g == g_alt) {
+	  printf("  %c   ",' ');
+	} else {
+	  printf("  %c   ",g_alt);
+	}
+      }
+    }
+    printf("\n");
+  }
+
+  for (i = 0; i <= rlength; ++i) {
+    printf("%2d ",i);
+    if (i == 0) {
+      printf("  ");
+    } else {
+      printf("%c ",revp ? rsequence[-i+1] : rsequence[i-1]);
+    }
+    if (upperp == true) {
+      for (j = 0; j <= glength; ++j) {
+	if (j < i) {
+	  printf("   ");
+	} else if (j > i + band) {
+	  printf("   ");
+	} else {
+	  if (directions_Egap[j][i] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	  printf("|");
+	  if (directions_nogap[j][i] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	}
+	printf("  ");		/* For Fgap */
+	printf(" ");
+      }
+    } else {
+      for (j = 0; j <= glength; ++j) {
+	printf("  ");		/* For Fgap */
+	if (i < j) {
+	  printf("   ");
+	} else if (i > j + band) {
+	  printf("   ");
+	} else {
+	  if (directions_nogap[i][j] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	  printf("|");
+	  if (directions_Egap[i][j] == DIAG) {
+	    printf("D");
+	  } else {
+	    printf("-");
+	  }
+	}
+	printf(" ");
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+#endif
+
+
+
+#ifdef DEBUG14
+static void
+banded_matrix8_compare (Score8_T **matrix1, Score32_T **matrix2, int rlength, int glength,
+			int lband, int uband, char *rsequence, char *gsequence, char *gsequence_alt,
+			int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+			bool revp) {
+  int r, c, rlo, rhigh;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      rlo = 1;
+    };
+
+    if ((rhigh = c + lband) > rlength) {
+      rhigh = rlength;
+    }
+
+    for (r = rlo; r <= rhigh; r++) {
+      if (matrix1[c][r] <= NEG_INFINITY_8 + 30 && matrix2[c][r] <= NEG_INFINITY_8 + 30) {
+	/* Okay */
+      } else if (matrix1[c][r] != matrix2[c][r]) {
+	printf("At %d,%d, value %d != value %d\n",r,c,matrix1[c][r],matrix2[c][r]);
+
+	Matrix8_print(matrix1,rlength,glength,rsequence,gsequence,gsequence_alt,
+		      revp,lband,uband);
+	Dynprog_Matrix32_print(matrix2,rlength,glength,rsequence,gsequence,gsequence_alt,
+			       goffset,chroffset,chrhigh,watsonp,revp,lband,uband);
+	exit(9);
+      }
+    }
+  }
+
+  return;
+}
+
+static void
+banded_matrix16_compare (Score16_T **matrix1, Score32_T **matrix2, int rlength, int glength,
+			 int lband, int uband, char *rsequence, char *gsequence, char *gsequence_alt,
+			 int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+			 bool revp) {
+  int r, c, rlo, rhigh;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      rlo = 1;
+    };
+
+    if ((rhigh = c + lband) > rlength) {
+      rhigh = rlength;
+    }
+
+    for (r = rlo; r <= rhigh; r++) {
+      if (matrix1[c][r] <= NEG_INFINITY_16 + 30 && matrix2[c][r] <= NEG_INFINITY_16 + 30) {
+	/* Okay */
+      } else if (matrix1[c][r] != matrix2[c][r]) {
+	printf("At %d,%d, value %d != value %d\n",r,c,matrix1[c][r],matrix2[c][r]);
+
+	Matrix16_print(matrix1,rlength,glength,rsequence,gsequence,gsequence_alt,
+			       goffset,chroffset,chrhigh,watsonp,revp,lband,uband);
+	Dynprog_Matrix32_print(matrix2,rlength,glength,rsequence,gsequence,gsequence_alt,
+			       goffset,chroffset,chrhigh,watsonp,revp,lband,uband);
+	exit(9);
+      }
+    }
+  }
+
+  return;
+}
+#endif
+
+#ifdef DEBUG14
+static void
+banded_directions8_compare_nogap (Score8_T **matrix, Direction8_T **directions1, Direction32_T **directions2,
+				  int rlength, int glength, int lband, int uband) {
+  int r, c, rlo, rhigh;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      rlo = 1;
+    };
+
+    if ((rhigh = c + lband) > rlength) {
+      rhigh = rlength;
+    }
+
+    for (r = rlo; r <= rhigh; r++) {
+      if (matrix[c][r] < NEG_INFINITY_8 + 30) {
+	/* Don't check */
+
+      } else if (directions1[c][r] == 0) {
+	if (directions2[c][r] == 0) {
+	} else {
+	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else if (directions1[c][r] == 1) {
+	if (directions2[c][r] == 1) {
+	} else {
+	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else {
+	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
+	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      }
+    }
+  }
+
+  return;
+}
+
+
+static void
+banded_directions16_compare_nogap (Direction16_T **directions1, Direction32_T **directions2,
+				   int rlength, int glength, int lband, int uband) {
+  int r, c, rlo, rhigh;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      rlo = 1;
+    };
+
+    if ((rhigh = c + lband) > rlength) {
+      rhigh = rlength;
+    }
+
+    for (r = rlo; r <= rhigh; r++) {
+      if (directions1[c][r] == 0) {
+	if (directions2[c][r] == 0) {
+	} else {
+	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else if (directions1[c][r] == 1) {
+	if (directions2[c][r] == 1) {
+	} else {
+	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else {
+	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
+	  printf("At %d,%d, nogap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      }
+    }
+  }
+
+  return;
+}
+#endif
+
+#ifdef DEBUG14
+static void
+banded_directions8_compare_Egap (Score8_T **matrix1, Direction8_T **directions1, Direction32_T **directions2,
+				 int rlength, int glength, int lband, int uband) {
+  int r, c, rlo, rhigh, last_check;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      rlo = 1;
+    };
+
+    if ((rhigh = c + lband) <= rlength) {
+      /* Don't check rhigh.  Egap direction derives from a comparison
+	 of NEG_INFINITY values, and we should never reach here from
+	 directions_nogap anyway. */
+      last_check = rhigh - 1;
+
+    } else {
+      /* Do check rhigh, which contains instructions for the bottom row */
+      rhigh = rlength;
+      last_check = rhigh;
+    }
+
+    for (r = rlo; r <= last_check; r++) {
+      if (matrix1[c][r] < NEG_INFINITY_8 + 30) {
+	/* Don't check */
+
+      } else if (directions1[c][r] == 0) {
+	if (directions2[c][r] == 0) {
+	} else {
+	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else if (directions1[c][r] == 1) {
+	if (directions2[c][r] == 1) {
+	} else {
+	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else {
+	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
+	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      }
+    }
+  }
+
+  return;
+}
+
+static void
+banded_directions16_compare_Egap (Direction16_T **directions1, Direction32_T **directions2,
+				  int rlength, int glength, int lband, int uband) {
+  int r, c, rlo, rhigh, last_check;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      rlo = 1;
+    };
+
+    if ((rhigh = c + lband) <= rlength) {
+      /* Don't check rhigh.  Egap direction derives from a comparison
+	 of NEG_INFINITY values, and we should never reach here from
+	 directions_nogap anyway. */
+      last_check = rhigh - 1;
+
+    } else {
+      /* Do check rhigh, which contains instructions for the bottom row */
+      rhigh = rlength;
+      last_check = rhigh;
+    }
+
+    for (r = rlo; r <= last_check; r++) {
+      if (directions1[c][r] == 0) {
+	if (directions2[c][r] == 0) {
+	} else {
+	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      } else if (directions1[c][r] == 1) {
+	if (directions2[c][r] == 1) {
+	} else {
+	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else {
+	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
+	  printf("At %d,%d, Egap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      }
+    }
+  }
+
+  return;
+}
+#endif
+
+
+#ifdef DEBUG14
+static void
+banded_directions8_compare_Fgap (Score8_T **matrix1, Direction8_T **directions1, Direction32_T **directions2,
+				 int rlength, int glength, int lband, int uband) {
+  int r, c, rlo, rhigh, first_check;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      first_check = rlo = 1;
+    } else {
+      first_check = rlo + 1;
+    }
+
+    if ((rhigh = c + lband) > rlength) {
+      rhigh = rlength;
+    }
+
+    for (r = first_check; r <= rhigh; r++) {
+      if (matrix1[c][r] < NEG_INFINITY_8 + 30) {
+	/* Don't check */
+
+      } else if (directions1[c][r] == 0) {
+	if (directions2[c][r] == 0) {
+	} else {
+	  printf("At %d,%d, Fgap dir %d != dir %d.  Score is %d\n",
+		 r,c,directions1[c][r],directions2[c][r],matrix1[c][r]);
+	  exit(9);
+	}
+
+      } else if (directions1[c][r] == 1) {
+	if (directions2[c][r] == 1) {
+	} else {
+	  printf("At %d,%d, Fgap dir %d != dir %d.  Score is %d\n",
+		 r,c,directions1[c][r],directions2[c][r],matrix1[c][r]);
+	  exit(9);
+	}
+
+      } else {
+	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
+	  printf("At %d,%d, Fgap dir %d != dir %d.  Score is %d\n",
+		 r,c,directions1[c][r],directions2[c][r],matrix1[c][r]);
+	  exit(9);
+	}
+      }
+    }
+  }
+
+  return;
+}
+
+static void
+banded_directions16_compare_Fgap (Direction16_T **directions1, Direction32_T **directions2,
+				  int rlength, int glength, int lband, int uband) {
+  int r, c, rlo, rhigh, first_check;
+
+  for (c = 1; c <= glength; c++) {
+    if ((rlo = c - uband) < 1) {
+      first_check = rlo = 1;
+    } else {
+      first_check = rlo + 1;
+    }
+
+    if ((rhigh = c + lband) > rlength) {
+      rhigh = rlength;
+    }
+
+    for (r = first_check; r <= rhigh; r++) {
+      if (directions1[c][r] == 0) {
+	if (directions2[c][r] == 0) {
+	} else {
+	  printf("At %d,%d, Fgap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      } else if (directions1[c][r] == 1) {
+	if (directions2[c][r] == 1) {
+	} else {
+	  printf("At %d,%d, Fgap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+
+      } else {
+	if (directions2[c][r] == 0 || directions2[c][r] == 0) {
+	  printf("At %d,%d, Fgap dir %d != dir %d\n",r,c,directions1[c][r],directions2[c][r]);
+	  exit(9);
+	}
+      }
+    }
+  }
+
+  return;
+}
+#endif
+
+
+/************************************************************************
+ *   End of debugging procedures
+ ************************************************************************/
+
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+/* Makes a matrix of dimensions 0..rlength x 0..glength inclusive */
+static Score8_T **
+aligned_score8_alloc (int rlength, int glength, void **ptrs, void *space) {
+  Score8_T **matrix, *ptr;
+  int c;
+
+  matrix = (Score8_T **) ptrs;
+
+  ptr = (Score8_T *) space;
+  matrix[0] = ptr;	   /* Want aligned row to be r = 0, 16, ... */
+  for (c = 1; c <= glength; c++) {
+    ptr += rlength;
+    matrix[c] = ptr;	   /* Want aligned row to be r = 0, 16, ... */
+  }
+#if defined(DEBUG2) && defined(DEBUG14)
+  memset((void *) matrix[0],0,(glength+1)*rlength*sizeof(Score8_T));
+#endif
+
+  return matrix;
+}
+
+/* No initialization to DIAG (0), for directions_Egap and directions_nogap */
+static Score8_T **
+aligned_directions8_alloc (int rlength, int glength, void **ptrs, void *space) {
+  Score8_T **matrix, *ptr;
+  int c;
+
+  matrix = (Score8_T **) ptrs;
+
+  ptr = (Score8_T *) space;
+  matrix[0] = ptr;	   /* Want aligned row to be r = 0, 16, ... */
+  for (c = 1; c <= glength; c++) {
+    ptr += rlength;
+    matrix[c] = ptr;	   /* Want aligned row to be r = 0, 16, ... */
+  }
+#if defined(DEBUG2) && defined(DEBUG14)
+  memset((void *) matrix[0],/*DIAG*/0,(glength+1)*rlength*sizeof(Score8_T));
+#endif
+
+  return matrix;
+}
+
+/* Initialization to DIAG (0), for directions_Fgap */
+static Score8_T **
+aligned_directions8_calloc (int rlength, int glength, void **ptrs, void *space) {
+  Score8_T **matrix, *ptr;
+  int c;
+
+  matrix = (Score8_T **) ptrs;
+
+  ptr = (Score8_T *) space;
+  matrix[0] = ptr;	/* Want aligned row to be r = 0, 16, ... */
+  for (c = 1; c <= glength; c++) {
+    ptr += rlength;
+    matrix[c] = ptr;	/* Want aligned row to be r = 0, 16, ... */
+  }
+  memset((void *) matrix[0],/*DIAG*/0,(glength+1)*rlength*sizeof(Score8_T));
+
+  return matrix;
+}
+
+
+
+/* Makes a matrix of dimensions 0..rlength x 0..glength inclusive */
+static Score16_T **
+aligned_score16_alloc (int rlength, int glength, void **ptrs, void *space) {
+  Score16_T **matrix, *ptr;
+  int c;
+
+  matrix = (Score16_T **) ptrs;
+
+  ptr = (Score16_T *) space;
+  matrix[0] = ptr;	/* Want aligned row to be r = 0, 8, 16, ... */
+  for (c = 1; c <= glength; c++) {
+    ptr += rlength;
+    matrix[c] = ptr;	/* Want aligned row to be r = 0, 8, 16, ... */
+  }
+#ifdef DEBUG2
+  memset((void *) matrix[0],0,(glength+1)*rlength*sizeof(Score16_T));
+#endif
+
+  return matrix;
+}
+
+/* No initialization to DIAG (0), for directions_Egap and directions_nogap */
+static Score16_T **
+aligned_directions16_alloc (int rlength, int glength, void **ptrs, void *space) {
+  Score16_T **matrix, *ptr;
+  int c;
+
+  matrix = (Score16_T **) ptrs;
+
+  ptr = (Score16_T *) space;
+  matrix[0] = ptr;	/* Want aligned row to be r = 0, 8, 16, ... */
+  for (c = 1; c <= glength; c++) {
+    ptr += rlength;
+    matrix[c] = ptr;	/* Want aligned row to be r = 0, 8, 16, ... */
+  }
+#ifdef DEBUG2
+  memset((void *) matrix[0],/*DIAG*/0,(glength+1)*rlength*sizeof(Score16_T));
+#endif
+
+  return matrix;
+}
+
+/* Initialization to DIAG (0), for directions_Fgap */
+static Score16_T **
+aligned_directions16_calloc (int rlength, int glength, void **ptrs, void *space) {
+  Score16_T **matrix, *ptr;
+  int c;
+
+  matrix = (Score16_T **) ptrs;
+
+  ptr = (Score16_T *) space;
+  matrix[0] = ptr;	/* Want aligned row to be r = 0, 8, 16, ... */
+  for (c = 1; c <= glength; c++) {
+    ptr += rlength;
+    matrix[c] = ptr;	/* Want aligned row to be r = 0, 8, 16, ... */
+  }
+  memset((void *) matrix[0],/*DIAG*/0,(glength+1)*rlength*sizeof(Score16_T));
+
+  return matrix;
+}
+#endif
+
+
+#define T Dynprog_T
+
+
+#if defined(HAVE_SSE2)
+/* Modified from Dynprog_simd_8_upper.  Operates by columns. */
+Score8_T **
+Dynprog_simd_8 (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap,
+		Direction8_T ***directions_Fgap,
+		T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		int rlength, int glength,
+#ifdef DEBUG14
+		int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		Mismatchtype_T mismatchtype, int open, int extend,
+		int lband, int uband, bool jump_late_p, bool revp) {
+  int c_gap, last_nogap, score, *FF;	/* Need to have the ability to go past NEG_INFINITY */
+  Score8_T **matrix, *score_column;
+  __m128i pairscores_std, pairscores_alt;
+#ifndef HAVE_SSE4_1
+  __m128i pairscores_best, all_128;
+#endif
+  __m128i H_nogap_r, X_prev_nogap, E_r_gap, T1;
+  __m128i gap_open, gap_extend, complement_dummy;
+  __m128i dir_horiz;
+  int rlength_ceil, lband_ceil, r, c;
+  int rlo, rhigh, rlo_calc, rhigh_calc;
+  int na1, na2, na2_alt;
+  Score8_T *pairscores_col0;
+  Score8_T *pairscores[5], *pairscores_std_ptr, *pairscores_alt_ptr, pairscore, pairscore0;
+  Pairdistance_T **pairdistance_array_type;
+
+#ifdef DEBUG14
+  Score32_T **matrix_std;
+  Direction32_T **directions_nogap_std, **directions_Egap_std, **directions_Fgap_std;
+#endif
+
+
+  debug15(printf("Dynprog_simd_8.  jump_late_p %d, open %d, extend %d\n",jump_late_p,open,extend));
+
+  rlength_ceil = (int) ((rlength + SIMD_NCHARS)/SIMD_NCHARS) * SIMD_NCHARS;
+
+#ifdef HAVE_SSE4_1
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+#else
+  /* Needed to use _mm_max_epu8 and _mm_min_epu8, instead of signed versions */
+  pairdistance_array_type = pairdistance_array_plus_128[mismatchtype];
+  all_128 = _mm_set1_epi8(128);
+#endif
+  
+  debug(printf("compute_scores_simd_8_bycols (upper): "));
+  debug(printf("Lengths are %d and %d, so band is %d on right\n",rlength,glength,uband));
+  debug(printf("Query length rounded up to %d\n",rlength_ceil));
+
+  matrix = aligned_score8_alloc(rlength_ceil,glength,
+				this->aligned.one.matrix_ptrs,this->aligned.one.matrix_space);
+  *directions_nogap = aligned_directions8_alloc(rlength_ceil,glength,
+						this->aligned.one.directions_ptrs_0,this->aligned.one.directions_space_0);
+  *directions_Egap = aligned_directions8_alloc(rlength_ceil,glength,
+					       this->aligned.one.directions_ptrs_1,this->aligned.one.directions_space_1);
+  /* Need to calloc to save time in F loop */
+  *directions_Fgap = aligned_directions8_calloc(rlength_ceil,glength,
+						this->aligned.one.directions_ptrs_2,this->aligned.one.directions_space_2);
+
+#if 0
+  /* Row 0 initialization */
+  /* penalty = open; */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    /* penalty += extend; */
+    (*directions_Egap)[c][0] = HORIZ;
+    (*directions_nogap)[c][0] = HORIZ;
+  }
+#endif
+#if 0
+  /* Already initialized to DIAG.  Actually no longer initializing directions_Egap */
+  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
+  (*directions_nogap)[0][0] = DIAG; /* previously used STOP */
+#endif
+
+#if 0
+  /* Column 0 initialization */
+  /* penalty = open; */
+  for (r = 1; r <= SIMD_NCHARS && r <= rlength; r++) {
+    /* penalty += extend; */
+    (*directions_nogap)[0][r] = VERT;
+  }
+#endif
+
+
+  /* Load pairscores.  Store match - mismatch */
+  pairscores[0] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[1] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[2] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[3] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[4] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+
+  lband_ceil = (int) ((lband + SIMD_NCHARS)/SIMD_NCHARS) * SIMD_NCHARS;
+  pairscores_col0 = (Score8_T *) _mm_malloc(lband_ceil * sizeof(Score8_T),16);
+
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) pairscores[0],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[1],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[2],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[3],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[4],0,rlength_ceil*sizeof(Score8_T));
+#endif
+
+  /* For non-SSE4.1, addition of 128 taken care of by using pairdistance_array_plus_128 above */
+#ifdef HAVE_SSE4_1
+  pairscores_col0[0] = (Score8_T) 0;
+  /* Initializion just to lband causes errors in dir_horiz for Egap */
+  for (r = 1; r < lband_ceil; r++) {
+    pairscores_col0[r] = (Score8_T) NEG_INFINITY_8;
+  }
+#else
+  pairscores_col0[0] = (Score8_T) 0+128;
+  /* Initializion just to lband causes errors in dir_horiz for Egap */
+  for (r = 1; r < lband_ceil; r++) {
+    pairscores_col0[r] = (Score8_T) NEG_INFINITY_8+128;
+  }
+#endif
+
+  /* Row 0 */
+  r = 0; na1 = 'N';
+  pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
+  pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
+  pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
+  pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
+  pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
+
+  if (revp == false) {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[r-1];
+      pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  } else {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[1-r];
+      pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  }
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) &(pairscores[0][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[1][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[2][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[3][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[4][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+#endif
+
+  complement_dummy = _mm_set1_epi8(-1);
+
+  FF = (int *) MALLOC((glength + 1) * sizeof(int));
+
+  gap_open = _mm_set1_epi8((Score8_T) open);
+  gap_extend = _mm_set1_epi8((Score8_T) extend);
+
+  if (jump_late_p) {
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NCHARS) {
+      if ((rhigh = rlo + SIMD_NCHARS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E >= H.  To fill in first column of each
+	 row block with non-diags, make E == H. */
+      E_r_gap = _mm_set1_epi8(NEG_INFINITY_8);
+      H_nogap_r = _mm_set1_epi8(NEG_INFINITY_8-open); /* Compensate for T1 = H + open */
+
+      if ((c = rlo - lband) < 0) {
+	c = 0;
+      }
+      for ( ; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  pairscores_std_ptr = pairscores_alt_ptr = pairscores_col0;
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi8(0);
+	  } else {
+	    X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	  }
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	  pairscores_std_ptr = pairscores[na2];
+	  pairscores_alt_ptr = pairscores[na2_alt];
+
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	  } else {
+	    /* second or greater block of 8 */
+	    X_prev_nogap = _mm_set1_epi8(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	  }
+	}
+
+	debug15(print_vector_8(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi8(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmplt_epi8(E_r_gap,T1); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(T1,rlo,c,"T1"));
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_Egap"));
+
+#ifdef HAVE_SSE4_1
+	E_r_gap = _mm_max_epi8(E_r_gap, T1); /* Compare H + open with vert */
+#else
+	E_r_gap = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(E_r_gap, all_128), _mm_add_epi8(T1, all_128)), all_128);
+#endif
+	E_r_gap = _mm_adds_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	debug15(print_vector_8(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_CHAR);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_CHAR);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+#ifdef HAVE_SSE4_1
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, _mm_max_epi8(pairscores_std,pairscores_alt));
+#else
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo])); /* Has 128 added already */
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo])); /* Has 128 added already */
+	pairscores_best = _mm_sub_epi8(_mm_max_epu8(pairscores_std, pairscores_alt), all_128);
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, pairscores_best);
+#endif
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmplt_epi8(E_r_gap,H_nogap_r); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_nogap"));
+
+
+#ifdef HAVE_SSE4_1
+	H_nogap_r = _mm_max_epi8(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+#else
+	/* Compare H + pairscores with horiz + extend */
+	H_nogap_r = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(H_nogap_r, all_128), _mm_add_epi8(E_r_gap, all_128)), all_128);
+#endif
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* F loop */
+	if ((rlo_calc = rlo) < c - uband) {
+	  rlo_calc = c - uband;
+	}
+	if ((rhigh_calc = rhigh) >= c + lband) {
+	  rhigh_calc = c + lband;
+	  if (c > 0) {
+	    /* Set bottom values to DIAG (not HORIZ) to prevent going outside of lband */
+	    pairscore = pairscores[na2][rhigh_calc];
+	    if ((pairscore0 = pairscores[(int) na2_alt][rhigh_calc]) > pairscore) {
+	      pairscore = pairscore0;
+	    }
+#ifndef HAVE_SSE4_1
+	    pairscore -= 128;
+#endif
+	    if ((score = (int) matrix[c-1][rhigh_calc-1] + (int) pairscore) < NEG_INFINITY_8) {
+	      score_column[rhigh_calc] = NEG_INFINITY_8; /* Saturation */
+	    } else if (score > POS_INFINITY_8) {
+	      /* Should never get here, because we limit size of matrix using 8-bit quantities */
+	      score_column[rhigh_calc] = POS_INFINITY_8; /* Saturation */
+	    } else {
+	      score_column[rhigh_calc] = (Score8_T) score;
+	    }
+	    (*directions_Egap)[c][rhigh_calc] = DIAG;
+	    (*directions_nogap)[c][rhigh_calc] = DIAG;
+	  }
+	}
+
+	debug3(printf("F loop: rlo %d, rhigh %d, c %d, lband %d, uband %d => rlo_calc %d, rhigh_calc %d\n",
+		      rlo,rhigh,rlo_calc,c,lband,uband,rhigh_calc));
+
+	if (rlo == 0) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else if (c >= rlo + uband) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else {
+	  debug3(printf("At c %d, uband %d, reading c_gap %d\n",c,uband,FF[c]));
+	  c_gap = FF[c];
+	  last_nogap = (int) score_column[rlo_calc-1];
+	}
+
+	if ((r = rlo_calc) == c - uband) {
+	  /* Handle top value as a special case to prevent going outside of uband */
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  score = last_nogap + open /* + extend */;
+	  c_gap = score + extend;
+	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  r++;
+	}
+
+	/* score_ptr = &(score_column[rlo_calc]); -- Also possible, but less transparent */
+	for ( ; r <= rhigh_calc; r++) {
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  if (c_gap /* + extend */ >= (score = last_nogap + open /* + extend */)) {  /* Use >= for jump late */
+	    c_gap += extend;
+	    (*directions_Fgap)[c][r] = VERT;
+	  } else {
+	    c_gap = score + extend;
+	    /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+	  }
+	  
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  debug3(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap));
+	  if (c_gap >= last_nogap) {  /* Use >= for jump late */
+	    last_nogap = c_gap;
+	    score_column[r] = (c_gap < NEG_INFINITY_8) ? NEG_INFINITY_8 : (Score8_T) c_gap; /* Saturation */
+	    (*directions_nogap)[c][r] = VERT;
+	  }
+	}
+
+	FF[c] = c_gap;
+	debug3(printf("At c %d, storing c_gap %d\n",c,FF[c]));
+	H_nogap_r = _mm_load_si128((__m128i *) &(score_column[rlo])); /* Need to reload because of changes by F loop */
+      }
+    }
+
+  } else {
+    /* jump early */
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NCHARS) {
+      if ((rhigh = rlo + SIMD_NCHARS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E > H.  To fill in first column of each
+	 row block with non-diags, make E > H. */
+      E_r_gap = _mm_set1_epi8(NEG_INFINITY_8+1);
+      H_nogap_r = _mm_set1_epi8(NEG_INFINITY_8-open); /* Compensate for T1 = H + open */
+
+      if ((c = rlo - lband) < 0) {
+	c = 0;
+      }
+      for ( ; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  pairscores_std_ptr = pairscores_alt_ptr = pairscores_col0;
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi8(0);
+	  } else {
+	    X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	  }
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	  pairscores_std_ptr = pairscores[na2];
+	  pairscores_alt_ptr = pairscores[na2_alt];
+
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	  } else {
+	    /* second or greater block of 8 */
+	    X_prev_nogap = _mm_set1_epi8(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	  }
+	}
+
+	debug15(print_vector_8(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi8(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmpgt_epi8(E_r_gap,T1); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(T1,rlo,c,"T1"));
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_Egap"));
+
+#ifdef HAVE_SSE4_1
+	E_r_gap = _mm_max_epi8(E_r_gap, T1); /* Compare H + open with vert */
+#else
+	/* Compare H + open with vert */
+	E_r_gap = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(E_r_gap, all_128), _mm_add_epi8(T1, all_128)), all_128);
+#endif
+	E_r_gap = _mm_adds_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	debug15(print_vector_8(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_CHAR);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_CHAR);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+#ifdef HAVE_SSE4_1
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, _mm_max_epi8(pairscores_std,pairscores_alt));
+#else
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo])); /* Has 128 added already */
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo])); /* Has 128 added already */
+	pairscores_best = _mm_sub_epi8(_mm_max_epu8(pairscores_std, pairscores_alt), all_128);
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, pairscores_best);
+#endif
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmpgt_epi8(E_r_gap,H_nogap_r); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_nogap"));
+
+
+#ifdef HAVE_SSE4_1
+	H_nogap_r = _mm_max_epi8(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+#else
+	/* Compare H + pairscores with horiz + extend */
+	H_nogap_r = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(H_nogap_r, all_128), _mm_add_epi8(E_r_gap, all_128)), all_128);
+#endif
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* F loop */
+	if ((rlo_calc = rlo) < c - uband) {
+	  rlo_calc = c - uband;
+	}
+	if ((rhigh_calc = rhigh) >= c + lband) {
+	  rhigh_calc = c + lband;
+	  if (c > 0) {
+	    /* Set bottom values to DIAG (not HORIZ) to prevent going outside of lband */
+	    pairscore = pairscores[na2][rhigh_calc];
+	    if ((pairscore0 = pairscores[(int) na2_alt][rhigh_calc]) > pairscore) {
+	      pairscore = pairscore0;
+	    }
+#ifndef HAVE_SSE4_1
+	    pairscore -= 128;
+#endif
+	    if ((score = (int) matrix[c-1][rhigh_calc-1] + (int) pairscore) < NEG_INFINITY_8) {
+	      score_column[rhigh_calc] = NEG_INFINITY_8; /* Saturation */
+	    } else if (score > POS_INFINITY_8) {
+	      /* Should never get here, because we limit size of matrix using 8-bit quantities */
+	      score_column[rhigh_calc] = POS_INFINITY_8; /* Saturation */
+	    } else {
+	      score_column[rhigh_calc] = (Score8_T) score;
+	    }
+	    (*directions_Egap)[c][rhigh_calc] = DIAG;
+	    (*directions_nogap)[c][rhigh_calc] = DIAG;
+	  }
+	}
+
+	debug3(printf("F loop: rlo %d, rhigh %d, c %d, lband %d, uband %d => rlo_calc %d, rhigh_calc %d\n",
+		      rlo,rhigh,rlo_calc,c,lband,uband,rhigh_calc));
+
+	if (rlo == 0) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else if (c >= rlo + uband) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else {
+	  c_gap = FF[c];
+	  last_nogap = (int) score_column[rlo_calc-1];
+	  debug3(printf("LAST_NOGAP gets score_column[%d-1], or %d\n",rlo_calc,last_nogap));
+	}
+
+	if ((r = rlo_calc) == c - uband) {
+	  /* Handle top value as a special case to prevent going outside of uband */
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  score = last_nogap + open /* + extend */;
+	  c_gap = score + extend;
+	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  r++;
+	}
+
+	/* score_ptr = &(score_column[rlo_calc]); -- Also possible, but less transparent */
+	for ( ; r <= rhigh_calc; r++) {
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  if (c_gap /* + extend */ > (score = last_nogap + open /* + extend */)) {  /* Use > for jump early */
+	    c_gap += extend;
+	    (*directions_Fgap)[c][r] = VERT;
+	  } else {
+	    c_gap = score + extend;
+	    /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+	  }
+	  
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  debug3(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap));
+	  if (c_gap > last_nogap) {  /* Use > for jump early */
+	    last_nogap = c_gap;
+	    score_column[r] = (c_gap < NEG_INFINITY_8) ? NEG_INFINITY_8 : (Score8_T) c_gap; /* Saturation */
+	    debug3(printf("Stored at score_column[%d]: %d\n",r,(Score8_T) score_column[r]));
+	    (*directions_nogap)[c][r] = VERT;
+	  }
+	}
+
+	FF[c] = c_gap;
+	debug3(printf("At c %d, storing c_gap %d\n",c,FF[c]));
+	H_nogap_r = _mm_load_si128((__m128i *) &(score_column[rlo])); /* Need to reload because of changes by F loop */
+      }
+    }
+  }
+
+
+#ifdef CHECK1
+  /* Row 0 and column 0 directions fail anyway due to saturation */
+  /* Handle (0,1) and (1,0) directions, otherwise DIAG */
+  (*directions_Egap)[1][0] = HORIZ;
+  (*directions_Fgap)[0][1] = VERT;
+#endif  
+
+#ifdef DEBUG2
+  printf("SIMD: Dynprog_simd_8\n");
+  Matrix8_print(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
+		revp,lband,uband);
+  Directions8_print(*directions_nogap,*directions_Egap,*directions_Fgap,
+			    rlength,glength,rsequence,gsequence,gsequence_alt,
+			    revp,lband,uband);
+#endif
+  
+#ifdef CHECK1
+  /* Check for row 0 directions */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    assert((*directions_Egap)[c][0] != DIAG);
+    assert((*directions_nogap)[c][0] != DIAG);
+  }
+  /* Check for column 0 directions */
+  for (r = 1; r <= lband && r <= rlength; r++) {
+    assert((*directions_Fgap)[0][r] != DIAG);
+    assert((*directions_nogap)[0][r] != DIAG);
+  }
+#endif
+
+#ifdef DEBUG14
+  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,&directions_Fgap_std,
+				       this,rsequence,/*gsequence (NULL for debugging)*/NULL,/*gsequence_alt*/NULL,
+				       rlength,glength,goffset,chroffset,chrhigh,watsonp,mismatchtype,
+				       open,extend,lband,uband,jump_late_p,revp,/*saturation*/NEG_INFINITY_8);
+
+#ifdef DEBUG2
+  printf("Banded %s\n",revp ? "rev" : "fwd");
+  Dynprog_Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
+			 revp,lband,uband);
+  Dynprog_Directions32_print(directions_nogap_std,directions_Egap_std,directions_Fgap_std,
+			     rlength,glength,rsequence,gsequence,gsequence_alt,
+			     revp,lband,uband);
+#endif
+  
+  banded_matrix8_compare(matrix,matrix_std,rlength,glength,lband,uband,
+			 rsequence,gsequence,gsequence_alt,
+			 goffset,chroffset,chrhigh,watsonp,revp);
+
+  banded_directions8_compare_nogap(matrix,*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
+  banded_directions8_compare_Egap(matrix,*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
+  banded_directions8_compare_Fgap(matrix,*directions_Fgap,directions_Fgap_std,rlength,glength,lband,uband);
+#endif
+
+  FREE(FF);
+  _mm_free(pairscores_col0);
+  _mm_free(pairscores[4]);
+  _mm_free(pairscores[3]);
+  _mm_free(pairscores[2]);
+  _mm_free(pairscores[1]);
+  _mm_free(pairscores[0]);
+
+  return matrix;
+}
+#endif
+
+
+
+/* E_mask works at the wraparound from POS_INFINITY to NEG_INFINITY.
+   It is designed to prevent a horizontal/vertical jump into the empty
+   triangle, by setting horizontal/vertical scores to be as small as
+   possible, e.g., -128.  However, it is possible that H is also -128,
+   so we still need to fix the directions along the main diagonal.
+
+   E_mask shifted:    0    0    0    0    1    1    1    1
+   add E_infinity:  127  127  127  127  127  127  127  127
+   resulting mask:  127  127  127  127 -128 -128 -128 -128
+
+   To deal with non-SSE4.1 systems, which lack _mm_min_epi8, we need
+   too add 128 to E and mask, then take _mm_min_epu8, then subtract
+   128, as follows:
+
+   E_mask shifted:    0    0    0    0    1    1    1    1
+   add E_inf+128:   255  255  255  255  255  255  255  255
+   resulting mask:  255  255  255  255    0    0    0    0
+   (compare w/E+128)
+
+*/
+
+
+#ifdef HAVE_SSE2
+/* Designed for computation above the main diagonal, so no F loop or bottom masking needed */
+/* Operates by columns */
+Score8_T **
+Dynprog_simd_8_upper (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap,
+		      T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		      int rlength, int glength,
+#ifdef DEBUG14
+		      int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		      Mismatchtype_T mismatchtype, int open, int extend,
+		      int uband, bool jump_late_p, bool revp) {
+  Score8_T **matrix, *score_column;
+  __m128i pairscores_std, pairscores_alt;
+#ifdef HAVE_SSE4_1
+  __m128i E_infinity;
+#else
+  __m128i E_infinity_plus_128;
+  __m128i pairscores_best, all_128;
+#endif
+  __m128i H_nogap_r, X_prev_nogap, E_r_gap, E_mask, T1;
+  __m128i gap_open, gap_extend, complement_dummy;
+  __m128i dir_horiz;
+  int rlength_ceil, r, c;
+  int rlo, rhigh;
+  int na1, na2, na2_alt;
+  Score8_T *pairscores[5], *pairscores_std_ptr, *pairscores_alt_ptr, pairscore;
+  Pairdistance_T **pairdistance_array_type;
+
+#ifdef DEBUG14
+  Score32_T **matrix_std;
+  Direction32_T **directions_nogap_std, **directions_Egap_std;
+  char na2_single;
+#endif
+
+
+  debug15(printf("Dynprog_simd_8_upper.  jump_late_p %d, open %d, extend %d\n",jump_late_p,open,extend));
+
+  rlength_ceil = (int) ((rlength + SIMD_NCHARS)/SIMD_NCHARS) * SIMD_NCHARS;
+
+#ifdef HAVE_SSE4_1
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+#else
+  /* Needed to use _mm_max_epu8 and _mm_min_epu8, instead of signed versions */
+  pairdistance_array_type = pairdistance_array_plus_128[mismatchtype];
+  all_128 = _mm_set1_epi8(128);
+#endif
+  
+  debug(printf("compute_scores_simd_8_bycols (upper): "));
+  debug(printf("Lengths are %d and %d, so band is %d on right\n",rlength,glength,uband));
+  debug(printf("Query length rounded up to %d\n",rlength_ceil));
+
+  matrix = aligned_score8_alloc(rlength_ceil,glength,
+				this->aligned.two.upper_matrix_ptrs,this->aligned.two.upper_matrix_space);
+  *directions_nogap = aligned_directions8_alloc(rlength_ceil,glength,
+						this->aligned.two.upper_directions_ptrs_0,this->aligned.two.upper_directions_space_0);
+  *directions_Egap = aligned_directions8_alloc(rlength_ceil,glength,
+					       this->aligned.two.upper_directions_ptrs_1,this->aligned.two.upper_directions_space_1);
+
+#if 0
+  /* Row 0 initialization */
+  /* penalty = open; */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    /* penalty += extend; */
+    (*directions_Egap)[c][0] = HORIZ;
+    (*directions_nogap)[c][0] = HORIZ;
+  }
+#endif
+#if 0
+  /* Already initialized to DIAG.  Actually no longer initializing directions_Egap */
+  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
+  (*directions_nogap)[0][0] = DIAG; /* previously used STOP */
+#endif
+#if 0
+  /* Column 0 initialization */
+  /* penalty = open; */
+  for (r = 1; r <= SIMD_NCHARS && r <= rlength; r++) {
+    /* penalty += extend; */
+    (*directions_nogap)[0][r] = VERT;
+  }
+#endif
+
+
+  /* Load pairscores.  Store match - mismatch */
+  pairscores[0] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[1] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[2] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[3] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+  pairscores[4] = (Score8_T *) _mm_malloc(rlength_ceil * sizeof(Score8_T),16);
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) pairscores[0],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[1],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[2],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[3],0,rlength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[4],0,rlength_ceil*sizeof(Score8_T));
+#endif
+
+  /* For non-SSE4.1, addition of 128 taken care of by using pairdistance_array_plus_128 above */
+  r = 0; na1 = 'N';
+  pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
+  pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
+  pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
+  pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
+  pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
+
+  if (revp == false) {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[r-1];
+      pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  } else {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[1-r];
+      pairscores[0][r] = (Score8_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score8_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score8_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score8_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score8_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  }
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) &(pairscores[0][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[1][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[2][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[3][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+  memset((void *) &(pairscores[4][r]),0,(rlength_ceil-r)*sizeof(Score8_T));
+#endif
+
+  complement_dummy = _mm_set1_epi8(-1);
+
+  gap_open = _mm_set1_epi8((Score8_T) open);
+  gap_extend = _mm_set1_epi8((Score8_T) extend);
+
+#ifdef HAVE_SSE4_1
+  E_infinity = _mm_set1_epi8(POS_INFINITY_8);
+#else
+  E_infinity_plus_128 = _mm_set1_epi8(POS_INFINITY_8+128);
+#endif
+  if (jump_late_p) {
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NCHARS) {
+      if ((rhigh = rlo + SIMD_NCHARS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E >= H .  To fill in first column of each
+	 row block with non-diags, could make E == H.  But irrelevant,
+	 because these are below the diagonal. */
+      E_mask = _mm_set1_epi8(1);
+      E_r_gap = _mm_set1_epi8(NEG_INFINITY_8);
+      H_nogap_r = _mm_set1_epi8(NEG_INFINITY_8-open); /* Compensate for T1 = H + open */
+
+      for (c = rlo; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  na2 = na2_alt = 4; /* 'N' */
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	}
+	pairscores_std_ptr = pairscores[na2];
+	pairscores_alt_ptr = pairscores[na2_alt];
+	
+	if (c == 0) {
+	  X_prev_nogap = _mm_set1_epi8(0);
+	} else if (rlo == 0) {
+	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8); /* works if we start outside the rlo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	} else {
+	  /* second or greater block of 8 */
+	  X_prev_nogap = _mm_set1_epi8(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	}
+
+	debug15(print_vector_8(E_mask,rlo,c,"E_mask"));
+#ifdef HAVE_SSE4_1
+	E_r_gap = _mm_min_epi8(E_r_gap,_mm_add_epi8(E_mask,E_infinity));
+#else
+	E_r_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_r_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi8(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmplt_epi8(E_r_gap,T1); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(T1,rlo,c,"T1"));
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_Egap"));
+
+#ifdef HAVE_SSE4_1
+	E_r_gap = _mm_max_epi8(E_r_gap, T1); /* Compare H + open with vert */
+	E_r_gap = _mm_adds_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_min_epi8(E_r_gap,_mm_add_epi8(E_mask,E_infinity));
+#elif 1
+	E_r_gap = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(E_r_gap, all_128), _mm_add_epi8(T1, all_128)), all_128);
+	E_r_gap = _mm_adds_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_r_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#else
+	/* Try to avoid unnecessary shifts by 128, but overflows */
+	E_r_gap = _mm_max_epu8(_mm_add_epi8(E_r_gap, all_128), _mm_add_epi8(T1, all_128));
+	E_r_gap = _mm_add_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_sub_epi8(_mm_min_epu8(E_r_gap, _mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_CHAR);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_CHAR);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+#ifdef HAVE_SSE4_1
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	debug15(print_vector_8(pairscores_std,rlo,c,"pairscores_std"));
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, _mm_max_epi8(pairscores_std,pairscores_alt));
+#else
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo])); /* Has 128 added already */
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo])); /* Has 128 added already */
+	pairscores_best = _mm_sub_epi8(_mm_max_epu8(pairscores_std, pairscores_alt), all_128);
+	debug15(print_vector_8(pairscores_best,rlo,c,"pairscores_std"));
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, pairscores_best);
+#endif
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmplt_epi8(E_r_gap,H_nogap_r); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_nogap"));
+
+#ifdef HAVE_SSE4_1
+	H_nogap_r = _mm_max_epi8(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+#else
+	/* Compare H + pairscores with horiz + extend */
+	H_nogap_r = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(H_nogap_r, all_128), _mm_add_epi8(E_r_gap, all_128)), all_128);
+#endif
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* Fix gaps along diagonal to prevent going into lower triangle, which can happen with ties between E and H */
+	if (rhigh >= c) {
+	  (*directions_Egap)[c][c] = DIAG;
+	  (*directions_nogap)[c][c] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_CHAR);
+      }
+    }
+
+  } else {
+    /* jump early */
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NCHARS) {
+      if ((rhigh = rlo + SIMD_NCHARS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E > H.  To fill in first column of each
+	 row block with non-diags, could make E > H.  But irrelevant,
+	 because these are below the diagonal. */
+      E_mask = _mm_set1_epi8(1);
+      E_r_gap = _mm_set1_epi8(NEG_INFINITY_8);
+      H_nogap_r = _mm_set1_epi8(NEG_INFINITY_8-open); /* Compensate for T1 = H + open */
+
+      for (c = rlo; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  na2 = na2_alt = 4; /* 'N' */;
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	}
+	pairscores_std_ptr = pairscores[na2];
+	pairscores_alt_ptr = pairscores[na2_alt];
+
+	if (c == 0) {
+	  X_prev_nogap = _mm_set1_epi8(0);
+	} else if (rlo == 0) {
+	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8); /* works if we start outside the rlo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	} else {
+	  /* second or greater block of 8 */
+	  X_prev_nogap = _mm_set1_epi8(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	}
+
+	debug15(print_vector_8(E_mask,rlo,c,"E_mask"));
+#ifdef HAVE_SSE4_1
+	E_r_gap = _mm_min_epi8(E_r_gap,_mm_add_epi8(E_mask,E_infinity));
+#else
+	E_r_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_r_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi8(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmpgt_epi8(E_r_gap,T1); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(T1,rlo,c,"T1"));
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_Egap"));
+
+	/* Compare H + open with vert */
+#ifdef HAVE_SSE4_1
+	E_r_gap = _mm_max_epi8(E_r_gap, T1); /* Compare H + open with vert */
+	E_r_gap = _mm_adds_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_min_epi8(E_r_gap,_mm_add_epi8(E_mask,E_infinity));
+#elif 1
+	E_r_gap = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(E_r_gap, all_128), _mm_add_epi8(T1, all_128)), all_128);
+	E_r_gap = _mm_adds_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_r_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#else
+	/* Try to avoid unnecessary shifts by 128, but overflows */
+	E_r_gap = _mm_max_epu8(_mm_add_epi8(E_r_gap, all_128), _mm_add_epi8(T1, all_128));
+	E_r_gap = _mm_add_epi8(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_sub_epi8(_mm_min_epu8(E_r_gap, _mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_CHAR);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_CHAR);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+#ifdef HAVE_SSE4_1
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	debug15(print_vector_8(pairscores_std,rlo,c,"pairscores_std"));
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, _mm_max_epi8(pairscores_std,pairscores_alt));
+#else
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo])); /* Has 128 added already */
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo])); /* Has 128 added already */
+	pairscores_best = _mm_sub_epi8(_mm_max_epu8(pairscores_std, pairscores_alt), all_128);
+	debug15(print_vector_8(pairscores_best,rlo,c,"pairscores_std"));
+	H_nogap_r = _mm_adds_epi8(H_nogap_r, pairscores_best);
+#endif
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmpgt_epi8(E_r_gap,H_nogap_r); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_8(dir_horiz,rlo,c,"dir_nogap"));
+
+
+#ifdef HAVE_SSE4_1
+	H_nogap_r = _mm_max_epi8(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+#else
+	/* Compare H + pairscores with horiz + extend */
+	H_nogap_r = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(H_nogap_r, all_128), _mm_add_epi8(E_r_gap, all_128)), all_128);
+#endif
+	debug15(print_vector_8(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* Fix gaps along diagonal to prevent going into lower triangle, which can happen with ties between E and H */
+	if (rhigh >= c) {
+	  (*directions_Egap)[c][c] = DIAG;
+	  (*directions_nogap)[c][c] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_CHAR);
+      }
+    }
+  }
+
+#ifdef CHECK1
+  /* Row 0 and column 0 directions fail anyway due to saturation */
+  /* Handle (0,1) and (1,0) directions, otherwise DIAG */
+  (*directions_Egap)[1][0] = HORIZ;
+#endif
+
+#ifdef DEBUG2
+  printf("SIMD: Dynprog_simd_8_upper\n");
+  Matrix8_print_ud(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
+		   revp,uband,/*upperp*/true);
+  Directions8_print_ud(*directions_nogap,*directions_Egap,
+		       rlength,glength,rsequence,gsequence,gsequence_alt,
+		       revp,uband,/*upperp*/true);
+#endif
+  
+#ifdef CHECK1
+  /* Check for row 0 directions */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    assert((*directions_Egap)[c][0] != DIAG);
+    assert((*directions_nogap)[c][0] != DIAG);
+  }
+#endif
+
+#ifdef DEBUG14
+  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,&directions_Fgap_std,
+				       this,rsequence,/*gsequence (NULL for debugging)*/NULL,/*gsequence_alt*/NULL,
+				       rlength,glength,goffset,chroffset,chrhigh,watsonp,mismatchtype,
+				       open,extend,lband,uband,jump_late_p,revp);
+
+#ifdef DEBUG2
+  printf("Banded %s\n",revp ? "rev" : "fwd");
+  Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
+		 revp);
+  Directions32_print(directions_nogap_std,directions_Egap_std,directions_Fgap_std,
+		     rlength,glength,rsequence,gsequence,gsequence_alt,
+		     revp);
+#endif
+  
+  banded_matrix8_compare(matrix,matrix_std,rlength,glength,lband,uband,
+			 rsequence,gsequence,gsequence_alt,
+			 goffset,chroffset,chrhigh,watsonp,revp);
+
+  banded_directions8_compare_nogap(matrix,*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
+
+  banded_directions8_compare_Egap(matrix,*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
+#endif
+
+  _mm_free(pairscores[4]);
+  _mm_free(pairscores[3]);
+  _mm_free(pairscores[2]);
+  _mm_free(pairscores[1]);
+  _mm_free(pairscores[0]);
+
+  return matrix;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* Designed for computation below the main diagonal, so no F loop or bottom masking needed */
+/* Operates by rows */
+Score8_T **
+Dynprog_simd_8_lower (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap,
+		      T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		      int rlength, int glength,
+#ifdef DEBUG14
+		      int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		      Mismatchtype_T mismatchtype, int open, int extend,
+		      int lband, bool jump_late_p, bool revp) {
+  Score8_T **matrix, *score_column;
+  __m128i pairscores_std;
+#ifdef HAVE_SSE4_1
+  __m128i E_infinity;
+#else
+  __m128i pairscores_best, all_128, E_infinity_plus_128;
+#endif
+  __m128i H_nogap_c, X_prev_nogap, E_c_gap, E_mask, T1;
+  __m128i gap_open, gap_extend, complement_dummy;
+  __m128i dir_vert;
+  int glength_ceil, r, c;
+  int clo, chigh;
+  int na1, na2, na2_alt;
+  Score8_T *pairscores[5], *pairscores_ptr, pairscore;
+  Pairdistance_T **pairdistance_array_type, score1, score2;
+
+#ifdef DEBUG14
+  Score32_T **matrix_std;
+  Direction32_T **directions_nogap_std, **directions_Egap_std;
+  char na2_single;
+#endif
+
+
+  debug15(printf("Dynprog_simd_8_lower.  jump_late_p %d, open %d, extend %d\n",jump_late_p,open,extend));
+
+  glength_ceil = (int) ((glength + SIMD_NCHARS)/SIMD_NCHARS) * SIMD_NCHARS;
+
+#ifdef HAVE_SSE4_1
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+#else
+  /* Needed to use _mm_max_epu8 and _mm_min_epu8, instead of signed versions */
+  pairdistance_array_type = pairdistance_array_plus_128[mismatchtype];
+  all_128 = _mm_set1_epi8(128);
+#endif
+  
+  debug(printf("compute_scores_simd_8_byrows (lower): "));
+  debug(printf("Lengths are %d and %d, so band is %d on left\n",rlength,glength,lband));
+  debug(printf("Genome length rounded up to %d\n",glength_ceil));
+
+  matrix = aligned_score8_alloc(glength_ceil,rlength,
+				this->aligned.two.lower_matrix_ptrs,this->aligned.two.lower_matrix_space);
+  *directions_nogap = aligned_directions8_alloc(glength_ceil,rlength,
+						this->aligned.two.lower_directions_ptrs_0,this->aligned.two.lower_directions_space_0);
+  *directions_Egap = aligned_directions8_alloc(glength_ceil,rlength,
+					       this->aligned.two.lower_directions_ptrs_1,this->aligned.two.lower_directions_space_1);
+
+#if 0
+  /* Column 0 initialization */
+  /* penalty = open; */
+  for (r = 1; r <= lband && r <= rlength; r++) {
+    /* penalty += extend; */
+    (*directions_Egap)[r][0] = VERT;
+    (*directions_nogap)[r][0] = VERT;
+  }
+#endif
+#if 0
+  /* Already initialized to DIAG.  Actually no longer initializing directions_Egap */
+  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
+  (*directions_nogap)[0][0] = DIAG; /* previously used STOP */
+#endif
+#if 0
+  /* Row 0 initialization */
+  /* penalty = open; */
+  for (c = 1; c <= SIMD_NCHARS && c <= glength; c++) {
+    /* penalty += extend; */
+    (*directions_nogap)[0][c] = HORIZ;
+  }
+#endif
+
+
+  /* Load pairscores.  Store match - mismatch */
+  pairscores[0] = (Score8_T *) _mm_malloc(glength_ceil * sizeof(Score8_T),16);
+  pairscores[1] = (Score8_T *) _mm_malloc(glength_ceil * sizeof(Score8_T),16);
+  pairscores[2] = (Score8_T *) _mm_malloc(glength_ceil * sizeof(Score8_T),16);
+  pairscores[3] = (Score8_T *) _mm_malloc(glength_ceil * sizeof(Score8_T),16);
+  pairscores[4] = (Score8_T *) _mm_malloc(glength_ceil * sizeof(Score8_T),16);
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) pairscores[0],0,glength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[1],0,glength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[2],0,glength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[3],0,glength_ceil*sizeof(Score8_T));
+  memset((void *) pairscores[4],0,glength_ceil*sizeof(Score8_T));
+#endif
+
+  /* For non-SSE4.1, addition of 128 taken care of by using pairdistance_array_plus_128 above */
+  c = 0; na2 = na2_alt = 4; /* 'N' */
+#ifdef HAVE_SSE4_1
+  pairscores[0][c] = (Score8_T) pairdistance_array_type[(int) 'A'][na2];
+  pairscores[1][c] = (Score8_T) pairdistance_array_type[(int) 'C'][na2];
+  pairscores[2][c] = (Score8_T) pairdistance_array_type[(int) 'G'][na2];
+  pairscores[3][c] = (Score8_T) pairdistance_array_type[(int) 'T'][na2];
+  pairscores[4][c] = (Score8_T) pairdistance_array_type[(int) 'N'][na2];
+#else
+  pairscores[0][c] = (Score8_T) pairdistance_array_type[(int) 'A'][na2] - 128;
+  pairscores[1][c] = (Score8_T) pairdistance_array_type[(int) 'C'][na2] - 128;
+  pairscores[2][c] = (Score8_T) pairdistance_array_type[(int) 'G'][na2] - 128;
+  pairscores[3][c] = (Score8_T) pairdistance_array_type[(int) 'T'][na2] - 128;
+  pairscores[4][c] = (Score8_T) pairdistance_array_type[(int) 'N'][na2] - 128;
+#endif
+
+  if (revp == false) {
+    for (c = 1; c <= glength; c++) {
+      na2 = gsequence[c-1];
+      na2_alt = gsequence_alt[c-1];
+      /* Take max here */
+      score1 = pairdistance_array_type[(int) 'A'][na2];
+      score2 = pairdistance_array_type[(int) 'A'][na2_alt];
+      pairscores[0][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'C'][na2];
+      score2 = pairdistance_array_type[(int) 'C'][na2_alt];
+      pairscores[1][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'G'][na2];
+      score2 = pairdistance_array_type[(int) 'G'][na2_alt];
+      pairscores[2][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'T'][na2];
+      score2 = pairdistance_array_type[(int) 'T'][na2_alt];
+      pairscores[3][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'N'][na2];
+      score2 = pairdistance_array_type[(int) 'N'][na2_alt];
+      pairscores[4][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+    }
+  } else {
+    for (c = 1; c <= glength; c++) {
+      na2 = gsequence[1-c];
+      na2_alt = gsequence_alt[1-c];
+      /* Take max here */
+      score1 = pairdistance_array_type[(int) 'A'][na2];
+      score2 = pairdistance_array_type[(int) 'A'][na2_alt];
+      pairscores[0][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'C'][na2];
+      score2 = pairdistance_array_type[(int) 'C'][na2_alt];
+      pairscores[1][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'G'][na2];
+      score2 = pairdistance_array_type[(int) 'G'][na2_alt];
+      pairscores[2][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'T'][na2];
+      score2 = pairdistance_array_type[(int) 'T'][na2_alt];
+      pairscores[3][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'N'][na2];
+      score2 = pairdistance_array_type[(int) 'N'][na2_alt];
+      pairscores[4][c] = (Score8_T) (score1 > score2) ? score1 : score2;
+    }
+  }
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) &(pairscores[0][c]),0,(glength_ceil-c)*sizeof(Score8_T));
+  memset((void *) &(pairscores[1][c]),0,(glength_ceil-c)*sizeof(Score8_T));
+  memset((void *) &(pairscores[2][c]),0,(glength_ceil-c)*sizeof(Score8_T));
+  memset((void *) &(pairscores[3][c]),0,(glength_ceil-c)*sizeof(Score8_T));
+  memset((void *) &(pairscores[4][c]),0,(glength_ceil-c)*sizeof(Score8_T));
+#endif
+
+  complement_dummy = _mm_set1_epi8(-1);
+
+  gap_open = _mm_set1_epi8((Score8_T) open);
+  gap_extend = _mm_set1_epi8((Score8_T) extend);
+
+#ifdef HAVE_SSE4_1
+  E_infinity = _mm_set1_epi8(POS_INFINITY_8);
+#else
+  E_infinity_plus_128 = _mm_set1_epi8(POS_INFINITY_8+128);
+#endif
+  if (jump_late_p) {
+    for (clo = 0; clo <= glength; clo += SIMD_NCHARS) {
+      if ((chigh = clo + SIMD_NCHARS - 1) > glength) {
+	chigh = glength;
+      }
+
+      /* dir_vert tests if E >= H.  To fill in first row of each
+	 column block with non-diags, make E == H. */
+      E_mask = _mm_set1_epi8(1);
+      E_c_gap = _mm_set1_epi8(NEG_INFINITY_8);
+      H_nogap_c = _mm_set1_epi8(NEG_INFINITY_8-open); /* Compensate for T1 = H + open */
+
+      for (r = clo; r <= chigh + lband && r <= rlength; r++) {
+	score_column = matrix[r];
+
+	if (r == 0) {
+	  na1 = 4; /* 'N' */
+	} else {
+	  na1 = revp ? nt_to_int_array[rsequence[1-r]] : nt_to_int_array[rsequence[r-1]];
+	}
+	pairscores_ptr = pairscores[na1];
+
+	if (r == 0) {
+	  X_prev_nogap = _mm_set1_epi8(0);
+	} else if (clo == 0) {
+	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8); /* works if we start outside the clo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	} else {
+	  /* second or greater block of 8 */
+	  X_prev_nogap = _mm_set1_epi8(matrix[r-1][clo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	}
+
+	debug15(print_vector_8(E_mask,clo,r,"E_mask"));
+#ifdef HAVE_SSE4_1
+	E_c_gap = _mm_min_epi8(E_c_gap,_mm_add_epi8(E_mask,E_infinity));
+#else
+	E_c_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_c_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_c_gap,clo,r,"E_c_gap"));
+	debug15(print_vector_8(H_nogap_c,clo,r,"H_nogap_c load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi8(H_nogap_c, gap_open);
+	dir_vert = _mm_cmplt_epi8(E_c_gap,T1); /* E < H */
+	dir_vert = _mm_andnot_si128(dir_vert,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[r][clo]),dir_vert);
+	debug15(print_vector_8(T1,clo,r,"T1"));
+	debug15(print_vector_8(dir_vert,clo,r,"dir_Egap"));
+
+#ifdef HAVE_SSE4_1
+	E_c_gap = _mm_max_epi8(E_c_gap, T1); /* Compare H + open with horiz */
+	E_c_gap = _mm_adds_epi8(E_c_gap, gap_extend); /* Compute scores for Egap (horiz + open) */
+	E_c_gap = _mm_min_epi8(E_c_gap,_mm_add_epi8(E_mask,E_infinity));
+#elif 1
+	E_c_gap = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(E_c_gap, all_128), _mm_add_epi8(T1, all_128)), all_128);
+	E_c_gap = _mm_adds_epi8(E_c_gap, gap_extend); /* Compute scores for Egap (horiz + open) */
+	E_c_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_c_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#else
+	/* Try to avoid unnecessary shifts by 128, but overflows */
+	E_c_gap = _mm_max_epu8(_mm_add_epi8(E_c_gap, all_128), _mm_add_epi8(T1, all_128));
+	E_c_gap = _mm_add_epi8(E_c_gap, gap_extend); /* Compute scores for Egap (horiz + open) */
+	E_c_gap = _mm_sub_epi8(_mm_min_epu8(E_c_gap, _mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_c_gap,clo,r,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_c,LAST_CHAR);
+	H_nogap_c = _mm_slli_si128(H_nogap_c,ONE_CHAR);
+	H_nogap_c = _mm_or_si128(H_nogap_c, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores.  No alternate chars for query sequence */
+#ifdef HAVE_SSE4_1
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_ptr[clo]));
+	debug15(print_vector_8(pairscores_std,clo,r,"pairscores_std"));
+	H_nogap_c = _mm_adds_epi8(H_nogap_c, pairscores_std);
+#else
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_ptr[clo])); /* Has 128 added already */
+	pairscores_best = _mm_sub_epi8(pairscores_std, all_128);
+	debug15(print_vector_8(pairscores_best,clo,r,"pairscores_std"));
+	H_nogap_c = _mm_adds_epi8(H_nogap_c, pairscores_best);
+#endif
+	_mm_clflush(&H_nogap_c); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_8(H_nogap_c,clo,r,"H"));
+
+	dir_vert = _mm_cmplt_epi8(E_c_gap,H_nogap_c); /* E < H */
+	dir_vert = _mm_andnot_si128(dir_vert,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[r][clo]),dir_vert);
+	debug15(print_vector_8(dir_vert,clo,r,"dir_nogap"));
+
+
+#ifdef HAVE_SSE4_1
+	H_nogap_c = _mm_max_epi8(H_nogap_c, E_c_gap); /* Compare H + pairscores with horiz + extend */
+#else
+	/* Compare H + pairscores with horiz + extend */
+	H_nogap_c = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(H_nogap_c, all_128), _mm_add_epi8(E_c_gap, all_128)), all_128);
+#endif
+	debug15(print_vector_8(H_nogap_c,clo,r,"H_nogap_c store"));
+	_mm_store_si128((__m128i *) &(score_column[clo]), H_nogap_c);
+
+
+	/* Fix gaps along diagonal to prevent going into upper triangle, which can happen with ties between E and H */
+	if (chigh >= r) {
+	  (*directions_Egap)[r][r] = DIAG;
+	  (*directions_nogap)[r][r] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_CHAR);
+      }
+    }
+
+  } else {
+    /* jump early */
+    for (clo = 0; clo <= glength; clo += SIMD_NCHARS) {
+      if ((chigh = clo + SIMD_NCHARS - 1) > glength) {
+	chigh = glength;
+      }
+
+      /* dir_vert tests if E > H.  To fill in first row of each
+	 column block with non-diags, make E > H. */
+      E_mask = _mm_set1_epi8(1);
+      E_c_gap = _mm_set1_epi8(NEG_INFINITY_8+1);
+      H_nogap_c = _mm_set1_epi8(NEG_INFINITY_8-open); /* Compensate for T1 = H + open */
+
+      for (r = clo; r <= chigh + lband && r <= rlength; r++) {
+	score_column = matrix[r];
+
+	if (r == 0) {
+	  na1 = 4; /* 'N' */
+	} else {
+	  na1 = revp ? nt_to_int_array[rsequence[1-r]] : nt_to_int_array[rsequence[r-1]];
+	}
+	pairscores_ptr = pairscores[na1];
+
+	if (r == 0) {
+	  X_prev_nogap = _mm_set1_epi8(0);
+	} else if (clo == 0) {
+	  X_prev_nogap = _mm_set1_epi8(NEG_INFINITY_8); /* works if we start outside the clo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	} else {
+	  /* second or greater block of 8 */
+	  X_prev_nogap = _mm_set1_epi8(matrix[r-1][clo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_CHAR);
+	}
+
+	debug15(print_vector_8(E_mask,clo,r,"E_mask"));
+#ifdef HAVE_SSE4_1
+	E_c_gap = _mm_min_epi8(E_c_gap,_mm_add_epi8(E_mask,E_infinity));
+#else
+	E_c_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_c_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_c_gap,clo,r,"E_c_gap"));
+	debug15(print_vector_8(H_nogap_c,clo,r,"H_nogap_c load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi8(H_nogap_c, gap_open);
+	dir_vert = _mm_cmpgt_epi8(E_c_gap,T1); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[r][clo]),dir_vert);
+	debug15(print_vector_8(T1,clo,r,"T1"));
+	debug15(print_vector_8(dir_vert,clo,r,"dir_Egap"));
+
+	/* Compare H + open with vert */
+#ifdef HAVE_SSE4_1
+	E_c_gap = _mm_max_epi8(E_c_gap, T1); /* Compare H + open with vert */
+	E_c_gap = _mm_adds_epi8(E_c_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_c_gap = _mm_min_epi8(E_c_gap,_mm_add_epi8(E_mask,E_infinity));
+#elif 1
+	E_c_gap = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(E_c_gap, all_128), _mm_add_epi8(T1, all_128)), all_128);
+	E_c_gap = _mm_adds_epi8(E_c_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_c_gap = _mm_sub_epi8(_mm_min_epu8(_mm_add_epi8(E_c_gap, all_128),_mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#else
+	/* Try to avoid unnecessary shifts by 128, but overflows */
+	E_c_gap = _mm_max_epu8(_mm_add_epi8(E_c_gap, all_128), _mm_add_epi8(T1, all_128));
+	E_c_gap = _mm_add_epi8(E_c_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_c_gap = _mm_sub_epi8(_mm_min_epu8(E_c_gap, _mm_add_epi8(E_mask,E_infinity_plus_128)), all_128);
+#endif
+	debug15(print_vector_8(E_c_gap,clo,r,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_c,LAST_CHAR);
+	H_nogap_c = _mm_slli_si128(H_nogap_c,ONE_CHAR);
+	H_nogap_c = _mm_or_si128(H_nogap_c, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores.  No alternate chars for query sequence */
+#ifdef HAVE_SSE4_1
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_ptr[clo]));
+	debug15(print_vector_8(pairscores_std,clo,r,"pairscores_std"));
+	H_nogap_c = _mm_adds_epi8(H_nogap_c, pairscores_std);
+#else
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_ptr[clo])); /* Has 128 added already */
+	pairscores_best = _mm_sub_epi8(pairscores_std, all_128);
+	debug15(print_vector_8(pairscores_best,clo,r,"pairscores_std"));
+	H_nogap_c = _mm_adds_epi8(H_nogap_c, pairscores_best);
+#endif
+	_mm_clflush(&H_nogap_c); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_8(H_nogap_c,clo,r,"H"));
+
+	dir_vert = _mm_cmpgt_epi8(E_c_gap,H_nogap_c); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[r][clo]),dir_vert);
+	debug15(print_vector_8(dir_vert,clo,r,"dir_nogap"));
+
+
+#ifdef HAVE_SSE4_1
+	H_nogap_c = _mm_max_epi8(H_nogap_c, E_c_gap); /* Compare H + pairscores with horiz + extend */
+#else
+	/* Compare H + pairscores with horiz + extend */
+	H_nogap_c = _mm_sub_epi8(_mm_max_epu8(_mm_add_epi8(H_nogap_c, all_128), _mm_add_epi8(E_c_gap, all_128)), all_128);
+#endif
+	debug15(print_vector_8(H_nogap_c,clo,r,"H_nogap_c store"));
+	_mm_store_si128((__m128i *) &(score_column[clo]), H_nogap_c);
+
+	/* Fix gaps along diagonal to prevent going into upper triangle, which can happen with ties between E and H */
+	if (chigh >= r) {
+	  (*directions_Egap)[r][r] = DIAG;
+	  (*directions_nogap)[r][r] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_CHAR);
+      }
+    }
+  }
+
+#ifdef CHECK1
+  /* Row 0 and column 0 directions fail anyway due to saturation */
+  /* Handle (0,1) and (1,0) directions, otherwise DIAG */
+  (*directions_Egap)[1][0] = VERT;
+#endif
+
+#ifdef DEBUG2
+  printf("SIMD: Dynprog_simd_8_lower\n");
+  Matrix8_print_ud(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
+		   revp,lband,/*upperp*/false);
+  Directions8_print_ud(*directions_nogap,*directions_Egap,
+		       rlength,glength,rsequence,gsequence,gsequence_alt,
+		       revp,lband,/*upperp*/false);
+#endif
+  
+#ifdef CHECK1
+  /* Check for column 0 directions */
+  for (r = 1; r <= lband && r <= rlength; r++) {
+    assert((*directions_Egap)[r][0] != DIAG);
+    assert((*directions_nogap)[r][0] != DIAG);
+  }
+#endif
+
+#ifdef DEBUG14
+  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,&directions_Fgap_std,
+				       this,rsequence,/*gsequence (NULL for debugging)*/NULL,/*gsequence_alt*/NULL,
+				       rlength,glength,goffset,chroffset,chrhigh,watsonp,mismatchtype,
+				       open,extend,lband,uband,jump_late_p,revp);
+
+#ifdef DEBUG2
+  printf("Banded %s\n",revp ? "rev" : "fwd");
+  Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
+		 revp);
+  Directions32_print(directions_nogap_std,directions_Egap_std,directions_Fgap_std,
+		     rlength,glength,rsequence,gsequence,gsequence_alt,
+		     revp);
+#endif
+  
+  banded_matrix8_compare(matrix,matrix_std,rlength,glength,lband,uband,
+			 rsequence,gsequence,gsequence_alt,
+			 goffset,chroffset,chrhigh,watsonp,revp);
+
+  banded_directions8_compare_nogap(matrix,*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
+
+  banded_directions8_compare_Egap(matrix,*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
+#endif
+
+  _mm_free(pairscores[4]);
+  _mm_free(pairscores[3]);
+  _mm_free(pairscores[2]);
+  _mm_free(pairscores[1]);
+  _mm_free(pairscores[0]);
+
+  return matrix;
+}
+#endif
+
+
+#ifdef HAVE_SSE2
+/* Modified from Dynprog_simd_16_upper.  Operates by columns. */
+Score16_T **
+Dynprog_simd_16 (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap,
+		 Direction16_T ***directions_Fgap,
+		 T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		 int rlength, int glength,
+#ifdef DEBUG14
+		 int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		 Mismatchtype_T mismatchtype, int open, int extend,
+		 int lband, int uband, bool jump_late_p, bool revp) {
+  int c_gap, last_nogap, score, *FF; /* Need to have the ability to go past NEG_INFINITY */
+  Score16_T **matrix, *score_column;
+  __m128i pairscores_std, pairscores_alt;
+  __m128i H_nogap_r, X_prev_nogap, E_r_gap, T1;
+  __m128i gap_open, gap_extend, complement_dummy;
+  __m128i dir_horiz;
+  int rlength_ceil, lband_ceil, r, c;
+  int rlo, rhigh, rlo_calc, rhigh_calc;
+  int na1, na2, na2_alt;
+  Score16_T *pairscores_col0;
+  Score16_T *pairscores[5], *pairscores_std_ptr, *pairscores_alt_ptr, pairscore, pairscore0;
+  Pairdistance_T **pairdistance_array_type;
+
+#ifdef DEBUG14
+  Score32_T **matrix_std;
+  Direction32_T **directions_nogap_std, **directions_Egap_std, **directions_Fgap_std;
+#endif
+
+
+  debug15(printf("Dynprog_simd_16.  jump_late_p %d, open %d, extend %d\n",jump_late_p,open,extend));
+
+  rlength_ceil = (int) ((rlength + SIMD_NSHORTS)/SIMD_NSHORTS) * SIMD_NSHORTS;
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+  
+  debug(printf("compute_scores_simd_16_bycols (upper): "));
+  debug(printf("Lengths are %d and %d, so band is %d on right\n",rlength,glength,uband));
+  debug(printf("Query length rounded up to %d\n",rlength_ceil));
+
+  matrix = aligned_score16_alloc(rlength_ceil,glength,
+				 this->aligned.one.matrix_ptrs,this->aligned.one.matrix_space);
+  *directions_nogap = aligned_directions16_alloc(rlength_ceil,glength,
+						 this->aligned.one.directions_ptrs_0,this->aligned.one.directions_space_0);
+  *directions_Egap = aligned_directions16_alloc(rlength_ceil,glength,
+						this->aligned.one.directions_ptrs_1,this->aligned.one.directions_space_1);
+  /* Need to calloc to save time in F loop */
+  *directions_Fgap = aligned_directions16_calloc(rlength_ceil,glength,
+						 this->aligned.one.directions_ptrs_2,this->aligned.one.directions_space_2);
+
+#if 0
+  /* Row 0 initialization */
+  /* penalty = open; */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    /* penalty += extend; */
+    (*directions_Egap)[c][0] = HORIZ;
+    (*directions_nogap)[c][0] = HORIZ;
+  }
+#endif
+#if 0
+  /* Already initialized to DIAG.  Actually, no longer initializing directions_Egap */
+  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
+  (*directions_nogap)[0][0] = DIAG; /* previously used STOP */
+#endif
+#if 0
+  /* Column 0 initialization */
+  /* penalty = open; */
+  for (r = 1; r <= SIMD_NSHORTS && r <= rlength; r++) {
+    /* penalty += extend; */
+    (*directions_nogap)[0][r] = VERT;
+  }
+#endif
+
+
+  /* Load pairscores.  Store match - mismatch */
+  pairscores[0] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[1] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[2] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[3] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[4] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+
+  lband_ceil = (int) ((lband + SIMD_NSHORTS)/SIMD_NSHORTS) * SIMD_NSHORTS;
+  pairscores_col0 = (Score16_T *) _mm_malloc(lband_ceil * sizeof(Score16_T),16);
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) pairscores[0],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[1],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[2],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[3],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[4],0,rlength_ceil*sizeof(Score16_T));
+#endif
+
+
+  pairscores_col0[0] = (Score16_T) 0;
+  /* Initializion just to lband causes errors in dir_horiz for Egap */
+  for (r = 1; r < lband_ceil; r++) {
+    pairscores_col0[r] = (Score16_T) NEG_INFINITY_16;
+  }
+
+  r = 0; na1 = 'N';
+  pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
+  pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
+  pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
+  pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
+  pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+
+  if (revp == false) {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[r-1];
+      pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  } else {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[1-r];
+      pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  }
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) &(pairscores[0][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[1][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[2][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[3][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[4][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+#endif
+
+  complement_dummy = _mm_set1_epi16(-1);
+  
+  FF = (int *) MALLOC((glength + 1) * sizeof(int));
+
+  gap_open = _mm_set1_epi16((Score16_T) open);
+  gap_extend = _mm_set1_epi16((Score16_T) extend);
+
+  if (jump_late_p) {
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NSHORTS) {
+      if ((rhigh = rlo + SIMD_NSHORTS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E >= H.  To fill in first column of each
+	 row block with non-diags, make E == H. */
+      E_r_gap = _mm_set1_epi16(NEG_INFINITY_16);
+      H_nogap_r = _mm_set1_epi16(NEG_INFINITY_16-open); /* Compensate for T1 = H + open */
+
+      if ((c = rlo - lband) < 0) {
+	c = 0;
+      }
+      for ( ; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  pairscores_std_ptr = pairscores_alt_ptr = pairscores_col0;
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi16(0);
+	  } else {
+	    X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	  }
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	  pairscores_std_ptr = pairscores[na2];
+	  pairscores_alt_ptr = pairscores[na2_alt];
+
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	  } else {
+	    /* second or greater block of 16 */
+	    X_prev_nogap = _mm_set1_epi16(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	  }
+	}
+
+	debug15(print_vector_16(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi16(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmplt_epi16(E_r_gap,T1); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(T1,rlo,c,"T1"));
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_Egap"));
+
+	E_r_gap = _mm_max_epi16(E_r_gap, T1); /* Compare H + open with vert */
+	E_r_gap = _mm_adds_epi16(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	debug15(print_vector_16(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_SHORT);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_SHORT);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	H_nogap_r = _mm_adds_epi16(H_nogap_r, _mm_max_epi16(pairscores_std,pairscores_alt));
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmplt_epi16(E_r_gap,H_nogap_r); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_nogap"));
+
+	H_nogap_r = _mm_max_epi16(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* F loop */
+	if ((rlo_calc = rlo) <= c - uband) {
+	  rlo_calc = c - uband;
+	}
+	if ((rhigh_calc = rhigh) >= c + lband) {
+	  rhigh_calc = c + lband;
+	  if (c > 0) {
+	    /* Set bottom values to DIAG (not HORIZ) to prevent going outside of lband */
+	    pairscore = pairscores[na2][rhigh_calc];
+	    if ((pairscore0 = pairscores[(int) na2_alt][rhigh_calc]) > pairscore) {
+	      pairscore = pairscore0;
+	    }
+	    /* No need to fix for non-SSE4.1: pairscore -= 128; */
+	    if ((score = (int) matrix[c-1][rhigh_calc-1] + (int) pairscore) < NEG_INFINITY_16) {
+	      score_column[rhigh_calc] = NEG_INFINITY_16; /* Saturation */
+	    } else if (score > POS_INFINITY_16) {
+	      score_column[rhigh_calc] = POS_INFINITY_16; /* Saturation */
+	    } else {
+	      score_column[rhigh_calc] = (Score16_T) score;
+	    }
+	    (*directions_Egap)[c][rhigh_calc] = DIAG;
+	    (*directions_nogap)[c][rhigh_calc] = DIAG;
+	  }
+	}
+
+	debug3(printf("F loop: rlo %d, rhigh %d, c %d, lband %d, uband %d => rlo_calc %d, rhigh_calc %d\n",
+		      rlo,rhigh,rlo_calc,c,lband,uband,rhigh_calc));
+
+	if (rlo == 0) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else if (c >= rlo + uband) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else {
+	  debug3(printf("At c %d, uband %d, reading c_gap %d\n",c,uband,FF[c]));
+	  c_gap = FF[c];
+	  last_nogap = (int) score_column[rlo_calc-1];
+	}
+
+	if ((r = rlo_calc) == c - uband) {
+	  /* Handle top value as a special case to prevent going outside of uband */
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  score = last_nogap + open /* + extend */;
+	  c_gap = score + extend;
+	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  r++;
+	}
+
+	/* score_ptr = &(score_column[rlo_calc]); -- Also possible, but less transparent */
+	for ( ; r <= rhigh_calc; r++) {
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  if (c_gap /* + extend */ >= (score = last_nogap + open /* + extend */)) {  /* Use >= for jump late */
+	    c_gap += extend;
+	    (*directions_Fgap)[c][r] = VERT;
+	  } else {
+	    c_gap = score + extend;
+	    /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+	  }
+	  
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  debug3(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap));
+	  if (c_gap >= last_nogap) {  /* Use >= for jump late */
+	    last_nogap = c_gap;
+	    score_column[r] = (c_gap < NEG_INFINITY_16) ? NEG_INFINITY_16 : (Score16_T) c_gap; /* Saturation */
+	    (*directions_nogap)[c][r] = VERT;
+	  }
+	}
+
+	FF[c] = c_gap;
+	debug3(printf("At c %d, storing c_gap %d\n",c,FF[c]));
+	H_nogap_r = _mm_load_si128((__m128i *) &(score_column[rlo])); /* Need to reload because of changes by F loop */
+      }
+    }
+
+  } else {
+    /* jump early */
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NSHORTS) {
+      if ((rhigh = rlo + SIMD_NSHORTS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E > H.  To fill in first column of each
+	 row block with non-diags, make E > H. */
+      E_r_gap = _mm_set1_epi16(NEG_INFINITY_16+1);
+      H_nogap_r = _mm_set1_epi16(NEG_INFINITY_16-open); /* Compensate for T1 = H + open */
+
+      if ((c = rlo - lband) < 0) {
+	c = 0;
+      }
+      for ( ; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  pairscores_std_ptr = pairscores_alt_ptr = pairscores_col0;
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi16(0);
+	  } else {
+	    X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	  }
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	  pairscores_std_ptr = pairscores[na2];
+	  pairscores_alt_ptr = pairscores[na2_alt];
+
+	  if (rlo == 0) {
+	    X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16);
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	  } else {
+	    /* second or greater block of 16 */
+	    X_prev_nogap = _mm_set1_epi16(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	    X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	  }
+	}
+
+	debug15(print_vector_16(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi16(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmpgt_epi16(E_r_gap,T1); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(T1,rlo,c,"T1"));
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_Egap"));
+
+	E_r_gap = _mm_max_epi16(E_r_gap, T1); /* Compare H + open with vert */
+	E_r_gap = _mm_adds_epi16(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	debug15(print_vector_16(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_SHORT);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_SHORT);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	H_nogap_r = _mm_adds_epi16(H_nogap_r, _mm_max_epi16(pairscores_std,pairscores_alt));
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmpgt_epi16(E_r_gap,H_nogap_r); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_nogap"));
+
+	H_nogap_r = _mm_max_epi16(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* F loop */
+	if ((rlo_calc = rlo) < c - uband) {
+	  rlo_calc = c - uband;
+	}
+	if ((rhigh_calc = rhigh) >= c + lband) {
+	  rhigh_calc = c + lband;
+	  if (c > 0) {
+	    /* Set bottom values to DIAG (not HORIZ) to prevent going outside of lband */
+	    pairscore = pairscores[na2][rhigh_calc];
+	    if ((pairscore0 = pairscores[(int) na2_alt][rhigh_calc]) > pairscore) {
+	      pairscore = pairscore0;
+	    }
+	    /* No need to fix for non-SSE4.1: pairscore -= 128; */
+	    if ((score = (int) matrix[c-1][rhigh_calc-1] + (int) pairscore) < NEG_INFINITY_16) {
+	      score_column[rhigh_calc] = NEG_INFINITY_16; /* Saturation */
+	    } else if (score > POS_INFINITY_16) {
+	      score_column[rhigh_calc] = POS_INFINITY_16; /* Saturation */
+	    } else {
+	      score_column[rhigh_calc] = (Score16_T) score;
+	    }
+	    (*directions_Egap)[c][rhigh_calc] = DIAG;
+	    (*directions_nogap)[c][rhigh_calc] = DIAG;
+	  }
+	}
+
+	debug3(printf("F loop: rlo %d, rhigh %d, c %d, lband %d, uband %d => rlo_calc %d, rhigh_calc %d\n",
+		      rlo,rhigh,rlo_calc,c,lband,uband,rhigh_calc));
+
+	if (rlo == 0) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else if (c >= rlo + uband) {
+	  c_gap = NEG_INFINITY_INT;
+	  last_nogap = NEG_INFINITY_INT;
+	} else {
+	  c_gap = FF[c];
+	  last_nogap = (int) score_column[rlo_calc-1];
+	}
+
+	if ((r = rlo_calc) == c - uband) {
+	  /* Handle top value as a special case to prevent going outside of uband */
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  score = last_nogap + open /* + extend */;
+	  c_gap = score + extend;
+	  /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+	  
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  r++;
+	}
+
+	/* score_ptr = &(score_column[rlo_calc]); -- Also possible, but less transparent */
+	for ( ; r <= rhigh_calc; r++) {
+	  /* FGAP */
+	  debug3(printf("Fgap at r %d, c %d: c_gap + extend %d vs last_nogap + open + extend %d\n",
+			r,c,c_gap + extend,last_nogap + open + extend));
+	  if (c_gap /* + extend */ > (score = last_nogap + open /* + extend */)) {  /* Use > for jump early */
+	    c_gap += extend;
+	    (*directions_Fgap)[c][r] = VERT;
+	  } else {
+	    c_gap = score + extend;
+	    /* (*directions_Fgap)[c][r] = DIAG: -- Already initialized to DIAG */
+	  }
+	  
+	  /* NOGAP */
+	  last_nogap = (int) score_column[r];
+	  debug3(printf("assign nogap at r %d, c %d: H/E %d vs vert + extend %d\n",r,c,last_nogap,c_gap));
+	  if (c_gap > last_nogap) {  /* Use > for jump early */
+	    last_nogap = c_gap;
+	    score_column[r] = (c_gap < NEG_INFINITY_16) ? NEG_INFINITY_16 : (Score16_T) c_gap; /* Saturation */
+	    (*directions_nogap)[c][r] = VERT;
+	  }
+	}
+
+	FF[c] = c_gap;
+	debug3(printf("At c %d, storing c_gap %d\n",c,FF[c]));
+	H_nogap_r = _mm_load_si128((__m128i *) &(score_column[rlo])); /* Need to reload because of changes by F loop */
+      }
+    }
+  }
+
+
+#ifdef CHECK1
+  /* Row 0 and column 0 directions fail anyway due to saturation */
+  /* Handle (0,1) and (1,0) directions, otherwise DIAG */
+  (*directions_Egap)[1][0] = HORIZ;
+  (*directions_Fgap)[0][1] = VERT;
+#endif
+
+
+#ifdef DEBUG2
+  printf("SIMD: Dynprog_simd_16\n");
+  Matrix16_print(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
+			 revp,lband,uband);
+  Directions16_print(*directions_nogap,*directions_Egap,*directions_Fgap,
+			     rlength,glength,rsequence,gsequence,gsequence_alt,
+			     revp,lband,uband);
+#endif
+
+#ifdef CHECK1
+  /* Check for row 0 directions */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    assert((*directions_Egap)[c][0] != DIAG);
+    assert((*directions_nogap)[c][0] != DIAG);
+  }
+  /* Check for column 0 directions */
+  for (r = 1; r <= lband && r <= rlength; r++) {
+    assert((*directions_Fgap)[0][r] != DIAG);
+    assert((*directions_nogap)[0][r] != DIAG);
+  }
+#endif
+
+#ifdef DEBUG14
+  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,&directions_Fgap_std,
+				       this,rsequence,/*gsequence (NULL for debugging)*/NULL,/*gsequence_alt*/NULL,
+				       rlength,glength,goffset,chroffset,chrhigh,watsonp,mismatchtype,
+				       open,extend,lband,uband,jump_late_p,revp,/*saturation*/NEG_INFINITY_16);
+
+#ifdef DEBUG2
+  printf("Banded\n");
+  Dynprog_Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
+			 revp,lband,uband);
+  Dynprog_Directions32_print(directions_nogap_std,directions_Egap_std,directions_Fgap_std,
+			     rlength,glength,rsequence,gsequence,gsequence_alt,
+			     revp,lband,uband);
+#endif
+  
+  banded_matrix16_compare(matrix,matrix_std,rlength,glength,lband,uband,
+			  rsequence,gsequence,gsequence_alt,
+			  goffset,chroffset,chrhigh,watsonp,revp);
+
+  banded_directions16_compare_nogap(*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
+  banded_directions16_compare_Egap(*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
+  banded_directions16_compare_Fgap(*directions_Fgap,directions_Fgap_std,rlength,glength,lband,uband);
+#endif
+
+  FREE(FF);
+  _mm_free(pairscores_col0);
+  _mm_free(pairscores[4]);
+  _mm_free(pairscores[3]);
+  _mm_free(pairscores[2]);
+  _mm_free(pairscores[1]);
+  _mm_free(pairscores[0]);
+
+  return matrix;
+  }
+#endif
+
+
+
+#ifdef HAVE_SSE2
+/* Designed for computation above the diagonal, so no F loop or bottom masking needed */
+/* Operates by columns */
+Score16_T **
+Dynprog_simd_16_upper (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap,
+		       T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		       int rlength, int glength,
+#ifdef DEBUG14
+		       int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		       Mismatchtype_T mismatchtype, int open, int extend,
+		       int uband, bool jump_late_p, bool revp) {
+  Score16_T **matrix, *score_column;
+  __m128i pairscores_std, pairscores_alt;
+  __m128i H_nogap_r, X_prev_nogap, E_r_gap, E_mask, E_infinity, T1;
+  __m128i gap_open, gap_extend, complement_dummy;
+  __m128i dir_horiz;
+  int rlength_ceil, r, c;
+  int rlo, rhigh;
+  int na1, na2, na2_alt;
+  Score16_T *pairscores[5], *pairscores_std_ptr, *pairscores_alt_ptr, pairscore;
+  Pairdistance_T **pairdistance_array_type;
+
+#ifdef DEBUG14
+  Score32_T **matrix_std;
+  Direction32_T **directions_nogap_std, **directions_Egap_std;
+  char na2_single;
+#endif
+
+  debug15(printf("Dynprog_simd_16_upper.  jump_late_p %d, open %d, extend %d\n",jump_late_p,open,extend));
+
+  rlength_ceil = (int) ((rlength + SIMD_NSHORTS)/SIMD_NSHORTS) * SIMD_NSHORTS;
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+  
+  debug(printf("compute_scores_simd_16_bycols (upper): "));
+  debug(printf("Lengths are %d and %d, so band is %d on right\n",rlength,glength,uband));
+  debug(printf("Query length rounded up to %d\n",rlength_ceil));
+
+  matrix = aligned_score16_alloc(rlength_ceil,glength,
+				 this->aligned.two.upper_matrix_ptrs,this->aligned.two.upper_matrix_space);
+  *directions_nogap = aligned_directions16_alloc(rlength_ceil,glength,
+						 this->aligned.two.upper_directions_ptrs_0,this->aligned.two.upper_directions_space_0);
+  *directions_Egap = aligned_directions16_alloc(rlength_ceil,glength,
+						this->aligned.two.upper_directions_ptrs_1,this->aligned.two.upper_directions_space_1);
+
+#if 0
+  /* Row 0 initialization */
+  /* penalty = open; */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    /* penalty += extend; */
+    (*directions_Egap)[c][0] = HORIZ;
+    (*directions_nogap)[c][0] = HORIZ;
+  }
+#endif
+#if 0
+  /* Already initialized to DIAG.  Actually, no longer initializing directions_Egap */
+  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
+  (*directions_nogap)[0][0] = DIAG; /* previously used STOP */
+#endif
+#if 0
+  /* Column 0 initialization */
+  /* penalty = open; */
+  for (r = 1; r <= SIMD_NSHORTS && r <= rlength; r++) {
+    /* penalty += extend; */
+    (*directions_nogap)[0][r] = VERT;
+  }
+#endif
+
+
+  /* Load pairscores.  Store match - mismatch */
+  pairscores[0] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[1] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[2] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[3] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+  pairscores[4] = (Score16_T *) _mm_malloc(rlength_ceil * sizeof(Score16_T),16);
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) pairscores[0],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[1],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[2],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[3],0,rlength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[4],0,rlength_ceil*sizeof(Score16_T));
+#endif
+
+  r = 0; na1 = 'N';
+  pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
+  pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
+  pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
+  pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
+  pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+
+  if (revp == false) {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[r-1];
+      pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  } else {
+    for (r = 1; r <= rlength; r++) {
+      na1 = (int) rsequence[1-r];
+      pairscores[0][r] = (Score16_T) pairdistance_array_type[na1][(int) 'A'];
+      pairscores[1][r] = (Score16_T) pairdistance_array_type[na1][(int) 'C'];
+      pairscores[2][r] = (Score16_T) pairdistance_array_type[na1][(int) 'G'];
+      pairscores[3][r] = (Score16_T) pairdistance_array_type[na1][(int) 'T'];
+      pairscores[4][r] = (Score16_T) pairdistance_array_type[na1][(int) 'N'];
+    }
+  }
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) &(pairscores[0][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[1][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[2][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[3][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+  memset((void *) &(pairscores[4][r]),0,(rlength_ceil-r)*sizeof(Score16_T));
+#endif
+
+  complement_dummy = _mm_set1_epi16(-1);
+  
+  gap_open = _mm_set1_epi16((Score16_T) open);
+  gap_extend = _mm_set1_epi16((Score16_T) extend);
+
+  E_infinity = _mm_set1_epi16(POS_INFINITY_16);
+  if (jump_late_p) {
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NSHORTS) {
+      if ((rhigh = rlo + SIMD_NSHORTS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E >= H.  To fill in first column of each
+	 row block with non-diags, could make E == H.  But irrelevant,
+	 because these are above the diagonal. */
+      E_mask = _mm_set1_epi16(1);
+      E_r_gap = _mm_set1_epi16(NEG_INFINITY_16);
+      H_nogap_r = _mm_set1_epi16(NEG_INFINITY_16-open); /* Compensate for T1 = H + open */
+
+      for (c = rlo; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  na2 = na2_alt = 4; /* 'N' */
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	}
+	pairscores_std_ptr = pairscores[na2];
+	pairscores_alt_ptr = pairscores[na2_alt];
+
+	if (c == 0) {
+	  X_prev_nogap = _mm_set1_epi16(0);
+	} else if (rlo == 0) {
+	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* works if we start outside the rlo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	} else {
+	  /* second or greater block of 16 */
+	  X_prev_nogap = _mm_set1_epi16(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	}
+
+	debug15(print_vector_16(E_mask,rlo,c,"E_mask"));
+	E_r_gap = _mm_min_epi16(E_r_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi16(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmplt_epi16(E_r_gap,T1); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(T1,rlo,c,"T1"));
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_Egap"));
+
+	E_r_gap = _mm_max_epi16(E_r_gap, T1); /* Compare H + open with vert */
+	E_r_gap = _mm_adds_epi16(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_min_epi16(E_r_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_SHORT);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_SHORT);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	H_nogap_r = _mm_adds_epi16(H_nogap_r, _mm_max_epi16(pairscores_std,pairscores_alt));
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmplt_epi16(E_r_gap,H_nogap_r); /* E < H */
+	dir_horiz = _mm_andnot_si128(dir_horiz,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_nogap"));
+
+	H_nogap_r = _mm_max_epi16(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* Fix gaps along diagonal to prevent going into lower triangle, which can happen with ties between E and H */
+	if (rhigh >= c) {
+	  (*directions_Egap)[c][c] = DIAG;
+	  (*directions_nogap)[c][c] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_SHORT);
+      }
+    }
+
+  } else {
+    /* jump early */
+    for (rlo = 0; rlo <= rlength; rlo += SIMD_NSHORTS) {
+      if ((rhigh = rlo + SIMD_NSHORTS - 1) > rlength) {
+	rhigh = rlength;
+      }
+
+      /* dir_horiz tests if E > H.  To fill in first column of each
+	 row block with non-diags, could make E > H.  But irrelevant,
+	 because these are above the diagonal. */
+      E_mask = _mm_set1_epi16(1);
+      E_r_gap = _mm_set1_epi16(NEG_INFINITY_16+1);
+      H_nogap_r = _mm_set1_epi16(NEG_INFINITY_16-open); /* Compensate for T1 = H + open */
+
+      for (c = rlo; c <= rhigh + uband && c <= glength; c++) {
+	score_column = matrix[c];
+
+	if (c == 0) {
+	  na2 = na2_alt = 4; /* 'N' */
+	} else {
+	  na2 = revp ? nt_to_int_array[gsequence[1-c]] : nt_to_int_array[gsequence[c-1]];
+	  na2_alt = revp ? nt_to_int_array[gsequence_alt[1-c]] : nt_to_int_array[gsequence_alt[c-1]];
+	}
+	pairscores_std_ptr = pairscores[na2];
+	pairscores_alt_ptr = pairscores[na2_alt];
+
+	if (c == 0) {
+	  X_prev_nogap = _mm_set1_epi16(0);
+	} else if (rlo == 0) {
+	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* works if we start outside the rlo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	} else {
+	  /* second or greater block of 16 */
+	  X_prev_nogap = _mm_set1_epi16(matrix[c-1][rlo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	}
+
+	debug15(print_vector_16(E_mask,rlo,c,"E_mask"));
+	E_r_gap = _mm_min_epi16(E_r_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_r_gap,rlo,c,"E_r_gap"));
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi16(H_nogap_r, gap_open);
+	dir_horiz = _mm_cmpgt_epi16(E_r_gap,T1); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(T1,rlo,c,"T1"));
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_Egap"));
+
+	E_r_gap = _mm_max_epi16(E_r_gap, T1); /* Compare H + open with vert */
+	E_r_gap = _mm_adds_epi16(E_r_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_r_gap = _mm_min_epi16(E_r_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_r_gap,rlo,c,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_r,LAST_SHORT);
+	H_nogap_r = _mm_slli_si128(H_nogap_r,ONE_SHORT);
+	H_nogap_r = _mm_or_si128(H_nogap_r, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores, allowing for alternate genomic nt */
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_std_ptr[rlo]));
+	pairscores_alt = _mm_load_si128((__m128i *) &(pairscores_alt_ptr[rlo]));
+	H_nogap_r = _mm_adds_epi16(H_nogap_r, _mm_max_epi16(pairscores_std,pairscores_alt));
+	_mm_clflush(&H_nogap_r); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H"));
+
+	dir_horiz = _mm_cmpgt_epi16(E_r_gap,H_nogap_r); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[c][rlo]),dir_horiz);
+	debug15(print_vector_16(dir_horiz,rlo,c,"dir_nogap"));
+
+	H_nogap_r = _mm_max_epi16(H_nogap_r, E_r_gap); /* Compare H + pairscores with horiz + extend */
+	debug15(print_vector_16(H_nogap_r,rlo,c,"H_nogap_r store"));
+	_mm_store_si128((__m128i *) &(score_column[rlo]), H_nogap_r);
+
+
+	/* Fix gaps along diagonal to prevent going into lower triangle, which can happen with ties between E and H */
+	if (rhigh >= c) {
+	  (*directions_Egap)[c][c] = DIAG;
+	  (*directions_nogap)[c][c] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_SHORT);
+      }
+    }
+  }
+
+#ifdef CHECK1
+  /* Row 0 and column 0 directions fail anyway due to saturation */
+  /* Handle (0,1) and (1,0) directions, otherwise DIAG */
+  (*directions_Egap)[1][0] = HORIZ;
+#endif
+
+#ifdef DEBUG2
+  printf("SIMD: Dynprog_simd_16_upper\n");
+  Matrix16_print_ud(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
+		    revp,uband,/*upperp*/true);
+  Directions16_print_ud(*directions_nogap,*directions_Egap,
+			rlength,glength,rsequence,gsequence,gsequence_alt,
+			revp,uband,/*upperp*/true);
+#endif
+
+#ifdef CHECK1
+  /* Check for row 0 directions */
+  for (c = 1; c <= uband && c <= glength; c++) {
+    assert((*directions_Egap)[c][0] != DIAG);
+    assert((*directions_nogap)[c][0] != DIAG);
+  }
+#endif
+
+#ifdef DEBUG14
+  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,
+				       this,rsequence,/*gsequence (NULL for debugging)*/NULL,/*gsequence_alt*/NULL,
+				       rlength,glength,
+				       goffset,chroffset,chrhigh,watsonp,mismatchtype,
+				       open,extend,lband,uband,jump_late_p,revp);
+
+#ifdef DEBUG2
+  printf("Banded\n");
+  Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
+		 revp);
+  Directions32_print(directions_nogap_std,directions_Egap_std,
+		     rlength,glength,rsequence,gsequence,gsequence_alt,
+		     revp);
+#endif
+  
+  banded_matrix16_compare(matrix,matrix_std,rlength,glength,lband,uband,
+			  rsequence,gsequence,gsequence_alt,
+			  goffset,chroffset,chrhigh,watsonp,revp);
+
+  banded_directions16_compare_nogap(*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
+
+  banded_directions16_compare_Egap(*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
+#endif
+
+  _mm_free(pairscores[4]);
+  _mm_free(pairscores[3]);
+  _mm_free(pairscores[2]);
+  _mm_free(pairscores[1]);
+  _mm_free(pairscores[0]);
+
+  return matrix;
+}
+#endif
+
+
+
+
+#ifdef HAVE_SSE2
+/* Designed for computation below the diagonal, so no F loop or bottom masking needed */
+/* Operates by rows */
+Score16_T **
+Dynprog_simd_16_lower (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap,
+		       T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		       int rlength, int glength,
+#ifdef DEBUG14
+		       int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		       Mismatchtype_T mismatchtype, int open, int extend,
+		       int lband, bool jump_late_p, bool revp) {
+  Score16_T **matrix, *score_column;
+  __m128i pairscores_std;
+  __m128i H_nogap_c, X_prev_nogap, E_c_gap, E_mask, E_infinity, T1;
+  __m128i gap_open, gap_extend, complement_dummy;
+  __m128i dir_vert;
+  int glength_ceil, r, c;
+  int clo, chigh;
+  int na1, na2, na2_alt;
+  Score16_T *pairscores[5], *pairscores_ptr, pairscore;
+  Pairdistance_T **pairdistance_array_type, score1, score2;
+
+#ifdef DEBUG14
+  Score32_T **matrix_std;
+  Direction32_T **directions_nogap_std, **directions_Egap_std;
+  char na2_single;
+#endif
+
+  debug15(printf("Dynprog_simd_16_lower.  jump_late_p %d, open %d, extend %d\n",jump_late_p,open,extend));
+
+  glength_ceil = (int) ((glength + SIMD_NSHORTS)/SIMD_NSHORTS) * SIMD_NSHORTS;
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+  
+  debug(printf("compute_scores_simd_16_byrows (lower): "));
+  debug(printf("Lengths are %d and %d, so band is %d on left\n",rlength,glength,lband));
+  debug(printf("Genome length rounded up to %d\n",glength_ceil));
+
+  matrix = aligned_score16_alloc(glength_ceil,rlength,
+				 this->aligned.two.lower_matrix_ptrs,this->aligned.two.lower_matrix_space);
+  *directions_nogap = aligned_directions16_alloc(glength_ceil,rlength,
+						 this->aligned.two.lower_directions_ptrs_0,this->aligned.two.lower_directions_space_0);
+  *directions_Egap = aligned_directions16_alloc(glength_ceil,rlength,
+						this->aligned.two.lower_directions_ptrs_1,this->aligned.two.lower_directions_space_1);
+
+#if 0
+  /* Column 0 initialization */
+  /* penalty = open; */
+  for (r = 1; r <= lband && r <= rlength; r++) {
+    /* penalty += extend; */
+    (*directions_Egap)[r][0] = VERT;
+    (*directions_nogap)[r][0] = VERT;
+  }
+#endif
+#if 0
+  /* Already initialized to DIAG.  Actually, no longer initializing directions_Egap */
+  (*directions_Egap)[1][0] = DIAG; /* previously used STOP */
+  (*directions_nogap)[0][0] = DIAG; /* previously used STOP */
+#endif
+#if 0
+  /* Row 0 initialization */
+  /* penalty = open; */
+  for (c = 1; c <= SIMD_NSHORTS && c <= glength; c++) {
+    /* penalty += extend; */
+    (*directions_nogap)[0][c] = HORIZ;
+  }
+#endif
+
+
+  /* Load pairscores.  Store match - mismatch */
+  pairscores[0] = (Score16_T *) _mm_malloc(glength_ceil * sizeof(Score16_T),16);
+  pairscores[1] = (Score16_T *) _mm_malloc(glength_ceil * sizeof(Score16_T),16);
+  pairscores[2] = (Score16_T *) _mm_malloc(glength_ceil * sizeof(Score16_T),16);
+  pairscores[3] = (Score16_T *) _mm_malloc(glength_ceil * sizeof(Score16_T),16);
+  pairscores[4] = (Score16_T *) _mm_malloc(glength_ceil * sizeof(Score16_T),16);
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) pairscores[0],0,glength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[1],0,glength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[2],0,glength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[3],0,glength_ceil*sizeof(Score16_T));
+  memset((void *) pairscores[4],0,glength_ceil*sizeof(Score16_T));
+#endif
+
+  c = 0; na2 = na2_alt = 'N';
+  pairscores[0][c] = (Score16_T) pairdistance_array_type[(int) 'A'][na2];
+  pairscores[1][c] = (Score16_T) pairdistance_array_type[(int) 'C'][na2];
+  pairscores[2][c] = (Score16_T) pairdistance_array_type[(int) 'G'][na2];
+  pairscores[3][c] = (Score16_T) pairdistance_array_type[(int) 'T'][na2];
+  pairscores[4][c] = (Score16_T) pairdistance_array_type[(int) 'N'][na2];
+
+  if (revp == false) {
+    for (c = 1; c <= glength; c++) {
+      na2 = gsequence[c-1];
+      na2_alt = gsequence_alt[c-1];
+      /* Take max here */
+      score1 = pairdistance_array_type[(int) 'A'][na2];
+      score2 = pairdistance_array_type[(int) 'A'][na2_alt];
+      pairscores[0][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'C'][na2];
+      score2 = pairdistance_array_type[(int) 'C'][na2_alt];
+      pairscores[1][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'G'][na2];
+      score2 = pairdistance_array_type[(int) 'G'][na2_alt];
+      pairscores[2][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'T'][na2];
+      score2 = pairdistance_array_type[(int) 'T'][na2_alt];
+      pairscores[3][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'N'][na2];
+      score2 = pairdistance_array_type[(int) 'N'][na2_alt];
+      pairscores[4][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+    }
+  } else {
+    for (c = 1; c <= glength; c++) {
+      na2 = gsequence[1-c];
+      na2_alt = gsequence_alt[1-c];
+      /* Take max here */
+      score1 = pairdistance_array_type[(int) 'A'][na2];
+      score2 = pairdistance_array_type[(int) 'A'][na2_alt];
+      pairscores[0][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'C'][na2];
+      score2 = pairdistance_array_type[(int) 'C'][na2_alt];
+      pairscores[1][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'G'][na2];
+      score2 = pairdistance_array_type[(int) 'G'][na2_alt];
+      pairscores[2][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'T'][na2];
+      score2 = pairdistance_array_type[(int) 'T'][na2_alt];
+      pairscores[3][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+
+      score1 = pairdistance_array_type[(int) 'N'][na2];
+      score2 = pairdistance_array_type[(int) 'N'][na2_alt];
+      pairscores[4][c] = (Score16_T) (score1 > score2) ? score1 : score2;
+    }
+  }
+
+#if 0
+  /* Should not be necessary */
+  memset((void *) &(pairscores[0][c]),0,(glength_ceil-c)*sizeof(Score16_T));
+  memset((void *) &(pairscores[1][c]),0,(glength_ceil-c)*sizeof(Score16_T));
+  memset((void *) &(pairscores[2][c]),0,(glength_ceil-c)*sizeof(Score16_T));
+  memset((void *) &(pairscores[3][c]),0,(glength_ceil-c)*sizeof(Score16_T));
+  memset((void *) &(pairscores[4][c]),0,(glength_ceil-c)*sizeof(Score16_T));
+#endif
+
+  complement_dummy = _mm_set1_epi16(-1);
+
+  gap_open = _mm_set1_epi16((Score16_T) open);
+  gap_extend = _mm_set1_epi16((Score16_T) extend);
+
+  E_infinity = _mm_set1_epi16(POS_INFINITY_16);
+  if (jump_late_p) {
+    for (clo = 0; clo <= glength; clo += SIMD_NSHORTS) {
+      if ((chigh = clo + SIMD_NSHORTS - 1) > glength) {
+	chigh = glength;
+      }
+
+      /* dir_vert tests if E >= H.  To fill in first row of each
+	 column block with non-diags, make E == H. */
+      E_mask = _mm_set1_epi16(1);
+      E_c_gap = _mm_set1_epi16(NEG_INFINITY_16);
+      H_nogap_c = _mm_set1_epi16(NEG_INFINITY_16-open); /* Compensate for T1 = H + open */
+
+      for (r = clo; r <= chigh + lband && r <= rlength; r++) {
+	score_column = matrix[r];
+
+	if (r == 0) {
+	  na1 = 4; /* 'N' */
+	} else {
+	  na1 = revp ? nt_to_int_array[rsequence[1-r]] : nt_to_int_array[rsequence[r-1]];
+	}
+	pairscores_ptr = pairscores[na1];
+
+	if (r == 0) {
+	  X_prev_nogap = _mm_set1_epi16(0);
+	} else if (clo == 0) {
+	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* works if we start outside the rlo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	} else {
+	  /* second or greater block of 16 */
+	  X_prev_nogap = _mm_set1_epi16(matrix[r-1][clo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	}
+
+	debug15(print_vector_16(E_mask,clo,r,"E_mask"));
+	E_c_gap = _mm_min_epi16(E_c_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_c_gap,clo,r,"E_c_gap"));
+	debug15(print_vector_16(H_nogap_c,clo,r,"H_nogap_c load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi16(H_nogap_c, gap_open);
+	dir_vert = _mm_cmplt_epi16(E_c_gap,T1); /* E < H */
+	dir_vert = _mm_andnot_si128(dir_vert,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[r][clo]),dir_vert);
+	debug15(print_vector_16(T1,clo,r,"T1"));
+	debug15(print_vector_16(dir_vert,clo,r,"dir_Egap"));
+
+	E_c_gap = _mm_max_epi16(E_c_gap, T1); /* Compare H + open with vert */
+	E_c_gap = _mm_adds_epi16(E_c_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_c_gap = _mm_min_epi16(E_c_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_c_gap,clo,r,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_c,LAST_SHORT);
+	H_nogap_c = _mm_slli_si128(H_nogap_c,ONE_SHORT);
+	H_nogap_c = _mm_or_si128(H_nogap_c, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores.  No alternate chars for query sequence. */
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_ptr[clo]));
+	H_nogap_c = _mm_adds_epi16(H_nogap_c, pairscores_std);
+	_mm_clflush(&H_nogap_c); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_16(H_nogap_c,clo,r,"H"));
+
+	dir_vert = _mm_cmplt_epi16(E_c_gap,H_nogap_c); /* E < H */
+	dir_vert = _mm_andnot_si128(dir_vert,complement_dummy);	/* E >= H, for jump late */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[r][clo]),dir_vert);
+	debug15(print_vector_16(dir_vert,clo,r,"dir_nogap"));
+
+	H_nogap_c = _mm_max_epi16(H_nogap_c, E_c_gap); /* Compare H + pairscores with horiz + extend */
+	debug15(print_vector_16(H_nogap_c,clo,r,"H_nogap_c store"));
+	_mm_store_si128((__m128i *) &(score_column[clo]), H_nogap_c);
+
+
+	/* Fix gaps along diagonal to prevent going into upper triangle, which can happen with ties between E and H */
+	if (chigh >= r) {
+	  (*directions_Egap)[r][r] = DIAG;
+	  (*directions_nogap)[r][r] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_SHORT);
+      }
+    }
+
+  } else {
+    /* jump early */
+    for (clo = 0; clo <= glength; clo += SIMD_NSHORTS) {
+      if ((chigh = clo + SIMD_NSHORTS - 1) > glength) {
+	chigh = glength;
+      }
+
+      /* dir_vert tests if E > H.  To fill in first row of each
+	 column block with non-diags, make E > H. */
+      E_mask = _mm_set1_epi16(1);
+      E_c_gap = _mm_set1_epi16(NEG_INFINITY_16+1);
+      H_nogap_c = _mm_set1_epi16(NEG_INFINITY_16-open); /* Compensate for T1 = H + open */
+
+      for (r = clo; r <= chigh + lband && r <= rlength; r++) {
+	score_column = matrix[r];
+
+	if (r == 0) {
+	  na1 = 4; /* 'N' */
+	} else {
+	  na1 = revp ? nt_to_int_array[rsequence[1-r]] : nt_to_int_array[rsequence[r-1]];
+	}
+	pairscores_ptr = pairscores[na1];
+
+	if (r == 0) {
+	  X_prev_nogap = _mm_set1_epi16(0);
+	} else if (clo == 0) {
+	  X_prev_nogap = _mm_set1_epi16(NEG_INFINITY_16); /* works if we start outside the rlo bounds */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	} else {
+	  /* second or greater block of 16 */
+	  X_prev_nogap = _mm_set1_epi16(matrix[r-1][clo-1]); /* get H from previous block and previous column */
+	  X_prev_nogap = _mm_srli_si128(X_prev_nogap,LAST_SHORT);
+	}
+
+	debug15(print_vector_16(E_mask,clo,r,"E_mask"));
+	E_c_gap = _mm_min_epi16(E_c_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_c_gap,clo,r,"E_c_gap"));
+	debug15(print_vector_16(H_nogap_c,clo,r,"H_nogap_c load"));
+
+	/* EGAP */
+	T1 = _mm_adds_epi16(H_nogap_c, gap_open);
+	dir_vert = _mm_cmpgt_epi16(E_c_gap,T1); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_Egap)[r][clo]),dir_vert);
+	debug15(print_vector_16(T1,clo,r,"T1"));
+	debug15(print_vector_16(dir_vert,clo,r,"dir_Egap"));
+
+	E_c_gap = _mm_max_epi16(E_c_gap, T1); /* Compare H + open with vert */
+	E_c_gap = _mm_adds_epi16(E_c_gap, gap_extend); /* Compute scores for Egap (vert + open) */
+	E_c_gap = _mm_min_epi16(E_c_gap,_mm_add_epi16(E_mask,E_infinity));
+	debug15(print_vector_16(E_c_gap,clo,r,"E"));
+
+
+	/* NOGAP */
+	T1 = _mm_srli_si128(H_nogap_c,LAST_SHORT);
+	H_nogap_c = _mm_slli_si128(H_nogap_c,ONE_SHORT);
+	H_nogap_c = _mm_or_si128(H_nogap_c, X_prev_nogap);
+	X_prev_nogap = T1;
+
+	/* Add pairscores.  No alternate chars for query sequence */
+	pairscores_std = _mm_load_si128((__m128i *) &(pairscores_ptr[clo]));
+	H_nogap_c = _mm_adds_epi16(H_nogap_c, pairscores_std);
+	_mm_clflush(&H_nogap_c); /* Needed for opencc -O3 on AMD */
+	debug15(print_vector_16(H_nogap_c,clo,r,"H"));
+
+	dir_vert = _mm_cmpgt_epi16(E_c_gap,H_nogap_c); /* E > H, for jump early */
+	_mm_store_si128((__m128i *) &((*directions_nogap)[r][clo]),dir_vert);
+	debug15(print_vector_16(dir_vert,clo,r,"dir_nogap"));
+
+	H_nogap_c = _mm_max_epi16(H_nogap_c, E_c_gap); /* Compare H + pairscores with horiz + extend */
+	debug15(print_vector_16(H_nogap_c,clo,r,"H_nogap_c store"));
+	_mm_store_si128((__m128i *) &(score_column[clo]), H_nogap_c);
+
+
+	/* Fix gaps along diagonal to prevent going into upper triangle, which can happen with ties between E and H */
+	if (chigh >= r) {
+	  (*directions_Egap)[r][r] = DIAG;
+	  (*directions_nogap)[r][r] = DIAG;
+	}
+
+	/* No need for F loop here */
+	E_mask = _mm_slli_si128(E_mask,ONE_SHORT);
+      }
+    }
+  }
+
+
+#ifdef CHECK1
+  /* Row 0 and column 0 directions fail anyway due to saturation */
+  /* Handle (0,1) and (1,0) directions, otherwise DIAG */
+  (*directions_Egap)[1][0] = VERT;
+#endif
+
+#ifdef DEBUG2
+  printf("SIMD: Dynprog_simd_16_lower\n");
+  Matrix16_print_ud(matrix,rlength,glength,rsequence,gsequence,gsequence_alt,
+		    revp,lband,/*upperp*/false);
+  Directions16_print_ud(*directions_nogap,*directions_Egap,
+			rlength,glength,rsequence,gsequence,gsequence_alt,
+			revp,lband,/*upperp*/false);
+#endif
+
+#ifdef CHECK1
+  /* Check for column 0 directions */
+  for (r = 1; r <= lband && r <= rlength; r++) {
+    assert((*directions_Egap)[r][0] != DIAG);
+    assert((*directions_nogap)[r][0] != DIAG);
+  }
+#endif
+
+#ifdef DEBUG14
+  matrix_std = compute_scores_standard(&directions_nogap_std,&directions_Egap_std,
+				       this,rsequence,/*gsequence (NULL for debugging)*/NULL,/*gsequence_alt*/NULL,
+				       rlength,glength,
+				       goffset,chroffset,chrhigh,watsonp,mismatchtype,
+				       open,extend,lband,uband,jump_late_p,revp);
+
+#ifdef DEBUG2
+  printf("Banded\n");
+  Matrix32_print(matrix_std,rlength,glength,rsequence,gsequence,gsequence_alt,
+		 revp);
+  Directions32_print(directions_nogap_std,directions_Egap_std,
+		     rlength,glength,rsequence,gsequence,gsequence_alt,
+		     revp);
+#endif
+  
+  banded_matrix16_compare(matrix,matrix_std,rlength,glength,lband,uband,
+			  rsequence,gsequence,gsequence_alt,
+			  goffset,chroffset,chrhigh,watsonp,revp);
+
+  banded_directions16_compare_nogap(*directions_nogap,directions_nogap_std,rlength,glength,lband,uband);
+
+  banded_directions16_compare_Egap(*directions_Egap,directions_Egap_std,rlength,glength,lband,uband);
+#endif
+
+  _mm_free(pairscores[4]);
+  _mm_free(pairscores[3]);
+  _mm_free(pairscores[2]);
+  _mm_free(pairscores[1]);
+  _mm_free(pairscores[0]);
+
+  return matrix;
+}
+#endif
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+List_T
+Dynprog_traceback_8 (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		     Direction8_T **directions_nogap, Direction8_T **directions_Egap, Direction8_T **directions_Fgap,
+		     int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+		     int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		     Univcoord_T chroffset, Univcoord_T chrhigh,
+		     int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction8_T dir;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug(printf("Starting traceback_8 at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
+
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[c][r]) == HORIZ) {
+      dist = 1;
+      while (c > 0 && directions_Egap[c--][r] != DIAG) {
+	dist++;
+      }
+      if (c == 0) {
+	/* Directions in column 0 can sometimes be DIAG */
+	dir = VERT;
+      } else {
+	dir = directions_nogap[c][r];
+      }
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
+				      /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+
+    } else if (dir == VERT) {
+      dist = 1;
+      while (r > 0 && directions_Fgap[c][r--] != DIAG) {
+	dist++;
+      }
+      if (r == 0) {
+	/* Directions in row 0 can sometimes be DIAG */
+	dir = HORIZ;
+      } else {
+	dir = directions_nogap[c][r];
+      }
+
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,r+dist,c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
+#ifdef DEBUG14
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
+	
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+      
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+      
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+
+      r--; c--;
+    }
+  }
+
+  if (r == 0 && c == 0) {
+    /* Finished with a diagonal step */
+
+  } else if (c == 0) {
+    dist = r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,r,/*c*/0+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+
+  } else {
+    assert(r == 0);
+    dist = c;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/*r*/0+LAZY_INDEL,c,dist,
+				    /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+#endif
+
+
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+List_T
+Dynprog_traceback_8_upper (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			   Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+			   int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			   int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			   Univcoord_T chroffset, Univcoord_T chrhigh,
+			   int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction8_T dir;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug(printf("Starting traceback_8_upper at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
+
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[c][r]) != DIAG) {
+      /* Must be HORIZ */
+      dist = 1;
+      /* Should not need to check for c > 0 if the main diagonal is populated with DIAG */
+      while (/* c > 0 && */ directions_Egap[c--][r] != DIAG) {
+	dist++;
+      }
+      assert(c != 0);
+      dir = directions_nogap[c][r];
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
+				      /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
+#ifdef DEBUG14
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
+	
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+	
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+
+      r--; c--;
+    }
+  }
+
+  assert(r == 0);
+  if (/* r == 0 && */ c == 0) {
+    /* Finished with a diagonal step */
+
+  } else {
+    assert(c != 0);
+    assert(r == 0);
+    dist = c;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/*r*/0+LAZY_INDEL,c,dist,
+				    /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+
+List_T
+Dynprog_traceback_8_lower (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			   Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+			   int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			   int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			   Univcoord_T chroffset, Univcoord_T chrhigh,
+			   int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction8_T dir;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug(printf("Starting traceback_8_lower at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
+
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[r][c]) != DIAG) {
+      /* Must be VERT */
+      dist = 1;
+      /* Should not need to check for r > 0 if the main diagonal is populated with DIAG */
+      while (/* r > 0 && */ directions_Egap[r--][c] != DIAG) {
+	dist++;
+      }
+      assert(r != 0);
+      dir = directions_nogap[r][c];
+
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,r+dist,c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
+#ifdef DEBUG14
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
+	
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+
+      r--; c--;
+    }
+  }
+
+  assert(c == 0);
+  if (r == 0 /* && c == 0 */) {
+    /* Finished with a diagonal step */
+
+  } else {
+    assert(r != 0);
+    assert(c == 0);
+    dist = r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,r,/*c*/0+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+
+
+List_T
+Dynprog_traceback_16 (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		      Direction16_T **directions_nogap, Direction16_T **directions_Egap, Direction16_T **directions_Fgap,
+		      int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+		      int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		      Univcoord_T chroffset, Univcoord_T chrhigh,
+		      int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction16_T dir;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug(printf("Starting traceback_16 at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
+
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[c][r]) == HORIZ) {
+      dist = 1;
+      while (c > 0 && directions_Egap[c--][r] != DIAG) {
+	dist++;
+      }
+      if (c == 0) {
+	/* Directions in column 0 can sometimes be DIAG */
+	dir = VERT;
+      } else {
+	dir = directions_nogap[c][r];
+      }
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
+				      /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+      
+    } else if (dir == VERT) {
+      dist = 1;
+      while (r > 0 && directions_Fgap[c][r--] != DIAG) {
+	dist++;
+      }
+      if (r == 0) {
+	/* Directions in row 0 can sometimes be DIAG */
+	dir = HORIZ;
+      } else {
+	dir = directions_nogap[c][r];
+      }
+
+      debug(printf("V%d: ",dist));
+      debug(printf("New dir at %d,%d is %d\n",c,r,dir));
+      pairs = Pairpool_add_queryskip(pairs,r+dist,c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
+#ifdef DEBUG14
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
+
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+
+      r--; c--;
+    }
+  }
+
+  if (r == 0 && c == 0) {
+    /* Finished with a diagonal step */
+
+  } else if (c == 0) {
+    dist = r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,r,/*c*/0+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+
+  } else {
+    assert(r == 0);
+    dist = c;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/*r*/0+LAZY_INDEL,c,dist,
+				    /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+
+
+List_T
+Dynprog_traceback_16_upper (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			    Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+			    int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			    int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			    Univcoord_T chroffset, Univcoord_T chrhigh,
+			    int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction16_T dir;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug(printf("Starting traceback_16_upper at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
+
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[c][r]) != DIAG) {
+      /* Must be HORIZ */
+      dist = 1;
+      /* Should not need to check for c > 0 if the main diagonal is populated with DIAG */
+      while (/* c > 0 && */ directions_Egap[c--][r] != DIAG) {
+	dist++;
+      }
+      assert(c != 0);
+      dir = directions_nogap[c][r];
+
+      debug(printf("H%d: ",dist));
+      pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,r,c+dist,dist,
+				      /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				      queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				      cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+      if (add_dashes_p == true) {
+	*nopens += 1;
+	*nindels += dist;
+      }
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
+#ifdef DEBUG14
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
+
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+
+      r--; c--;
+    }
+  }
+
+  assert(r == 0);
+  if (/* r == 0 && */ c == 0) {
+    /* Finished with a diagonal step */
+
+  } else {
+    assert(c != 0);
+    assert(r == 0);
+    dist = c;
+    debug(printf("H%d: ",dist));
+    pairs = Pairpool_add_genomeskip(&add_dashes_p,pairs,/*r*/0+LAZY_INDEL,c,dist,
+				    /*genomesequence*/NULL,/*genomesequenceuc*/NULL,
+				    queryoffset,genomeoffset,pairpool,revp,chroffset,chrhigh,
+				    cdna_direction,watsonp,dynprogindex,/*use_genomicseg_p*/false);
+    if (add_dashes_p == true) {
+      *nopens += 1;
+      *nindels += dist;
+    }
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+
+List_T
+Dynprog_traceback_16_lower (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			    Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+			    int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			    int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			    Univcoord_T chroffset, Univcoord_T chrhigh,
+			    int cdna_direction, bool watsonp, int dynprogindex) {
+  char c1, c1_uc, c2, c2_alt;
+  int dist;
+  bool add_dashes_p;
+  int querycoord, genomecoord;
+  Direction16_T dir;
+#ifdef DEBUG14
+  char c2_single;
+#endif
+
+  debug(printf("Starting traceback_16_lower at r=%d,c=%d (roffset=%d, goffset=%d)\n",r,c,queryoffset,genomeoffset));
+
+  while (r > 0 && c > 0) {  /* dir != STOP */
+    if ((dir = directions_nogap[r][c]) != DIAG) {
+      /* Must be VERT */
+      dist = 1;
+      /* Should not need to check for r > 0 if the main diagonal is populated with DIAG */
+      while (/* r > 0 && */ directions_Egap[r--][c] != DIAG) {
+	dist++;
+      }
+      assert(r != 0);
+      dir = directions_nogap[r][c];
+
+      debug(printf("V%d: ",dist));
+      pairs = Pairpool_add_queryskip(pairs,r+dist,c,dist,rsequence,
+				     queryoffset,genomeoffset,pairpool,revp,
+				     dynprogindex);
+      *nopens += 1;
+      *nindels += dist;
+      debug(printf("\n"));
+    }
+
+    if (dir == DIAG) {
+      querycoord = r-1;
+      genomecoord = c-1;
+      if (revp == true) {
+	querycoord = -querycoord;
+	genomecoord = -genomecoord;
+      }
+
+      c1 = rsequence[querycoord];
+      c1_uc = rsequenceuc[querycoord];
+      c2 = gsequence[genomecoord];
+      c2_alt = gsequence_alt[genomecoord];
+#ifdef DEBUG14
+      c2_single = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      if (c2 != c2_single) {
+	abort();
+      }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      if (c2 == '*') {
+	/* Don't push pairs past end of chromosome */
+	debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u, chroffset %u, chrhigh %u, watsonp %d\n",
+		     genomeoffset,genomecoord,chroffset,chrhigh,watsonp));
+
+      } else if (/*querysequenceuc[querycoord]*/c1_uc == c2 || c1_uc == c2_alt) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - match\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+
+      } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+
+      } else {
+	debug(printf("Pushing %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		     r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1_uc,c2));
+	*nmismatches += 1;
+	pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			      c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+      }
+
+      r--; c--;
+    }
+  }
+
+  assert(c == 0);
+  if (r == 0 /* && c == 0 */) {
+    /* Finished with a diagonal step */
+
+  } else {
+    assert(r != 0);
+    assert(c == 0);
+    dist = r;
+    debug(printf("V%d: ",dist));
+    pairs = Pairpool_add_queryskip(pairs,r,/*c*/0+LAZY_INDEL,dist,rsequence,
+				   queryoffset,genomeoffset,pairpool,revp,
+				   dynprogindex);
+    *nopens += 1;
+    *nindels += dist;
+    debug(printf("\n"));
+  }
+
+  return pairs;
+}
+#endif
+
+
diff --git a/src/dynprog_simd.h b/src/dynprog_simd.h
new file mode 100644
index 0000000..56948cf
--- /dev/null
+++ b/src/dynprog_simd.h
@@ -0,0 +1,121 @@
+#ifndef DYNPROG_SIMD_INCLUDED
+#define DYNPROG_SIMD_INCLUDED
+
+#include "dynprog.h"
+
+#define SIMD_MAXLENGTH_EPI8 40  /* 128/3 */
+
+
+#define T Dynprog_T
+
+extern Score8_T **
+Dynprog_simd_8 (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap,
+		Direction8_T ***directions_Fgap,
+		T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		int rlength, int glength,
+#ifdef DEBUG14
+		int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		Mismatchtype_T mismatchtype, int open, int extend,
+		int lband, int uband, bool jump_late_p, bool revp);
+
+extern Score8_T **
+Dynprog_simd_8_upper (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap,
+		      T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		      int rlength, int glength,
+#ifdef DEBUG14
+		      int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		      Mismatchtype_T mismatchtype, int open, int extend,
+		      int uband, bool jump_late_p, bool revp);
+
+extern Score8_T **
+Dynprog_simd_8_lower (Direction8_T ***directions_nogap, Direction8_T ***directions_Egap,
+		      T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		      int rlength, int glength,
+#ifdef DEBUG14
+		      int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		      Mismatchtype_T mismatchtype, int open, int extend,
+		      int lband, bool jump_late_p, bool revp);
+
+extern Score16_T **
+Dynprog_simd_16 (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap,
+		 Direction16_T ***directions_Fgap,
+		 T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		 int rlength, int glength,
+#ifdef DEBUG14
+		 int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		 Mismatchtype_T mismatchtype, int open, int extend,
+		 int lband, int uband, bool jump_late_p, bool revp);
+
+extern Score16_T **
+Dynprog_simd_16_upper (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap,
+		       T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		       int rlength, int glength,
+#ifdef DEBUG14
+		       int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		       Mismatchtype_T mismatchtype, int open, int extend,
+		       int uband, bool jump_late_p, bool revp);
+
+extern Score16_T **
+Dynprog_simd_16_lower (Direction16_T ***directions_nogap, Direction16_T ***directions_Egap,
+		       T this, char *rsequence, char *gsequence, char *gsequence_alt,
+		       int rlength, int glength,
+#ifdef DEBUG14
+		       int goffset, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+#endif
+		       Mismatchtype_T mismatchtype, int open, int extend,
+		       int lband, bool jump_late_p, bool revp);
+
+extern List_T
+Dynprog_traceback_8 (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		     Direction8_T **directions_nogap, Direction8_T **directions_Egap, Direction8_T **directions_Fgap,
+		     int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+		     int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		     Univcoord_T chroffset, Univcoord_T chrhigh,
+		     int cdna_direction, bool watsonp, int dynprogindex);
+
+extern List_T
+Dynprog_traceback_8_upper (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			   Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+			   int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			   int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			   Univcoord_T chroffset, Univcoord_T chrhigh,
+			   int cdna_direction, bool watsonp, int dynprogindex);
+
+extern List_T
+Dynprog_traceback_8_lower (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			   Direction8_T **directions_nogap, Direction8_T **directions_Egap,
+			   int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			   int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			   Univcoord_T chroffset, Univcoord_T chrhigh,
+			   int cdna_direction, bool watsonp, int dynprogindex);
+
+extern List_T
+Dynprog_traceback_16 (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		      Direction16_T **directions_nogap, Direction16_T **directions_Egap, Direction16_T **directions_Fgap,
+		      int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+		      int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+		      Univcoord_T chroffset, Univcoord_T chrhigh,
+		      int cdna_direction, bool watsonp, int dynprogindex);
+
+extern List_T
+Dynprog_traceback_16_upper (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			    Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+			    int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			    int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			    Univcoord_T chroffset, Univcoord_T chrhigh,
+			    int cdna_direction, bool watsonp, int dynprogindex);
+
+extern List_T
+Dynprog_traceback_16_lower (List_T pairs, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+			    Direction16_T **directions_nogap, Direction16_T **directions_Egap,
+			    int r, int c, char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_alt,
+			    int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			    Univcoord_T chroffset, Univcoord_T chrhigh,
+			    int cdna_direction, bool watsonp, int dynprogindex);
+#undef T
+#endif
diff --git a/src/dynprog_single.c b/src/dynprog_single.c
new file mode 100644
index 0000000..154e473
--- /dev/null
+++ b/src/dynprog_single.c
@@ -0,0 +1,1375 @@
+static char rcsid[] = "$Id: dynprog_single.c 137609 2014-05-30 01:06:40Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "dynprog_single.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>		/* For ceil, log, pow */
+#include <ctype.h>		/* For tolower */
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+
+
+#include "bool.h"
+#include "except.h"
+#include "assert.h"
+#include "mem.h"
+#include "comp.h"
+#include "pair.h"
+#include "pairdef.h"
+#include "listdef.h"
+#include "boyer-moore.h"
+#include "complement.h"
+#include "intron.h"
+#include "maxent.h"
+#include "maxent_hr.h"
+#include "fastlog.h"
+#include "dynprog_simd.h"
+
+
+/* Tests whether get_genomic_nt == genomicseg in compute_scores procedures */
+/* #define EXTRACT_GENOMICSEG 1 */
+
+
+/* Prints parameters and results */
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+/* Getting genomic nt */
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+/* print_vector */
+#ifdef DEBUG15
+#define debug15(x) x
+#else
+#define debug15(x)
+#endif
+
+/* Homopolymer (e.g., PacBio) */
+#ifdef DEBUG16
+#define debug16(x) x
+#else
+#define debug16(x)
+#endif
+
+/* Homopolymer details */
+#ifdef DEBUG16A
+#define debug16a(x) x
+#else
+#define debug16a(x)
+#endif
+
+
+#define MICROEXON_PVALUE_HIGHQ 0.01
+#define MICROEXON_PVALUE_MEDQ 0.001
+#define MICROEXON_PVALUE_LOWQ 0.0001
+#define ENDSEQUENCE_PVALUE 0.001 /* Have stricter threshold for making end exons */
+
+#define MIN_MICROEXON_LENGTH 3
+#ifdef PMAP
+#define MAX_MICROEXON_LENGTH 17	/* Should be oligomer length - 1 plus peelback */
+#else
+#define MAX_MICROEXON_LENGTH 12	/* Should be oligomer length - 1 plus peelback */
+#endif
+#define MICROINTRON_LENGTH 9
+
+
+
+#define T Dynprog_T
+
+bool homopolymerp;
+
+void
+Dynprog_single_setup (bool homopolymerp_in) {
+
+  homopolymerp = homopolymerp_in;
+
+  return;
+}
+
+
+static char complCode[128] = COMPLEMENT_LC;
+
+static char
+get_genomic_nt (char *g_alt, int genomicpos, Univcoord_T chroffset, Univcoord_T chrhigh,
+		bool watsonp) {
+  char c2, c2_alt;
+  Univcoord_T pos;
+
+#if 0
+  /* If the read has a deletion, then we will extend beyond 0 or genomiclength, so do not restrict. */
+  if (genomicpos < 0) {
+    return '*';
+
+  } else if (genomicpos >= genomiclength) {
+    return '*';
+
+  }
+#endif
+
+  if (watsonp) {
+    if ((pos = chroffset + genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char(genome,pos)));
+      return Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char_blocks(pos)));
+      return Genome_get_char_blocks(&(*g_alt),pos);
+    }
+
+  } else {
+    if ((pos = chrhigh - genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      c2 = Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      c2 = Genome_get_char_blocks(&c2_alt,pos);
+    }
+    debug8(printf("At %u, genomicnt is %c\n",genomicpos,complCode[(int) c2]));
+    *g_alt = complCode[(int) c2_alt];
+    return complCode[(int) c2];
+  }
+}
+
+
+/************************************************************************
+ *  Homopolymer
+ ************************************************************************/
+
+static List_T
+augment_pairs (List_T pairs, int *rsequence_nreps, int r_uniqlength, int roffset,
+	       int *gsequence_nreps, int g_uniqlength, int goffset,
+	       Pairpool_T pairpool, int dynprogindex) {
+  List_T augmented = NULL, p;
+  Pair_T pair;
+  int r, c, r_nreps, c_nreps, i;
+  int r_cum = 0, c_cum = 0;
+
+
+#ifdef DEBUG16
+  printf("r_nreps: ");
+  for (i = 0; i < r_uniqlength; i++) {
+    printf("%d",rsequence_nreps[i]);
+  }
+  printf("\n");
+
+  printf("g_nreps: ");
+  for (i = 0; i < g_uniqlength; i++) {
+    printf("%d",gsequence_nreps[i]);
+  }
+  printf("\n");
+#endif
+
+  for (p = pairs; p != NULL; p = p->rest) {
+    pair = (Pair_T) p->first;
+    r = pair->querypos - roffset;
+    c = pair->genomepos - goffset;
+
+    if (pair->comp == INDEL_COMP) {
+      augmented = Pairpool_push_existing(augmented,pairpool,pair);
+      debug16a(Pair_dump_one(pair,true));
+      pair->querypos += r_cum;
+      pair->genomepos += c_cum;
+
+      if (pair->cdna == ' ') {
+	c_nreps = gsequence_nreps[c];
+	debug16a(printf(" genomepos %u, c_cum %d, nreps %d\n",c,c_cum,c_nreps));
+	if (c_nreps == 0) {
+	  /* Do nothing */
+	} else {
+	  for (i = 1; i <= c_nreps; i++) {
+	    augmented = Pairpool_push(augmented,pairpool,r+r_cum+roffset,c+c_cum+i+goffset,
+				      /*cdna*/' ',INDEL_COMP,pair->genome,pair->genomealt,
+				      dynprogindex);
+	  }
+	  c_cum += c_nreps;
+	}
+
+      } else if (pair->genome == ' ') {
+	r_nreps = rsequence_nreps[r];
+	debug16a(printf(" querypos %d, r_cum %d, nreps %d\n",r,r_cum,r_nreps));
+	if (r_nreps == 0) {
+	  /* Do nothing */
+	} else {
+	  for (i = 1; i <= r_nreps; i++) {
+	    augmented = Pairpool_push(augmented,pairpool,r+r_cum+i+roffset,c+c_cum+goffset,
+				      pair->cdna,INDEL_COMP,/*genome*/' ',/*genomealt*/' ',
+				      dynprogindex);
+	  }
+	  r_cum += r_nreps;
+	}
+
+      } else {
+	fprintf(stderr,"Indel pair is missing both cdna and genome nts\n");
+	abort();
+      }
+
+    } else {
+      r_nreps = rsequence_nreps[r];
+      c_nreps = gsequence_nreps[c];
+      debug16a(printf(" querypos %d, r_cum %d, nreps %d, genomepos %u, c_cum %d, nreps %d\n",
+		      r,r_cum,r_nreps,c,c_cum,c_nreps));
+      augmented = Pairpool_push_existing(augmented,pairpool,pair);
+      pair->querypos += r_cum;
+      pair->genomepos += c_cum;
+      if (r_nreps == 0 && c_nreps == 0) {
+	/* Do nothing */
+      } else if (r_nreps == c_nreps) {
+	for (i = 1; i <= r_nreps; i++) {
+	  augmented = Pairpool_push_copy(augmented,pairpool,pair);
+	  ((Pair_T) augmented->first)->querypos += i;
+	  ((Pair_T) augmented->first)->genomepos += i;
+	}
+	r_cum += r_nreps;
+	c_cum += c_nreps;
+
+      } else if (r_nreps < c_nreps) {
+	for (i = 1; i <= r_nreps; i++) {
+	  augmented = Pairpool_push_copy(augmented,pairpool,pair);
+	  ((Pair_T) augmented->first)->querypos += i;
+	  ((Pair_T) augmented->first)->genomepos += i;
+	}
+	r_cum += r_nreps;
+
+	for ( ; i <= c_nreps; i++) {
+	  /* Add 1 to r to advance to next coordinate */
+	  augmented = Pairpool_push(augmented,pairpool,r+r_cum+roffset + 1,c+c_cum+i+goffset,
+				    /*cdna*/' ',INDEL_COMP,pair->genome,pair->genomealt,
+				    dynprogindex);
+	}
+	c_cum += c_nreps;
+
+      } else {
+	for (i = 1; i <= c_nreps; i++) {
+	  augmented = Pairpool_push_copy(augmented,pairpool,pair);
+	  ((Pair_T) augmented->first)->querypos += i;
+	  ((Pair_T) augmented->first)->genomepos += i;
+	}
+	c_cum += c_nreps;
+
+	for ( ; i <= r_nreps; i++) {
+	  /* Add 1 to c to advance to next coordinate */
+	  augmented = Pairpool_push(augmented,pairpool,r+r_cum+i+roffset,c+c_cum+goffset + 1,
+				    pair->cdna,INDEL_COMP,/*genome*/' ',/*genomealt*/' ',
+				    dynprogindex);
+	}
+	r_cum += r_nreps;
+
+      }
+    }
+  }
+
+  debug16(Pair_dump_list(augmented,true));
+
+  return List_reverse(augmented);
+}
+
+static char *
+uniq_string (int **nreps, int *uniqlength, char *string, int length) {
+  char *uniq, *p, nt, lastnt;
+  int i, k, *a;
+
+  *uniqlength = 1;
+  lastnt = string[0];
+  for (i = 1; i < length; i++) {
+    if ((nt = string[i]) != lastnt) {
+      (*uniqlength)++;
+      lastnt = nt;
+    }
+  }
+
+  p = uniq = (char *) MALLOC(((*uniqlength) + 1) * sizeof(char));
+  a = *nreps = (int *) MALLOC((*uniqlength) * sizeof(int));
+  k = 0;
+
+  lastnt = string[0];
+  for (i = 1; i < length; i++) {
+    if ((nt = string[i]) != lastnt) {
+      *p++ = lastnt;
+      *a++ = k;
+      lastnt = nt;
+      k = 0;
+    } else {
+      k++;
+    }
+  }
+  *p = lastnt;
+  *a = k;
+
+#ifdef DEBUG16
+  printf("string: %.*s\n",length,string);
+  printf("uniq:   %.*s\n",*uniqlength,uniq);
+  printf("nreps   ");
+  for (i = 0; i < *uniqlength; i++) {
+    printf("%d",(*nreps)[i]);
+  }
+  printf("\n");
+#endif
+
+  return uniq;
+}
+
+
+
+static List_T
+single_gap_simple (int *finalscore, int *nmatches, int *nmismatches,
+		   char *rsequence, char *rsequenceuc, int rlength, char *gsequence, char *gsequence_alt,
+		   int roffset, int goffset, Pairpool_T pairpool,
+		   int mismatchtype, int dynprogindex) {
+  int score;
+  List_T pairs = NULL;
+  int r;
+  int querycoord, genomecoord;
+  int c1, c1_uc, c2, c2_alt;
+  Pairdistance_T **pairdistance_array_type;
+
+  debug(printf("Starting single_gap_simple\n"));
+  pairdistance_array_type = pairdistance_array[mismatchtype];
+
+  *finalscore = 0;
+  *nmatches = *nmismatches = 0;
+
+  /* Push from left to right, so we don't need to do List_reverse() later */
+  for (r = 1; r <= rlength; r++) {
+    querycoord = genomecoord = r-1;
+
+    c1 = rsequence[querycoord];
+    c1_uc = rsequenceuc[querycoord];
+    c2 = gsequence[genomecoord];
+    c2_alt = gsequence_alt[genomecoord];
+
+    if (c2 == '*') {
+      /* Don't push pairs past end of chromosome */
+      debug(printf("Don't push pairs past end of chromosome: genomeoffset %u, genomecoord %u\n",goffset,genomecoord));
+
+    } else if (c1_uc == c2 || c1_uc == c2_alt) {
+      debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - match\n",
+		   r,/*c*/r,roffset+querycoord,goffset+genomecoord,c1_uc,c2));
+      score = pairdistance_array_type[c1_uc][c2];
+      if (pairdistance_array_type[c1_uc][c2_alt] > score) {
+	score = pairdistance_array_type[c1_uc][c2_alt];
+      }
+      *finalscore += score;
+      *nmatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,roffset+querycoord,goffset+genomecoord,
+			    c1,DYNPROG_MATCH_COMP,c2,c2_alt,dynprogindex);
+	
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - ambiguous\n",
+		   r,/*c*/r,roffset+querycoord,goffset+genomecoord,c1_uc,c2));
+      score = pairdistance_array_type[c1_uc][c2];
+      if (pairdistance_array_type[c1_uc][c2_alt] > score) {
+	score = pairdistance_array_type[c1_uc][c2_alt];
+      }
+      *finalscore += score;
+      *nmatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,roffset+querycoord,goffset+genomecoord,
+			    c1,AMBIGUOUS_COMP,c2,c2_alt,dynprogindex);
+	
+    } else {
+      debug(printf("Pushing simple %d,%d [%d,%d] (%c,%c) - mismatch\n",
+		   r,/*c*/r,roffset+querycoord,goffset+genomecoord,c1_uc,c2));
+      score = pairdistance_array_type[c1_uc][c2];
+      if (pairdistance_array_type[c1_uc][c2_alt] > score) {
+	score = pairdistance_array_type[c1_uc][c2_alt];
+      }
+      *finalscore += score;
+      *nmismatches += 1;
+      pairs = Pairpool_push(pairs,pairpool,roffset+querycoord,goffset+genomecoord,
+			    c1,MISMATCH_COMP,c2,c2_alt,dynprogindex);
+    }
+  }
+
+  if (*nmismatches > 1) {
+    return (List_T) NULL;
+  } else {
+    return pairs;
+  }
+}
+
+
+List_T
+Dynprog_single_gap (int *dynprogindex, int *finalscore, int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		    T dynprog, char *rsequence, char *rsequenceuc,
+		    int rlength, int glength, int roffset, int goffset,
+		    Univcoord_T chroffset, Univcoord_T chrhigh,
+		    bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		    int extraband_single, double defect_rate, bool widebandp) {
+  List_T pairs = NULL;
+  char *gsequence, *gsequence_alt;
+
+  char *gsequence_orig, *rsequence_orig;
+  int *gsequence_nreps, *rsequence_nreps;
+  int glength_orig, rlength_orig;
+
+  Mismatchtype_T mismatchtype;
+  int lband, uband;
+  int open, extend;
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  Score8_T **matrix8;
+  Direction8_T **directions8_nogap, **directions8_Egap, **directions8_Fgap;
+
+  Score16_T **matrix16;
+  Direction16_T **directions16_nogap, **directions16_Egap, **directions16_Fgap;
+#else
+  Score32_T **matrix;
+  Direction32_T **directions_nogap, **directions_Egap, **directions_Fgap;
+#endif
+  /* bool onesidegapp; */
+
+  if (defect_rate < DEFECT_HIGHQ) {
+    mismatchtype = HIGHQ;
+    open = SINGLE_OPEN_HIGHQ;
+    extend = SINGLE_EXTEND_HIGHQ;
+    /* onesidegapp = false; */
+  } else if (defect_rate < DEFECT_MEDQ) {
+    mismatchtype = MEDQ;
+    open = SINGLE_OPEN_MEDQ;
+    extend = SINGLE_EXTEND_MEDQ;
+    /* onesidegapp = true; */
+  } else {
+    mismatchtype = LOWQ;
+    open = SINGLE_OPEN_LOWQ;
+    extend = SINGLE_EXTEND_LOWQ;
+    /* onesidegapp = true; */
+  }
+
+#if 0
+  if (close_indels_mode == +1) {
+    /* Allow close indels */
+    onesidegapp = false;
+  } else if (close_indels_mode == -1) {
+    /* Disallow close indels */
+    onesidegapp = true;
+  } else {
+    /* Allow close indels for high quality alignments, as determined above */
+  }
+#endif    
+
+  /* Rlength: maxlookback+MAXPEELBACK.  Glength +EXTRAMATERIAL */
+  debug(printf("%c:  ",*dynprogindex > 0 ? (*dynprogindex-1)%26+'a' : (-(*dynprogindex)-1)%26+'A'));
+  debug(printf("Aligning single gap middle with wideband = %d and extraband %d\n",widebandp,extraband_single));
+#ifdef EXTRACT_GENOMICSEG
+  debug(printf("At genomic offset %d-%d, %.*s\n",goffset,goffset+glength-1,glength,gsequence));
+#endif
+  debug(printf("\n"));
+
+#if 0
+  /* Can happen in bad genomic regions.  May want to give up, though, if rlength and glength differ greatly. */
+  assert(glength < 1000);
+#endif
+
+  if (rlength > dynprog->max_rlength || glength > dynprog->max_glength) {
+    debug(printf("rlength %d or glength %d is too long.  Returning NULL\n",rlength,glength));
+    *finalscore = NEG_INFINITY_32;
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+#if 0
+    /* Don't push a gapholder for single gap, because gapholder already exists */
+    pairs = Pairpool_push_gapholder(NULL,pairpool,rlength,glength,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return (List_T) NULL;
+  }
+
+  debug(printf("At query offset %d-%d, %.*s\n",roffset,roffset+rlength-1,rlength,rsequence));
+  
+    /* If extraband_single is too large, then gaps may be inserted on
+       both sides, like this
+
+       CACCC   AGAGCAGGCACTGCCT
+       |||||--- ||| ||---||||| 
+       CACCCCAGGGAGGAG   CTGCCC
+
+    */
+
+
+  if (homopolymerp == true) {
+    rsequence_orig = rsequence;
+    rlength_orig = rlength;
+    rsequence = uniq_string(&rsequence_nreps,&rlength,rsequence_orig,rlength_orig);
+
+    if (watsonp) {
+      gsequence_orig = Genome_get_segment_blocks_right(&gsequence_alt,/*left*/chroffset+goffset,glength,chrhigh,/*revcomp*/false);
+    } else {
+      gsequence_orig = Genome_get_segment_blocks_left(&gsequence_alt,/*left*/chrhigh-goffset+1,glength,chroffset,/*revcomp*/true);
+    }
+    if (gsequence_orig == NULL) {
+      *finalscore = NEG_INFINITY_32;
+      *nmatches = *nmismatches = *nopens = *nindels = 0;
+      return (List_T) NULL;
+    } else {
+      glength_orig = glength;
+      gsequence = gsequence_alt = uniq_string(&gsequence_nreps,&glength,gsequence_orig,glength_orig);
+    }
+
+  } else {
+    if (watsonp) {
+      gsequence = Genome_get_segment_blocks_right(&gsequence_alt,/*left*/chroffset+goffset,glength,chrhigh,/*revcomp*/false);
+    } else {
+      gsequence = Genome_get_segment_blocks_left(&gsequence_alt,/*left*/chrhigh-goffset+1,glength,chroffset,/*revcomp*/true);
+    }
+    if (gsequence == NULL) {
+      *finalscore = NEG_INFINITY_32;
+      *nmatches = *nmismatches = *nopens = *nindels = 0;
+      return (List_T) NULL;
+    } else if (glength == rlength &&
+	       (pairs = single_gap_simple(&(*finalscore),&(*nmatches),&(*nmismatches),
+					  rsequence,rsequenceuc,rlength,gsequence,gsequence_alt,roffset,goffset,
+					  pairpool,mismatchtype,*dynprogindex)) != NULL) {
+      if (gsequence_alt != gsequence) {
+	FREE(gsequence_alt);
+      }
+      FREE(gsequence);
+
+      *nopens = *nindels = 0;
+      *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+      return pairs;
+    }
+  }
+
+
+  Dynprog_compute_bands(&lband,&uband,rlength,glength,extraband_single,widebandp);
+#if defined(HAVE_SSE4_1) || defined(HAVE_SSE2)
+  /* Use || because we want the minimum length (which determines the diagonal length) to achieve a score less than 128 */
+  if (rlength <= SIMD_MAXLENGTH_EPI8 || glength <= SIMD_MAXLENGTH_EPI8) {
+    matrix8 = Dynprog_simd_8(&directions8_nogap,&directions8_Egap,&directions8_Fgap,dynprog,
+			     rsequence,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+			     goffset,chroffset,chrhigh,watsonp,
+#endif
+			     mismatchtype,open,extend,
+			     lband,uband,jump_late_p,/*revp*/false);
+    *finalscore = (int) matrix8[glength][rlength];
+
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    pairs = Dynprog_traceback_8(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				directions8_nogap,directions8_Egap,directions8_Fgap,rlength,glength,
+				rsequence,rsequenceuc,
+				gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+				chroffset,chrhigh,/*cdna_direction*/0,watsonp,*dynprogindex);
+
+  } else {
+    matrix16 = Dynprog_simd_16(&directions16_nogap,&directions16_Egap,&directions16_Fgap,dynprog,
+			       rsequence,gsequence,gsequence_alt,rlength,glength,
+#ifdef DEBUG14
+			       goffset,chroffset,chrhigh,watsonp,
+#endif
+			       mismatchtype,open,extend,
+			       lband,uband,jump_late_p,/*revp*/false);
+    *finalscore = (int) matrix16[glength][rlength];
+
+    *nmatches = *nmismatches = *nopens = *nindels = 0;
+    pairs = Dynprog_traceback_16(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				 directions16_nogap,directions16_Egap,directions16_Fgap,rlength,glength,
+				 rsequence,rsequenceuc,
+				 gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+				 chroffset,chrhigh,/*cdna_direction*/0,watsonp,*dynprogindex);
+  }
+
+#else
+
+  matrix = Dynprog_standard(&directions_nogap,&directions_Egap,&directions_Fgap,dynprog,
+			    rsequence,gsequence,gsequence_alt,rlength,glength,
+			    goffset,chroffset,chrhigh,watsonp,mismatchtype,open,extend,
+			    lband,uband,jump_late_p,/*revp*/false,/*saturation*/NEG_INFINITY_INT);
+  *finalscore = (int) matrix[glength][rlength];
+
+  *nmatches = *nmismatches = *nopens = *nindels = 0;
+  pairs = Dynprog_traceback_std(NULL,&(*nmatches),&(*nmismatches),&(*nopens),&(*nindels),
+				directions_nogap,directions_Egap,directions_Fgap,rlength,glength,
+				rsequence,rsequenceuc,
+				gsequence,gsequence_alt,roffset,goffset,pairpool,/*revp*/false,
+				chroffset,chrhigh,/*cdna_direction*/0,watsonp,*dynprogindex);
+#endif
+
+  if (homopolymerp == true) {
+    pairs = augment_pairs(pairs,rsequence_nreps,rlength,roffset,
+			  gsequence_nreps,glength,goffset,pairpool,*dynprogindex);
+    FREE(gsequence_nreps);
+    FREE(gsequence_orig);
+    FREE(gsequence);
+
+    FREE(rsequence_nreps);
+    /* Do not free rsequence_orig */
+    FREE(rsequence);
+    
+  } else {
+    if (gsequence_alt != gsequence) {
+      FREE(gsequence_alt);
+    }
+    FREE(gsequence);
+  }
+
+  /*
+  Directions_free(directions);
+  Matrix_free(matrix);
+  */
+
+  debug(printf("End of dynprog single gap\n"));
+
+  *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+  return List_reverse(pairs);
+}
+
+
+
+static const Except_T microexon_error = {"Microexon error"};
+
+static List_T
+make_microexon_pairs_double (int roffsetL, int roffsetM, int roffsetR,
+			     int goffsetL, int goffsetM, int goffsetR,
+			     int lengthL, int lengthM, int lengthR,
+			     char *rsequence, char *rsequenceuc,
+			     Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+			     Pairpool_T pairpool, char gapchar, int dynprogindex) {
+  List_T pairs = NULL;
+  Pair_T gappair;
+  char c1, c1_uc, c2, c2_alt;
+  int i;
+
+  /* Left segment */
+  for (i = 0; i < lengthL; i++) {
+    c1 = rsequence[roffsetL+i];
+    c1_uc = rsequenceuc[roffsetL+i];
+
+    c2 = get_genomic_nt(&c2_alt,goffsetL+i,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c2 == genomicseg[goffsetL+i]);
+#endif
+
+    if (c1_uc == c2 || c1_uc == c2_alt) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else {
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,MISMATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    }
+  }
+
+  /* First gap */
+  /* Don't have to adjust querypos/genomepos, since no cdna/genome skips allowed */
+  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffsetM-(goffsetL+lengthL),
+				  /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+  
+  /* Assign pair->comp, because might occur after assign_gap_types */
+  gappair = (Pair_T) List_head(pairs);
+  gappair->comp = gapchar;
+
+
+  /* Microexon */
+  for (i = 0; i < lengthM; i++) {
+    c1 = rsequence[roffsetM+i];
+    c1_uc = rsequenceuc[roffsetM+i];
+
+    c2 = get_genomic_nt(&c2_alt,goffsetM+i,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c2 == genomicseg[goffsetM+i]);
+#endif
+
+    if (c1_uc == c2 || c1_uc == c2_alt) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetM+i,goffsetM+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetM+i,goffsetM+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else {
+      pairs = Pairpool_push(pairs,pairpool,roffsetM+i,goffsetM+i,c1,MISMATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    }
+  }
+
+  /* Second gap */
+  /* Don't have to adjust querypos/genomepos, since no cdna/genome skips allowed */
+  if (lengthR == 0) {
+    /* If lengthR is zero, then we will have a gap after a gap */
+    Except_raise(&microexon_error,__FILE__,__LINE__);
+  } else {
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffsetR-(goffsetM+lengthM),
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+  }
+
+  /* Assign pair->comp, because might occur after assign_gap_types */
+  gappair = (Pair_T) List_head(pairs);
+  gappair->comp = gapchar;
+
+  
+  /* Right segment */
+  for (i = 0; i < lengthR; i++) {
+    c1 = rsequence[roffsetR+i];
+    c1_uc = rsequenceuc[roffsetR+i];
+
+    c2 = get_genomic_nt(&c2_alt,goffsetR+i,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c2 == genomicseg[goffsetR+i]);
+#endif
+
+    if (c1_uc == c2 || c1_uc == c2_alt) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else {
+      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,MISMATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    }
+  }
+
+  return pairs;
+}
+
+
+#if 0
+static List_T
+make_microexon_pairs_single (int roffsetL, int roffsetR,
+			     int goffsetL, int goffsetR,
+			     int lengthL, int lengthR, char *rsequence, char *rsequenceuc,
+			     Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+			     Pairpool_T pairpool, char gapchar, int dynprogindex) {
+  List_T pairs = NULL;
+  Pair_T gappair;
+  char c1, c1_uc, c2, c2_alt;
+  int i;
+
+  /* Microexon */
+  for (i = 0; i < lengthL; i++) {
+    c1 = rsequence[roffsetL+i];
+    c1_uc = rsequenceuc[roffsetL+i];
+
+    c2 = get_genomic_nt(&c2_alt,goffsetL+i,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c2 == genomicseg[goffsetL+i]);
+#endif
+
+    if (c1_uc == c2 || c1_uc == c2_alt) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else {
+      pairs = Pairpool_push(pairs,pairpool,roffsetL+i,goffsetL+i,c1,MISMATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    }
+  }
+
+  /* Gap */
+  /* Don't have to adjust querypos/genomepos, since no cdna/genome skips allowed */
+  pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/goffsetR-(goffsetL+lengthL),
+				  /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+
+  /* Assign pair->comp, because might occur after assign_gap_types */
+  gappair = (Pair_T) List_head(pairs);
+  gappair->comp = gapchar;
+  
+
+  /* Right segment */
+  for (i = 0; i < lengthR; i++) {
+    c1 = rsequence[roffsetR+i];
+    c1_uc = rsequenceuc[roffsetR+i];
+
+    c2 = get_genomic_nt(&c2_alt,goffsetR+i,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c2 == genomicseg[goffsetR+i]);
+#endif
+
+    if (c1_uc == c2 || c1_uc == c2_alt) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,DYNPROG_MATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else if (consistent_array[(int) c1_uc][(int) c2] == true || consistent_array[(int) c1_uc][(int) c2_alt] == true) {
+      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,AMBIGUOUS_COMP,c2,c2_alt,
+			    dynprogindex);
+    } else {
+      pairs = Pairpool_push(pairs,pairpool,roffsetR+i,goffsetR+i,c1,MISMATCH_COMP,c2,c2_alt,
+			    dynprogindex);
+    }
+  }
+
+  return pairs;
+}
+#endif
+
+
+List_T
+Dynprog_microexon_int (double *bestprob2, double *bestprob3, int *dynprogindex, int *microintrontype,
+		       char *rsequence, char *rsequenceuc,
+		       int rlength, int glengthL, int glengthR,
+		       int roffset, int goffsetL, int rev_goffsetR, int cdna_direction,
+		       char *queryseq, char *queryuc,
+		       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+		       Pairpool_T pairpool, double defect_rate) {
+  List_T pairs = NULL;
+  Intlist_T hits = NULL, p;
+#ifdef EXTRACT_GENOMICSEG
+  Intlist_T hits_old;
+#endif
+  int bestcL = -1, bestcR = -1, best_middlelength;
+  int middlelength, cL, cR, mincR, maxcR, leftbound, rightbound, textleft, textright,
+    best_candidate, candidate, i;
+  int min_microexon_length, span, nmismatches;
+  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt;
+  char c, c_alt;
+  char c1_alt, c2_alt, c3_alt, c4_alt;
+  char intron1, intron2, intron3, intron4, gapchar;
+  float pvalue, bestprob = 0.0, prob2, prob3;
+  Univcoord_T splicesitepos;
+
+
+  *bestprob2 = *bestprob3 = 0.0;
+
+  if (defect_rate < DEFECT_HIGHQ) {
+    pvalue = MICROEXON_PVALUE_HIGHQ;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    pvalue = MICROEXON_PVALUE_MEDQ;
+  } else {
+    pvalue = MICROEXON_PVALUE_LOWQ;
+  }
+
+#ifdef PMAP
+  intron1 = 'G';
+  intron2 = 'T';
+  intron3 = 'A';
+  intron4 = 'G';
+  gapchar = FWD_CANONICAL_INTRON_COMP;
+  *microintrontype = GTAG_FWD;
+#else
+  if (cdna_direction > 0) {
+    intron1 = 'G';
+    intron2 = 'T';
+    intron3 = 'A';
+    intron4 = 'G';
+    gapchar = FWD_CANONICAL_INTRON_COMP;
+    *microintrontype = GTAG_FWD;
+  } else if (cdna_direction < 0) {
+    intron1 = 'C';
+    intron2 = 'T';
+    intron3 = 'A';
+    intron4 = 'C';
+    gapchar = REV_CANONICAL_INTRON_COMP;
+    *microintrontype = GTAG_REV;
+  } else {
+    /* Can occur when called by Stage3_merge_local_splice */
+    /* fprintf(stderr,"cdna_direction is 0 in Dynprog_microexon_int\n"); */
+    *microintrontype = NONINTRON;
+    return NULL;
+  }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+  debug(printf("Begin microexon search for %.*s and %.*s\n",
+	       glengthL,gsequenceL,glengthR,&(rev_gsequenceR[-glengthR+1])));
+#else
+  debug(printf("Begin microexon search\n"));
+#endif
+
+  debug(printf("  Query sequence is %.*s\n",rlength,rsequence));
+
+  span = rev_goffsetR-goffsetL;
+  debug(printf("  Genomic span is of length %d\n",span));
+
+#if 0
+  if (span <= 0) {
+    fprintf(stderr,"Bug in Dynprog_microexon_int.  span %d <= 0.  Please report to twu at gene.com\n",span);
+    abort();
+  } else {
+    min_microexon_length = ceilf(-fasterlog(1.0-powf(1.0-pvalue,1.0/(float) span)) / /*log(4)*/1.386294);
+  }
+  min_microexon_length -= 8;	/* Two donor-acceptor pairs */
+  debug(printf("  Min microexon length is %d\n",min_microexon_length));
+  if (min_microexon_length > MAX_MICROEXON_LENGTH) {
+    *microintrontype = NONINTRON;
+    return NULL;
+  } else if (min_microexon_length < MIN_MICROEXON_LENGTH) {
+    min_microexon_length = MIN_MICROEXON_LENGTH;
+  }
+#else
+  min_microexon_length = 8;
+#endif
+
+  debug(printf("\nFinding starting boundary on left\n"));
+  leftbound = 0;
+  nmismatches = 0;
+  while (leftbound < rlength - 1 && nmismatches <= 1) {
+    debug(printf("  leftbound = %d, nmismatches = %d.",leftbound,nmismatches));
+    c = get_genomic_nt(&c_alt,goffsetL+leftbound,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c == gsequence_ucL[leftbound]);
+#endif
+    debug(printf("  Comparing %c with %c\n",rsequence[leftbound],c));
+#ifdef PMAP
+    if (matchtable[rsequence[leftbound]-'A'][c-'A'] == false) {
+      nmismatches++;
+    }
+#else
+    if (rsequenceuc[leftbound] != c) {
+      nmismatches++;
+    }
+#endif
+    leftbound++;
+  }
+  leftbound--;			/* This is where the leftmost mismatch occurred */
+
+  debug(printf("\nFinding starting boundary on right\n"));
+  rightbound = 0;
+  i = rlength-1;
+  nmismatches = 0;
+  while (i >= 0 && nmismatches <= 1) {
+    debug(printf("  rightbound = %d, nmismatches = %d.",rightbound,nmismatches));
+    c = get_genomic_nt(&c_alt,rev_goffsetR-rightbound,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(c == rev_gsequence_ucR[-rightbound]);
+#endif
+    debug(printf("  Comparing %c with %c\n",rsequence[i],c));
+#ifdef PMAP
+    if (matchtable[rsequence[i]-'A'][c-'A'] == false) {
+      nmismatches++;
+    }
+#else
+    if (rsequenceuc[i] != c) {
+      nmismatches++;
+    }
+#endif
+    rightbound++;
+    i--;
+  }
+  rightbound--;			/* This is where the rightmost mismatch occurred */
+
+  debug(printf("  Left must start before %d from left end of query.  Right must start after %d from right end of query\n",
+	       leftbound,rightbound));
+
+  /* We require that cL >= 1 and cR >= 1 so that lengthL and lengthR are >= 1 */
+  for (cL = 1; cL <= leftbound; cL++) {
+    left1 = get_genomic_nt(&left1_alt,goffsetL+cL,chroffset,chrhigh,watsonp);
+    left2 = get_genomic_nt(&left2_alt,goffsetL+cL+1,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+    assert(left1 == gsequence_ucL[cL]);
+    assert(left2 == gsequence_ucL[cL+1]);
+#endif
+
+    debug(printf("  %d: %c%c\n",cL,left1,left2));
+    if (left1 == intron1 && left2 == intron2) {
+      mincR = rlength - MAX_MICROEXON_LENGTH - cL;
+      if (mincR < 1) {
+	mincR = 1;
+      }
+      maxcR = rlength - min_microexon_length - cL;
+      if (maxcR > rightbound) {
+	maxcR = rightbound;
+	}
+      debug(printf("  Found left GT at %d.  Scanning from %d - cL - (1-7), or %d to %d\n",
+		   cL,rlength,mincR,maxcR));
+      for (cR = mincR; cR <= maxcR; cR++) {
+	right2 = get_genomic_nt(&right2_alt,rev_goffsetR-cR-1,chroffset,chrhigh,watsonp);
+	right1 = get_genomic_nt(&right1_alt,rev_goffsetR-cR,chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+	assert(right2 == rev_gsequence_ucR[-cR-1]);
+	assert(right1 == rev_gsequence_ucR[-cR]);
+#endif
+	debug(printf("   Checking %d: %c%c\n",cR,right2,right1));
+	if (right2 == intron3 && right1 == intron4) {
+	  middlelength = rlength - cL - cR;
+	  debug(printf("  Found pair at %d to %d, length %d.  Middle sequence is %.*s\n",
+		       cL,cR,middlelength,middlelength,&(rsequence[cL])));
+	  
+	  textleft = goffsetL + cL + MICROINTRON_LENGTH;
+	  textright = rev_goffsetR - cR - MICROINTRON_LENGTH;
+
+	  if (textright >= textleft + middlelength) {
+	    hits = BoyerMoore_nt(&(rsequence[cL]),middlelength,textleft,textright-textleft,
+				 chroffset,chrhigh,watsonp);
+#ifdef EXTRACT_GENOMICSEG
+	    hits_old = BoyerMoore(&(rsequenceuc[cL]),middlelength,&(genomicuc[textleft]),textright-textleft);
+	    assert(Intlist_equal(hits,hits_old));
+	    Intlist_free(&hits_old);
+#endif
+	    for (p = hits; p != NULL; p = Intlist_next(p)) {
+	      candidate = textleft + Intlist_head(p);
+#ifdef EXTRACT_GENOMICSEG
+	      assert(get_genomic_nt(candidate-2,chroffset,chrhigh,watsonp) == genomicuc[candidate - 2]);
+	      assert(get_genomic_nt(candidate-1,chroffset,chrhigh,watsonp) == genomicuc[candidate - 1]);
+	      assert(get_genomic_nt(candidate+middlelength,chroffset,chrhigh,watsonp) == genomicuc[candidate + middlelength]);
+	      assert(get_genomic_nt(candidate+middlelength+1,chroffset,chrhigh,watsonp) == genomicuc[candidate + middlelength+1]);
+#endif
+	      if (/*genomicuc[candidate - 2]*/ get_genomic_nt(&c3_alt,candidate-2,chroffset,chrhigh,watsonp) == intron3 &&
+		  /*genomicuc[candidate - 1]*/ get_genomic_nt(&c4_alt,candidate-1,chroffset,chrhigh,watsonp)  == intron4 &&
+		  /*genomicuc[candidate + middlelength]*/ get_genomic_nt(&c1_alt,candidate+middlelength,chroffset,chrhigh,watsonp) == intron1 &&
+		  /*genomicuc[candidate + middlelength + 1]*/ get_genomic_nt(&c2_alt,candidate+middlelength+1,chroffset,chrhigh,watsonp) == intron2) {
+		debug(printf("  Successful microexon at %d >>> %d..%d >>> %d\n",goffsetL+cL,candidate,candidate+middlelength,rev_goffsetR-cR));
+
+		/* Not handling known splice sites yet */
+		if (watsonp == true) {
+		  if (cdna_direction > 0) {
+		    splicesitepos = chroffset + (candidate-1) + 1;
+		    prob2 = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+		    splicesitepos = chroffset + candidate+middlelength;
+		    prob3 = Maxent_hr_donor_prob(splicesitepos,chroffset);
+		  } else {
+		    splicesitepos = chroffset + (candidate-1) + 1;
+		    prob2 = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+		    splicesitepos = chroffset + candidate+middlelength;
+		    prob3 = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+		  }
+		} else {
+		  if (cdna_direction > 0) {
+		    splicesitepos = chrhigh - (candidate-1);
+		    prob2 = Maxent_hr_antiacceptor_prob(splicesitepos,chroffset);
+		    splicesitepos = chrhigh - (candidate+middlelength) + 1;
+		    prob3 = Maxent_hr_antidonor_prob(splicesitepos,chroffset);
+		  } else {
+		    splicesitepos = chrhigh - (candidate-1);
+		    prob2 = Maxent_hr_donor_prob(splicesitepos,chroffset);
+		    splicesitepos = chrhigh - (candidate+middlelength) + 1;
+		    prob3 = Maxent_hr_acceptor_prob(splicesitepos,chroffset);
+		  }
+		}
+	      
+		debug(printf("microexon probabilities: prob2 = %f, prob3 = %f\n",prob2,prob3));
+		if (prob2 + prob3 > bestprob) {
+		  bestcL = cL;
+		  bestcR = cR;
+		  best_candidate = candidate;
+		  best_middlelength = middlelength;
+		  *bestprob2 = prob2;
+		  *bestprob3 = prob3;
+		  bestprob = prob2 + prob3;
+		}
+	      }
+	    }
+	    Intlist_free(&hits);
+	  }
+
+	}
+      }
+    }
+  }
+
+  if (bestcL < 0 || bestcR < 0) {
+    debug(printf("End of dynprog microexon int\n"));
+
+    *microintrontype = NONINTRON;
+    return NULL;
+
+  } else {
+    debug(printf("Making microexon pairs with candidate %u\n",best_candidate));
+    pairs = make_microexon_pairs_double(roffset,/*roffsetM*/roffset+bestcL,/*roffsetR*/roffset+bestcL+best_middlelength,
+					goffsetL,/*candidate*/best_candidate,/*goffsetR*/rev_goffsetR-bestcR+1,
+					/*lengthL*/bestcL,/*lengthM*/best_middlelength,/*lengthR*/bestcR,
+					queryseq,queryuc,
+					chroffset,chrhigh,watsonp,pairpool,gapchar,*dynprogindex);
+    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+    return pairs;
+  }
+}
+
+
+#if 0
+/* Based on probability of seeing a pattern of length n in L is
+   1-(1-p1)^L, where p1 is 4^n.  We determine L so chance probability
+   is less than ENDSEQUENCE_PVALUE */
+static int
+search_length (int endlength, int maxlength, bool end_microexons_p) {
+  double p1;
+  int effective_maxlength, extrant, result;
+
+  if (end_microexons_p == true) {
+    extrant = 4;		/* Count the four nucleotides at the intron bounds */
+    effective_maxlength = maxlength;
+  } else {
+    extrant = 0;		/* Don't count the four nucleotides */
+    effective_maxlength = 5000;
+    if (maxlength < effective_maxlength) {
+      effective_maxlength = maxlength;
+    }
+  }
+
+  if (endlength + extrant > 12) {
+    debug(printf("  Search length for endlength of %d is maxlength %d\n",endlength,effective_maxlength));
+    return effective_maxlength;
+  } else {
+    p1 = 1.0/pow(4.0,(double) (endlength + extrant));
+    result = (int) (fasterlog(1.0-ENDSEQUENCE_PVALUE)/fasterlog(1-p1));
+    debug(printf("  Search length for endlength of %d plus extra nt of %d is %d\n",endlength,extrant,result));
+    if (result > effective_maxlength) {
+      return effective_maxlength;
+    } else {
+      return result;
+    }
+  }
+}
+#endif
+
+
+#if 0
+/* Not currently used */
+List_T
+Dynprog_microexon_5 (int *dynprogindex, int *microintrontype, int *microexonlength,
+		     char *rev_rsequence, char *rev_rsequenceuc, char *rev_gsequence, char *rev_gsequence_uc,
+		     int rlength, int glength, int rev_roffset, int rev_goffset, int cdna_direction,
+		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
+		     Pairpool_T pairpool, bool end_microexons_p) {
+  List_T pairs = NULL;
+  Intlist_T hits = NULL, p;
+  int endlength, maxc, c, textleft, textright, candidate, nmismatches = 0;
+  char right2, right1;
+  char intron1, intron2, intron3, intron4, gapchar;
+
+#ifdef PMAP
+  intron1 = 'G';
+  intron2 = 'T';
+  intron3 = 'A';
+  intron4 = 'G';
+  gapchar = FWD_CANONICAL_INTRON_COMP;
+  *microintrontype = GTAG_FWD;
+#else
+  if (cdna_direction > 0) {
+    intron1 = 'G';
+    intron2 = 'T';
+    intron3 = 'A';
+    intron4 = 'G';
+    gapchar = FWD_CANONICAL_INTRON_COMP;
+    *microintrontype = GTAG_FWD;
+  } else if (cdna_direction < 0) {
+    intron1 = 'C';
+    intron2 = 'T';
+    intron3 = 'A';
+    intron4 = 'C';
+    gapchar = REV_CANONICAL_INTRON_COMP;
+    *microintrontype = GTAG_REV;
+  } else {
+    *microintrontype = NONINTRON;
+    return (List_T) NULL;
+    abort();
+  }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+  debug(printf("Begin microexon search at 5' for %.*s\n",
+	       glength,&(rev_gsequence[-glength+1])));
+#else
+  debug(printf("Begin microexon search at 5'\n"));
+#endif
+
+  debug(printf("  Query sequence is %.*s\n",rlength,&(rev_rsequence[-rlength+1])));
+
+  *microexonlength = 0;
+  if (glength < rlength) {
+    maxc = glength - MIN_MICROEXON_LENGTH;
+  } else {
+    maxc = rlength - MIN_MICROEXON_LENGTH;
+  }
+  for (c = 0; c < maxc; c++) {
+    right2 = rev_gsequence_uc[-c-1];
+    right1 = rev_gsequence_uc[-c];
+    debug(printf("   Checking %c%c\n",right2,right1));
+#ifdef PMAP
+    if (c > 0 && matchtable[rev_rsequence[-c+1]-'A'][rev_gsequence_uc[-c+1]-'A'] == false) {
+      nmismatches++;
+    }
+#else
+    if (c > 0 && rev_rsequenceuc[-c+1] != rev_gsequence_uc[-c+1]) {
+      nmismatches++;
+    }
+#endif
+    if (nmismatches > 1) {
+      debug(printf("   Aborting at %c != %c\n",rev_rsequence[-c+1],rev_gsequence[-c+1]));
+      *microintrontype = NONINTRON;
+      return NULL;
+    }
+    if (right2 == intron3 && right1 == intron4) {
+      endlength = rlength - c;
+      debug(printf("  Found acceptor at %d, length %d.  End sequence is %.*s\n",
+		       c,endlength,endlength,&(rev_rsequence[-endlength+1])));
+
+      textright = rev_goffset - c - MICROINTRON_LENGTH;
+      textleft = textright - search_length(endlength,textright,end_microexons_p) + MICROINTRON_LENGTH;
+
+      if (textright >= textleft + endlength) {
+	hits = BoyerMoore_nt(&(rev_rsequence[-c-endlength+1]),endlength,textleft,textright-textleft,
+			     chroffset,chrhigh,watsonp);
+	for (p = hits; p != NULL; p = Intlist_next(p)) {
+	  candidate = textleft + Intlist_head(p);
+	  if (genomicseg[candidate + endlength] == intron1 &&
+	      genomicseg[candidate + endlength + 1] == intron2) {
+	    debug(printf("  Successful microexon at %d\n",candidate));
+
+	    Intlist_free(&hits);
+	    *microexonlength = endlength;
+	    pairs = make_microexon_pairs_single(rev_roffset-c-endlength+1,rev_roffset-c+1,
+						candidate,rev_goffset-c+1,endlength,c,
+						queryseq,queryuc,chroffset,watsonp,pairpool,gapchar,*dynprogindex);
+	    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+	    return pairs;
+	  }
+	}
+	Intlist_free(&hits);
+      }
+
+    }
+  }
+
+  debug(printf("End of dynprog microexon 5\n"));
+
+  *microintrontype = NONINTRON;
+  return NULL;
+}
+#endif
+
+
+#if 0
+/* Not currently used */
+List_T
+Dynprog_microexon_3 (int *dynprogindex, int *microintrontype, int *microexonlength, 
+		     char *rsequence, char *rsequenceuc, char *gsequence, char *gsequence_uc,
+		     int rlength, int glength, int roffset, int goffset, int cdna_direction,
+		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
+		     int genomiclength, Pairpool_T pairpool, bool end_microexons_p) {
+  List_T pairs = NULL;
+  Intlist_T hits = NULL, p;
+  int endlength, maxc, c, textleft, textright, candidate, nmismatches = 0;
+  char left1, left2;
+  char intron1, intron2, intron3, intron4, gapchar;
+
+#ifdef PMAP
+  intron1 = 'G';
+  intron2 = 'T';
+  intron3 = 'A';
+  intron4 = 'G';
+  gapchar = FWD_CANONICAL_INTRON_COMP;
+  *microintrontype = GTAG_FWD;
+#else
+  if (cdna_direction > 0) {
+    intron1 = 'G';
+    intron2 = 'T';
+    intron3 = 'A';
+    intron4 = 'G';
+    gapchar = FWD_CANONICAL_INTRON_COMP;
+    *microintrontype = GTAG_FWD;
+  } else if (cdna_direction < 0) {
+    intron1 = 'C';
+    intron2 = 'T';
+    intron3 = 'A';
+    intron4 = 'C';
+    gapchar = REV_CANONICAL_INTRON_COMP;
+    *microintrontype = GTAG_REV;
+  } else {
+    *microintrontype = NONINTRON;
+    return (List_T) NULL;
+    abort();
+  }
+#endif
+
+#ifdef EXTRACT_GENOMICSEG
+  debug(printf("Begin microexon search at 3' for %.*s\n",glength,gsequence));
+#else
+  debug(printf("Begin microexon search at 3'\n"));
+#endif
+
+  debug(printf("  Query sequence is %.*s\n",rlength,rsequence));
+
+  *microexonlength = 0;
+  if (glength < rlength) {
+    maxc = glength - MIN_MICROEXON_LENGTH;
+  } else {
+    maxc = rlength - MIN_MICROEXON_LENGTH;
+  }
+  for (c = 0; c < maxc; c++) {
+    left1 = gsequence_uc[c];
+    left2 = gsequence_uc[c+1];
+    debug(printf("   Checking %c%c\n",left1,left2));
+#ifdef PMAP
+    if (c > 0 && matchtable[rsequence[c-1]-'A'][gsequence_uc[c-1]-'A'] == false) {
+      nmismatches++;
+    }
+#else
+    if (c > 0 && rsequenceuc[c-1] != gsequence_uc[c-1]) {
+      nmismatches++;
+    }
+#endif
+    if (nmismatches > 1) {
+      debug(printf("   Aborting at %c != %c\n",rsequence[c-1],gsequence[c-1]));
+      *microintrontype = NONINTRON;
+      return NULL;
+    }
+    if (left1 == intron1 && left2 == intron2) {
+      endlength = rlength - c;
+      debug(printf("  Found donor at %d, length %d.  End sequence is %.*s\n",
+		   c,endlength,endlength,&(rsequence[c])));
+
+      textleft = goffset + c;
+      textright = textleft + search_length(endlength,genomiclength-textleft,end_microexons_p);
+      
+      if (textright >= textleft + endlength) {
+	hits = BoyerMoore_nt(&(rsequence[c]),endlength,textleft,textright-textleft,
+			     chroffset,chrhigh,watsonp);
+	for (p = hits; p != NULL; p = Intlist_next(p)) {
+	  candidate = textleft + Intlist_head(p);
+	  if (genomicseg[candidate - 2] == intron3 &&
+	      genomicseg[candidate - 1] == intron4) {
+	    debug(printf("  Successful microexon at %d\n",candidate));
+
+	    Intlist_free(&hits);
+	    *microexonlength = endlength;
+	    pairs = make_microexon_pairs_single(roffset,roffset+c,
+						goffset,candidate,c,endlength,
+						queryseq,queryuc,genomicseg,genomicuc,
+						pairpool,gapchar,*dynprogindex);
+	    *dynprogindex += (*dynprogindex > 0 ? +1 : -1);
+	    return pairs;
+	  }
+	}
+	Intlist_free(&hits);
+      }
+
+    }
+  }
+
+  debug(printf("End of dynprog microexon 3\n"));
+
+  *microintrontype = NONINTRON;
+  return NULL;
+}
+#endif
+
diff --git a/src/dynprog_single.h b/src/dynprog_single.h
new file mode 100644
index 0000000..e183c4b
--- /dev/null
+++ b/src/dynprog_single.h
@@ -0,0 +1,57 @@
+/* $Id: dynprog_single.h 132731 2014-04-08 21:19:57Z twu $ */
+#ifndef DYNPROG_SINGLE_INCLUDED
+#define DYNPROG_SINGLE_INCLUDED
+
+#include "bool.h"
+#include "list.h"
+#include "pairpool.h"
+#include "chrnum.h"
+#include "iit-read.h"
+#include "splicetrie_build.h"	/* For splicetype */
+#include "types.h"
+#include "dynprog.h"
+
+#define T Dynprog_T
+
+extern void
+Dynprog_single_setup (bool homopolymerp_in);
+
+
+extern List_T
+Dynprog_single_gap (int *dynprogindex, int *finalscore,
+		    int *nmatches, int *nmismatches, int *nopens, int *nindels,
+		    T dynprog, char *sequence1, char *sequenceuc1,
+		    int length1, int length2, int offset1, int offset2,
+		    Univcoord_T chroffset, Univcoord_T chrhigh,
+		    bool watsonp, bool jump_late_p, Pairpool_T pairpool,
+		    int extraband_single, double defect_rate, bool widebandp);
+
+
+extern List_T
+Dynprog_microexon_int (double *bestprob2, double *bestprob3, int *dynprogindex, int *microintrontype,
+		       char *sequence1, char *sequenceuc1,
+		       int length1, int length2L, int length2R,
+		       int offset1, int offset2L, int revoffset2R, int cdna_direction,
+		       char *queryseq, char *queryuc,
+		       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+		       Pairpool_T pairpool, double defect_rate);
+
+extern List_T
+Dynprog_microexon_5 (int *dynprogindex, int *microintrontype, int *microexonlength,
+		     char *revsequence1, char *revsequenceuc1,
+		     char *revsequence2, char *revsequenceuc2,
+		     int length1, int length2, int revoffset1, int revoffset2, int cdna_direction,
+		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
+		     Pairpool_T pairpool, bool end_microexons_p);
+
+extern List_T
+Dynprog_microexon_3 (int *dynprogindex, int *microintrontype, int *microexonlength,
+		     char *sequence1, char *sequenceuc1,
+		     char *sequence2, char *sequenceuc2,
+		     int length1, int length2, int offset1, int offset2, int cdna_direction,
+		     char *queryseq, char *queryuc, char *genomicseg, char *genomicuc,
+		     int genomiclength, Pairpool_T pairpool, bool end_microexons_p);
+
+#undef T
+#endif
+
diff --git a/src/fastlog.h b/src/fastlog.h
new file mode 100755
index 0000000..f38a26c
--- /dev/null
+++ b/src/fastlog.h
@@ -0,0 +1,124 @@
+#ifndef FASTLOG_INCLUDED
+#define FASTLOG_INCLUDED
+
+/*=====================================================================*
+ *                   Copyright (C) 2012 Paul Mineiro                   *
+ * All rights reserved.                                                *
+ *                                                                     *
+ * Redistribution and use in source and binary forms, with             *
+ * or without modification, are permitted provided that the            *
+ * following conditions are met:                                       *
+ *                                                                     *
+ *     * Redistributions of source code must retain the                *
+ *     above copyright notice, this list of conditions and             *
+ *     the following disclaimer.                                       *
+ *                                                                     *
+ *     * Redistributions in binary form must reproduce the             *
+ *     above copyright notice, this list of conditions and             *
+ *     the following disclaimer in the documentation and/or            *
+ *     other materials provided with the distribution.                 *
+ *                                                                     *
+ *     * Neither the name of Paul Mineiro nor the names                *
+ *     of other contributors may be used to endorse or promote         *
+ *     products derived from this software without specific            *
+ *     prior written permission.                                       *
+ *                                                                     *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND              *
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,         *
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES               *
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE             *
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER               *
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,                 *
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES            *
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE           *
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR                *
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF          *
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT           *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY              *
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE             *
+ * POSSIBILITY OF SUCH DAMAGE.                                         *
+ *                                                                     *
+ * Contact: Paul Mineiro <paul at mineiro.com>                            *
+ *=====================================================================*/
+
+
+#include <stdint.h>
+#define cast_uint32_t (uint32_t)
+
+/* Underflow of exponential is common practice in numerical routines,
+   so handle it here. */
+
+static inline float
+fastpow2 (float p)
+{
+  float offset = (p < 0) ? 1.0f : 0.0f;
+  float clipp = (p < -126) ? -126.0f : p;
+  int w = clipp;
+  float z = clipp - w + offset;
+  union { uint32_t i; float f; } v = { cast_uint32_t ( (1 << 23) * (clipp + 121.2740575f + 27.7280233f / (4.84252568f - z) - 1.49012907f * z) ) };
+
+  return v.f;
+}
+
+static inline float
+fastexp (float p)
+{
+  return fastpow2 (1.442695040f * p);
+}
+
+static inline float
+fasterpow2 (float p)
+{
+  float clipp = (p < -126) ? -126.0f : p;
+  union { uint32_t i; float f; } v = { cast_uint32_t ( (1 << 23) * (clipp + 126.94269504f) ) };
+  return v.f;
+}
+
+static inline float
+fasterexp (float p)
+{
+  return fasterpow2 (1.442695040f * p);
+}
+
+
+
+static inline float 
+fastlog2 (float x)
+{
+  union { float f; uint32_t i; } vx = { x };
+  union { uint32_t i; float f; } mx = { (vx.i & 0x007FFFFF) | 0x3f000000 };
+  float y = vx.i;
+  y *= 1.1920928955078125e-7f;
+
+  return y - 124.22551499f
+           - 1.498030302f * mx.f 
+           - 1.72587999f / (0.3520887068f + mx.f);
+}
+
+static inline float
+fastlog (float x)
+{
+  return 0.69314718f * fastlog2 (x);
+}
+
+static inline float 
+fasterlog2 (float x)
+{
+  union { float f; uint32_t i; } vx = { x };
+  float y = vx.i;
+  y *= 1.1920928955078125e-7f;
+  return y - 126.94269504f;
+}
+
+static inline float
+fasterlog (float x)
+{
+  /* return 0.69314718f * fasterlog2 (x); */
+
+  union { float f; uint32_t i; } vx = { x };
+  float y = vx.i;
+  y *= 8.2629582881927490e-8f;
+  return y - 87.989971088f;
+}
+
+#endif
diff --git a/src/genome-write.c b/src/genome-write.c
index e06e157..448019f 100644
--- a/src/genome-write.c
+++ b/src/genome-write.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: genome-write.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: genome-write.c 132144 2014-04-02 16:02:28Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -25,7 +25,7 @@ static char rcsid[] = "$Id: genome-write.c 99737 2013-06-27 19:33:03Z twu $";
 #include "types.h"
 #include "fopen.h"
 #include "interval.h"
-#include "compress.h"
+#include "compress-write.h"
 #include "iit-write.h"
 #include "complement.h"
 #include "genome.h"		/* For Genome_uncompress_mmap */
@@ -758,6 +758,7 @@ genome_write_memory (FILE *refgenome_fp, FILE *input,
 	    maxposition = currposition;
 	  }
 	}
+
       }
     }
   }
@@ -773,10 +774,10 @@ genome_write_memory (FILE *refgenome_fp, FILE *input,
 }
 
 void
-Genome_write (char *genomesubdir, char *fileroot, FILE *input, 
-	      Univ_IIT_T contig_iit, IIT_T altstrain_iit, Univ_IIT_T chromosome_iit,
-	      bool uncompressedp, bool rawp, bool writefilep,
-	      Univcoord_T genomelength, int index1part, int nmessages) {
+Genome_write_comp32 (char *genomesubdir, char *fileroot, FILE *input, 
+		     Univ_IIT_T contig_iit, IIT_T altstrain_iit, Univ_IIT_T chromosome_iit,
+		     bool uncompressedp, bool rawp, bool writefilep,
+		     Univcoord_T genomelength, int index1part, int nmessages) {
   size_t nuint4;
   FILE *refgenome_fp;
   char *filename;
@@ -859,30 +860,3 @@ Genome_write (char *genomesubdir, char *fileroot, FILE *input,
 }
 
 
-Genomecomp_T *
-Genome_create_blocks (char *genomicseg, Univcoord_T genomelength) {
-  Genomecomp_T *genomecomp;
-  size_t nuint4;
-
-  nuint4 = ((genomelength + 31)/32U)*3;
-  genomecomp = (Genomecomp_T *) CALLOC(nuint4+4,sizeof(Genomecomp_T));
-  /* Add 4 because Oligoindex_hr procedures point to nextlow as ptr+4 */
-
-  /* Creates X's at end */
-  genomecomp[nuint4-3] = 0xFFFFFFFF;
-  genomecomp[nuint4-2] = 0xFFFFFFFF;
-  genomecomp[nuint4-1] = 0xFFFFFFFF;
-
-  /* Plus extra 4 */
-  genomecomp[nuint4]   = 0xFFFFFFFF;
-  genomecomp[nuint4+1] = 0xFFFFFFFF;
-  genomecomp[nuint4+2] = 0xFFFFFFFF;
-  genomecomp[nuint4+3] = 0xFFFFFFFF;
-
-  Compress_update_memory(/*nbadchars*/0,genomecomp,genomicseg,/*currposition*/0,genomelength);
-
-  return genomecomp;
-}
-
-
-
diff --git a/src/genome-write.h b/src/genome-write.h
index dc152b7..8d38abc 100644
--- a/src/genome-write.h
+++ b/src/genome-write.h
@@ -1,4 +1,4 @@
-/* $Id: genome-write.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: genome-write.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef GENOME_WRITE_INCLUDED
 #define GENOME_WRITE_INCLUDED
 #include <stdio.h>
@@ -8,12 +8,9 @@
 #include "types.h"
 
 extern void
-Genome_write (char *genomesubdir, char *fileroot, FILE *input, 
-	      Univ_IIT_T contig_iit, IIT_T altstrain_iit, Univ_IIT_T chromosome_iit,
-	      bool uncompressedp, bool rawp, bool writefilep,
-	      Univcoord_T genomelength, int index1part, int nmessages);
-
-extern Genomecomp_T *
-Genome_create_blocks (char *genomicseg, Univcoord_T genomelength);
+Genome_write_comp32 (char *genomesubdir, char *fileroot, FILE *input, 
+		     Univ_IIT_T contig_iit, IIT_T altstrain_iit, Univ_IIT_T chromosome_iit,
+		     bool uncompressedp, bool rawp, bool writefilep,
+		     Univcoord_T genomelength, int index1part, int nmessages);
 
 #endif
diff --git a/src/genome.c b/src/genome.c
index 82740b9..9b5b1d9 100644
--- a/src/genome.c
+++ b/src/genome.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: genome.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: genome.c 136793 2014-05-21 18:08:15Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -136,7 +136,8 @@ Genome_free (T *old) {
 
 
 T
-Genome_new (char *genomesubdir, char *fileroot, char *snps_root, bool genome_lc_p, Access_mode_T access) {
+Genome_new (char *genomesubdir, char *fileroot, char *snps_root, Genometype_T genometype,
+	    bool genome_lc_p, Access_mode_T access) {
   T new = (T) MALLOC(sizeof(*new));
   char *filename;
   bool compressedp = !genome_lc_p;
@@ -147,15 +148,41 @@ Genome_new (char *genomesubdir, char *fileroot, char *snps_root, bool genome_lc_
   new->compressedp = compressedp;
 
   if (compressedp == true) {
-    if (snps_root != NULL) {
-      filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
-				 strlen(".genomecomp.")+strlen(snps_root)+1,sizeof(char));
-      sprintf(filename,"%s/%s.genomecomp.%s",genomesubdir,fileroot,snps_root);
+    if (genometype == GENOME_OLIGOS) {
+      if (snps_root != NULL) {
+	filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
+				   strlen(".genomecomp.")+strlen(snps_root)+1,sizeof(char));
+	sprintf(filename,"%s/%s.genomecomp.%s",genomesubdir,fileroot,snps_root);
+      } else {
+	filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
+				   strlen(".genomecomp")+1,sizeof(char));
+	sprintf(filename,"%s/%s.genomecomp",genomesubdir,fileroot);
+      }
+
+    } else if (genometype == GENOME_BITS) {
+      if (snps_root != NULL) {
+	filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
+				   strlen(".genomebits128.")+strlen(snps_root)+1,sizeof(char));
+	sprintf(filename,"%s/%s.genomebits128.%s",genomesubdir,fileroot,snps_root);
+      } else {
+	filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
+				   strlen(".genomebits128")+1,sizeof(char));
+	sprintf(filename,"%s/%s.genomebits128",genomesubdir,fileroot);
+      }
+      if (Access_file_exists_p(filename) == false) {
+	fprintf(stderr,"Unable to detect new version of genome index: genomebits128 file not available.  This version of GSNAP is not backwards compatible.\n");
+	fprintf(stderr,"Looking specifically for %s\n",filename);
+	FREE(filename);
+	FREE(new);
+	exit(9);
+	return (T) NULL;
+      }
+
     } else {
-      filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
-				 strlen(".genomecomp")+1,sizeof(char));
-      sprintf(filename,"%s/%s.genomecomp",genomesubdir,fileroot);
+      fprintf(stderr,"Don't recognize genome type %d\n",genometype);
+      abort();
     }
+
   } else {
     filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
 			       strlen(".genome")+1,sizeof(char));
@@ -166,7 +193,12 @@ Genome_new (char *genomesubdir, char *fileroot, char *snps_root, bool genome_lc_
     new->chars = (char *) NULL;
 
     if (access == USE_ALLOCATE) {
-      fprintf(stderr,"Allocating memory for compressed genome...");
+      fprintf(stderr,"Allocating memory for compressed genome ");
+      if (genometype == GENOME_OLIGOS) {
+	fprintf(stderr,"(oligos)...");
+      } else if (genometype == GENOME_BITS) {
+	fprintf(stderr,"(bits)...");
+      }
       new->blocks = (Genomecomp_T *) Access_allocated(&new->len,&seconds,filename,sizeof(Genomecomp_T));
       if (new->blocks == NULL) {
 	fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B))\n");
@@ -180,9 +212,14 @@ Genome_new (char *genomesubdir, char *fileroot, char *snps_root, bool genome_lc_
 
 #ifdef HAVE_MMAP
     } else if (access == USE_MMAP_PRELOAD) {
-      fprintf(stderr,"Pre-loading compressed genome...");
+      fprintf(stderr,"Pre-loading compressed genome ");
+      if (genometype == GENOME_OLIGOS) {
+	fprintf(stderr,"(oligos)...");
+      } else if (genometype == GENOME_BITS) {
+	fprintf(stderr,"(bits)...");
+      }
       new->blocks = (Genomecomp_T *) Access_mmap_and_preload(&new->fd,&new->len,&npages,&seconds,
-						      filename,sizeof(Genomecomp_T));
+							     filename,sizeof(Genomecomp_T));
       if (new->blocks == NULL) {
 	fprintf(stderr,"insufficient memory (will use disk file instead)\n");
 	new->access = FILEIO;
@@ -355,7 +392,10 @@ genomecomp_read_current (T this) {
 
 static char DEFAULT_CHARS[4] = {'A','C','G','T'};
 static char DEFAULT_FLAGS[4] = {'N','N','N','N'};
+static char X_FLAGS[4] =       {'X','X','X','X'};
+#ifdef EXTRACT_GENOMICSEG
 static char A_FLAGS[4] =       {'A','A','A','A'};
+#endif
 
 static char SNP_CHARS[4] = {' ',' ',' ',' '};
 static char SNP_FLAGS[4] = {'A','C','G','T'};
@@ -8576,7 +8616,7 @@ uncompress_fileio (char *gbuffer1, T this, Univcoord_T startpos,
   Univcoord_T startblock, endblock, ptr;
   Genomecomp_T high, low, flags;
   char Buffer[32];
-  int startdiscard, enddiscard, i, k = 0;
+  int startdiscard, enddiscard, i;
 
   /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
 
@@ -8603,7 +8643,7 @@ uncompress_fileio (char *gbuffer1, T this, Univcoord_T startpos,
       flags >>= 1;
     }
     for (i = startdiscard; i < enddiscard; i++) {
-      gbuffer1[k++] = Buffer[i];
+      *gbuffer1++ = Buffer[i];
     }
   } else {
     genomecomp_move_absolute(this,ptr);
@@ -8622,7 +8662,7 @@ uncompress_fileio (char *gbuffer1, T this, Univcoord_T startpos,
       flags >>= 1;
     }
     for (i = startdiscard; i < 32; i++) {
-      gbuffer1[k++] = Buffer[i];
+      *gbuffer1++ = Buffer[i];
     }
     ptr += 3;
       
@@ -8632,12 +8672,12 @@ uncompress_fileio (char *gbuffer1, T this, Univcoord_T startpos,
       flags = genomecomp_read_current(this);
 
       for (i = 0; i < 16; i++) {
-	gbuffer1[k++] = (char) ((flags & 1U) ? flagchars[low & 3U] : defaultchars[low & 3U]);
+	*gbuffer1++ = (char) ((flags & 1U) ? flagchars[low & 3U] : defaultchars[low & 3U]);
 	low >>= 2;
 	flags >>= 1;
       }
       for ( ; i < 32; i++) {
-	gbuffer1[k++] = (char) ((flags & 1U) ? flagchars[high & 3U] : defaultchars[high & 3U]);
+	*gbuffer1++ = (char) ((flags & 1U) ? flagchars[high & 3U] : defaultchars[high & 3U]);
 	high >>= 2;
 	flags >>= 1;
       }
@@ -8660,7 +8700,7 @@ uncompress_fileio (char *gbuffer1, T this, Univcoord_T startpos,
 	flags >>= 1;
       }
       for (i = 0; i < enddiscard; i++) {
-	gbuffer1[k++] = Buffer[i];
+	*gbuffer1++ = Buffer[i];
       }
     }
   }
@@ -8803,7 +8843,7 @@ uncompress_mmap_bitbybit (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T star
   Univcoord_T startblock, endblock, ptr;
   Genomecomp_T high, low, flags;
   char Buffer[32];
-  int startdiscard, enddiscard, i, k = 0;
+  int startdiscard, enddiscard, i;
 
   /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
 
@@ -8833,7 +8873,7 @@ uncompress_mmap_bitbybit (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T star
       flags >>= 1;
     }
     for (i = startdiscard; i < enddiscard; i++) {
-      gbuffer1[k++] = Buffer[i];
+      *gbuffer1++ = Buffer[i];
     }
 
   } else {
@@ -8856,7 +8896,7 @@ uncompress_mmap_bitbybit (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T star
       flags >>= 1;
     }
     for (i = startdiscard; i < 32; i++) {
-      gbuffer1[k++] = Buffer[i];
+      *gbuffer1++ = Buffer[i];
     }
     ptr += 3;
       
@@ -8870,12 +8910,12 @@ uncompress_mmap_bitbybit (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T star
 #endif
 
       for (i = 0; i < 16; i++) {
-	gbuffer1[k++] = (char) ((flags & 1U) ? flagchars[low & 3U] : defaultchars[low & 3U]);
+	*gbuffer1++ = (char) ((flags & 1U) ? flagchars[low & 3U] : defaultchars[low & 3U]);
 	low >>= 2;
 	flags >>= 1;
       }
       for ( ; i < 32; i++) {
-	gbuffer1[k++] = (char) ((flags & 1U) ? flagchars[high & 3U] : defaultchars[high & 3U]);
+	*gbuffer1++ = (char) ((flags & 1U) ? flagchars[high & 3U] : defaultchars[high & 3U]);
 	high >>= 2;
 	flags >>= 1;
       }
@@ -8902,7 +8942,7 @@ uncompress_mmap_bitbybit (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T star
 	flags >>= 1;
       }
       for (i = 0; i < enddiscard; i++) {
-	gbuffer1[k++] = Buffer[i];
+	*gbuffer1++ = Buffer[i];
       }
     }
   }
@@ -8918,7 +8958,8 @@ Genome_uncompress_mmap (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T startp
   Univcoord_T startblock, endblock, ptr;
   Genomecomp_T high, low, flags;
   char Buffer[32];
-  int startdiscard, enddiscard, i, k;
+  int startdiscard, enddiscard, i;
+  Univcoord_T k = 0;
 
   /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
 
@@ -9028,7 +9069,9 @@ Genome_uncompress_mmap (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T startp
 }
 
 
+
 /* Correct procedure should look at alt high/low and normal flags, and substitute N based on normal flags */
+/* May not handle wildcard positions correctly.  A wildcard occurs if ref == alt && ref_flag == 0 && alt_flag == 1 */
 static void
 uncompress_mmap_snps_subst (char *gbuffer1, Genomecomp_T *refblocks, Genomecomp_T *altblocks, Univcoord_T startpos, 
 			    Univcoord_T endpos) {
@@ -9196,7 +9239,8 @@ uncompress_mmap_snps_only (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T sta
   Univcoord_T startblock, endblock, ptr;
   Genomecomp_T high, low, flags;
   char Buffer[32];
-  int startdiscard, enddiscard, i, k = 0;
+  int startdiscard, enddiscard, i;
+  Univcoord_T k = 0;
 
   /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
 
@@ -9330,10 +9374,9 @@ uncompress_mmap_snps_only (char *gbuffer1, Genomecomp_T *blocks, Univcoord_T sta
 #endif
 
 #define LOW_TWO_BITS 0x3;
-static char CHARTABLE[4] = {'A','C','G','T'};
 
 static char
-uncompress_one_char (Genomecomp_T *blocks, Univcoord_T pos) {
+uncompress_one_char (Genomecomp_T *blocks, Univcoord_T pos, char flagchar, char chartable[]) {
   Univcoord_T ptr;
   Genomecomp_T high, low, flags;
   int bit, c;
@@ -9350,7 +9393,7 @@ uncompress_one_char (Genomecomp_T *blocks, Univcoord_T pos) {
 #endif
 
   if (flags & (1 << bit)) {
-    return 'N';
+    return flagchar;
 
   } else if (bit < 16) {
 #ifdef WORDS_BIGENDIAN
@@ -9359,7 +9402,7 @@ uncompress_one_char (Genomecomp_T *blocks, Univcoord_T pos) {
     low = blocks[ptr+1];
 #endif
     c = (low >> (bit+bit)) & LOW_TWO_BITS;
-    return CHARTABLE[c];
+    return chartable[c];
 
   } else {
 #ifdef WORDS_BIGENDIAN
@@ -9368,11 +9411,13 @@ uncompress_one_char (Genomecomp_T *blocks, Univcoord_T pos) {
     high = blocks[ptr];
 #endif
     c = (high >> (bit+bit-32)) & LOW_TWO_BITS;
-    return CHARTABLE[c];
+    return chartable[c];
   }
 }
   
 
+static char CHARTABLE[4] = {'A','C','G','T'};
+
 static char
 uncompress_one_char_ignore_flags (Genomecomp_T *blocks, Univcoord_T pos) {
   Univcoord_T ptr;
@@ -9566,7 +9611,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
   /* Chrpos_T length = endpos - startpos; */
   Univcoord_T startblock, endblock, startdiscard, enddiscard, ptr;
   Genomecomp_T high, low, flags;
-  int i, k = 0;
+  int i;
 #ifdef DEBUG3
   char gbuffer_debug[1024];
 #endif
@@ -9599,7 +9644,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	if (flags & 0x01) {
 	  /* return false; */
 	}
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 1, startdiscard %d, enddiscard %d\n",startdiscard,enddiscard);
@@ -9619,7 +9664,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	if (flags & 0x01) {
 	  /* return false; */
 	}
-	gbuffer[k++] = (unsigned char) (high & 0x03);
+	*gbuffer++ = (unsigned char) (high & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 2\n");
@@ -9648,7 +9693,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	if (flags & 0x01) {
 	  /* return false; */
 	}
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 3\n");
@@ -9666,7 +9711,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
       if (flags & 0x01) {
 	/* return false; */
       }
-      gbuffer[k++] = (unsigned char) (high & 0x03);
+      *gbuffer++ = (unsigned char) (high & 0x03);
 #ifdef DEBUG3
       if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	fprintf(stderr,"Case 4, startdiscard %d (after subtracting 16)\n",startdiscard);
@@ -9691,7 +9736,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	/* return false; */
       }
       for (i = 0; i < 16; i++) {
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 5\n");
@@ -9701,7 +9746,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	low >>= 2;
       }
       for ( ; i < 32; i++) {
-	gbuffer[k++] = (unsigned char) (high & 0x03);
+	*gbuffer++ = (unsigned char) (high & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 6\n");
@@ -9727,7 +9772,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	if (flags & 0x01) {
 	  /* return false; */
 	}
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 7\n");
@@ -9742,7 +9787,7 @@ uncompress_mmap_nucleotides_wstatus (unsigned char *gbuffer, Genomecomp_T *block
 	if (flags & 0x01) {
 	  /* return false; */
 	}
-	gbuffer[k++] = (unsigned char) (high & 0x03);
+	*gbuffer++ = (unsigned char) (high & 0x03);
 #ifdef DEBUG3
 	if (check_nucleotide(gbuffer[k-1],gbuffer_debug[k-1])) {
 	  fprintf(stderr,"Case 8\n");
@@ -9767,7 +9812,7 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
   /* Chrpos_T length = endpos - startpos; */
   Univcoord_T startblock, endblock, ptr;
   Genomecomp_T high, low;
-  int startdiscard, enddiscard, i, k = 0;
+  int startdiscard, enddiscard, i;
 
   ptr = startblock = startpos/32U*3;
   endblock = endpos/32U*3;
@@ -9785,7 +9830,7 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
 #endif
       low >>= (startdiscard+startdiscard);
       while (startdiscard < enddiscard && startdiscard < 16) {
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 	low >>= 2;
 	startdiscard++;
       }
@@ -9800,7 +9845,7 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
 #endif
       high >>= (startdiscard+startdiscard);
       while (startdiscard < enddiscard) {
-	gbuffer[k++] = (unsigned char) (high & 0x03);
+	*gbuffer++ = (unsigned char) (high & 0x03);
 	high >>= 2;
 	startdiscard++;
       }
@@ -9816,7 +9861,7 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
     if (startdiscard < 16) {
       low >>= (startdiscard+startdiscard);
       while (startdiscard < 16) {
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 	low >>= 2;
 	startdiscard++;
       }
@@ -9824,7 +9869,7 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
     startdiscard -= 16;
     high >>= (startdiscard+startdiscard);
     while (startdiscard < 16) {
-      gbuffer[k++] = (unsigned char) (high & 0x03);
+      *gbuffer++ = (unsigned char) (high & 0x03);
       high >>= 2;
       startdiscard++;
     }
@@ -9839,11 +9884,11 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
       high = blocks[ptr]; low = blocks[ptr+1];
 #endif
       for (i = 0; i < 16; i++) {
-	gbuffer[k++] = (unsigned char) (low & 0x03);
+	*gbuffer++ = (unsigned char) (low & 0x03);
 	low >>= 2;
       }
       for ( ; i < 32; i++) {
-	gbuffer[k++] = (unsigned char) (high & 0x03);
+	*gbuffer++ = (unsigned char) (high & 0x03);
 	high >>= 2;
       }
 
@@ -9859,12 +9904,12 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
 #endif
     i = 0;
     while (i < enddiscard && i < 16) {
-      gbuffer[k++] = (unsigned char) (low & 0x03);
+      *gbuffer++ = (unsigned char) (low & 0x03);
       low >>= 2;
       i++;
     }
     while (i < enddiscard) {
-      gbuffer[k++] = (unsigned char) (high & 0x03);
+      *gbuffer++ = (unsigned char) (high & 0x03);
       high >>= 2;
       i++;
     }
@@ -9888,6 +9933,360 @@ uncompress_mmap_nucleotides (unsigned char *gbuffer, Genomecomp_T *blocks, Univc
 }
 
 
+/* Assign A => 0, C => 1, G => 2, T => 3, N/X => 4 */
+static void
+uncompress_mmap_int_string (unsigned char *gbuffer, Genomecomp_T *blocks, Univcoord_T startpos, 
+			    Univcoord_T endpos) {
+  /* Chrpos_T length = endpos - startpos; */
+  Univcoord_T startblock, endblock, ptr;
+  Genomecomp_T high, low, flags;
+  int startdiscard, enddiscard, i;
+
+  ptr = startblock = startpos/32U*3;
+  endblock = endpos/32U*3;
+  startdiscard = startpos % 32;
+  enddiscard = endpos % 32;
+
+  if (endblock == startblock) {
+    /* Special case */
+#ifdef WORDS_BIGENDIAN
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    flags = blocks[ptr+2];
+#endif
+    flags >>= startdiscard;
+
+    if (startdiscard < 16) {
+#ifdef WORDS_BIGENDIAN
+      low = Bigendian_convert_uint(blocks[ptr+1]);
+#else
+      low = blocks[ptr+1];
+#endif
+      low >>= (startdiscard+startdiscard);
+      while (startdiscard < enddiscard && startdiscard < 16) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = (unsigned char) (low & 0x03);
+	}
+	low >>= 2;
+	flags >>= 1;
+	startdiscard++;
+      }
+    }
+    if (enddiscard >= 16) {
+      startdiscard -= 16;
+      enddiscard -= 16;
+#ifdef WORDS_BIGENDIAN
+      high = Bigendian_convert_uint(blocks[ptr]);
+#else
+      high = blocks[ptr];
+#endif
+      high >>= (startdiscard+startdiscard);
+      while (startdiscard < enddiscard) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = (unsigned char) (high & 0x03);
+	}
+	high >>= 2;
+	flags >>= 1;
+	startdiscard++;
+      }
+    }
+
+  } else {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(blocks[ptr]);
+    low = Bigendian_convert_uint(blocks[ptr+1]);
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+    flags >>= startdiscard;
+    if (startdiscard < 16) {
+      low >>= (startdiscard+startdiscard);
+      while (startdiscard < 16) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = (unsigned char) (low & 0x03);
+	}
+	low >>= 2;
+	flags >>= 1;
+	startdiscard++;
+      }
+    }
+    startdiscard -= 16;
+    high >>= (startdiscard+startdiscard);
+    while (startdiscard < 16) {
+      if (flags & 0x01) {
+	*gbuffer++ = (unsigned char) 4;
+      } else {
+	*gbuffer++ = (unsigned char) (high & 0x03);
+      }
+      high >>= 2;
+      flags >>= 1;
+      startdiscard++;
+    }
+    /* printf("Block %d assigned up to %d\n",ptr,k); */
+    ptr += 3;
+      
+    while (ptr < endblock) {
+#ifdef WORDS_BIGENDIAN
+      high = Bigendian_convert_uint(blocks[ptr]);
+      low = Bigendian_convert_uint(blocks[ptr+1]);
+      flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+      high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+      for (i = 0; i < 16; i++) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = (unsigned char) (low & 0x03);
+	}
+	low >>= 2;
+	flags >>= 1;
+      }
+      for ( ; i < 32; i++) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = (unsigned char) (high & 0x03);
+	}
+	high >>= 2;
+	flags >>= 1;
+      }
+
+      /* printf("Block %d assigned up to %d\n",ptr,k); */
+      ptr += 3;
+    }
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(blocks[ptr]);
+    low = Bigendian_convert_uint(blocks[ptr+1]);
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+    i = 0;
+    while (i < enddiscard && i < 16) {
+      if (flags & 0x01) {
+	*gbuffer++ = (unsigned char) 4;
+      } else {
+	*gbuffer++ = (unsigned char) (low & 0x03);
+      }
+      low >>= 2;
+      flags >>= 1;
+      i++;
+    }
+    while (i < enddiscard) {
+      if (flags & 0x01) {
+	*gbuffer++ = (unsigned char) 4;
+      } else {
+	*gbuffer++ = (unsigned char) (high & 0x03);
+      }
+      high >>= 2;
+      flags >>= 1;
+      i++;
+    }
+    /* printf("Block %d assigned up to %d\n",ptr,k); */
+  }
+
+#if 0
+  for (ptr = startpos, k = 0; ptr < endpos; ptr++, k++) {
+    if (gbuffer[k] > 3) {
+      printf("startpos = %u, endpos = %u, k = %d\n",startpos,endpos,k);
+      printf("startblock %u, endblock %u\n",startblock,endblock);
+      for (ptr = startpos, k = 0; ptr < endpos; ptr++, k++) {
+	printf("%u %d %d\n",ptr,k,gbuffer[k]);
+      }
+      abort();
+    }
+  }
+#endif
+
+  return;
+}
+
+
+static void
+uncompress_mmap_int_string_convert (unsigned char *gbuffer, Genomecomp_T *blocks, Univcoord_T startpos, 
+				    Univcoord_T endpos, unsigned char *conversion) {
+  /* Chrpos_T length = endpos - startpos; */
+  Univcoord_T startblock, endblock, ptr;
+  Genomecomp_T high, low, flags;
+  int startdiscard, enddiscard, i;
+
+  ptr = startblock = startpos/32U*3;
+  endblock = endpos/32U*3;
+  startdiscard = startpos % 32;
+  enddiscard = endpos % 32;
+
+  if (endblock == startblock) {
+    /* Special case */
+#ifdef WORDS_BIGENDIAN
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    flags = blocks[ptr+2];
+#endif
+    flags >>= startdiscard;
+
+    if (startdiscard < 16) {
+#ifdef WORDS_BIGENDIAN
+      low = Bigendian_convert_uint(blocks[ptr+1]);
+#else
+      low = blocks[ptr+1];
+#endif
+      low >>= (startdiscard+startdiscard);
+      while (startdiscard < enddiscard && startdiscard < 16) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = conversion[(int) (low & 0x03)];
+	}
+	low >>= 2;
+	flags >>= 1;
+	startdiscard++;
+      }
+    }
+    if (enddiscard >= 16) {
+      startdiscard -= 16;
+      enddiscard -= 16;
+#ifdef WORDS_BIGENDIAN
+      high = Bigendian_convert_uint(blocks[ptr]);
+#else
+      high = blocks[ptr];
+#endif
+      high >>= (startdiscard+startdiscard);
+      while (startdiscard < enddiscard) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = conversion[(int) (high & 0x03)];
+	}
+	high >>= 2;
+	flags >>= 1;
+	startdiscard++;
+      }
+    }
+
+  } else {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(blocks[ptr]);
+    low = Bigendian_convert_uint(blocks[ptr+1]);
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+    flags >>= startdiscard;
+    if (startdiscard < 16) {
+      low >>= (startdiscard+startdiscard);
+      while (startdiscard < 16) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = conversion[(int) (low & 0x03)];
+	}
+	low >>= 2;
+	flags >>= 1;
+	startdiscard++;
+      }
+    }
+    startdiscard -= 16;
+    high >>= (startdiscard+startdiscard);
+    while (startdiscard < 16) {
+      if (flags & 0x01) {
+	*gbuffer++ = (unsigned char) 4;
+      } else {
+	*gbuffer++ = conversion[(int) (high & 0x03)];
+      }
+      high >>= 2;
+      flags >>= 1;
+      startdiscard++;
+    }
+    /* printf("Block %d assigned up to %d\n",ptr,k); */
+    ptr += 3;
+      
+    while (ptr < endblock) {
+#ifdef WORDS_BIGENDIAN
+      high = Bigendian_convert_uint(blocks[ptr]);
+      low = Bigendian_convert_uint(blocks[ptr+1]);
+      flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+      high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+      for (i = 0; i < 16; i++) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = conversion[(int) (low & 0x03)];
+	}
+	low >>= 2;
+	flags >>= 1;
+      }
+      for ( ; i < 32; i++) {
+	if (flags & 0x01) {
+	  *gbuffer++ = (unsigned char) 4;
+	} else {
+	  *gbuffer++ = conversion[(int) (high & 0x03)];
+	}
+	high >>= 2;
+	flags >>= 1;
+      }
+
+      /* printf("Block %d assigned up to %d\n",ptr,k); */
+      ptr += 3;
+    }
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(blocks[ptr]);
+    low = Bigendian_convert_uint(blocks[ptr+1]);
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+    i = 0;
+    while (i < enddiscard && i < 16) {
+      if (flags & 0x01) {
+	*gbuffer++ = (unsigned char) 4;
+      } else {
+	*gbuffer++ = conversion[(int) (low & 0x03)];
+      }
+      low >>= 2;
+      flags >>= 1;
+      i++;
+    }
+    while (i < enddiscard) {
+      if (flags & 0x01) {
+	*gbuffer++ = (unsigned char) 4;
+      } else {
+	*gbuffer++ = conversion[(int) (high & 0x03)];
+      }
+      high >>= 2;
+      flags >>= 1;
+      i++;
+    }
+    /* printf("Block %d assigned up to %d\n",ptr,k); */
+  }
+
+#if 0
+  for (ptr = startpos, k = 0; ptr < endpos; ptr++, k++) {
+    if (gbuffer[k] > 3) {
+      printf("startpos = %u, endpos = %u, k = %d\n",startpos,endpos,k);
+      printf("startblock %u, endblock %u\n",startblock,endblock);
+      for (ptr = startpos, k = 0; ptr < endpos; ptr++, k++) {
+	printf("%u %d %d\n",ptr,k,gbuffer[k]);
+      }
+      abort();
+    }
+  }
+#endif
+
+  return;
+}
+
 
 /************************************************************************
  *   Usage procedures
@@ -9902,6 +10301,10 @@ static Genomecomp_T *genomealt_blocks;	/* Can be equal to genome_blocks, but not
 static Mode_T mode;
 static int circular_typeint = -1;
 
+static unsigned char *fwd_conversion;
+static unsigned char *rev_conversion;
+
+
 void
 Genome_setup (T genome_in, T genomealt_in, Mode_T mode_in, int circular_typeint_in) {
   genome = genome_in;
@@ -9914,6 +10317,16 @@ Genome_setup (T genome_in, T genomealt_in, Mode_T mode_in, int circular_typeint_
     genomealt_blocks = genomealt->blocks;
   }
   mode = mode_in;
+  if (mode == STANDARD) {
+    fwd_conversion = "ACGT";
+    rev_conversion = "ACGT";
+  } else if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
+    fwd_conversion = "ATGT";
+    rev_conversion = "ACAT";
+  } else if (mode == ATOI_STRANDED || mode == ATOI_NONSTRANDED) {
+    fwd_conversion = "GCGT";
+    rev_conversion = "ACGC";
+  }
   circular_typeint = circular_typeint_in;
   return;
 }
@@ -10062,7 +10475,7 @@ Genome_fill_buffer (Chrnum_T *chrnum, int *nunknowns, T this, Univcoord_T left,
 
 
 void
-Genome_fill_buffer_simple (T this, Univcoord_T left, Chrpos_T length, char *gbuffer1) {
+Genome_fill_buffer_simple (T this, Univcoord_T left, Chrpos_T length, unsigned char *gbuffer1) {
   int delta, i;
   
 #if 0
@@ -10135,6 +10548,29 @@ Genome_fill_buffer_simple (T this, Univcoord_T left, Chrpos_T length, char *gbuf
 
 
 void
+Genome_fill_buffer_convert_fwd (Univcoord_T left, Chrpos_T length, char *gbuffer1) {
+  
+  if (length > 0) {
+    assert(left + length >= left);
+    uncompress_mmap_bitbybit(gbuffer1,genome_blocks,left,left+length,fwd_conversion,X_FLAGS);
+  }
+  gbuffer1[length] = '\0';
+  return;
+}
+
+void
+Genome_fill_buffer_convert_rev (Univcoord_T left, Chrpos_T length, char *gbuffer1) {
+  
+  if (length > 0) {
+    assert(left + length >= left);
+    uncompress_mmap_bitbybit(gbuffer1,genome_blocks,left,left+length,rev_conversion,X_FLAGS);
+  }
+  gbuffer1[length] = '\0';
+  return;
+}
+
+
+void
 Genome_fill_buffer_blocks (Univcoord_T left, Chrpos_T length, char *gbuffer1) {
   
   if (length > 0) {
@@ -10287,6 +10723,69 @@ Genome_fill_buffer_nucleotides (T this, Univcoord_T left, Chrpos_T length, unsig
 }
 
 
+void
+Genome_fill_buffer_int_string (T this, Univcoord_T left, Chrpos_T length, unsigned char *gbuffer,
+			       unsigned char *conversion) {
+  
+  if (length == 0) {
+    return;
+  }
+
+  /* Fix out of bounds resulting from negative numbers */
+#if 0
+  if (left + length < left) {
+    fprintf(stderr,"left %u + length %u < left %u\n",left,length,left);
+    abort();
+  }
+#else
+  assert(left + length >= left);
+#endif
+
+  if (this->compressedp == false) {
+    fprintf(stderr,"Procedure Genome_fill_buffer_nucleotides not designed to work for non-compressed genomes\n");
+    exit(9);
+    if (this->access == FILEIO) {
+#ifdef HAVE_PTHREAD
+      pthread_mutex_lock(&this->read_mutex);
+#endif
+#ifdef HAVE_PTHREAD
+      pthread_mutex_unlock(&this->read_mutex);
+#endif
+
+    } else {
+      memcpy(gbuffer,&(this->chars[left]),length*sizeof(char));
+    }
+
+  } else {
+    if (this->access == FILEIO) {
+#ifdef HAVE_PTHREAD
+      pthread_mutex_lock(&this->read_mutex);
+#endif
+      fprintf(stderr,"Procedure Genome_fill_buffer_nucleotides not designed to work under FILEIO access\n");
+      exit(9);
+#ifdef HAVE_PTHREAD
+      pthread_mutex_unlock(&this->read_mutex);
+#endif
+    } else if (conversion == NULL) {
+      uncompress_mmap_int_string(gbuffer,this->blocks,left,left+length);
+    } else {
+      uncompress_mmap_int_string_convert(gbuffer,this->blocks,left,left+length,conversion);
+    }
+  }
+
+  gbuffer[length] = 0xFF;
+
+#if 0
+  for (i = 0; i <= length; i++) {
+    printf("%d ",gbuffer[i]);
+  }
+  printf("\n");
+#endif
+
+  return;
+}
+
+
 char
 Genome_get_char (T this, Univcoord_T left) {
   char c;
@@ -10322,7 +10821,7 @@ Genome_get_char (T this, Univcoord_T left) {
       pthread_mutex_unlock(&this->read_mutex);
 #endif
     } else {
-      c = uncompress_one_char(this->blocks,left);
+      c = uncompress_one_char(this->blocks,left,/*flagchar*/'N',CHARTABLE);
 #ifdef EXTRACT_GENOMICSEG
       Genome_uncompress_mmap(gbuffer1,this->blocks,left,left+1);
       assert(c == gbuffer1[0]);
@@ -10335,6 +10834,33 @@ Genome_get_char (T this, Univcoord_T left) {
 }
 
 
+/* Removed checks for uncompressed genome and fileio access */
+char
+Genome_get_char_lex (T this, Univcoord_T left, Univcoord_T genomelength, char chartable[]) {
+#ifdef EXTRACT_GENOMICSEG
+  char c;
+  char gbuffer1[1];
+#endif
+  
+  /* assert(left < 4000000000U); */
+
+  if (left >= genomelength) {
+    return (char) 0;
+  } else {
+#ifdef EXTRACT_GENOMICSEG
+    Genome_uncompress_mmap(gbuffer1,this->blocks,left,left+1);
+    assert(c == gbuffer1[0]);
+    return c;
+#else
+    /* Want 'X', because in building suffix array, the encoding was A(0), C(1), G(2), T(3), N(4) */
+    return uncompress_one_char(this->blocks,left,/*flagchar*/'X',chartable);
+#endif
+  }
+}
+
+
+
+
 char
 Genome_get_char_blocks (char *charalt, Univcoord_T left) {
   char c;
@@ -10344,7 +10870,8 @@ Genome_get_char_blocks (char *charalt, Univcoord_T left) {
   
   /* assert(left < 4000000000U); */
 
-  if ((c = uncompress_one_char(genome_blocks,left)) == 'N' || c == 'X') {
+  /* printf("Genome_get_char_blocks called with left = %u\n",left); */
+  if ((c = uncompress_one_char(genome_blocks,left,/*flagchar*/'N',CHARTABLE)) == 'N') {
     *charalt = c;
   } else {
     *charalt = uncompress_one_char_ignore_flags(genomealt_blocks,left);
@@ -10358,6 +10885,101 @@ Genome_get_char_blocks (char *charalt, Univcoord_T left) {
 }
 
 
+char *
+Genome_get_segment_blocks_right (char **segmentalt, Univcoord_T left, Chrpos_T length, Univcoord_T chrhigh,
+				 bool revcomp) {
+  char *segment;
+  Chrpos_T out_of_bounds, i;
+
+  if (length == 0) {
+    *segmentalt = (char *) NULL;
+    return (char *) NULL;
+  } else if (left >= chrhigh) {
+    /* All out of bounds */
+    *segmentalt = (char *) NULL;
+    return (char *) NULL;
+  } else if (left + length >= chrhigh) {
+    segment = (char *) MALLOC((length+1) * sizeof(char));
+    out_of_bounds = left + length - chrhigh;
+    /* Cannot check i >= length - out_of_bounds when i is unsigned */
+    for (i = length - 1; i + out_of_bounds >= length; i--) {
+      segment[i] = '*';
+    }
+  } else {
+    segment = (char *) MALLOC((length+1) * sizeof(char));
+    out_of_bounds = 0;
+  }
+
+  /* printf("Genome_get_segment_blocks called with left = %u, revcomp %d\n",left,revcomp); */
+  Genome_uncompress_mmap(segment,genome_blocks,left,left+length-out_of_bounds);
+  if (revcomp == true) {
+    make_complement_inplace(segment,length);
+  }
+
+  if (genomealt_blocks == genome_blocks) {
+    *segmentalt = segment;
+  } else {
+    *segmentalt = (char *) MALLOC((length+1) * sizeof(char));
+    for (i = length - 1; i >= length - out_of_bounds; i--) {
+      (*segmentalt)[i] = '*';
+    }
+    uncompress_mmap_snps_subst(*segmentalt,genome_blocks,genomealt_blocks,left,left+length-out_of_bounds);
+    if (revcomp == true) {
+      make_complement_inplace(*segmentalt,length);
+    }
+  }
+  
+  return segment;
+}
+
+
+char *
+Genome_get_segment_blocks_left (char **segmentalt, Univcoord_T left, Chrpos_T length, Univcoord_T chroffset,
+				bool revcomp) {
+  char *segment;
+  Chrpos_T out_of_bounds, i;
+
+
+  if (length == 0) {
+    *segmentalt = (char *) NULL;
+    return (char *) NULL;
+  } else if (left < chroffset) {
+    *segmentalt = (char *) NULL;
+    return (char *) NULL;
+  } else if (left < chroffset + length) {
+    segment = (char *) MALLOC((length+1) * sizeof(char));
+    out_of_bounds = chroffset + length - left;
+    for (i = 0; i < out_of_bounds; i++) {
+      segment[i] = '*';
+    }
+  } else {
+    segment = (char *) MALLOC((length+1) * sizeof(char));
+    out_of_bounds = 0;
+  }
+
+  /* printf("Genome_get_segment_blocks called with left = %u, revcomp %d\n",left,revcomp); */
+  Genome_uncompress_mmap(&(segment[out_of_bounds]),genome_blocks,left-length+out_of_bounds,left);
+  if (revcomp == true) {
+    make_complement_inplace(segment,length);
+  }
+
+  if (genomealt_blocks == genome_blocks) {
+    *segmentalt = segment;
+  } else {
+    *segmentalt = (char *) MALLOC((length+1) * sizeof(char));
+    for (i = 0; i < out_of_bounds; i++) {
+      (*segmentalt)[i] = '*';
+    }
+    uncompress_mmap_snps_subst(&((*segmentalt)[out_of_bounds]),genome_blocks,genomealt_blocks,left-length+out_of_bounds,left);
+    if (revcomp == true) {
+      make_complement_inplace(*segmentalt,length);
+    }
+  }
+  
+  return segment;
+}
+
+
 bool
 buffers_diff_p (char *buffer1, char *buffer2, int length) {
   int i;
diff --git a/src/genome.h b/src/genome.h
index 9cd031d..22103c0 100644
--- a/src/genome.h
+++ b/src/genome.h
@@ -1,4 +1,4 @@
-/* $Id: genome.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: genome.h 133760 2014-04-20 05:16:56Z twu $ */
 #ifndef GENOME_INCLUDED
 #define GENOME_INCLUDED
 
@@ -14,6 +14,8 @@
 
 #define OUTOFBOUNDS '*'
 
+typedef enum {GENOME_OLIGOS, GENOME_BITS} Genometype_T;
+
 #define T Genome_T
 typedef struct T *T;
 
@@ -24,7 +26,8 @@ Genome_blocks (T this);
 extern Univcoord_T
 Genome_totallength (T this);
 extern T
-Genome_new (char *genomesubdir, char *fileroot, char *snps_root, bool genome_lc_p, Access_mode_T access);
+Genome_new (char *genomesubdir, char *fileroot, char *snps_root,
+	    Genometype_T genometype, bool genome_lc_p, Access_mode_T access);
 
 extern void
 Genome_setup (T genome_in, T genomealt_in, Mode_T mode_in, int circular_typeint_in);
@@ -38,7 +41,11 @@ extern bool
 Genome_fill_buffer (Chrnum_T *chrnum, int *nunknowns, T this, Univcoord_T left, Chrpos_T length, char *gbuffer1,
 		    Univ_IIT_T chromosome_iit);
 extern void
-Genome_fill_buffer_simple (T this, Univcoord_T left, Chrpos_T length, char *gbuffer1);
+Genome_fill_buffer_simple (T this, Univcoord_T left, Chrpos_T length, unsigned char *gbuffer1);
+extern void
+Genome_fill_buffer_convert_fwd (Univcoord_T left, Chrpos_T length, char *gbuffer1);
+extern void
+Genome_fill_buffer_convert_rev (Univcoord_T left, Chrpos_T length, char *gbuffer1);
 extern void
 Genome_fill_buffer_blocks (Univcoord_T left, Chrpos_T length, char *gbuffer1);
 extern void
@@ -47,10 +54,22 @@ extern void
 Genome_fill_buffer_simple_alt (T genome, T genomealt, Univcoord_T left, Chrpos_T length, char *gbuffer1);
 extern void
 Genome_fill_buffer_nucleotides (T this, Univcoord_T left, Chrpos_T length, unsigned char *gbuffer);
+extern void
+Genome_fill_buffer_int_string (T this, Univcoord_T left, Chrpos_T length, unsigned char *gbuffer,
+			       unsigned char *conversion);
 extern char
 Genome_get_char (T this, Univcoord_T left);
+/* For searching in a suffix array, where N from end of sequence returns 0, but N internally returns X */
+extern char
+Genome_get_char_lex (T this, Univcoord_T left, Univcoord_T genomelength, char chartable[]);
 extern char
 Genome_get_char_blocks (char *charalt, Univcoord_T left);
+extern char *
+Genome_get_segment_blocks_right (char **segmentalt, Univcoord_T left, Chrpos_T length, Univcoord_T chrhigh,
+				 bool revcomp);
+extern char *
+Genome_get_segment_blocks_left (char **segmentalt, Univcoord_T left, Chrpos_T length, Univcoord_T chroffset,
+				bool revcomp);
 extern Sequence_T
 Genome_get_segment (T this, Univcoord_T left, Chrpos_T length, Univ_IIT_T chromosome_iit,
 		    bool revcomp);
diff --git a/src/genome128_hr.c b/src/genome128_hr.c
new file mode 100644
index 0000000..86c5ea7
--- /dev/null
+++ b/src/genome128_hr.c
@@ -0,0 +1,23774 @@
+static char rcsid[] = "$Id: genome128_hr.c 137999 2014-06-04 02:01:04Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#ifndef HAVE_MEMCPY
+# define memcpy(d,s,n) bcopy((s),(d),(n))
+#endif
+#ifndef HAVE_MEMMOVE
+# define memmove(d,s,n) bcopy((s),(d),(n))
+#endif
+
+#include "genome128_hr.h"
+
+#include <stdio.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>		/* For tolower() */
+
+#include "assert.h"
+#include "except.h"
+#include "mem.h"
+#include "cmet.h"
+#include "atoi.h"
+#include "compress.h"
+#include "popcount.h"
+
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+#if defined(HAVE_LZCNT) || defined(HAVE_BMI1) || defined(HAVE_POPCNT)
+#include <immintrin.h>
+#endif
+
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"
+#else
+#include "littleendian.h"
+#endif
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+/* Fragments */
+#ifdef DEBUG1
+#define debug1(x) x
+#else
+#define debug1(x)
+#endif
+
+/* Genome_consecutive_matches_pair */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+/* clear_highbit and clear_lowbit */
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
+/* 32-bit shortcuts */
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
+
+
+/* bestscore, besti, totalscore from low bit */
+static const int score_low[] =
+{16,15, 16,14,15, 14,14,15, 14,12,15, 12,14,15, 14,12,15, 12,12,15, 12,10,15, 10,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
+  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 12,11, 12,10,11, 10,10,11, 10, 8,11,  8,10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 14,13, 14,12,13, 12,12,13, 12,10,13, 10,12,13, 12,10,13, 10,10,13, 10, 8,13,  8,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
+  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 12,11, 12,10,11, 10,10,11, 10, 8,11,  8,10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
+  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
+  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
+  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
+  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 13,12, 12,11,12, 10,11,12, 10, 9,12,  8,11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 12,11, 10,10,11,  8,10,11,  8, 8,11,  6,10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+ 15,14, 14,13,14, 12,13,14, 12,11,14, 10,13,14, 12,11,14, 10,11,14, 10, 9,14,  8,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 13,12, 12,11,12, 10,11,12, 10, 9,12,  8,11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
+  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 12,11, 10,10,11,  8,10,11,  8, 8,11,  6,10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+ 14,13, 12,12,13, 10,12,13, 10,10,13,  8,12,13, 10,10,13,  8,10,13,  8, 8,13,  6,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
+  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 12,11, 10,10,11,  8,10,11,  8, 8,11,  6,10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
+  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
+  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
+  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
+  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+ 13,12, 10,11,12,  8,11,12,  8, 9,12,  6,11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
+  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+ 12,11,  8,10,11,  6,10,11,  6, 8,11,  4,10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+ 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
+  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+ 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
+  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
+  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
+  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+ 11,10,  6, 9,10,  4, 9,10,  4, 7,10,  2, 9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0,
+  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
+  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
+  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+ 10, 9,  4, 8, 9,  2, 8, 9,  2, 6, 9,  0, 8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2,
+  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
+  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
+  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
+  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
+  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  9, 8,  2, 7, 8,  0, 7, 8,  0, 5, 8, -2, 7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4,
+  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
+  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
+  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
+  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
+  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
+  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
+  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
+  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
+  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  8, 7,  0, 6, 7, -2, 6, 7, -2, 4, 7, -4, 6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6,
+  6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6, 4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8,
+  6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6, 4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8,
+  4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6, 4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8,
+  4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
+  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  7, 6, -2, 5, 6, -4, 5, 6, -4, 3, 6, -6, 5, 6, -4, 3, 6, -6, 3, 6, -6, 1, 6, -8,
+  5, 6, -4, 3, 6, -6, 3, 6, -6, 1, 6, -8, 3, 6, -6, 1, 6, -8, 1, 0, -8,-1, 0,-10,
+  5, 6, -4, 3, 6, -6, 3, 6, -6, 1, 6, -8, 3, 6, -6, 1, 6, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
+  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  6, 5, -4, 4, 5, -6, 4, 5, -6, 2, 5, -8, 4, 5, -6, 2, 5, -8, 2, 5, -8, 0, 5,-10,
+  4, 5, -6, 2, 5, -8, 2, 5, -8, 0, 5,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  5, 4, -6, 3, 4, -8, 3, 4, -8, 1, 4,-10, 3, 4, -8, 1, 4,-10, 1, 0,-10,-1, 0,-12,
+  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  4, 3, -8, 2, 3,-10, 2, 3,-10, 0, 3,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
+  3, 2,-10, 1, 2,-12, 1, 0,-12,-1, 0,-14, 2, 1,-12, 0, 1,-14, 1, 0,-14,-1, 0,-16,
+};
+ 
+/* bestscore, besti, totalscore from high bit */
+static const int score_high[] =
+{16,15, 16,15,14, 14,14,13, 14,14,13, 12,14,15, 14,13,12, 12,13,12, 12,13,12, 10,
+ 14,15, 14,13,14, 12,12,11, 12,12,11, 10,12,11, 12,12,11, 10,12,11, 10,12,11,  8,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,10, 10,11,10, 10,11,10,  8,
+ 12,15, 12,11,10, 10,11,10, 10,11,10,  8,11,10, 10,11,10,  8,11,10,  8,11,10,  6,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10, 9, 10,10, 9,  8,10, 9, 10,10, 9,  8,10, 9,  8,10, 9,  6,
+ 12,15, 12,11,14, 10,10, 9, 10,10, 9,  8,10, 9, 10,10, 9,  8,10, 9,  8,10, 9,  6,
+ 10, 9, 10,10, 9,  8,10, 9,  8,10, 9,  6,10, 9,  8,10, 9,  6,10, 9,  6,10, 9,  4,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6,
+ 10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6, 9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6,
+ 10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6, 9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4,
+ 10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6, 9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4,
+  9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4, 9, 8,  6, 9, 8,  4, 9, 8,  4, 9, 8,  2,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
+ 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
+  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
+ 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
+  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
+ 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
+  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
+  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
+  8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2, 8, 7,  4, 8, 7,  2, 8, 7,  2, 8, 7,  0,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
+  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
+  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
+  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
+  7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0, 7, 6,  2, 7, 6,  0, 7, 6,  0, 7, 6, -2,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
+  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
+  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
+  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
+  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
+  6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2, 6, 5,  0, 6, 5, -2, 6, 5, -2, 6, 5, -4,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
+  5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4, 5, 4, -2, 5, 4, -4, 5, 4, -4, 5, 4, -6,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
+  4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6, 4, 3, -4, 4, 3, -6, 4, 3, -6, 4, 3, -8,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
+  3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8, 3, 2, -6, 3, 2, -8, 3, 2, -8, 3, 2,-10,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6, 3, 4, -4, 3, 4, -6, 3, 4, -6, 3, 4, -8,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
+  2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10, 2, 1, -8, 2, 1,-10, 2, 1,-10, 2, 1,-12,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6, 3, 4, -4, 3, 4, -6, 3, 4, -6, 3, 4, -8,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8, 2, 3, -6, 2, 3, -8, 2, 3, -8, 2, 3,-10,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
+  1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12, 1, 0,-10, 1, 0,-12, 1, 0,-12, 1, 0,-14,
+ 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
+ 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
+ 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+ 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
+  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
+  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
+  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
+  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
+  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
+  3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6, 3, 4, -4, 3, 4, -6, 3, 4, -6, 3, 4, -8,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
+  2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8, 2, 3, -6, 2, 3, -8, 2, 3, -8, 2, 3,-10,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
+  1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10, 1, 2, -8, 1, 2,-10, 1, 2,-10, 1, 2,-12,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8, 1, 4, -6, 1, 4, -8, 1, 4, -8, 1, 4,-10,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
+  0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12, 0, 1,-10, 0, 1,-12, 0, 1,-12, 0, 1,-14,
+ 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
+ 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
+  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
+  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
+  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
+  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
+  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
+  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
+  1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8, 1, 4, -6, 1, 4, -8, 1, 4, -8, 1, 4,-10,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
+  0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10, 0, 3, -8, 0, 3,-10, 0, 3,-10, 0, 3,-12,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8, 0, 5, -6, 0, 5, -8, 0, 5, -8, 0, 5,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+ 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
+  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
+  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
+  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
+  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
+  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
+  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
+  0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8, 0, 5, -6, 0, 5, -8, 0, 5, -8, 0, 5,-10,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
+  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
+  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
+  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
+  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
+  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
+  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
+  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
+  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
+  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+ -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+ -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+ -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+ -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
+ -1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,-1, 0,-12,-1, 0,-14,-1, 0,-14,-1, 0,-16,
+};   
+
+
+
+/* Genome_hr code starts here */
+
+#ifdef DEBUG
+#ifdef HAVE_SSE2
+/* For debugging */
+static void
+print_vector_hex (__m128i x) {
+  printf("%08X %08X %08X %08X\n",
+	 _mm_extract_epi32(x,0),_mm_extract_epi32(x,1),_mm_extract_epi32(x,2),_mm_extract_epi32(x,3));
+  return;
+}
+
+static void
+print_vector_dec (__m128i x) {
+  printf("%u %u %u %u\n",
+	 _mm_extract_epi32(x,0),_mm_extract_epi32(x,1),_mm_extract_epi32(x,2),_mm_extract_epi32(x,3));
+  return;
+}
+#endif
+#endif
+
+
+#if 0
+/* Note: outer unshuffle operation, as implemented below has twice the
+   instruction count as lookup of reduce_nt array */
+static inline UINT4
+reduce_nt_unshuffle (UINT4 xhigh, UINT4 xlow) {
+  UINT8 x, t;
+
+  x = (UINT8) xhigh;
+  x <<= 32;
+  x |= xlow;
+
+  t = (x ^ (x >> 1))  & 0x2222222222222222;  x = x ^ t ^ (t << 1);
+  t = (x ^ (x >> 2))  & 0x0C0C0C0C0C0C0C0C;  x = x ^ t ^ (t << 2);
+  t = (x ^ (x >> 4))  & 0x00F000F000F000F0;  x = x ^ t ^ (t << 4);
+  t = (x ^ (x >> 8))  & 0x0000FF000000FF00;  x = x ^ t ^ (t << 8);
+  t = (x ^ (x >> 16)) & 0x00000000FFFF0000;  x = x ^ t ^ (t << 16);
+
+  return (UINT4) ((x >> 32) | x);
+}
+#endif
+
+
+#if defined(DEBUG) || defined(DEBUG2)
+static void
+write_chars (Genomecomp_T high, Genomecomp_T low, Genomecomp_T flags) {
+  char Buffer[33];
+  int i;
+
+  Buffer[32] = '\0';
+  /* printf("%08X %08X %08X => ",high,low,flags); */
+
+  for (i = 0; i < 32; i++) {
+    switch (((high & 0x01) << 1) | (low & 0x01)) {
+    case 0U: Buffer[i] = 'A'; break;
+    case 1U: Buffer[i] = 'C'; break;
+    case 2U: Buffer[i] = 'G'; break;
+    case 3U: Buffer[i] = 'T'; break;
+    default: abort();
+    }
+    high >>= 1;
+    low >>= 1;
+  }
+
+  if (flags != 0U) {
+    for (i = 0; i < 32; i++) {
+      if (flags & 0x01) {
+	Buffer[i] = 'N';
+      }
+      flags >>= 1;
+    }
+  }
+
+  printf("%s",Buffer);
+  return;
+}
+#endif
+
+
+
+#if defined(DEBUG) || defined(DEBUG2)
+static void
+Genome_print_blocks (Genomecomp_T *blocks, Univcoord_T startpos, Univcoord_T endpos) {
+  /* Chrpos_T length = endpos - startpos; */
+  Genomecomp_T *ptr;
+  Univcoord_T startblocki, endblocki;
+  int startcolumni, endcolumni;
+  int startdiscard32, enddiscard32;
+  Genomecomp_T high, low, flags;
+  int i;
+
+  /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
+
+#ifdef HAVE_SSE2
+  startcolumni = (startpos % 128) / 32;
+  endcolumni = (endpos % 128) / 32;
+
+  startblocki = startpos/128U*12;
+  endblocki = endpos/128U*12;
+#else
+  startcolumni = (startpos % 128) / 32;
+  startblocki = startpos/128U*12 + startcolumni;
+
+  endcolumni = (endpos % 128) / 32;
+  endblocki = endpos/128U*12 + endcolumni;
+#endif
+
+  startdiscard32 = startpos % 32;
+  enddiscard32 = endpos % 32;
+
+
+  ptr = &(blocks[startblocki]);
+  while (ptr <= &(blocks[endblocki])) {
+#ifdef HAVE_SSE2
+    if (startcolumni == 0) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < startdiscard32; i++) {
+	printf("*");
+      }
+      for ( ; i < 32; i++) {
+	printf(" ");
+      }
+      printf("\n");
+      startcolumni = -1;
+    }
+    high = ptr[0]; low = ptr[4]; flags = ptr[8];
+    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
+    write_chars(high,low,flags);
+    printf("\n");
+    if (ptr == &(blocks[endblocki]) && endcolumni == 0) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < enddiscard32; i++) {
+	printf(" ");
+      }
+      for ( ; i < 32; i++) {
+	printf("*");
+      }
+      printf("\n");
+    }
+
+
+    if (startcolumni == 1) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < startdiscard32; i++) {
+	printf("*");
+      }
+      for ( ; i < 32; i++) {
+	printf(" ");
+      }
+      printf("\n");
+      startcolumni = -1;
+    }
+    high = ptr[1]; low = ptr[5]; flags = ptr[9];
+    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
+    write_chars(high,low,flags);
+    printf("\n");
+    if (ptr == &(blocks[endblocki]) && endcolumni == 1) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < enddiscard32; i++) {
+	printf(" ");
+      }
+      for ( ; i < 32; i++) {
+	printf("*");
+      }
+      printf("\n");
+    }
+
+    if (startcolumni == 2) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < startdiscard32; i++) {
+	printf("*");
+      }
+      for ( ; i < 32; i++) {
+	printf(" ");
+      }
+      printf("\n");
+      startcolumni = -1;
+    }
+    high = ptr[2]; low = ptr[6]; flags = ptr[10];
+    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
+    write_chars(high,low,flags);
+    printf("\n");
+    if (ptr == &(blocks[endblocki]) && endcolumni == 2) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < enddiscard32; i++) {
+	printf(" ");
+      }
+      for ( ; i < 32; i++) {
+	printf("*");
+      }
+      printf("\n");
+    }
+
+    if (startcolumni == 3) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < startdiscard32; i++) {
+	printf("*");
+      }
+      for ( ; i < 32; i++) {
+	printf(" ");
+      }
+      printf("\n");
+      startcolumni = -1;
+    }
+    high = ptr[3]; low = ptr[7]; flags = ptr[11];
+    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
+    write_chars(high,low,flags);
+    printf("\n");
+    if (ptr == &(blocks[endblocki]) && endcolumni == 3) {
+      /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+      printf("                                              \t");
+      /* printf("%u\t",startblocki); */
+      for (i = 0; i < enddiscard32; i++) {
+	printf(" ");
+      }
+      for ( ; i < 32; i++) {
+	printf("*");
+      }
+      printf("\n");
+    }
+
+    printf("\n");
+    ptr += 12;
+#else
+    high = ptr[0]; low = ptr[4]; flags = ptr[8];
+    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
+    write_chars(high,low,flags);
+    printf("\n");
+
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+  }
+
+  return;
+}
+#endif
+
+#ifdef DEBUG
+static void
+Genome_print_blocks_snp (Genomecomp_T *blocks, Genomecomp_T *snp_blocks, Univcoord_T startpos, Univcoord_T endpos) {
+  /* Chrpos_T length = endpos - startpos; */
+  Genomecomp_T *ref_ptr, *snp_ptr;
+  Univcoord_T startblocki, endblocki;
+  int startcolumni, endcolumni;
+  int startdiscard32, enddiscard32;
+  Genomecomp_T high, low, flags, snpmask;
+
+  /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
+
+#ifdef HAVE_SSE2
+  startblocki = startpos/128U*12;
+  endblocki = endpos/128U*12;
+#else
+  startcolumni = (startpos % 128) / 32;
+  startblocki = startpos/128U*12 + startcolumni;
+
+  endcolumni = (endpos % 128) / 32;
+  endblocki = endpos/128U*12 + endcolumni;
+#endif
+
+  startdiscard32 = startpos % 32;
+  enddiscard32 = endpos % 32;
+  
+  ref_ptr = &(blocks[startblocki]);
+  snp_ptr = &(snp_blocks[startblocki]);
+  while (ref_ptr <= &(blocks[endblocki])) {
+#ifdef HAVE_SSE2
+    high = ref_ptr[0]; low = ref_ptr[4]; flags = ref_ptr[8]; snpmask = snp_ptr[8];
+    printf("high: %08X  low: %08X  flags: %08X  snpmask: %08X\n",high,low,flags,snpmask);
+
+    high = ref_ptr[1]; low = ref_ptr[5]; flags = ref_ptr[9]; snpmask = snp_ptr[9];
+    printf("high: %08X  low: %08X  flags: %08X  snpmask: %08X\n",high,low,flags,snpmask);
+
+    high = ref_ptr[2]; low = ref_ptr[6]; flags = ref_ptr[10]; snpmask = snp_ptr[10];
+    printf("high: %08X  low: %08X  flags: %08X  snpmask: %08X\n",high,low,flags,snpmask);
+
+    high = ref_ptr[3]; low = ref_ptr[7]; flags = ref_ptr[11]; snpmask = snp_ptr[11];
+    printf("high: %08X  low: %08X  flags: %08X  snpmask: %08X\n",high,low,flags,snpmask);
+
+    ref_ptr += 12; snp_ptr += 12;
+
+#else
+    high = ref_ptr[0]; low = ref_ptr[4]; flags = ref_ptr[8]; snpmask = snp_ptr[8];
+    printf("high: %08X  low: %08X  flags: %08X  snpmask: %08X\n",high,low,flags,snpmask);
+    ref_ptr += 1; snp_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; snp_ptr += 8; startcolumni = 0;}
+#endif
+  }
+
+  return;
+}
+#endif
+
+
+static Genomecomp_T *ref_blocks;
+static Genomecomp_T *snp_blocks;
+
+
+
+/* These are global values, used for alignment.  Previously for
+   trimming, treated query N's as mismatches, but this is not correct
+   for query N's in the middle of the read.  Also, trimming query N's
+   can affect the --clip-overlap feature. */
+static bool query_unk_mismatch_p = false;
+static bool genome_unk_mismatch_p = true;
+
+#ifdef HAVE_SSE2
+typedef __m128i Genomediff_T;
+#define STEP_SIZE 128
+#else
+typedef UINT4 Genomediff_T;
+#define STEP_SIZE 32
+#endif
+
+
+static UINT4
+block_diff_standard_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+			bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  UINT4 diff;
+
+  debug(printf("Comparing high: query %08X with genome %08X ",query_shifted[0],ref_ptr[0]));
+#ifdef HAVE_SSE2
+  debug(printf("Comparing low: query %08X with genome %08X ",query_shifted[4],ref_ptr[4]));
+#endif
+
+#ifdef HAVE_SSE2
+  diff = (query_shifted[0] ^ ref_ptr[0]) | (query_shifted[4] ^ ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+  diff = (query_shifted[0] ^ Bigendian_convert_uint(ref_ptr[0])) | (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff = (query_shifted[0] ^ ref_ptr[0]) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+
+  /* Query Ns */
+#ifdef HAVE_SSE2
+  if (query_unk_mismatch_local_p) {
+    /* Query: Considering N as a mismatch */
+    diff |= query_shifted[8];
+  } else {
+    /* Query: Considering N as a wildcard */
+    diff &= ~(query_shifted[8]);
+  }
+#else
+  if (query_unk_mismatch_local_p) {
+    /* Query: Considering N as a mismatch */
+    diff |= query_shifted[2];
+  } else {
+    /* Query: Considering N as a wildcard */
+    diff &= ~(query_shifted[2]);
+  }
+#endif
+
+  /* Genome Ns */
+  if (genome_unk_mismatch_p) {
+    /* Genome: Considering N as a mismatch */
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= ref_ptr[8];
+#endif
+  } else {
+    /* Genome: Considering N as a wildcard */
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+}
+
+
+static Genomediff_T
+block_diff_standard (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		     bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+#ifdef HAVE_SSE2
+  __m128i _diff, _query_high, _query_low, _query_flags, _ref_high, _ref_low, _ref_flags;
+
+  _query_high = _mm_load_si128((__m128i *) query_shifted);
+  _ref_high = _mm_load_si128((__m128i *) ref_ptr);
+  _query_low = _mm_load_si128((__m128i *) &(query_shifted[4]));
+  _ref_low = _mm_load_si128((__m128i *) &(ref_ptr[4]));
+
+  _diff = _mm_or_si128(_mm_xor_si128(_query_high, _ref_high), _mm_xor_si128(_query_low, _ref_low));
+
+  _query_flags = _mm_load_si128((__m128i *) &(query_shifted[8]));
+  if (query_unk_mismatch_local_p) {
+    _diff = _mm_or_si128(_query_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_query_flags, _diff);
+  }
+
+  _ref_flags = _mm_load_si128((__m128i *) &(ref_ptr[8]));
+  if (genome_unk_mismatch_p) {
+    _diff = _mm_or_si128(_ref_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_ref_flags, _diff);
+  }
+
+  return _diff;
+
+#else
+  UINT4 diff;
+
+  debug(printf("Comparing high: query %08X with genome %08X ",query_shifted[0],ref_ptr[0]));
+  debug(printf("Comparing low: query %08X with genome %08X ",query_shifted[1],ref_ptr[4]));
+
+#ifdef WORDS_BIGENDIAN
+  diff = (query_shifted[0] ^ Bigendian_convert_uint(ref_ptr[0])) | (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff = (query_shifted[0] ^ ref_ptr[0]) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+
+  /* Query Ns */
+  if (query_unk_mismatch_local_p) {
+    /* Query: Considering N as a mismatch */
+    diff |= query_shifted[2];
+  } else {
+    /* Query: Considering N as a wildcard */
+    diff &= ~(query_shifted[2]);
+  }
+
+  /* Genome Ns */
+  if (genome_unk_mismatch_p) {
+    /* Genome: Considering N as a mismatch */
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= ref_ptr[8];
+#endif
+  } else {
+    /* Genome: Considering N as a wildcard */
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+#endif
+
+}
+
+
+
+static UINT4
+block_diff_standard_wildcard_32 (Genomecomp_T *query_shifted, Genomecomp_T *snp_ptr, Genomecomp_T *ref_ptr,
+				   bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  UINT4 diff, non_wildcard;
+
+  /* Taken from block_diff_standard */
+#ifdef HAVE_SSE2
+  diff = (query_shifted[0] ^ ref_ptr[0]) | (query_shifted[4] ^ ref_ptr[4]);
+#else
+  diff = (query_shifted[0] ^ ref_ptr[0]) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+
+  /* Query Ns */
+#ifdef HAVE_SSE2
+  if (query_unk_mismatch_local_p) {
+    /* Query: Considering N as a mismatch */
+    diff |= query_shifted[8];
+  } else {
+    /* Query: Considering N as a wildcard */
+    diff &= ~(query_shifted[8]);
+  }
+#else
+  if (query_unk_mismatch_local_p) {
+    /* Query: Considering N as a mismatch */
+    diff |= query_shifted[2];
+  } else {
+    /* Query: Considering N as a wildcard */
+    diff &= ~(query_shifted[2]);
+  }
+#endif
+
+  /* Genome Ns */
+  if (genome_unk_mismatch_p) {
+    /* Genome: Considering N as a mismatch */
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= ref_ptr[8];
+#endif
+  } else {
+    /* Genome: Considering N as a wildcard */
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+
+  /* Add difference relative to SNP */
+#ifdef HAVE_SSE2
+  diff &= (query_shifted[0] ^ snp_ptr[0]) | (query_shifted[4] ^ snp_ptr[4]);
+#else
+  diff &= (query_shifted[0] ^ snp_ptr[0]) | (query_shifted[1] ^ snp_ptr[4]);
+#endif
+
+  /* Test for equality of ref and alt */
+  debug(printf("Equality high: ref genome %08X with alt genome %08X ",ref_ptr[0],snp_ptr[0]));
+#ifdef WORDS_BIGENDIAN
+  non_wildcard = (Bigendian_convert_uint(ref_ptr[0]) ^ Bigendian_convert_uint(snp_ptr[0])) |
+    (Bigendian_convert_uint(ref_ptr[4]) ^ Bigendian_convert_uint(snp_ptr[4]));
+#else
+  non_wildcard = (ref_ptr[0] ^ snp_ptr[0]) | (ref_ptr[4] ^ snp_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",non_wildcard));
+  
+  /* Ref flags */
+  debug(printf("Wildcard add ref flags: ref genome %08X and alt genome %08X ",ref_ptr[8],snp_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+  non_wildcard |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+  non_wildcard |= ref_ptr[8];
+#endif
+
+  /* Alt flags */
+  debug(printf("Wildcard add alt flags: ref genome %08X and alt genome %08X ",ref_ptr[8],snp_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+  non_wildcard |= ~(Bigendian_convert_uint(snp_ptr[8]));
+#else
+  non_wildcard |= ~(snp_ptr[8]);
+#endif
+  debug(printf(" => non_wildcard %08X\n",non_wildcard));
+
+  return diff & non_wildcard;
+}
+
+
+/* wildcard if ref == alt && ref_flag == 0 && alt_flag == 1 */
+/* not wildcard if ref != alt || ref_flag == 1 || alt_flag == 0 */
+/* diffs are (query ^ ref) & (query ^ alt) & ~wildcard */
+/* snp_ptr here is alt_ptr */
+static Genomediff_T
+block_diff_standard_wildcard (Genomecomp_T *query_shifted, Genomecomp_T *snp_ptr, Genomecomp_T *ref_ptr,
+			      bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+#ifdef HAVE_SSE2
+  __m128i _diff, _wildcard, _query_high, _query_low, _query_flags,
+    _ref_high, _ref_low, _ref_flags, _snp_high, _snp_low, _snp_flags;
+
+  _query_high = _mm_load_si128((__m128i *) query_shifted);
+  _query_low = _mm_load_si128((__m128i *) &(query_shifted[4]));
+  _ref_high = _mm_load_si128((__m128i *) ref_ptr);
+  _ref_low = _mm_load_si128((__m128i *) &(ref_ptr[4]));
+
+  _diff = _mm_or_si128(_mm_xor_si128(_query_high, _ref_high), _mm_xor_si128(_query_low, _ref_low));
+
+  _query_flags = _mm_load_si128((__m128i *) &(query_shifted[8]));
+  if (query_unk_mismatch_local_p) {
+    _diff = _mm_or_si128(_query_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_query_flags, _diff);
+  }
+
+  _ref_flags = _mm_load_si128((__m128i *) &(ref_ptr[8]));
+  if (genome_unk_mismatch_p) {
+    _diff = _mm_or_si128(_ref_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_ref_flags, _diff);
+  }
+  /* End of (query ^ ref) */
+
+
+  /* Add (query ^ snp).  Don't need to recompute query flags or use SNP flags. */
+  _snp_high = _mm_load_si128((__m128i *) snp_ptr);
+  _snp_low = _mm_load_si128((__m128i *) &(snp_ptr[4]));
+
+  _diff = _mm_and_si128(_diff, _mm_or_si128(_mm_xor_si128(_query_high, _snp_high), _mm_xor_si128(_query_low, _snp_low)));
+
+
+  /* Test for equality of ref and alt */
+  _snp_flags = _mm_load_si128((__m128i *) &(snp_ptr[8]));
+  _wildcard = _mm_andnot_si128(_ref_flags, _snp_flags);
+  _wildcard = _mm_andnot_si128(_mm_or_si128(_mm_xor_si128(_ref_high, _snp_high), _mm_xor_si128(_ref_low, _snp_low)), _wildcard);
+
+  _diff = _mm_andnot_si128(_wildcard, _diff);
+
+  return _diff;
+
+#else
+  UINT4 diff, non_wildcard;
+
+  /* Taken from block_diff_standard */
+  diff = (query_shifted[0] ^ ref_ptr[0]) | (query_shifted[1] ^ ref_ptr[4]);
+
+  /* Query Ns */
+  if (query_unk_mismatch_local_p) {
+    /* Query: Considering N as a mismatch */
+    diff |= query_shifted[2];
+  } else {
+    /* Query: Considering N as a wildcard */
+    diff &= ~(query_shifted[2]);
+  }
+
+  /* Genome Ns */
+  if (genome_unk_mismatch_p) {
+    /* Genome: Considering N as a mismatch */
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= ref_ptr[8];
+#endif
+  } else {
+    /* Genome: Considering N as a wildcard */
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+
+  /* Add difference relative to SNP */
+  diff &= (query_shifted[0] ^ snp_ptr[0]) | (query_shifted[1] ^ snp_ptr[4]);
+
+  /* Test for equality of ref and alt */
+  debug(printf("Equality high: ref genome %08X with alt genome %08X ",ref_ptr[0],snp_ptr[0]));
+#ifdef WORDS_BIGENDIAN
+  non_wildcard = (Bigendian_convert_uint(ref_ptr[0]) ^ Bigendian_convert_uint(snp_ptr[0])) |
+    (Bigendian_convert_uint(ref_ptr[4]) ^ Bigendian_convert_uint(snp_ptr[4]));
+#else
+  non_wildcard = (ref_ptr[0] ^ snp_ptr[0]) | (ref_ptr[4] ^ snp_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",non_wildcard));
+  
+  /* Ref flags */
+  debug(printf("Wildcard add ref flags: ref genome %08X and alt genome %08X ",ref_ptr[8],snp_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+  non_wildcard |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+  non_wildcard |= ref_ptr[8];
+#endif
+
+  /* Alt flags */
+  debug(printf("Wildcard add alt flags: ref genome %08X and alt genome %08X ",ref_ptr[8],snp_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+  non_wildcard |= ~(Bigendian_convert_uint(snp_ptr[8]));
+#else
+  non_wildcard |= ~(snp_ptr[8]);
+#endif
+  debug(printf(" => non_wildcard %08X\n",non_wildcard));
+
+  return diff & non_wildcard;
+#endif
+}
+
+
+
+/************************************************************************
+ *   CMET
+ ************************************************************************/
+
+static UINT4
+block_diff_metct_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		     bool query_unk_mismatch_local_p, bool sarrayp) {
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    diff = 0U;
+  } else {
+    /* Mark genome-T to query-C mismatches */
+#ifdef HAVE_SSE2
+    diff = (~(query_shifted[0]) & query_shifted[4]) & (ref_ptr[0] & ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+    diff = (~(query_shifted[0]) & query_shifted[1]) &
+      (Bigendian_convert_uint(ref_ptr[0]) & Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = (~(query_shifted[0]) & query_shifted[1]) & (ref_ptr[0] & ref_ptr[4]);
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced C->T nts  */
+#ifdef HAVE_SSE2
+  diff |= ((query_shifted[0] | query_shifted[4]) ^ (ref_ptr[0] | ref_ptr[4])) | (query_shifted[4] ^ ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+  diff |= ((query_shifted[0] | query_shifted[1]) ^ (Bigendian_convert_uint(ref_ptr[0]) | Bigendian_convert_uint(ref_ptr[4]))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] | query_shifted[1]) ^ (ref_ptr[0] | ref_ptr[4])) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+
+  /* Flags: Considering N as a mismatch */
+#ifdef HAVE_SSE2
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[8]));
+    diff |= query_shifted[8];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[8]));
+    diff &= ~(query_shifted[8]);
+  }
+#else
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[8]));
+    diff |= query_shifted[8];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[8]));
+    diff &= ~(query_shifted[8]);
+  }
+#endif
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+}
+
+
+/* Convert C to T: high/low (A) 0 0 => new high 0; (C) 0 1 => 1; (G) 1 0 => 1; (T) 1 0 => 1 */
+/* new high = high | low */
+static Genomediff_T
+block_diff_metct (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		  bool query_unk_mismatch_local_p, bool sarrayp) {
+#ifdef HAVE_SSE2
+  __m128i _diff, _query_high, _query_low, _query_flags, _ref_high, _ref_low, _ref_flags;
+
+  _query_high = _mm_load_si128((__m128i *) query_shifted);
+  _ref_high = _mm_load_si128((__m128i *) ref_ptr);
+  _query_low = _mm_load_si128((__m128i *) &(query_shifted[4]));
+  _ref_low = _mm_load_si128((__m128i *) &(ref_ptr[4]));
+
+  if (sarrayp == true) {
+    /* Ignore genome-T to query-C mismatches */
+    _diff = _mm_setzero_si128();
+  } else {
+    /* Mark genome-T to query-C mismatches */
+    _diff = _mm_and_si128(_mm_andnot_si128(_query_high, _query_low), _mm_and_si128(_ref_high, _ref_low));
+  }
+
+  /* Compare reduced C->T nts  */
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_mm_or_si128(_query_high, _query_low), _mm_or_si128(_ref_high, _ref_low)));
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_query_low, _ref_low));
+
+  _query_flags = _mm_load_si128((__m128i *) &(query_shifted[8]));
+  if (query_unk_mismatch_local_p) {
+    _diff = _mm_or_si128(_query_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_query_flags, _diff);
+  }
+
+  _ref_flags = _mm_load_si128((__m128i *) &(ref_ptr[8]));
+  if (genome_unk_mismatch_p) {
+    _diff = _mm_or_si128(_ref_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_ref_flags, _diff);
+  }
+
+  return _diff;
+
+#else
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    diff = 0U;
+  } else {
+    /* Mark genome-T to query-C mismatches */
+#ifdef WORDS_BIGENDIAN
+    diff = (~(query_shifted[0]) & query_shifted[1]) &
+      (Bigendian_convert_uint(ref_ptr[0]) & Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = (~(query_shifted[0]) & query_shifted[1]) & (ref_ptr[0] & ref_ptr[4]);
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced C->T nts  */
+#ifdef WORDS_BIGENDIAN
+  diff |= ((query_shifted[0] | query_shifted[1]) ^ (Bigendian_convert_uint(ref_ptr[0]) | Bigendian_convert_uint(ref_ptr[4]))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] | query_shifted[1]) ^ (ref_ptr[0] | ref_ptr[4])) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+
+  /* Flags: Considering N as a mismatch */
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+#endif
+}
+
+
+static UINT4
+block_diff_metga_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		     bool query_unk_mismatch_local_p, bool sarrayp) {
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    /* Ignore genome-A to query-G mismatches */
+    diff = 0U;
+  } else {
+    /* Mark genome-A to query-G mismatches */
+#ifdef HAVE_SSE2
+    diff = (query_shifted[0] & ~(query_shifted[4])) & ~(ref_ptr[0] | ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+    diff = (query_shifted[0] & ~(query_shifted[1])) &
+      ~(Bigendian_convert_uint(ref_ptr[0]) | Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = (query_shifted[0] & ~(query_shifted[1])) & ~(ref_ptr[0] | ref_ptr[4]);
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced G->A nts  */
+#ifdef HAVE_SSE2
+  diff |= ((query_shifted[0] & query_shifted[4]) ^ (ref_ptr[0] & ref_ptr[4])) | (query_shifted[4] ^ ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+  diff |= ((query_shifted[0] & query_shifted[1]) ^ (Bigendian_convert_uint(ref_ptr[0]) & Bigendian_convert_uint(ref_ptr[4]))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] & query_shifted[1]) ^ (ref_ptr[0] & ref_ptr[4])) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+
+  /* Flags: Considering N as a mismatch */
+#ifdef HAVE_SSE2
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[8]));
+    diff |= query_shifted[8];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[8]));
+    diff &= ~(query_shifted[8]);
+  }
+#else
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+#endif
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+}
+
+
+/* Convert G to A: high/low (A) 0 0 => new high 0; (C) 0 1 => 0; (G) 1 0 => 0; (T) 1 0 => 1 */
+/* new high = high & low */
+static Genomediff_T
+block_diff_metga (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		  bool query_unk_mismatch_local_p, bool sarrayp) {
+#ifdef HAVE_SSE2
+  __m128i _diff, _query_high, _query_low, _query_flags, _ref_high, _ref_low, _ref_flags;
+
+  _query_high = _mm_load_si128((__m128i *) query_shifted);
+  _ref_high = _mm_load_si128((__m128i *) ref_ptr);
+  _query_low = _mm_load_si128((__m128i *) &(query_shifted[4]));
+  _ref_low = _mm_load_si128((__m128i *) &(ref_ptr[4]));
+
+  if (sarrayp == true) {
+    /* Ignore genome-A to query-G mismatches */
+    _diff = _mm_setzero_si128();
+  } else {
+    /* Mark genome-A to query-G mismatches */
+    _diff = _mm_andnot_si128(_query_low, _query_high);
+    _diff = _mm_andnot_si128(_ref_high, _diff);
+    _diff = _mm_andnot_si128(_ref_low, _diff);
+  }
+
+  /* Compare reduced G->A nts  */
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_mm_and_si128(_query_high, _query_low), _mm_and_si128(_ref_high, _ref_low)));
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_query_low, _ref_low));
+
+  _query_flags = _mm_load_si128((__m128i *) &(query_shifted[8]));
+  if (query_unk_mismatch_local_p) {
+    _diff = _mm_or_si128(_query_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_query_flags, _diff);
+  }
+
+  _ref_flags = _mm_load_si128((__m128i *) &(ref_ptr[8]));
+  if (genome_unk_mismatch_p) {
+    _diff = _mm_or_si128(_ref_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_ref_flags, _diff);
+  }
+
+  return _diff;
+
+#else
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    /* Ignore genome-A to query-G mismatches */
+    diff = 0U;
+  } else {
+    /* Mark genome-A to query-G mismatches */
+#ifdef WORDS_BIGENDIAN
+    diff = (query_shifted[0] & ~(query_shifted[1])) &
+      ~(Bigendian_convert_uint(ref_ptr[0]) | Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = (query_shifted[0] & ~(query_shifted[1])) & ~(ref_ptr[0] | ref_ptr[4]);
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced G->A nts  */
+#ifdef WORDS_BIGENDIAN
+  diff |= ((query_shifted[0] & query_shifted[1]) ^ (Bigendian_convert_uint(ref_ptr[0]) & Bigendian_convert_uint(ref_ptr[4]))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] & query_shifted[1]) ^ (ref_ptr[0] & ref_ptr[4])) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+
+  /* Flags: Considering N as a mismatch */
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+#endif
+}
+
+static UINT4
+block_diff_cmet_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		    bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_metct_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_metct_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+static Genomediff_T
+block_diff_cmet (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		 bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_metct(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_metct(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+static UINT4
+block_diff_cmet_sarray_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+			   bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_metct_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_metga_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_metct_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_metga_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+  }
+}
+
+static Genomediff_T
+block_diff_cmet_sarray (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+			bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_metct(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_metga(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_metct(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_metga(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+  }
+}
+
+/* Ignores snp_ptr */
+static UINT4
+block_diff_cmet_snp_32 (Genomecomp_T *query_shifted, Genomecomp_T *snp_ptr, Genomecomp_T *ref_ptr,
+			bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_metct_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_metct_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+/* Ignores snp_ptr */
+static Genomediff_T
+block_diff_cmet_snp (Genomecomp_T *query_shifted, Genomecomp_T *snp_ptr, Genomecomp_T *ref_ptr,
+		     bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_metct(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_metct(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_metga(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+
+
+/************************************************************************
+ *   ATOI
+ ************************************************************************/
+
+static UINT4
+block_diff_a2iag_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		     bool query_unk_mismatch_local_p, bool sarrayp) {
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    /* Ignore genome-G to query-A mismatches */
+    diff = 0U;
+  } else {
+    /* Mark genome-G to query-A mismatches */
+#ifdef HAVE_SSE2
+    diff = ~(query_shifted[0] | query_shifted[4]) & (ref_ptr[0] & ~(ref_ptr[4]));
+#elif defined(WORDS_BIGENDIAN)
+    diff = ~(query_shifted[0] | query_shifted[1]) &
+      (Bigendian_convert_uint(ref_ptr[0]) & ~Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = ~(query_shifted[0] | query_shifted[1]) & (ref_ptr[0] & ~(ref_ptr[4]));
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced A->G nts  */
+#ifdef HAVE_SSE2
+  diff |= ((query_shifted[0] | ~(query_shifted[4])) ^ (ref_ptr[0] | ~(ref_ptr[4]))) | (query_shifted[4] ^ ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+  diff |= ((query_shifted[0] | ~(query_shifted[1])) ^ (Bigendian_convert_uint(ref_ptr[0]) | ~(Bigendian_convert_uint(ref_ptr[4])))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] | ~(query_shifted[1])) ^ (ref_ptr[0] | ~(ref_ptr[4]))) | (query_shifted[1] ^ ref_ptr[4]);
+  /* Because (a ^ b) = (~a ^ ~b), this is equivalent to 
+  diff |= ((~query_shifted[0] & query_shifted[1]) ^ (~ref_ptr[0] & ref_ptr[4])) | (query_shifted[1] ^ ref_ptr[4]);
+  */
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+  /* Flags: Considering N as a mismatch */
+#ifdef HAVE_SSE2
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[8]));
+    diff |= query_shifted[8];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[8]));
+    diff &= ~(query_shifted[8]);
+  }
+#else
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+#endif
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+}
+
+
+/* Convert A->G: new high = high | ~low */
+static Genomediff_T
+block_diff_a2iag (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		  bool query_unk_mismatch_local_p, bool sarrayp) {
+#ifdef HAVE_SSE2
+  __m128i _diff, _query_high, _query_low, _query_flags, _ref_high, _ref_low, _ref_flags;
+
+  _query_high = _mm_load_si128((__m128i *) query_shifted);
+  _ref_high = _mm_load_si128((__m128i *) ref_ptr);
+  _query_low = _mm_load_si128((__m128i *) &(query_shifted[4]));
+  _ref_low = _mm_load_si128((__m128i *) &(ref_ptr[4]));
+
+  if (sarrayp == true) {
+    /* Ignore genome-G to query-A mismatches */
+    _diff = _mm_setzero_si128();
+  } else {
+    /* Mark genome-G to query-A mismatches */
+    _diff = _mm_andnot_si128(_mm_or_si128(_query_high, _query_low), _mm_andnot_si128(_ref_low, _ref_high));
+  }
+
+  /* Compare reduced A->G nts  */
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_mm_andnot_si128(_query_high, _query_low), _mm_andnot_si128(_ref_high, _ref_low)));
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_query_low, _ref_low));
+
+  _query_flags = _mm_load_si128((__m128i *) &(query_shifted[8]));
+  if (query_unk_mismatch_local_p) {
+    _diff = _mm_or_si128(_query_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_query_flags, _diff);
+  }
+
+  _ref_flags = _mm_load_si128((__m128i *) &(ref_ptr[8]));
+  if (genome_unk_mismatch_p) {
+    _diff = _mm_or_si128(_ref_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_ref_flags, _diff);
+  }
+
+  return _diff;
+
+#else
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    /* Ignore genome-G to query-A mismatches */
+    diff = 0U;
+  } else {
+    /* Mark genome-G to query-A mismatches */
+#ifdef WORDS_BIGENDIAN
+    diff = ~(query_shifted[0] | query_shifted[1]) &
+      (Bigendian_convert_uint(ref_ptr[0]) & ~Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = ~(query_shifted[0] | query_shifted[1]) & (ref_ptr[0] & ~(ref_ptr[4]));
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced A->G nts  */
+#ifdef WORDS_BIGENDIAN
+  diff |= ((query_shifted[0] | ~(query_shifted[1])) ^ (Bigendian_convert_uint(ref_ptr[0]) | ~(Bigendian_convert_uint(ref_ptr[4])))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] | ~(query_shifted[1])) ^ (ref_ptr[0] | ~(ref_ptr[4]))) | (query_shifted[1] ^ ref_ptr[4]);
+  /* Because (a ^ b) = (~a ^ ~b), this is equivalent to 
+  diff |= ((~query_shifted[0] & query_shifted[1]) ^ (~ref_ptr[0] & ref_ptr[4])) | (query_shifted[1] ^ ref_ptr[4]);
+  */
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+  /* Flags: Considering N as a mismatch */
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+#endif
+}
+
+
+static UINT4
+block_diff_a2itc_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		     bool query_unk_mismatch_local_p, bool sarrayp) {
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    /* Ignore genome-C to query-T mismatches */
+    diff = 0U;
+  } else {
+    /* Mark genome-C to query-T mismatches */
+#ifdef HAVE_SSE2
+    diff = (query_shifted[0] & query_shifted[4]) & (~(ref_ptr[0]) & ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+    diff = (query_shifted[0] & query_shifted[1]) &
+      (~(Bigendian_convert_uint(ref_ptr[0])) & Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = (query_shifted[0] & query_shifted[1]) & (~(ref_ptr[0]) & ref_ptr[4]);
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced T->C nts  */
+#ifdef HAVE_SSE2
+  diff |= ((query_shifted[0] & ~(query_shifted[4])) ^ (ref_ptr[0] & ~(ref_ptr[4]))) | (query_shifted[4] ^ ref_ptr[4]);
+#elif defined(WORDS_BIGENDIAN)
+  diff |= ((query_shifted[0] & ~(query_shifted[1])) ^ (Bigendian_convert_uint(ref_ptr[0]) & ~(Bigendian_convert_uint(ref_ptr[4])))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] & ~(query_shifted[1])) ^ (ref_ptr[0] & ~(ref_ptr[4]))) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+  /* Flags: Considering N as a mismatch */
+#ifdef HAVE_SSE2
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+#else
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[8]));
+    diff |= query_shifted[8];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[8]));
+    diff &= ~(query_shifted[8]);
+  }
+#endif
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+}
+
+
+/* Convert T->C: new high = high & ~low */
+static Genomediff_T
+block_diff_a2itc (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+                  bool query_unk_mismatch_local_p, bool sarrayp) {
+#ifdef HAVE_SSE2
+  __m128i _diff, _query_high, _query_low, _query_flags, _ref_high, _ref_low, _ref_flags;
+
+  _query_high = _mm_load_si128((__m128i *) query_shifted);
+  _ref_high = _mm_load_si128((__m128i *) ref_ptr);
+  _query_low = _mm_load_si128((__m128i *) &(query_shifted[4]));
+  _ref_low = _mm_load_si128((__m128i *) &(ref_ptr[4]));
+
+  if (sarrayp == true) {
+    /* Ignore genome-C to query-T mismatches */
+    _diff = _mm_setzero_si128();
+  } else {
+    /* Mark genome-C to query-T mismatches */
+    _diff = _mm_and_si128(_mm_and_si128(_query_high, _query_low), _mm_andnot_si128(_ref_high, _ref_low));
+  }
+
+  /* Compare reduced T->C nts  */
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_mm_andnot_si128(_query_low, _query_high), _mm_andnot_si128(_ref_low, _ref_high)));
+  _diff = _mm_or_si128(_diff, _mm_xor_si128(_query_low, _ref_low));
+
+  _query_flags = _mm_load_si128((__m128i *) &(query_shifted[8]));
+  if (query_unk_mismatch_local_p) {
+    _diff = _mm_or_si128(_query_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_query_flags, _diff);
+  }
+
+  _ref_flags = _mm_load_si128((__m128i *) &(ref_ptr[8]));
+  if (genome_unk_mismatch_p) {
+    _diff = _mm_or_si128(_ref_flags, _diff);
+  } else {
+    _diff = _mm_andnot_si128(_ref_flags, _diff);
+  }
+
+  return _diff;
+
+#else
+  UINT4 diff;
+
+  if (sarrayp == true) {
+    /* Ignore genome-C to query-T mismatches */
+    diff = 0U;
+  } else {
+    /* Mark genome-C to query-T mismatches */
+#ifdef WORDS_BIGENDIAN
+    diff = (query_shifted[0] & query_shifted[1]) &
+      (~(Bigendian_convert_uint(ref_ptr[0])) & Bigendian_convert_uint(ref_ptr[4]));
+#else
+    diff = (query_shifted[0] & query_shifted[1]) & (~(ref_ptr[0]) & ref_ptr[4]);
+#endif
+    debug(printf(" => diff %08X\n",diff));
+  }
+
+  /* Compare reduced T->C nts  */
+#ifdef WORDS_BIGENDIAN
+  diff |= ((query_shifted[0] & ~(query_shifted[1])) ^ (Bigendian_convert_uint(ref_ptr[0]) & ~(Bigendian_convert_uint(ref_ptr[4])))) |
+    (query_shifted[1] ^ Bigendian_convert_uint(ref_ptr[4]));
+#else
+  diff |= ((query_shifted[0] & ~(query_shifted[1])) ^ (ref_ptr[0] & ~(ref_ptr[4]))) | (query_shifted[1] ^ ref_ptr[4]);
+#endif
+  debug(printf(" => diff %08X\n",diff));
+
+  /* Flags: Considering N as a mismatch */
+  if (query_unk_mismatch_local_p) {
+    debug(printf("Marking query flags: query %08X ",query_shifted[2]));
+    diff |= query_shifted[2];
+  } else {
+    debug(printf("Clearing query flags: query %08X ",query_shifted[2]));
+    diff &= ~(query_shifted[2]);
+  }
+
+  if (genome_unk_mismatch_p) {
+    debug(printf("Marking genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff |= Bigendian_convert_uint(ref_ptr[8]);
+#else
+    diff |= (ref_ptr[8]);
+#endif
+  } else {
+    debug(printf("Clearing genome flags: genome %08X ",ref_ptr[8]));
+#ifdef WORDS_BIGENDIAN
+    diff &= ~(Bigendian_convert_uint(ref_ptr[8]));
+#else
+    diff &= ~(ref_ptr[8]);
+#endif
+  }
+  debug(printf(" => diff %08X\n",diff));
+
+  return diff;
+#endif
+}
+
+
+static UINT4
+block_diff_atoi_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		    bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_a2iag_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_a2iag_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+
+static Genomediff_T
+block_diff_atoi (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+		 bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_a2iag(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_a2iag(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+static UINT4
+block_diff_atoi_sarray_32 (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+			   bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_a2iag_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_a2itc_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_a2iag_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_a2itc_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+  }
+}
+
+static Genomediff_T
+block_diff_atoi_sarray (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr,
+			bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_a2iag(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_a2itc(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_a2iag(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    } else {
+      return block_diff_a2itc(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/true);
+    }
+  }
+}
+
+/* Ignores snp_ptr */
+static UINT4
+block_diff_atoi_snp_32 (Genomecomp_T *query_shifted, Genomecomp_T *snp_ptr, Genomecomp_T *ref_ptr,
+			bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_a2iag_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_a2iag_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc_32(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+/* Ignores snp_ptr */
+static Genomediff_T
+block_diff_atoi_snp (Genomecomp_T *query_shifted, Genomecomp_T *snp_ptr, Genomecomp_T *ref_ptr,
+		     bool plusp, int genestrand, bool first_read_p, bool query_unk_mismatch_local_p) {
+  if (genestrand == +2) {
+    if (plusp != first_read_p) {
+      return block_diff_a2iag(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  } else {
+    if (plusp == first_read_p) {
+      return block_diff_a2iag(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    } else {
+      return block_diff_a2itc(query_shifted,ref_ptr,query_unk_mismatch_local_p,/*sarrayp*/false);
+    }
+  }
+}
+
+
+
+/* query_shifted, (snp_ptr,) ref_ptr, plusp, genestrand, first_read_p, query_unk_mismatch_local_p */
+typedef Genomediff_T (*Diffproc_T) (Genomecomp_T *, Genomecomp_T *, bool, int, bool, bool);
+typedef Genomediff_T (*Diffproc_snp_T) (Genomecomp_T *, Genomecomp_T *, Genomecomp_T *, bool, int, bool, bool);
+typedef UINT4 (*Diffproc_32_T) (Genomecomp_T *, Genomecomp_T *, bool, int, bool, bool);
+typedef UINT4 (*Diffproc_snp_32_T) (Genomecomp_T *, Genomecomp_T *, Genomecomp_T *, bool, int, bool, bool);
+
+static Diffproc_T block_diff;
+static Diffproc_snp_T block_diff_snp;
+static Diffproc_32_T block_diff_32;
+static Diffproc_snp_32_T block_diff_snp_32;
+
+/* For CMET and ATOI, ignores genome-to-query mismatches.  Used by
+   Genome_consecutive procedures, called only by sarray-read.c */
+static Diffproc_T block_diff_sarray; 
+static Diffproc_32_T block_diff_sarray_32; 
+
+#ifdef HAVE_SSE2
+static __m128i _BOUND_HIGH;
+static __m128i _BOUND_LOW;
+#endif
+
+void
+Genome_hr_setup (Genomecomp_T *ref_blocks_in, Genomecomp_T *snp_blocks_in,
+		 bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
+		 Mode_T mode) {
+#ifdef HAVE_SSE2
+  _BOUND_HIGH = _mm_set_epi32(128,96,64,32);
+  _BOUND_LOW = _mm_set_epi32(96,64,32,0);
+#endif
+
+  ref_blocks = ref_blocks_in;
+  snp_blocks = snp_blocks_in;
+  query_unk_mismatch_p = query_unk_mismatch_p_in;
+  genome_unk_mismatch_p = genome_unk_mismatch_p_in;
+
+  switch (mode) {
+  case STANDARD:
+    block_diff = block_diff_standard;
+    block_diff_sarray = block_diff_standard;
+    block_diff_32 = block_diff_standard_32;
+    block_diff_sarray_32 = block_diff_standard_32;
+    break;
+  case CMET_STRANDED: case CMET_NONSTRANDED:
+    block_diff = block_diff_cmet;
+    block_diff_sarray = block_diff_cmet_sarray;
+    block_diff_32 = block_diff_cmet_32;
+    block_diff_sarray_32 = block_diff_cmet_sarray_32;
+    break;
+  case ATOI_STRANDED: case ATOI_NONSTRANDED:
+    block_diff = block_diff_atoi;
+    block_diff_sarray = block_diff_atoi_sarray;
+    block_diff_32 = block_diff_atoi_32;
+    block_diff_sarray_32 = block_diff_atoi_sarray_32;
+    break;
+  default: fprintf(stderr,"Mode %d not recognized\n",mode); abort();
+  }
+
+#ifndef GSNAP
+  block_diff_snp = block_diff_standard_wildcard;
+  block_diff_snp_32 = block_diff_standard_wildcard_32;
+#else
+  switch (mode) {
+  case STANDARD:
+    block_diff_snp = block_diff_standard_wildcard;
+    block_diff_snp_32 = block_diff_standard_wildcard_32;
+    break;
+  case CMET_STRANDED: case CMET_NONSTRANDED:
+    block_diff_snp = block_diff_cmet_snp;
+    block_diff_snp_32 = block_diff_cmet_snp_32;
+    break;
+  case ATOI_STRANDED: case ATOI_NONSTRANDED:
+    block_diff_snp = block_diff_atoi_snp;
+    block_diff_snp_32 = block_diff_atoi_snp_32;
+    break;
+  default: fprintf(stderr,"Mode %d not recognized\n",mode); abort();
+  }
+#endif
+
+  return;
+}
+
+/* genomebits available */
+void
+Genome_hr_user_setup (UINT4 *ref_blocks_in,
+		      bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
+		      Mode_T mode) {
+  ref_blocks = ref_blocks_in;
+  snp_blocks = (UINT4 *) NULL;
+  query_unk_mismatch_p = query_unk_mismatch_p_in;
+  genome_unk_mismatch_p = genome_unk_mismatch_p_in;
+
+  switch (mode) {
+  case STANDARD:
+    block_diff = block_diff_standard;
+    block_diff_32 = block_diff_standard_32;
+    break;
+  case CMET_STRANDED: case CMET_NONSTRANDED:
+    block_diff = block_diff_cmet;
+    block_diff_32 = block_diff_cmet_32;
+    break;
+  case ATOI_STRANDED: case ATOI_NONSTRANDED:
+    block_diff = block_diff_atoi;
+    block_diff_32 = block_diff_atoi_32;
+    break;
+  default: fprintf(stderr,"Mode %d not recognized\n",mode); abort();
+  }
+
+#ifndef GSNAP
+  block_diff_snp = block_diff_standard_wildcard;
+  block_diff_snp_32 = block_diff_standard_wildcard_32;
+#else
+  switch (mode) {
+  case STANDARD:
+    block_diff_snp = block_diff_standard_wildcard; 
+    block_diff_snp_32 = block_diff_standard_wildcard_32; 
+    break;
+  case CMET_STRANDED: case CMET_NONSTRANDED:
+    block_diff_snp = block_diff_cmet_snp;
+    block_diff_snp_32 = block_diff_cmet_snp_32;
+    break;
+  case ATOI_STRANDED: case ATOI_NONSTRANDED:
+    block_diff_snp = block_diff_atoi_snp;
+    block_diff_snp_32 = block_diff_atoi_snp_32;
+    break;
+  default: fprintf(stderr,"Mode %d not recognized\n",mode); abort();
+  }
+#endif
+
+  return;
+}
+
+
+
+/************************************************************************/
+
+/*                 76543210 */
+#define HIGH_BIT 0x80000000
+
+#define clear_start_32(diff,startdiscard) (diff & (~0U << (startdiscard)))
+#define clear_end_32(diff,enddiscard) (diff & ~(~0U << (enddiscard)))
+
+/* Needed only for debugging */
+#define clear_start_mask(startdiscard) (~0U << (startdiscard))
+#define clear_end_mask(enddiscard) (~(~0U << (enddiscard)))
+
+/* Needed only for debugging */
+#define set_start_mask(startdiscard) (~(~0U << startdiscard))
+#define set_end_mask(enddiscard) (~0U << enddiscard)
+
+
+#ifdef HAVE_SSE2
+
+#ifdef HAVE_SSE4_1
+#define nonzero_p(diff) !_mm_testz_si128(diff,diff)
+#else
+#define nonzero_p(diff) _mm_movemask_epi8(_mm_cmpeq_epi8(diff,_mm_setzero_si128())) != 0xFFFF
+#endif
+
+
+static __m128i
+clear_start (__m128i _diff, int startdiscard) {
+  __m128i _mask, _startdiscard;
+#ifdef DEBUG
+  __m128i _result;
+#endif
+
+  debug(printf("Clearing start to startdiscard %d\n",startdiscard));
+  debug(printf("Before: "));
+  debug(print_vector_hex(_diff));
+
+#ifdef DEFECTIVE_SSE2_COMPILER
+  _mask = _mm_sll_epi32(_mm_set1_epi32(~0U), _mm_setr_epi32(startdiscard % 32,0,0,0));
+#else
+  _mask = _mm_slli_epi32(_mm_set1_epi32(~0U), startdiscard % 32);
+#endif
+  _startdiscard = _mm_set1_epi32(startdiscard);
+  _mask = _mm_or_si128(_mask, _mm_cmplt_epi32(_startdiscard, _BOUND_LOW));
+  _mask = _mm_and_si128(_mask, _mm_cmplt_epi32(_startdiscard, _BOUND_HIGH));
+
+#ifdef DEBUG
+  _result = _mm_and_si128(_mask, _diff);
+  debug(printf("After:  "));
+  print_vector_hex(_result);
+#endif
+
+  return _mm_and_si128(_mask, _diff);
+}
+
+static __m128i
+clear_end (__m128i _diff, int enddiscard) {
+  __m128i _mask, _enddiscard;
+#ifdef DEBUG
+  __m128i _result;
+#endif
+
+  debug(printf("Clearing end from enddiscard %d\n",enddiscard));
+  debug(printf("Before: "));
+  debug(print_vector_hex(_diff));
+
+#ifdef DEFECTIVE_SSE2_COMPILER
+  _mask = _mm_sll_epi32(_mm_set1_epi32(~0U), _mm_setr_epi32(enddiscard % 32,0,0,0));
+#else
+  _mask = _mm_slli_epi32(_mm_set1_epi32(~0U), enddiscard % 32);
+#endif
+  _enddiscard = _mm_set1_epi32(enddiscard);
+  _mask = _mm_or_si128(_mm_cmplt_epi32(_enddiscard, _BOUND_LOW), _mask);
+  _mask = _mm_and_si128(_mm_cmplt_epi32(_enddiscard, _BOUND_HIGH), _mask);
+
+#ifdef DEBUG
+  _result = _mm_andnot_si128(_mask, _diff);
+  debug(printf("After:  "));
+  print_vector_hex(_result);
+#endif
+
+  return _mm_andnot_si128(_mask, _diff);
+}
+  
+#ifdef HAVE_SSE4_1
+#ifdef HAVE_POPCNT
+#define popcount_ones(_diff) (_popcnt64(_mm_extract_epi64(_diff,0)) + _popcnt64(_mm_extract_epi64(_diff,1)))
+#else
+#define popcount_ones(_diff) (__builtin_popcountll(_mm_extract_epi64(_diff,0)) + __builtin_popcountll(_mm_extract_epi64(_diff,1)))
+#endif
+
+#elif 0
+/* Cannot use _mm_extract_ps which is also SSE4.1 */
+#ifdef HAVE_POPCNT
+#define popcount_ones(_diff) (_popcnt32(_mm_extract_ps(_diff,0)) + _popcnt32(_mm_extract_ps(_diff,1)) + _popcnt32(_mm_extract_ps(_diff,2)) + _popcnt32(_mm_extract_ps(_diff,3)))
+#else
+#define popcount_ones(_diff) (__builtin_popcount(_mm_extract_ps(_diff,0)) + __builtin_popcount(_mm_extract_ps(_diff,1)) + __builtin_popcount(_mm_extract_ps(_diff,2)) + __builtin_popcount(_mm_extract_ps(_diff,3)))
+#endif
+
+#else
+/* Not tested yet */
+#ifdef HAVE_POPCNT
+#define popcount_ones(_diff) (_popcnt32(((UINT4 *) &_diff)[0]) + _popcnt32(((UINT4 *) &_diff)[1]) + _popcnt32(((UINT4 *) &_diff)[2]) + _popcnt32(((UINT4 *) &_diff)[3]))
+#else
+#define popcount_ones(_diff) (__builtin_popcount(((UINT4 *) &_diff)[0]) + __builtin_popcount(((UINT4 *) &_diff)[1]) + __builtin_popcount(((UINT4 *) &_diff)[2]) + __builtin_popcount(((UINT4 *) &_diff)[3]))
+#endif
+
+#endif
+
+
+static int
+count_leading_zeroes (__m128i _diff) {
+#ifdef HAVE_SSE4_1
+  UINT8 x;
+
+#ifdef HAVE_LZCNT
+  if ((x = _mm_extract_epi64(_diff,1)) != 0) {
+    return (int) _lzcnt_u64(x);
+  } else {
+    return 64 + (int) _lzcnt_u64(_mm_extract_epi64(_diff,0));
+  }
+
+#else
+  if ((x = _mm_extract_epi64(_diff,1)) != 0) {
+    return __builtin_clzll(x);
+  } else {
+    return 64 + __builtin_clzll(_mm_extract_epi64(_diff,0));
+  }
+#endif
+
+#else
+  UINT4 x;
+
+#ifdef HAVE_LZCNT
+  if ((x = ((UINT4 *) &_diff)[3]) != 0) {
+    return _lzcnt_u32(x);
+  } else if ((x = ((UINT4 *) &_diff)[2]) != 0) {
+    return 32 + _lzcnt_u32(x);
+  } else if ((x = ((UINT4 *) &_diff)[1]) != 0) {
+    return 64 + _lzcnt_u32(x);
+  } else {
+    return 96 + _lzcnt_u32(((UINT4 *) &_diff)[0]);
+  }
+#else
+  if ((x = ((UINT4 *) &_diff)[3]) != 0) {
+    return __builtin_clz(x);
+  } else if ((x = ((UINT4 *) &_diff)[2]) != 0) {
+    return 32 + __builtin_clz(x);
+  } else if ((x = ((UINT4 *) &_diff)[1]) != 0) {
+    return 64 + __builtin_clz(x);
+  } else {
+    return 96 + __builtin_clz(((UINT4 *) &_diff)[0]);
+  }
+#endif
+
+#endif
+}
+
+static int
+count_trailing_zeroes (__m128i _diff) {
+#ifdef HAVE_SSE4_1
+  UINT8 x;
+
+#ifdef HAVE_BMI1
+  if ((x = _mm_extract_epi64(_diff,0)) != 0) {
+    return (int) _tzcnt_u64(x);
+  } else {
+    return 64 + (int) _tzcnt_u64(_mm_extract_epi64(_diff,1));
+  }
+#else
+  if ((x = _mm_extract_epi64(_diff,0)) != 0) {
+    return __builtin_ctzll(x);
+  } else {
+    return 64 + __builtin_ctzll(_mm_extract_epi64(_diff,1));
+  }
+#endif
+
+
+#else
+  UINT4 x;
+
+#ifdef HAVE_BMI1
+  if ((x = ((UINT4 *) &_diff)[0]) != 0) {
+    return _tzcnt_u32(x);
+  } else if ((x = ((UINT4 *) &_diff)[1]) != 0) {
+    return 32 + _tzcnt_u32(x);
+  } else if ((x = ((UINT4 *) &_diff)[2]) != 0) {
+    return 64 + _tzcnt_u32(x);
+  } else {
+    return 96 + _tzcnt_u32(((UINT4 *) &_diff)[3]);
+  }
+#else
+  if ((x = ((UINT4 *) &_diff)[0]) != 0) {
+    return __builtin_ctz(x);
+  } else if ((x = ((UINT4 *) &_diff)[1]) != 0) {
+    return 32 + __builtin_ctz(x);
+  } else if ((x = ((UINT4 *) &_diff)[2]) != 0) {
+    return 64 + __builtin_ctz(x);
+  } else {
+    return 96 + __builtin_ctz(((UINT4 *) &_diff)[3]);
+  }
+#endif
+
+#endif
+}
+
+static __m128i
+clear_highbit (__m128i _diff, int leading_zeroes) {
+  __m128i _subtract, _relpos;
+  int relpos;
+
+  relpos = 127 - leading_zeroes;
+  debug3(printf("Clearing high bit at relpos %d\n",relpos));
+
+#ifdef DEFECTIVE_SSE2_COMPILER
+  _subtract = _mm_sll_epi32(_mm_set1_epi32(1), _mm_setr_epi32(relpos % 32,0,0,0));
+#else
+  _subtract = _mm_slli_epi32(_mm_set1_epi32(1), relpos % 32);
+#endif
+  _relpos = _mm_set1_epi32(relpos);
+  _subtract = _mm_and_si128(_mm_cmplt_epi32(_relpos, _BOUND_HIGH), _subtract);
+  _subtract = _mm_andnot_si128(_mm_cmplt_epi32(_relpos, _BOUND_LOW), _subtract);
+
+  debug3(printf("Subtract: "));
+  debug3(print_vector_hex(_subtract));
+#if 0
+  /* latency 1, throughput: 0.5 */
+  return _mm_sub_epi32(_diff, _subtract);
+#else
+  /* _mm_xor_si128 also works if all other bits are 0.  latency 1, throughput: 0.33 */
+  return _mm_xor_si128(_diff, _subtract);
+#endif
+}
+
+/* relpos is equal to trailing_zeroes */
+static __m128i
+clear_lowbit (__m128i _diff, int relpos) {
+  __m128i _subtract, _relpos;
+
+  debug3(printf("Clearing low bit at relpos %d\n",relpos));
+
+#ifdef DEFECTIVE_SSE2_COMPILER
+  _subtract = _mm_sll_epi32(_mm_set1_epi32(1), _mm_setr_epi32(relpos % 32,0,0,0));
+#else
+  _subtract = _mm_slli_epi32(_mm_set1_epi32(1), relpos % 32);
+#endif
+  _relpos = _mm_set1_epi32(relpos);
+  _subtract = _mm_and_si128(_mm_cmplt_epi32(_relpos, _BOUND_HIGH), _subtract);
+  _subtract = _mm_andnot_si128(_mm_cmplt_epi32(_relpos, _BOUND_LOW), _subtract);
+
+  debug3(printf("Subtract: "));
+  debug3(print_vector_hex(_subtract));
+#if 0
+  /* latency 1, throughput: 0.5 */
+  return _mm_sub_epi32(_diff, _subtract);
+#else
+  /* _mm_xor_si128 also works if all other bits are 0.  latency 1, throughput: 0.33 */
+  return _mm_xor_si128(_diff, _subtract);
+#endif
+}
+
+/* Based on clear_end */
+static __m128i
+set_start (__m128i _diff, int startdiscard) {
+  __m128i _mask, _startdiscard;
+
+  debug(printf("Setting start at startdiscard %d\n",startdiscard));
+
+#ifdef DEFECTIVE_SSE2_COMPILER
+  _mask = _mm_sll_epi32(_mm_set1_epi32(~0U), _mm_setr_epi32(startdiscard % 32,0,0,0));
+#else
+  _mask = _mm_slli_epi32(_mm_set1_epi32(~0U), startdiscard % 32);
+#endif
+  _startdiscard = _mm_set1_epi32(startdiscard);
+  _mask = _mm_or_si128(_mm_cmplt_epi32(_startdiscard, _BOUND_LOW), _mask);
+  _mask = _mm_and_si128(_mm_cmplt_epi32(_startdiscard, _BOUND_HIGH), _mask);
+
+  _mask = _mm_xor_si128(_mask, _mm_set1_epi32(~0U)); /* Take complement of _mask */
+
+  return _mm_or_si128(_mask, _diff);
+}
+
+/* Based on clear_start */
+static __m128i
+set_end (__m128i _diff, int enddiscard) {
+  __m128i _mask, _enddiscard;
+
+  debug(printf("Setting end at enddiscard %d\n",enddiscard));
+
+#ifdef DEFECTIVE_SSE2_COMPILER
+  _mask = _mm_sll_epi32(_mm_set1_epi32(~0U), _mm_setr_epi32(enddiscard % 32,0,0,0));
+#else
+  _mask = _mm_slli_epi32(_mm_set1_epi32(~0U), enddiscard % 32);
+#endif
+  _enddiscard = _mm_set1_epi32(enddiscard);
+  _mask = _mm_or_si128(_mask, _mm_cmplt_epi32(_enddiscard, _BOUND_LOW));
+  _mask = _mm_and_si128(_mask, _mm_cmplt_epi32(_enddiscard, _BOUND_HIGH));
+
+  return _mm_or_si128(_mask, _diff);
+}
+
+#ifdef DEBUG
+static void
+print_diff_popcount (__m128i _diff) {
+  printf("diff: ");
+  print_vector_hex(_diff);
+  printf("nmismatches %d\n",popcount_ones(_diff));
+  return;
+}
+
+static void
+print_diff_trailing_zeroes (__m128i _diff, int offset) {
+  printf("diff: ");
+  print_vector_hex(_diff);
+  printf("offset %d + trailing zeroes %d\n",offset,count_trailing_zeroes(_diff));
+  return;
+}
+
+static void
+print_diff_leading_zeroes (__m128i _diff, int offset) {
+  printf("diff: ");
+  print_vector_hex(_diff);
+  printf("offset %d - leading zeroes %d\n",offset,count_leading_zeroes(_diff));
+  return;
+}
+#endif
+
+#else
+
+#define nonzero_p(diff) diff
+
+#define clear_start(diff,startdiscard) (diff & (~0U << (startdiscard)))
+#define clear_end(diff,enddiscard) (diff & ~(~0U << (enddiscard)))
+
+/* Same speed: clear_highbit(diff,relpos) (diff - (HIGH_BIT >> relpos)) */
+/* Note: xor assumes that bit at relpos was on */
+#define clear_highbit(diff,relpos) (diff ^ (HIGH_BIT >> relpos))
+
+/* Slower: clear_lowbit(diff,relpos) diff -= (1 << relpos) */
+#define clear_lowbit(diff,relpos) (diff & (diff - 1));
+
+
+#ifdef HAVE_POPCNT
+#define popcount_ones(diff) (_popcnt32(diff))
+#elif defined(HAVE_BUILTIN_POPCOUNT)
+#define popcount_ones(diff) (__builtin_popcount(diff))
+#else
+#define popcount_ones(diff) (count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16])
+#endif
+
+
+#ifdef HAVE_LZCNT
+#define count_leading_zeroes(diff) _lzcnt_u32(diff)
+#elif defined(HAVE_BUILTIN_CLZ)
+#define count_leading_zeroes(diff) __builtin_clz(diff)
+#else
+#define count_leading_zeroes(diff) ((top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff])
+#endif
+
+#ifdef HAVE_BMI1
+#define count_trailing_zeroes(diff) _tzcnt_u32(diff)
+#elif defined(HAVE_BUILTIN_CTZ)
+#define count_trailing_zeroes(diff) __builtin_ctz(diff)
+#else
+/* lowbit = -diff & diff */
+#define count_trailing_zeroes(diff) mod_37_bit_position[(-diff & diff) % 37]
+#endif
+
+/* For trimming */
+#define set_start(diff,startdiscard) (diff | ~(~0U << startdiscard))
+#define set_end(diff,enddiscard) (diff | (~0U << enddiscard))
+
+static void
+print_diff_popcount (UINT4 diff) {
+  printf("diff: %08X => nmismatches %d\n",diff,popcount_ones(diff));
+  return;
+}
+
+static void
+print_diff_trailing_zeroes (UINT4 diff, int offset) {
+  printf("diff: %08X => offset %d + trailing zeroes %d\n",diff,offset,count_trailing_zeroes(diff));
+  return;
+}
+
+static void
+print_diff_leading_zeroes (UINT4 diff, int offset) {
+  printf("diff: %08X => offset %d - leading zeroes %d\n",diff,offset,count_leading_zeroes(diff));
+  return;
+}
+
+#endif
+
+
+#define nonzero_p_32(diff) diff
+
+#define clear_start_32(diff,startdiscard) (diff & (~0U << (startdiscard)))
+#define clear_end_32(diff,enddiscard) (diff & ~(~0U << (enddiscard)))
+
+/* Same speed: clear_highbit(diff,relpos) (diff - (HIGH_BIT >> relpos)) */
+/* Note: xor assumes that bit at relpos was on */
+#define clear_highbit_32(diff,relpos) (diff ^ (HIGH_BIT >> relpos))
+
+/* Slower: clear_lowbit(diff,relpos) diff -= (1 << relpos) */
+#define clear_lowbit_32(diff,relpos) (diff & (diff - 1));
+
+
+#ifdef HAVE_POPCNT
+#define popcount_ones_32(diff) (_popcnt32(diff))
+#elif defined(HAVE_BUILTIN_POPCOUNT)
+#define popcount_ones_32(diff) (__builtin_popcount(diff))
+#else
+#define popcount_ones_32(diff) (count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16])
+#endif
+
+#ifdef HAVE_LZCNT
+#define count_leading_zeroes_32(diff) _lzcnt_u32(diff)
+#elif defined(HAVE_BUILTIN_CLZ)
+#define count_leading_zeroes_32(diff) __builtin_clz(diff)
+#else
+#define count_leading_zeroes_32(diff) ((top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff])
+#endif
+
+#ifdef HAVE_BMI1
+#define count_trailing_zeroes_32(diff) _tzcnt_u32(diff)
+#elif defined(HAVE_BUILTIN_CTZ)
+#define count_trailing_zeroes_32(diff) __builtin_ctz(diff)
+#else
+/* lowbit = -diff & diff */
+#define count_trailing_zeroes_32(diff) mod_37_bit_position[(-diff & diff) % 37]
+#endif
+
+/* For trimming */
+#define set_start_32(diff,startdiscard) (diff | ~(~0U << startdiscard))
+#define set_end_32(diff,enddiscard) (diff | (~0U << enddiscard))
+
+
+
+/* Counts matches from pos5 to pos3 up to first mismatch.  Modified from mismatches_left */
+int
+Genome_consecutive_matches_rightward (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				      bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int mismatch_position, offset, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *ptr, *end;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int relpos;
+  int startcolumni, endcolumni;
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in consecutive_matches_rightward):\n");
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = -startdiscard + pos5;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_sarray_32)(query_shifted
+#ifdef HAVE_SSE2
+				     + startcolumni
+#endif
+				     ,&(ref_blocks[startblocki_32]),
+                                     plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    if (nonzero_p_32(diff_32)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes_32(diff_32));
+      debug(printf("Would return %d - %d consecutive matches\n",mismatch_position,pos5));
+#ifdef DEBUG14
+      answer = (mismatch_position - pos5);
+#else
+      return (mismatch_position - pos5);
+#endif
+    } else {
+      debug(printf("Would return %d - %d consecutive matches\n",pos3,pos5));
+#ifdef DEBUG14
+      answer = (pos3 - pos5);
+#else
+      return (pos3 - pos5);
+#endif
+    }
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = -startdiscard + pos5;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff_sarray)(query_shifted,&(ref_blocks[startblocki]),
+			       plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    if (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(printf("returning %d - %d consecutive matches\n",mismatch_position,pos5));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == (mismatch_position - pos5)));
+      return (mismatch_position - pos5);
+    } else {
+      debug(printf("returning %d - %d consecutive matches\n",pos3,pos5));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == (pos3 - pos5)));
+      return (pos3 - pos5);
+    }
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff_sarray)(query_shifted,&(ref_blocks[startblocki]),
+			       plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff = clear_start(diff,startdiscard);
+
+    if (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(printf("returning %d - %d consecutive matches\n",mismatch_position,pos5));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == (mismatch_position - pos5)));
+      return (mismatch_position - pos5);
+    }
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[startblocki+12]);
+#else
+    ptr = &(ref_blocks[startblocki]);
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    offset += STEP_SIZE; /* 128 or 32 */
+    while (ptr < end) {
+      diff = (block_diff_sarray)(query_shifted,ptr,plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+
+      if (nonzero_p(diff) /* != 0*/) {
+	mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+	debug(printf("returning %d - %d consecutive matches\n",mismatch_position,pos5));
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == (mismatch_position - pos5)));
+	return (mismatch_position - pos5);
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr += 12;
+#else
+      ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+      offset += STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Endblock */
+    diff = (block_diff_sarray)(query_shifted,ptr,plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff = clear_end(diff,enddiscard);
+
+    if (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(printf("returning %d - %d consecutive matches\n",mismatch_position,pos5));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == (mismatch_position - pos5)));
+      return (mismatch_position - pos5);
+    } else {
+      debug(printf("returning %d - %d consecutive matches\n",pos3,pos5));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == (pos3 - pos5)));
+      return (pos3 - pos5);
+    }
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+/* Counts matches from pos3 to pos5 up to first mismatch.  Modified from mismatches_right */
+int
+Genome_consecutive_matches_leftward (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				     bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int mismatch_position, offset, relpos, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *start, *ptr;
+  UINT4 diff_32;
+  Genomediff_T diff;
+#ifndef HAVE_BUILTIN_CLZ
+  Genomecomp_T top;
+#endif
+  int startcolumni, endcolumni;
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in consecutive_matches_leftward):\n");
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos3)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (startblocki_32 == endblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = (pos3 - 1) - enddiscard + 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_sarray_32)(query_shifted
+#ifdef HAVE_SSE2
+				     + endcolumni
+#endif
+				     ,&(ref_blocks[endblocki_32]),
+				     plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    if (nonzero_p_32(diff_32)) {
+      mismatch_position = offset - (relpos = count_leading_zeroes_32(diff_32));
+      debug(printf("returning %d - %d - 1 consecutive matches\n",pos3,mismatch_position));
+#ifdef DEBUG14
+      answer = (pos3 - mismatch_position - 1);
+#else
+      return (pos3 - mismatch_position - 1);
+#endif
+    } else {
+      debug(printf("returning %d - %d consecutive matches\n",pos3,pos5));
+#ifdef DEBUG14
+      answer = (pos3 - pos5);
+#else
+      return (pos3 - pos5);
+#endif
+    }
+  }
+
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = (pos3 - 1) - enddiscard + STEP_SIZE;
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
+		 nshift,startdiscard,enddiscard,offset));
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (startblocki == endblocki) {
+    diff = (block_diff_sarray)(query_shifted,&(ref_blocks[endblocki]),
+			       plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    if (nonzero_p(diff)) {
+      mismatch_position = offset - (relpos = count_leading_zeroes(diff));
+      debug(printf("returning %d - %d - 1 consecutive matches\n",pos3,mismatch_position));
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == (pos3 - mismatch_position - 1)));
+      return (pos3 - mismatch_position - 1);
+    } else {
+      debug(printf("returning %d - %d consecutive matches\n",pos3,pos5));
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == (pos3 - pos5)));
+      return (pos3 - pos5);
+    }
+
+  } else {
+#endif
+
+    /* Endblock */
+    diff = (block_diff_sarray)(query_shifted,&(ref_blocks[endblocki]),
+			       plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff = clear_end(diff,enddiscard);
+
+    if (nonzero_p(diff)) {
+      mismatch_position = offset - (relpos = count_leading_zeroes(diff));
+      debug(printf("returning %d - %d - 1 consecutive matches",pos3,mismatch_position));
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == (pos3 - mismatch_position - 1)));
+      return (pos3 - mismatch_position - 1);
+    }
+
+    query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[endblocki-12]);
+#else
+    ptr = &(ref_blocks[endblocki]);
+    ptr -= 1; if (endcolumni-- == 0) {ptr -= 8; endcolumni = 3;}
+#endif
+    start = &(ref_blocks[startblocki]);
+    offset -= STEP_SIZE; /* 128 or 32 */
+    while (ptr > start) {
+      diff = (block_diff_sarray)(query_shifted,ptr,plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+
+      if (nonzero_p(diff)) {
+	mismatch_position = offset - (relpos = count_leading_zeroes(diff));
+	debug(printf("returning %d - %d - 1 consecutive matches\n",pos3,mismatch_position));
+	debug14(if (startblocki_32 == endblocki_32) assert(answer == (pos3 - mismatch_position - 1)));
+	return (pos3 - mismatch_position - 1);
+      }
+
+      query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr -= 12;
+#else
+      ptr -= 1; if (endcolumni-- == 0) {ptr -= 8; endcolumni = 3;}
+#endif
+      offset -= STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Startblock */
+    diff = (block_diff_sarray)(query_shifted,ptr,plusp,genestrand,first_read_p,/*query_unk_mismatch_local_p*/true);
+    diff = clear_start(diff,startdiscard);
+
+    if (nonzero_p(diff)) {
+      mismatch_position = offset - (relpos = count_leading_zeroes(diff));
+      debug(printf("returning %d - %d - 1 consecutive matches\n",pos3,mismatch_position));
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == (pos3 - mismatch_position - 1)));
+      return (pos3 - mismatch_position - 1);
+    } else {
+      debug(printf("returning %d - %d consecutive matches\n",pos3,pos5));
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == (pos3 - pos5)));
+      return (pos3 - pos5);
+    }
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+/* Modified from Genome_consecutive_matches_rightward.  Intended for
+   writing LCP only, so coords are UINT4, and does not need SIMD
+   instructions. */
+
+int
+Genome_consecutive_matches_pair (UINT4 lefta, UINT4 leftb, UINT4 genomelength) {
+  int mismatch_position, offset, nshift, rightshift, nshift1, nshift2, nshifta, nshiftb;
+  int startdiscard, enddiscard, nblocks;
+  UINT4 left1, left2;
+  UINT4 startblocki_1, startblocki_2, endblocki;
+  int startcolumni_1, startcolumni_2, endcolumni;
+  Genomecomp_T *ptr1, *ptr2, *end, *ptr1_prev;
+  Genomecomp_T diff;
+  Genomecomp_T shifted1[3];
+  int relpos;
+
+  nshifta = lefta % 32;		/* Not STEP_SIZE */
+  nshiftb = leftb % 32;		/* Not STEP_SIZE */
+  if (nshifta < nshiftb) {
+    left1 = lefta;
+    left2 = leftb;
+    nshift1 = nshifta;
+    nshift2 = nshiftb;
+
+  } else {
+    left1 = leftb;
+    left2 = lefta;
+    nshift1 = nshiftb;
+    nshift2 = nshifta;
+  }
+  nshift = nshift2 - nshift1;
+  rightshift = 32 - nshift;	/* Not STEP_SIZE */
+  startdiscard = nshift2;
+
+  /* Non-SSE2 code */
+  startcolumni_1 = (left1 % 128) / 32;
+  startblocki_1 = left1/128U*12 + startcolumni_1;
+
+  startcolumni_2 = (left2 % 128) / 32;
+  startblocki_2 = left2/128U*12 + startcolumni_2;
+
+  endcolumni = (genomelength % 128) / 32;
+  endblocki = genomelength/128U*12 + endcolumni;
+
+
+  ptr1 = &(ref_blocks[startblocki_1]);
+  ptr2 = &(ref_blocks[startblocki_2]);
+  end = &(ref_blocks[endblocki]);
+
+  offset = -startdiscard;
+  
+  debug2(printf("\n\n"));
+  debug2(printf("left1 = %u, left2 = %u, startblocki_1 = %u, startblocki_2 = %u, endblocki = %u\n",
+	       left1,left2,startblocki_1,startblocki_2,endblocki));
+  debug2(printf("nshift1 = %d, nshift2 = %d, nshift = %d, startdiscard = %u\n",
+	       nshift1,nshift2,nshift,startdiscard));
+
+  if (ptr1 == end) {
+    /* Single block */
+    enddiscard = genomelength % 32; /* Not STEP_SIZE */
+    if (nshift + enddiscard < 32) { /* Not STEP_SIZE */
+      enddiscard = nshift + enddiscard;
+
+      ptr1 = &(ref_blocks[startblocki_1]);
+      ptr2 = &(ref_blocks[startblocki_2]);
+      shifted1[0] = ptr1[0] << nshift;
+      shifted1[1] = ptr1[4] << nshift;
+      shifted1[2] = ptr1[8] << nshift;
+      debug2(Compress_print_one_block(ptr1));
+      debug2(Compress_print_one_block(ptr2));
+      debug2(Compress_print_one_block(shifted1));
+
+      diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+      diff = clear_start_32(diff,startdiscard);
+      diff = clear_end_32(diff,enddiscard);
+
+      if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+	mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+	mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+	debug2(printf("case 1: returning %d matches\n",mismatch_position));
+	return mismatch_position;
+      } else {
+	debug2(printf("case 2: returning %d - %d matches\n",enddiscard,startdiscard));
+	return (enddiscard - startdiscard);
+      }
+
+    } else {
+      /* Two blocks */
+      if (nshift > 0) {
+	enddiscard -= (32 - nshift); /* Not STEP_SIZE */
+      }
+
+      /* Block 1 */
+      ptr1 = &(ref_blocks[startblocki_1]);
+      ptr2 = &(ref_blocks[startblocki_2]);
+      shifted1[0] = ptr1[0] << nshift;
+      shifted1[1] = ptr1[4] << nshift;
+      shifted1[2] = ptr1[8] << nshift;
+      debug2(Compress_print_one_block(ptr1));
+      debug2(Compress_print_one_block(ptr2));
+      debug2(Compress_print_one_block(shifted1));
+
+      diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+      diff = clear_start_32(diff,startdiscard);
+
+      if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+	mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+	mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+	debug2(printf("case 3: returning %d matches\n",mismatch_position));
+	return mismatch_position;
+      } else {
+	ptr1_prev = ptr1;
+	ptr1 += 1; if (++startcolumni_1 == 4) {ptr1 += 8; startcolumni_1 = 0;}
+	ptr2 += 1; if (++startcolumni_2 == 4) {ptr2 += 8; startcolumni_2 = 0;}
+	offset += 32; /* Not STEP_SIZE */
+      }
+
+      /* Block 2 */
+      if (nshift == 0) {
+	/* rightshift of 32 is a no-op */
+	shifted1[0] = ptr1[0]; shifted1[1] = ptr1[4]; shifted1[2] = ptr1[8];
+      } else {
+	shifted1[0] = (ptr1[0] << nshift) | (ptr1_prev[0] >> rightshift);
+	shifted1[1] = (ptr1[4] << nshift) | (ptr1_prev[4] >> rightshift);
+	shifted1[2] = (ptr1[8] << nshift) | (ptr1_prev[8] >> rightshift);
+      }
+      debug2(Compress_print_one_block(ptr1));
+      debug2(Compress_print_one_block(ptr2));
+      debug2(Compress_print_one_block(shifted1));
+
+      diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+      diff = clear_end_32(diff,enddiscard);
+
+      if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+	mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+	mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+	debug2(printf("case 4: returning %d matches\n",mismatch_position));
+	return mismatch_position;
+      } else {
+	debug2(printf("case 5: returning offset %d + enddiscard %d matches\n",offset,enddiscard));
+	return offset + enddiscard;
+      }
+    }
+
+  } else if (ptr2 == end) {
+    /* Single block */
+    enddiscard = genomelength % 32; /* Not STEP_SIZE */
+
+    ptr1 = &(ref_blocks[startblocki_1]);
+    ptr2 = &(ref_blocks[startblocki_2]);
+    shifted1[0] = ptr1[0] << nshift;
+    shifted1[1] = ptr1[4] << nshift;
+    shifted1[2] = ptr1[8] << nshift;
+    debug2(Compress_print_one_block(ptr1));
+    debug2(Compress_print_one_block(ptr2));
+    debug2(Compress_print_one_block(shifted1));
+
+    diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+    diff = clear_start_32(diff,startdiscard);
+    diff = clear_end_32(diff,enddiscard);
+
+    if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+      mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+      mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+      debug2(printf("case 6: returning %d matches\n",mismatch_position));
+      return mismatch_position;
+    } else {
+      debug2(printf("case 7: returning %d - %d matches\n",enddiscard,startdiscard));
+      return (enddiscard - startdiscard);
+    }
+
+  } else {
+
+    /* Startblock */
+    ptr1 = &(ref_blocks[startblocki_1]);
+    ptr2 = &(ref_blocks[startblocki_2]);
+    shifted1[0] = (ptr1[0] << nshift);
+    shifted1[1] = (ptr1[4] << nshift);
+    shifted1[2] = (ptr1[8] << nshift);
+    debug2(Compress_print_one_block(ptr1));
+    debug2(Compress_print_one_block(ptr2));
+    debug2(Compress_print_one_block(shifted1));
+
+    diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+    diff = clear_start_32(diff,startdiscard);
+
+    if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+      mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+      mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+      debug2(printf("case 8: returning %d matches\n",mismatch_position));
+      return mismatch_position;
+    } else {
+      ptr1_prev = ptr1;
+      ptr1 += 1; if (++startcolumni_1 == 4) {ptr1 += 8; startcolumni_1 = 0;}
+      ptr2 += 1; if (++startcolumni_2 == 4) {ptr2 += 8; startcolumni_2 = 0;}
+      offset += 32;		/* Not STEP_SIZE */
+    }
+
+    while (ptr1 < end && ptr2 < end) {
+      if (nshift == 0) {
+	/* rightshift of 32 is a no-op */
+	shifted1[0] = ptr1[0]; shifted1[1] = ptr1[4]; shifted1[2] = ptr1[8];
+      } else {
+	shifted1[0] = (ptr1[0] << nshift) | (ptr1_prev[0] >> rightshift);
+	shifted1[1] = (ptr1[4] << nshift) | (ptr1_prev[4] >> rightshift);
+	shifted1[2] = (ptr1[8] << nshift) | (ptr1_prev[8] >> rightshift);
+      }
+      debug2(Compress_print_one_block(ptr1));
+      debug2(Compress_print_one_block(ptr2));
+      debug2(Compress_print_one_block(shifted1));
+
+      diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+      if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+	mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+	mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+	debug2(printf("case 9: returning %d matches\n",mismatch_position));
+	return mismatch_position;
+      } else {
+	ptr1_prev = ptr1;
+	ptr1 += 1; if (++startcolumni_1 == 4) {ptr1 += 8; startcolumni_1 = 0;}
+	ptr2 += 1; if (++startcolumni_2 == 4) {ptr2 += 8; startcolumni_2 = 0;}
+	offset += 32;		/* Not STEP_SIZE */
+      }
+    }
+
+    /* Last block of entire genome */
+    enddiscard = genomelength % 32; /* Not STEP_SIZE */
+    if (ptr2 == end) {
+      debug2(printf("ptr2 == end\n"));
+      /* Keep enddiscard */
+      nblocks = 1;
+    } else if (nshift + enddiscard < 32) {
+      debug2(printf("ptr1 == end and nshift %d + enddiscard %d < 32\n",nshift,enddiscard));
+      enddiscard = nshift + enddiscard;
+      nblocks = 1;
+    } else if (nshift > 0) {
+      debug2(printf("ptr1 == end and nshift %d + enddiscard %d >= 32\n",nshift,enddiscard));
+      enddiscard -= (32 - nshift);
+      nblocks = 2;
+    } else {
+      debug2(printf("ptr1 == end and nshift %d + enddiscard %d >= 32\n",nshift,enddiscard));
+      /* Keep enddiscard */
+      nblocks = 2;
+    }
+
+    /* Block 1 */
+    if (nshift == 0) {
+      /* rightshift of 32 is a no-op */
+      shifted1[0] = ptr1[0]; shifted1[1] = ptr1[4]; shifted1[2] = ptr1[8];
+    } else {
+      shifted1[0] = (ptr1[0] << nshift) | (ptr1_prev[0] >> rightshift);
+      shifted1[1] = (ptr1[4] << nshift) | (ptr1_prev[4] >> rightshift);
+      shifted1[2] = (ptr1[8] << nshift) | (ptr1_prev[8] >> rightshift);
+    }
+    debug2(Compress_print_one_block(ptr1));
+    debug2(Compress_print_one_block(ptr2));
+    debug2(Compress_print_one_block(shifted1));
+
+    diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+    if (nblocks == 1) {
+      diff = clear_end_32(diff,enddiscard);
+    }
+
+    if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+      mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+      mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+      debug2(printf("case 10: returning %d matches\n",mismatch_position));
+      return mismatch_position;
+    } else if (nblocks == 1) {
+      debug2(printf("case 11: returning offset %d + enddiscard %d matches\n",offset,enddiscard));
+      return offset + enddiscard;
+    } else {
+      ptr1_prev = ptr1;
+      ptr1 += 1; if (++startcolumni_1 == 4) {ptr1 += 8; startcolumni_1 = 0;}
+      ptr2 += 1; if (++startcolumni_2 == 4) {ptr2 += 8; startcolumni_2 = 0;}
+      offset += 32;		/* Not STEP_SIZE */
+    }
+
+    /* Block 2 */
+    shifted1[0] = (ptr1_prev[0] >> rightshift);
+    shifted1[1] = (ptr1_prev[4] >> rightshift);
+    shifted1[2] = (ptr1_prev[8] >> rightshift);
+    debug2(Compress_print_one_block(ptr1));
+    debug2(Compress_print_one_block(ptr2));
+    debug2(Compress_print_one_block(shifted1));
+
+    diff = (shifted1[0] ^ ptr2[0]) | (shifted1[1] ^ ptr2[4]) | (shifted1[2] ^ ptr2[8]);
+    diff = clear_end_32(diff,enddiscard);
+
+    if (diff /* != 0U */) {
+#ifdef HAVE_BUILTIN_CTZ
+      mismatch_position = offset + (relpos = __builtin_ctz(diff));
+#else
+      mismatch_position = offset + mod_37_bit_position[(-diff & diff) % 37];
+#endif
+      debug2(printf("case 12: returning %d matches\n",mismatch_position));
+      return mismatch_position;
+    } else {
+      debug2(printf("case 13: returning offset %d + enddiscard %d matches\n",offset,enddiscard));
+      return offset + enddiscard;
+    }
+  }
+}
+
+
+
+
+static int
+count_mismatches_limit (Compress_T query_compress, Univcoord_T left, 
+			int pos5, int pos3, int max_mismatches, bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *endblock, *ptr;
+  Genomecomp_T *query_shifted, *query_shifted_save_start;
+  Genomediff_T diff;
+  UINT4 diff_32;
+  int nshift;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in count_mismatches_limit) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    debug(printf("** Single block **\n"));
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + startcolumni
+#endif
+			      ,&(ref_blocks[startblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+#ifdef DEBUG14
+    answer = popcount_ones_32(diff_32);
+#else
+    return popcount_ones_32(diff_32);
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    debug(printf("** Single block **\n"));
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    debug(print_diff_popcount(diff));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == popcount_ones(diff)));
+    return popcount_ones(diff);
+
+  } else if (endblocki == startblocki + 12) {
+    /* Only two blocks to check */
+
+    if (STEP_SIZE - startdiscard >= enddiscard) {
+      /* Two blocks to check and more bits counted in startblock */
+      debug(printf("* Two blocks, start block first **\n"));
+
+      /* 1/2: Startblock */
+      diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+      
+      debug(print_diff_popcount(diff));
+      if ((nmismatches = popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+      
+      /* 2/2: Endblock */
+      diff = (block_diff)(/*endblock*/query_shifted+COMPRESS_BLOCKSIZE,
+			  &(ref_blocks[endblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+
+    } else {
+      /* Two blocks to check and more bits counted in endblock */
+      debug(printf("** Two blocks, end block first **\n"));
+
+      /* 1/2: Endblock */
+      diff = (block_diff)(/*endblock*/query_shifted+COMPRESS_BLOCKSIZE,
+			  &(ref_blocks[endblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      if ((nmismatches = popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      /* 2/2: Startblock */
+      diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+    }
+
+  } else {
+#endif
+
+    /* More than 2 blocks to check */
+    debug(printf("** More than two blocks **\n"));
+
+    query_shifted_save_start = query_shifted;
+
+    /* 2..(n-1) / n: Check all middle blocks first */
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[startblocki+12]);
+#else
+    ptr = &(ref_blocks[startblocki]);
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    endblock = &(ref_blocks[endblocki]);
+    nmismatches = 0;
+
+    while (ptr < endblock) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      
+      debug(print_diff_popcount(diff));
+      if ((nmismatches += popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr += 12;
+#else
+      ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    }
+
+    if (enddiscard >= STEP_SIZE - startdiscard) {
+      /* More bits in end block */
+      debug(printf("** Final block, end block first **\n"));
+
+      /* n/n: Go first to end block */
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      if ((nmismatches += popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      /* 1/n: Go second to start block */
+      diff = (block_diff)(query_shifted_save_start,&(ref_blocks[startblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+      
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+
+    } else {
+      debug(printf("** Final block, start block first **\n"));
+
+      /* 1/n: Go first to start block */
+      diff = (block_diff)(query_shifted_save_start,&(ref_blocks[startblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+      
+      debug(print_diff_popcount(diff));
+      if ((nmismatches += popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      /* n/n: Go second to end block */
+      diff = (block_diff)(query_shifted,&(ref_blocks[endblocki]),
+			  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+    }
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+static int
+count_mismatches_limit_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3, int max_mismatches,
+			     bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *endblock;
+  Genomecomp_T *query_shifted, *query_shifted_save_start;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  Genomecomp_T *ref_ptr, *alt_ptr;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in count_mismatches_limit_snps) from %u+%d to %u+%d\n",left,pos5,left,pos3);
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    debug(printf("** Single block **\n"));
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + startcolumni
+#endif
+				  ,&(snp_blocks[startblocki_32]),&(ref_blocks[startblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+#ifdef DEBUG14
+    answer = popcount_ones_32(diff_32);
+#else
+    return popcount_ones_32(diff_32);
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    debug(printf("** Single block **\n"));
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    debug(print_diff_popcount(diff));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == popcount_ones(diff)));
+    return popcount_ones(diff);
+
+  } else if (endblocki == startblocki + 12) {
+    /* Only two blocks to check */
+
+    if (STEP_SIZE - startdiscard >= enddiscard) {
+      /* Two blocks to check and more bits counted in startblock */
+      debug(printf("* Two blocks, start block first **\n"));
+
+      /* 1/2: Startblock */
+      diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+
+      debug(print_diff_popcount(diff));
+      nmismatches /* init */ = popcount_ones(diff);
+      if (nmismatches > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      /* 2/2: Endblock */
+      diff = (block_diff_snp)(/*endblock*/query_shifted+COMPRESS_BLOCKSIZE,
+			      &(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+
+    } else {
+      /* Two blocks to check and more bits counted in endblock */
+      debug(printf("** Two blocks, end block first **\n"));
+
+      /* 1/2: Endblock */
+      diff = (block_diff_snp)(/*endblock*/query_shifted+COMPRESS_BLOCKSIZE,
+			      &(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      nmismatches /* init */ = popcount_ones(diff);
+      if (nmismatches > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      /* 2/2: Startblock */
+      diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+    }
+
+  } else {
+#endif
+
+    /* More than 2 blocks to check */
+    debug(printf("** More than two blocks **\n"));
+
+    query_shifted_save_start = query_shifted;
+
+    /* 2..(n-1) / n: Check all middle blocks first */
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[startblocki+12]);
+    alt_ptr = &(snp_blocks[startblocki+12]);
+#else
+    ref_ptr = &(ref_blocks[startblocki]);
+    alt_ptr = &(snp_blocks[startblocki]);
+    ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    endblock = &(ref_blocks[endblocki]);
+    nmismatches = 0;
+
+    while (ref_ptr < endblock) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+      debug(print_diff_popcount(diff));
+      if ((nmismatches += popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr += 12; alt_ptr += 12;
+#else
+      ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    }
+
+    if (enddiscard >= STEP_SIZE - startdiscard) {
+      /* More bits in end block */
+      debug(printf("** Final block, end block first **\n"));
+
+      /* n/n: Go first to end block */
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      if ((nmismatches += popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      /* 1/n: Go second to start block */
+      diff = (block_diff_snp)(query_shifted_save_start,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+      
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+
+    } else {
+      debug(printf("** Final block, start block first **\n"));
+
+      /* 1/n: Go first to start block */
+      diff = (block_diff_snp)(query_shifted_save_start,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_start(diff,startdiscard);
+      
+      debug(print_diff_popcount(diff));
+      if ((nmismatches += popcount_ones(diff)) > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+      
+      /* n/n: Go second to end block */
+      diff = (block_diff_snp)(query_shifted,&(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+      diff = clear_end(diff,enddiscard);
+
+      debug(print_diff_popcount(diff));
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+      return nmismatches + popcount_ones(diff);
+    }
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+int
+Genome_count_mismatches_limit (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+			       int max_mismatches, bool plusp, int genestrand, bool first_read_p) {
+
+#if 0
+  if (dibasep) {
+    debug(printf("Dibase_count_mismatches_limit from %u+%d to %u+%d with max_mismatches %d:\n",
+		 left,pos5,left,pos3,max_mismatches));
+
+    return Dibase_count_mismatches_limit(&(*ncolordiffs),query,pos5,pos3,
+					 /*startpos*/left+pos5,/*endpos*/left+pos3,max_mismatches);
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    return count_mismatches_limit(query_compress,left,pos5,pos3,max_mismatches,plusp,genestrand,first_read_p);
+  } else {
+    return count_mismatches_limit_snps(query_compress,left,pos5,pos3,max_mismatches,plusp,genestrand,first_read_p);
+  }
+}
+
+
+
+int
+Genome_count_mismatches_substring_ref (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				       bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *ptr, *end;
+  Genomecomp_T *query_shifted;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in count_mismatches_substring) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + startcolumni
+#endif
+			      ,&(ref_blocks[startblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+#ifdef DEBUG14
+    answer = popcount_ones_32(diff_32);
+#else
+    return popcount_ones_32(diff_32);
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    debug(print_diff_popcount(diff));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == popcount_ones(diff)));
+    return popcount_ones(diff);
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+
+    debug(print_diff_popcount(diff));
+    nmismatches = popcount_ones(diff);
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[startblocki+12]);
+#else
+    ptr = &(ref_blocks[startblocki]);
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    while (ptr < end) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+      debug(print_diff_popcount(diff));
+      nmismatches += popcount_ones(diff);
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr += 12;
+#else
+      ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    }
+
+    /* Endblock */
+    diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard);
+
+    debug(print_diff_popcount(diff));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+    return nmismatches + popcount_ones(diff);
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+static int
+count_mismatches_substring_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				 bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *ref_ptr, *alt_ptr, *end;
+  Genomecomp_T *query_shifted;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in count_mismatches_substring_snps) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + startcolumni
+#endif
+				  ,&(snp_blocks[startblocki_32]),&(ref_blocks[startblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+#ifdef DEBUG14
+    answer = popcount_ones_32(diff_32);
+#else
+    return popcount_ones_32(diff_32);
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    debug(print_diff_popcount(diff));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == popcount_ones(diff)));
+    return popcount_ones(diff);
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+
+    debug(print_diff_popcount(diff));
+    nmismatches = popcount_ones(diff);
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[startblocki+12]);
+    alt_ptr = &(snp_blocks[startblocki+12]);
+#else
+    ref_ptr = &(ref_blocks[startblocki]);
+    alt_ptr = &(snp_blocks[startblocki]);
+    ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    while (ref_ptr < end) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+      debug(print_diff_popcount(diff));
+      nmismatches += popcount_ones(diff);
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr += 12; alt_ptr += 12;
+#else
+      ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    }
+
+    /* Endblock */
+    diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard);
+
+    debug(print_diff_popcount(diff));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches + popcount_ones(diff)));
+    return nmismatches + popcount_ones(diff);
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+/* left is where the start of the query matches.  pos5 is where we
+   want to start comparing in the query.  pos3 is just after where we
+   want to stop comparing in the query, i.e., stop at (pos3-1)
+   inclusive */
+int
+Genome_count_mismatches_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				   bool plusp, int genestrand, bool first_read_p) {
+
+#if 0
+  if (dibasep) {
+    Dibase_count_mismatches_substring(&ncolordiffs,query,pos5,pos3,
+				      /*startpos*/left+pos5,/*endpos*/left+pos3);
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    return Genome_count_mismatches_substring_ref(query_compress,left,pos5,pos3,plusp,genestrand,first_read_p);
+  } else {
+    return count_mismatches_substring_snps(query_compress,left,pos5,pos3,plusp,genestrand,first_read_p);
+  }
+}
+
+
+/* pos5 is where we want to start comparing in the query.  pos3 is
+   just after where we want to stop comparing in the query, i.e., stop
+   at (pos3-1) inclusive */
+int
+Genome_count_mismatches_fragment_left (Compress_T query_compress, int pos5, int pos3,
+				       Genomecomp_T ref_fragment, Genomecomp_T alt_fragment) {
+  Genomecomp_T diff, alt_diff, mask;
+  int startdiscard;
+  Genomecomp_T query_high, query_low, query_flags;
+  Genomecomp_T ref_high, ref_low, alt_high, alt_low;
+
+  Compress_get_16mer_left(&query_high,&query_low,&query_flags,query_compress,pos3);
+  startdiscard = 16 - (pos3 - pos5);
+
+  mask = clear_start_mask(startdiscard);
+  mask &= 0x0000FFFF;		/* Therefore, result of Compress does not need masking */
+  debug1(printf("Mask for startdiscard %d: %08X\n",startdiscard,mask));
+
+
+  /* Unpack genomic fragments */
+  ref_high = ref_fragment >> 16;
+  ref_low = ref_fragment /* & 0x0000FFFF */;
+
+  alt_high = alt_fragment >> 16;
+  alt_low = alt_fragment /* & 0x0000FFFF */;
+
+
+  debug1(printf("Comparing: query high %08X, low %08X with ref fragment high %08X, %08X\n",query_high & 0xFFFF,query_low & 0xFFFF,ref_high & 0xFFFF,ref_low & 0xFFFF));
+
+  /* Taken from block_diff */
+  diff = (query_high ^ ref_high) | (query_low ^ ref_low);
+  debug1(printf(" => ref_diff %04X",(unsigned short) diff));
+
+  alt_diff = (query_high ^ alt_high) | (query_low ^ alt_low);
+  debug1(printf(" and alt_diff %04X\n",(unsigned short) alt_diff));
+
+  diff &= alt_diff;
+
+  diff |= query_flags;
+
+  diff &= mask;
+
+  assert(diff <= 0x0000FFFF);
+
+#ifdef HAVE_POPCNT
+  debug1(printf("nmismatches %08X => %d\n",diff,_popcnt32(diff)));
+  return _popcnt32(diff);
+#elif defined(HAVE_BUILTIN_POPCOUNT)
+  debug1(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
+  return __builtin_popcount(diff);
+#else
+  debug1(printf("nmismatches %08X => %d\n",diff,count_bits[diff]));
+  return count_bits[diff];
+#endif
+}
+
+
+/* pos5 is where we want to start comparing in the query.  pos3 is
+   just after where we want to stop comparing in the query, i.e., stop
+   at (pos3-1) inclusive */
+int
+Genome_count_mismatches_fragment_right (Compress_T query_compress, int pos5, int pos3,
+					Genomecomp_T ref_fragment, Genomecomp_T alt_fragment) {
+  Genomecomp_T diff, alt_diff, mask;
+  int enddiscard;
+  Genomecomp_T query_high, query_low, query_flags;
+  Genomecomp_T ref_high, ref_low, alt_high, alt_low;
+
+  Compress_get_16mer_right(&query_high,&query_low,&query_flags,query_compress,pos5);
+  enddiscard = pos3 - pos5;
+
+  mask = clear_end_mask(enddiscard);
+  mask &= 0x0000FFFF;		/* Therefore, result of Compress does not need masking */
+  debug1(printf("Mask for enddiscard %d: %08X\n",enddiscard,mask));
+
+
+  /* Unpack genomic fragments */
+  ref_high = ref_fragment >> 16;
+  ref_low = ref_fragment /* & 0x0000FFFF */;
+
+  alt_high = alt_fragment >> 16;
+  alt_low = alt_fragment /* & 0x0000FFFF */;
+
+
+  debug1(printf("Comparing: query high %08X, low %08X with ref fragment high %08X, %08X\n",query_high & 0xFFFF,query_low & 0xFFFF,ref_high & 0xFFFF,ref_low & 0xFFFF));
+
+  /* Taken from block_diff */
+  diff = (query_high ^ ref_high) | (query_low ^ ref_low);
+  debug1(printf(" => ref_diff %08X",diff));
+
+  alt_diff = (query_high ^ alt_high) | (query_low ^ alt_low);
+  debug1(printf(" and alt_diff %08X\n",alt_diff));
+
+  diff &= alt_diff;
+
+  diff |= query_flags;
+
+  diff &= mask;
+
+  assert(diff <= 0x0000FFFF);
+
+#ifdef HAVE_POPCNT
+  debug1(printf("nmismatches %08X => %d\n",diff,_popcnt32(diff)));
+  return _popcnt32(diff);
+#elif defined(HAVE_BUILTIN_POPCOUNT)
+  debug1(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
+  return __builtin_popcount(diff);
+#else
+  debug1(printf("nmismatches %08X => %d\n",diff,count_bits[diff]));
+  return count_bits[diff];
+#endif
+}
+
+
+
+static int
+mismatches_left (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+		 Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p,
+		 bool query_unk_mismatch_local_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches = 0, offset, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *ptr, *end;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int relpos;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in mismatches_left):\n");
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = -startdiscard + pos5;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + startcolumni
+#endif
+			      ,&(ref_blocks[startblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    while (nonzero_p_32(diff_32) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset + (relpos = count_trailing_zeroes_32(diff_32));
+      diff_32 = clear_lowbit_32(diff_32,relpos);
+    }
+#ifdef DEBUG14
+    debug(printf("Would return nmismatches %d\n",nmismatches));
+    answer = nmismatches;
+    nmismatches = 0;
+#else
+    return nmismatches;
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = -startdiscard + pos5;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+    }
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+    return nmismatches;
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+
+    while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+    }
+    if (nmismatches > max_mismatches) {
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+      return nmismatches;
+    }
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[startblocki+12]);
+#else
+    ptr = &(ref_blocks[startblocki]);
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    offset += STEP_SIZE; /* 128 or 32 */
+    while (ptr < end) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+
+      while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+	mismatch_positions[nmismatches++] = offset + (relpos = count_trailing_zeroes(diff));
+	debug(print_diff_trailing_zeroes(diff,offset));
+	diff = clear_lowbit(diff,relpos);
+      }
+      if (nmismatches > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr += 12;
+#else
+      ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+      offset += STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Endblock */
+    diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+    }
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches));
+    return nmismatches;
+
+#ifdef HAVE_SSE2
+  }
+#endif
+
+}
+
+/* Returns mismatch_positions[0..max_mismatches] */
+static int
+mismatches_left_snps (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+		      Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p,
+		      bool query_unk_mismatch_local_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches_both = 0, offset, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *ref_ptr, *alt_ptr, *end;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int relpos;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in mismatches_left_snps):\n");
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = -startdiscard + pos5;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + startcolumni
+#endif
+				  ,&(snp_blocks[startblocki_32]),&(ref_blocks[startblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    while (nonzero_p_32(diff_32) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset + (relpos = count_trailing_zeroes_32(diff_32));
+      diff_32 = clear_lowbit_32(diff_32,relpos);
+    }
+#ifdef DEBUG14
+    answer = nmismatches_both;
+    nmismatches_both = 0;
+#else
+    return nmismatches_both;
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = -startdiscard + pos5;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+    }
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches_both));
+    return nmismatches_both;
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+
+    while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+    }
+    if (nmismatches_both > max_mismatches) {
+      debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches_both));
+      return nmismatches_both;
+    }
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[startblocki+12]);
+    alt_ptr = &(snp_blocks[startblocki+12]);
+#else
+    ref_ptr = &(ref_blocks[startblocki]);
+    alt_ptr = &(snp_blocks[startblocki]);
+    ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    offset += STEP_SIZE; /* 128 or 32 */
+    while (ref_ptr < end) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+
+      while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+	mismatch_positions[nmismatches_both++] = offset + (relpos = count_trailing_zeroes(diff));
+	debug(print_diff_trailing_zeroes(diff,offset));
+	diff = clear_lowbit(diff,relpos);
+      }
+      if (nmismatches_both > max_mismatches) {
+	debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches_both));
+	return nmismatches_both;
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr += 12; alt_ptr += 12;
+#else
+      ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+      offset += STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Endblock */
+    diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+    }
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches_both));
+    return nmismatches_both;
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+
+/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches + 1 */
+/* If request max_mismatches 3, could return m0, m1, m2, m3, m4 */
+int
+Genome_mismatches_left (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p) {
+  int nmismatches;
+#ifdef DEBUG
+  int i;
+#endif
+
+#if 0
+  if (dibasep) {
+    debug(printf("Dibase_mismatches_left from %u+%d to %u+%d:\n",left,pos5,left,pos3));
+
+    nmismatches = Dibase_mismatches_left(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
+					 pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
+    mismatch_positions[nmismatches] = pos3 + 1;	/* Need +1 because of starting assumed nt */
+
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    nmismatches = mismatches_left(&(*mismatch_positions),max_mismatches,query_compress,
+				  left,pos5,pos3,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    mismatch_positions[nmismatches] = pos3;
+  } else {
+    nmismatches = mismatches_left_snps(&(*mismatch_positions),max_mismatches,query_compress,
+				       left,pos5,pos3,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    mismatch_positions[nmismatches] = pos3;
+  }
+  debug(
+	printf("%d mismatches on left: ",nmismatches);
+	for (i = 0; i <= nmismatches; i++) {
+	  printf("%d ",mismatch_positions[i]);
+	}
+	printf("\n");
+	);
+  
+  return nmismatches;
+}
+
+
+/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches + 1 */
+/* If request max_mismatches 3, could return m0, m1, m2, m3, m4 */
+/* See note above about why we set query_unk_mismatch_p to false */
+int
+Genome_mismatches_left_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			     Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p) {
+  int nmismatches;
+#ifdef DEBUG
+  int i;
+#endif
+
+#if 0
+  if (dibasep) {
+    debug(printf("Dibase_mismatches_left from %u+%d to %u+%d:\n",left,pos5,left,pos3));
+
+    nmismatches = Dibase_mismatches_left(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
+					 pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
+    mismatch_positions[nmismatches] = pos3 + 1;	/* Need +1 because of starting assumed nt */
+
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    nmismatches = mismatches_left(&(*mismatch_positions),max_mismatches,query_compress,
+				  left,pos5,pos3,plusp,genestrand,first_read_p,/*query_unk_mismatch_p*/false);
+    mismatch_positions[nmismatches] = pos3;
+  } else {
+    nmismatches = mismatches_left_snps(&(*mismatch_positions),max_mismatches,query_compress,
+				       left,pos5,pos3,plusp,genestrand,first_read_p,/*query_unk_mismatch_p*/false);
+    mismatch_positions[nmismatches] = pos3;
+  }
+  debug(
+	printf("%d mismatches on left: ",nmismatches);
+	for (i = 0; i <= nmismatches; i++) {
+	  printf("%d ",mismatch_positions[i]);
+	}
+	printf("\n");
+	);
+  
+  return nmismatches;
+}
+
+
+static int
+mismatches_right (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+		  Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p,
+		  bool query_unk_mismatch_local_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches = 0, offset, relpos, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *start, *ptr;
+  UINT4 diff_32;
+  Genomediff_T diff;
+#ifndef HAVE_BUILTIN_CLZ
+  Genomecomp_T top;
+#endif
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in mismatches_right):\n");
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos3)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (startblocki_32 == endblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = (pos3 - 1) - enddiscard + 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + endcolumni
+#endif
+			      ,&(ref_blocks[endblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    while (nonzero_p_32(diff_32) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset - (relpos = count_leading_zeroes_32(diff_32));
+      diff_32 = clear_highbit_32(diff_32,relpos);
+    }
+#ifdef DEBUG14
+    answer = nmismatches;
+    nmismatches = 0;
+#else
+    return nmismatches;
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = (pos3 - 1) - enddiscard + STEP_SIZE;
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
+		 nshift,startdiscard,enddiscard,offset));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (startblocki == endblocki) {
+    diff = (block_diff)(query_shifted,&(ref_blocks[endblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset - (relpos = count_leading_zeroes(diff));
+      debug(print_diff_leading_zeroes(diff,offset));
+      diff = clear_highbit(diff,relpos);
+    }
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches));
+    return nmismatches;
+
+  } else {
+#endif
+
+    /* Endblock */
+    diff = (block_diff)(query_shifted,&(ref_blocks[endblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset - (relpos = count_leading_zeroes(diff));
+      debug(print_diff_leading_zeroes(diff,offset));
+      diff = clear_highbit(diff,relpos);
+    }
+    if (nmismatches > max_mismatches) {
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches));
+      return nmismatches;
+    }
+
+    query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[endblocki-12]);
+#else
+    ptr = &(ref_blocks[endblocki]);
+    ptr -= 1; if (endcolumni-- == 0) {ptr -= 8; endcolumni = 3;}
+#endif
+    start = &(ref_blocks[startblocki]);
+    offset -= STEP_SIZE; /* 128 or 32 */
+    while (ptr > start) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+
+      while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+	mismatch_positions[nmismatches++] = offset - (relpos = count_leading_zeroes(diff));
+	debug(print_diff_leading_zeroes(diff,offset));
+	diff = clear_highbit(diff,relpos);
+      }
+      if (nmismatches > max_mismatches) {
+	debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches));
+	return nmismatches;
+      }
+
+      query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr -= 12;
+#else
+      ptr -= 1; if (endcolumni-- == 0) {ptr -= 8; endcolumni = 3;}
+#endif
+      offset -= STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Startblock */
+    diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+
+    while (nonzero_p(diff) && nmismatches <= max_mismatches) {
+      mismatch_positions[nmismatches++] = offset - (relpos = count_leading_zeroes(diff));
+      debug(print_diff_leading_zeroes(diff,offset));
+      diff = clear_highbit(diff,relpos);
+    }
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches));
+    return nmismatches;
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+static int
+mismatches_right_snps (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+		       Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p,
+		       bool query_unk_mismatch_local_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int nmismatches_both = 0, offset, relpos, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *ref_ptr, *alt_ptr, *start;
+  UINT4 diff_32;
+  Genomediff_T diff;
+#ifndef HAVE_BUILTIN_CLZ
+  Genomecomp_T top;
+#endif
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in mismatches_right_snps):\n");
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos3)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (startblocki_32 == endblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = (pos3 - 1) - enddiscard + 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + endcolumni
+#endif
+				  ,&(snp_blocks[endblocki_32]),&(ref_blocks[endblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    while (nonzero_p_32(diff_32) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset - (relpos = count_leading_zeroes_32(diff_32));
+      diff_32 = clear_highbit_32(diff_32,relpos);
+    }
+#ifdef DEBUG14
+    answer = nmismatches_both;
+    nmismatches_both = 0;
+#else
+    return nmismatches_both;
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = (pos3 - 1) - enddiscard + STEP_SIZE;
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
+		 nshift,startdiscard,enddiscard,offset));
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (startblocki == endblocki) {
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset - (relpos = count_leading_zeroes(diff));
+      debug(print_diff_leading_zeroes(diff,offset));
+      diff = clear_highbit(diff,relpos);
+    }
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches_both));
+    return nmismatches_both;
+
+  } else {
+#endif
+
+    /* Endblock */
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset - (relpos = count_leading_zeroes(diff));
+      debug(print_diff_leading_zeroes(diff,offset));
+      diff = clear_highbit(diff,relpos);
+    }
+    if (nmismatches_both > max_mismatches) {
+      debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches_both));
+      return nmismatches_both;
+    }
+
+    query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[endblocki-12]);
+    alt_ptr = &(snp_blocks[endblocki-12]);
+#else
+    ref_ptr = &(ref_blocks[endblocki]);
+    alt_ptr = &(snp_blocks[endblocki]);
+    ref_ptr -= 1; alt_ptr -= 1; if (endcolumni-- == 0) {ref_ptr -= 8; alt_ptr -= 8; endcolumni = 3;}
+#endif
+    start = &(ref_blocks[startblocki]);
+    offset -= STEP_SIZE; /* 128 or 32 */
+    while (ref_ptr > start) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+
+      while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+	mismatch_positions[nmismatches_both++] = offset - (relpos = count_leading_zeroes(diff));
+	debug(print_diff_leading_zeroes(diff,offset));
+	diff = clear_highbit(diff,relpos);
+      }
+      if (nmismatches_both > max_mismatches) {
+        debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches_both));
+	return nmismatches_both;
+      }
+
+      query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr -= 12; alt_ptr -= 12;
+#else
+      ref_ptr -= 1; alt_ptr -= 1; if (endcolumni-- == 0) {ref_ptr -= 8; alt_ptr -= 8; endcolumni = 3;}
+#endif
+      offset -= STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Startblock */
+    diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_local_p);
+    diff = clear_start(diff,startdiscard);
+
+    while (nonzero_p(diff) && nmismatches_both <= max_mismatches) {
+      mismatch_positions[nmismatches_both++] = offset - (relpos = count_leading_zeroes(diff));
+      debug(print_diff_leading_zeroes(diff,offset));
+      diff = clear_highbit(diff,relpos);
+    }
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == nmismatches_both));
+    return nmismatches_both;
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches */
+int
+Genome_mismatches_right (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			 Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p) {
+  int nmismatches;
+#ifdef DEBUG
+  int i;
+#endif
+
+#if 0
+  if (dibasep) {
+    debug(printf("Dibase_mismatches_right from %u+%d to %u+%d:\n",left,pos5,left,pos3));
+
+    nmismatches = Dibase_mismatches_right(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
+					  pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    nmismatches = mismatches_right(&(*mismatch_positions),max_mismatches,query_compress,
+				   left,pos5,pos3,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+  } else {
+    nmismatches = mismatches_right_snps(&(*mismatch_positions),max_mismatches,query_compress,
+					left,pos5,pos3,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+  }
+  mismatch_positions[nmismatches] = -1;
+  debug(
+	printf("%d mismatches on right: ",nmismatches);
+	for (i = 0; i <= nmismatches; i++) {
+	  printf("%d ",mismatch_positions[i]);
+	}
+	printf("\n");
+	);
+  return nmismatches;
+}
+
+
+/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches */
+/* See note above about why we set query_unk_mismatch_p to false */
+int
+Genome_mismatches_right_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			      Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p) {
+  int nmismatches;
+#ifdef DEBUG
+  int i;
+#endif
+
+#if 0
+  if (dibasep) {
+    debug(printf("Dibase_mismatches_right from %u+%d to %u+%d:\n",left,pos5,left,pos3));
+
+    nmismatches = Dibase_mismatches_right(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
+					  pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    nmismatches = mismatches_right(&(*mismatch_positions),max_mismatches,query_compress,
+				   left,pos5,pos3,plusp,genestrand,first_read_p,/*query_unk_mismatch_p*/false);
+  } else {
+    nmismatches = mismatches_right_snps(&(*mismatch_positions),max_mismatches,query_compress,
+					left,pos5,pos3,plusp,genestrand,first_read_p,/*query_unk_mismatch_p*/false);
+  }
+  mismatch_positions[nmismatches] = -1;
+  debug(
+	printf("%d mismatches on right: ",nmismatches);
+	for (i = 0; i <= nmismatches; i++) {
+	  printf("%d ",mismatch_positions[i]);
+	}
+	printf("\n");
+	);
+  return nmismatches;
+}
+
+
+/************************************************************************
+ *  Marking
+ ************************************************************************/
+
+/* Derived from mismatches_left() */
+int
+Genome_mark_mismatches_ref (char *genomic, int querylength, Compress_T query_compress,
+			    Univcoord_T left, int pos5, int pos3, int mismatch_offset,
+			    bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int mismatch_position;
+  int nmismatches = 0, offset, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *ptr, *end;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int relpos;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("genomic = %s\n",genomic);
+	printf("Genome (in mark_mismatches_ref):\n");
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    if (plusp == true) {
+      offset = -startdiscard + pos5 + mismatch_offset;
+    } else {
+      offset = -startdiscard + pos5 - mismatch_offset;
+    }
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + startcolumni
+#endif
+			      ,&(ref_blocks[startblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    while (nonzero_p_32(diff_32)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes_32(diff_32));
+      diff_32 = clear_lowbit_32(diff_32,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches++;
+    }
+    debug(printf("genomic = %s\n",genomic));
+#ifdef DEBUG14
+    answer = nmismatches;
+    nmismatches = 0;
+#else
+    return nmismatches;
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    if (plusp == true) {
+      offset = -startdiscard + pos5 + mismatch_offset;
+    } else {
+      offset = -startdiscard + pos5 - mismatch_offset;
+    }
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches++;
+    }
+    debug(printf("genomic = %s\n",genomic));
+    debug14(if (endblocki_32 == startblocki) assert(answer == nmismatches));
+    return nmismatches;
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+
+    while (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches++;
+    }
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[startblocki+12]);
+#else
+    ptr = &(ref_blocks[startblocki]);
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    offset += STEP_SIZE; /* 128 or 32 */
+    while (ptr < end) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+      while (nonzero_p(diff)) {
+	mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+	debug(print_diff_trailing_zeroes(diff,offset));
+	diff = clear_lowbit(diff,relpos);
+	if (plusp == false) {
+	  mismatch_position = (querylength - 1) - mismatch_position;
+	}
+	genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+	nmismatches++;
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr += 12;
+#else
+      ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+      offset += STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Endblock */
+    diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches++;
+    }
+    debug(printf("genomic = %s\n",genomic));
+    debug14(if (endblocki_32 == startblocki) assert(answer == nmismatches));
+    return nmismatches;
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+/* Derived from mismatches_left_snps() */
+static int
+mark_mismatches_snps (char *genomic, int querylength, Compress_T query_compress,
+		      Univcoord_T left, int pos5, int pos3, int mismatch_offset,
+		      bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int mismatch_position;
+  int nmismatches_both = 0, offset, nshift;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *query_shifted, *ref_ptr, *alt_ptr, *end;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int relpos;
+  int startcolumni, endcolumni;
+
+
+  debug(
+	printf("\n\n");
+	printf("genomic = %s\n",genomic);
+	printf("Genome (in mark_mismatches_snps):\n");
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    if (plusp == true) {
+      offset = -startdiscard + pos5 + mismatch_offset;
+    } else {
+      offset = -startdiscard + pos5 - mismatch_offset;
+    }
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + startcolumni
+#endif
+				  ,&(snp_blocks[startblocki_32]),&(ref_blocks[startblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_start_32(diff_32,startdiscard);
+    diff_32 = clear_end_32(diff_32,enddiscard);
+
+    while (nonzero_p_32(diff_32)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes_32(diff_32));
+      diff_32 = clear_lowbit_32(diff_32,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches_both++;
+    }
+    debug(printf("genomic = %s\n",genomic));
+#ifdef DEBUG14
+    answer = nmismatches_both;
+    nmismatches_both = 0;
+#else
+    return nmismatches_both;
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    if (plusp == true) {
+      offset = -startdiscard + pos5 + mismatch_offset;
+    } else {
+      offset = -startdiscard + pos5 - mismatch_offset;
+    }
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches_both++;
+    }
+    debug(printf("genomic = %s\n",genomic));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches_both));
+    return nmismatches_both;
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard);
+
+    while (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches_both++;
+    }
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[startblocki+12]);
+    alt_ptr = &(snp_blocks[startblocki+12]);
+#else
+    ref_ptr = &(ref_blocks[startblocki]);
+    alt_ptr = &(snp_blocks[startblocki]);
+    ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    offset += STEP_SIZE; /* 128 or 32 */
+    while (ref_ptr < end) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+      while (nonzero_p(diff)) {
+	mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+	debug(print_diff_trailing_zeroes(diff,offset));
+	diff = clear_lowbit(diff,relpos);
+	if (plusp == false) {
+	  mismatch_position = (querylength - 1) - mismatch_position;
+	}
+	genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+	nmismatches_both++;
+      }
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr += 12; alt_ptr += 12;
+#else
+      ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+      offset += STEP_SIZE; /* 128 or 32 */
+    }
+
+    /* Endblock */
+    diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard);
+
+    while (nonzero_p(diff)) {
+      mismatch_position = offset + (relpos = count_trailing_zeroes(diff));
+      debug(print_diff_trailing_zeroes(diff,offset));
+      diff = clear_lowbit(diff,relpos);
+      if (plusp == false) {
+	mismatch_position = (querylength - 1) - mismatch_position;
+      }
+      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
+      nmismatches_both++;
+    }
+    debug(printf("genomic = %s\n",genomic));
+    debug14(if (endblocki_32 == startblocki_32) assert(answer == nmismatches_both));
+    return nmismatches_both;
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+int
+Genome_mark_mismatches (char *genomic, int querylength, Compress_T query_compress,
+			Univcoord_T left, int pos5, int pos3, int mismatch_offset,
+			bool plusp, int genestrand, bool first_read_p) {
+
+#if 0
+  if (dibasep) {
+    fprintf(stderr,"Not implemented\n");
+#if 0
+    debug(printf("Dibase_mismatches_left from %u+%d to %u+%d:\n",left,pos5,left,pos3));
+
+    nmismatches = Dibase_mismatches_left(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
+					 pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
+    mismatch_positions[nmismatches] = pos3 + 1;	/* Need +1 because of starting assumed nt */
+#endif
+    return 0;
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    return Genome_mark_mismatches_ref(&(*genomic),querylength,query_compress,
+				      left,pos5,pos3,mismatch_offset,plusp,genestrand,first_read_p);
+  } else {
+    return mark_mismatches_snps(&(*genomic),querylength,query_compress,
+				left,pos5,pos3,mismatch_offset,plusp,genestrand,first_read_p);
+  }
+}
+
+
+/************************************************************************
+ *  Trimming
+ ************************************************************************/
+
+static int
+trim_left_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+		     bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int startdiscard, enddiscard, offset;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *ptr, *start;
+  Genomecomp_T *query_shifted;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  int startcolumni, endcolumni;
+
+  int totalscore, bestscore, score;
+  int trimpos;
+  Genomecomp_T p;
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in trim_left_substring) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos3)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (startblocki_32 == endblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = (pos3 - 1) - enddiscard + 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + endcolumni
+#endif
+			      ,&(ref_blocks[endblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff_32 = clear_end_32(diff_32,enddiscard); /* puts 0 (matches) at end */
+    diff_32 = set_start_32(diff_32,startdiscard);  /* puts 1 (mismatches) at start */
+
+
+    p = 3*(diff_32 >> 16);
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*(diff_32 & 0x0000FFFF);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    /* totalscore += score_high[p+2]; */
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset -= 16 */
+
+#ifdef DEBUG14
+    answer = (trimpos - 1);
+#else
+    return (trimpos - 1);	/* trimpos-1 is on side of mismatch */
+#endif
+
+    }
+#ifndef DEBUG14
+    else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = (pos3 - 1) - enddiscard + STEP_SIZE;
+
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
+		 nshift,startdiscard,enddiscard,offset));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (startblocki == endblocki) {
+    diff = (block_diff)(query_shifted,&(ref_blocks[endblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
+    diff = set_start(diff,startdiscard);  /* puts 1 (mismatches) at start */
+
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,_mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,_mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,_mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,_mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,_mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,_mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,_mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,_mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos - 1));
+    return trimpos - 1;		/* trimpos-1 is on side of mismatch */
+
+  } else {
+#endif
+
+    /* Endblock */
+    diff = (block_diff)(query_shifted,&(ref_blocks[endblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+#else
+    p = 3*(diff >> 16);
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*(diff & 0x0000FFFF);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+#endif
+
+    query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[endblocki-12]);
+#else
+    ptr = &(ref_blocks[endblocki]);
+    ptr -= 1; if (endcolumni-- == 0) {ptr -= 8; endcolumni = 3;}
+#endif
+    start = &(ref_blocks[startblocki]);
+    while (ptr > start) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+#ifdef HAVE_SSE2
+      p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+#else
+      p = 3*(diff >> 16);
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*(diff & 0x0000FFFF);
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+#endif
+
+      query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr -= 12;
+#else
+      ptr -= 1; if (endcolumni-- == 0) {ptr -= 8; endcolumni = 3;}
+#endif
+    }
+
+    /* Startblock */
+    diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = set_start(diff,startdiscard); /* puts 1 (mismatches) at start */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+#else
+    p = 3*(diff >> 16);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*(diff & 0x0000FFFF);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    /* totalscore += score_high[p+2]; */
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset -= 16; */
+#endif
+    
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos - 1));
+    return (trimpos - 1);	/* trimpos-1 is on side of mismatch */
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+static int
+trim_left_substring_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+			  bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int startdiscard, enddiscard, offset;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *ref_ptr, *alt_ptr, *start;
+  Genomecomp_T *query_shifted;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  int startcolumni, endcolumni;
+
+  int totalscore, bestscore, score;
+  int trimpos;
+  Genomecomp_T p;
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in trim_left_substring_snps) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos3)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (startblocki_32 == endblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = (pos3 - 1) - enddiscard + 32;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + endcolumni
+#endif
+				  ,&(snp_blocks[endblocki_32]),&(ref_blocks[endblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff_32 = clear_end_32(diff_32,enddiscard); /* puts 0 (matches) at end */
+    diff_32 = set_start_32(diff_32,startdiscard);  /* puts 1 (mismatches) at start */
+
+
+    p = 3*(diff_32 >> 16);
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*(diff_32 & 0x0000FFFF);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    /* totalscore += score_high[p+2]; */
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset -= 16; */
+    
+#ifdef DEBUG14
+    answer = (trimpos - 1);
+#else
+    return (trimpos - 1);	/* trimpos-1 is on side of mismatch */
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = (pos3 - 1) - enddiscard + STEP_SIZE;
+    
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
+		 nshift,startdiscard,enddiscard,offset));
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (startblocki == endblocki) {
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
+    diff = set_start(diff,startdiscard);  /* puts 1 (mismatches) at start */
+
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+    
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piecei %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos - 1));
+    return trimpos - 1;		/* trimpos-1 is on side of mismatch */
+
+  } else {
+#endif
+
+    /* Endblock */
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[endblocki]),&(ref_blocks[endblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+    
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+#else
+    p = 3*(diff >> 16);
+    bestscore = score_high[p];
+    trimpos = offset - score_high[p+1];
+    totalscore = score_high[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*(diff & 0x0000FFFF);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+#endif
+
+    query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[endblocki-12]);
+    alt_ptr = &(snp_blocks[endblocki-12]);
+#else
+    ref_ptr = &(ref_blocks[endblocki]);
+    alt_ptr = &(snp_blocks[endblocki]);
+    ref_ptr -= 1; alt_ptr -= 1; if (endcolumni-- == 0) {ref_ptr -= 8; alt_ptr -= 8; endcolumni = 3;}
+#endif
+    start = &(ref_blocks[startblocki]);
+    while (ref_ptr > start) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+#ifdef HAVE_SSE2
+      p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+#else
+      p = 3*(diff >> 16);
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+
+      p = 3*(diff & 0x0000FFFF);
+      if ((score = score_high[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset - score_high[p+1];
+      }
+      totalscore += score_high[p+2];
+      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset -= 16;
+#endif
+
+      query_shifted -= COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr -= 12; alt_ptr -= 12;
+#else
+      ref_ptr -= 1; alt_ptr -= 1; if (endcolumni-- == 0) {ref_ptr -= 8; alt_ptr -= 8; endcolumni = 3;}
+#endif
+    }
+
+    /* Startblock */
+    diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff = set_start(diff,startdiscard); /* puts 1 (mismatches) at start */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+#else
+    p = 3*(diff >> 16);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    totalscore += score_high[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset -= 16;
+
+    p = 3*(diff & 0x0000FFFF);
+    if ((score = score_high[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset - score_high[p+1];
+    }
+    /* totalscore += score_high[p+2]; */
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset -= 16; */
+#endif
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos - 1));
+    return (trimpos - 1);	/* trimpos-1 is on side of mismatch */
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+
+static int
+trim_right_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+		      bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int startdiscard, enddiscard, offset;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *ptr, *end;
+  Genomecomp_T *query_shifted;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  int startcolumni, endcolumni;
+
+  int totalscore, bestscore, score;
+  int trimpos;
+  Genomecomp_T p;
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in trim_right_substring) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = -startdiscard + pos5;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_32)(query_shifted
+#ifdef HAVE_SSE2
+			      + startcolumni
+#endif
+			      ,&(ref_blocks[startblocki_32]),
+			      plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff_32 = clear_start_32(diff_32,startdiscard); /* puts 0 (matches) at start */
+    diff_32 = set_end_32(diff_32,enddiscard);  /* puts 1 (mismatches) at end */
+
+
+    p = 3*(diff_32 & 0x0000FFFF);
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*(diff_32 >> 16);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    /* totalscore += score_low[p+2]; */
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset += 16; */
+    
+#ifdef DEBUG14
+    answer = (trimpos + 1);
+#else
+    return (trimpos + 1);	/* trimpos+1 is on side of mismatch */
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = -startdiscard + pos5;
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+#ifndef DEBUG14
+  }
+#endif
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
+    diff = set_end(diff,enddiscard);  /* puts 1 (mismatches) at end */
+
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos + 1));
+    return (trimpos + 1);	/* trimpos+1 is on side of mismatch */
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff)(query_shifted,&(ref_blocks[startblocki]),
+			plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
+    debug(printf("clearing start %08X\n",clear_start_mask(startdiscard)));
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+	      7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+      
+#else
+    p = 3*(diff & 0x0000FFFF);
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*(diff >> 16);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+#endif
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ptr = &(ref_blocks[startblocki+12]);
+#else
+    ptr = &(ref_blocks[startblocki]);
+    ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    while (ptr < end) {
+      diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+#ifdef HAVE_SSE2
+      p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+#else
+      p = 3*(diff & 0x0000FFFF);
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*(diff >> 16);
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+#endif
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ptr += 12;
+#else
+      ptr += 1; if (++startcolumni == 4) {ptr += 8; startcolumni = 0;}
+#endif
+    }
+
+    /* Endblock */
+    diff = (block_diff)(query_shifted,ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = set_end(diff,enddiscard); /* puts 1 (mismatches) at end */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+#else
+    p = 3*(diff & 0x0000FFFF);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*(diff >> 16);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    /* totalscore += score_low[p+2]; */
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset += 16; */
+#endif
+    
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos + 1));
+    return (trimpos + 1);	/* trimpos+1 is on side of mismatch */
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+
+static int
+trim_right_substring_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+			   bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG14
+  int answer;
+#endif
+  int startdiscard, enddiscard, offset;
+  Univcoord_T startblocki, endblocki, startblocki_32, endblocki_32;
+  Genomecomp_T *ref_ptr, *alt_ptr, *end;
+  Genomecomp_T *query_shifted;
+  UINT4 diff_32;
+  Genomediff_T diff;
+  int nshift;
+  int startcolumni, endcolumni;
+
+  int totalscore, bestscore, score;
+  int trimpos;
+  Genomecomp_T p;
+
+  debug(
+	printf("\n\n");
+	printf("Genome (in trim_right_substring_snps) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
+	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+
+  startblocki = (left+pos5)/128U*12;
+  startcolumni = ((left+pos5) % 128) / 32;
+  startblocki_32 = startblocki + startcolumni;
+
+  endblocki = (left+pos3)/128U*12;
+  endcolumni = ((left+pos3) % 128) / 32;
+  endblocki_32 = endblocki + endcolumni;
+
+  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+
+  nshift = left % STEP_SIZE;
+  query_shifted = Compress_shift(query_compress,nshift);
+  debug(printf("Query shifted %d:\n",nshift));
+  debug(Compress_print_blocks(query_shifted,nshift,pos5,pos3));
+  query_shifted += (nshift+pos5)/STEP_SIZE*COMPRESS_BLOCKSIZE;
+
+  if (endblocki_32 == startblocki_32) {
+    startdiscard = (left+pos5) % 32;
+    enddiscard = (left+pos3) % 32;
+    offset = -startdiscard + pos5;
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+
+
+    diff_32 = (block_diff_snp_32)(query_shifted
+#ifdef HAVE_SSE2
+				  + startcolumni
+#endif
+				  ,&(snp_blocks[startblocki_32]),&(ref_blocks[startblocki_32]),
+				  plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff_32 = clear_start_32(diff_32,startdiscard); /* puts 0 (matches) at start */
+    diff_32 = set_end_32(diff_32,enddiscard);  /* puts 1 (mismatches) at end */
+
+
+    p = 3*(diff_32 & 0x0000FFFF);
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*(diff_32 >> 16);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    /* totalscore += score_low[p+2]; */
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff_32 >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset += 16; */
+    
+#ifdef DEBUG14
+    answer = (trimpos + 1);
+#else
+    return (trimpos + 1);	/* trimpos+1 is on side of mismatch */
+#endif
+
+  }
+#ifndef DEBUG14
+  else {
+#endif
+
+#ifdef HAVE_SSE2
+#else
+    startblocki = startblocki_32;
+    endblocki = endblocki_32;
+#endif
+
+    startdiscard = (left+pos5) % STEP_SIZE;
+    enddiscard = (left+pos3) % STEP_SIZE;
+    offset = -startdiscard + pos5;
+  
+    debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
+#ifndef DEBUG14
+  }
+#endif  
+
+
+#ifdef HAVE_SSE2
+  if (endblocki == startblocki) {
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
+    diff = set_end(diff,enddiscard);  /* puts 1 (mismatches) at end */
+
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos + 1));
+    return (trimpos + 1);	/* trimpos+1 is on side of mismatch */
+
+  } else {
+#endif
+
+    /* Startblock */
+    diff = (block_diff_snp)(query_shifted,&(snp_blocks[startblocki]),&(ref_blocks[startblocki]),
+			    plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+#else
+    p = 3*(diff & 0x0000FFFF);
+    bestscore = score_low[p];
+    trimpos = offset + score_low[p+1];
+    totalscore = score_low[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*(diff >> 16);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+#endif
+
+    query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+    ref_ptr = &(ref_blocks[startblocki+12]);
+    alt_ptr = &(snp_blocks[startblocki+12]);
+#else
+    ref_ptr = &(ref_blocks[startblocki]);
+    alt_ptr = &(snp_blocks[startblocki]);
+    ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    end = &(ref_blocks[endblocki]);
+    while (ref_ptr < end) {
+      diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+#ifdef HAVE_SSE2
+      p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+#else
+      p = 3*(diff & 0x0000FFFF);
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+
+      p = 3*(diff >> 16);
+      if ((score = score_low[p] + totalscore) > bestscore) {
+	bestscore = score;
+	trimpos = offset + score_low[p+1];
+      }
+      totalscore += score_low[p+2];
+      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+      offset += 16;
+#endif
+
+      query_shifted += COMPRESS_BLOCKSIZE;
+#ifdef HAVE_SSE2
+      ref_ptr += 12; alt_ptr += 12;
+#else
+      ref_ptr += 1; alt_ptr += 1; if (++startcolumni == 4) {ref_ptr += 8; alt_ptr += 8; startcolumni = 0;}
+#endif
+    }
+
+    /* Endblock */
+    diff = (block_diff_snp)(query_shifted,alt_ptr,ref_ptr,plusp,genestrand,first_read_p,query_unk_mismatch_p);
+
+    diff = set_end(diff,enddiscard); /* puts 1 (mismatches) at end */
+
+#ifdef HAVE_SSE2
+    p = 3*((unsigned short) _mm_extract_epi16(diff,0));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 0,(unsigned short) _mm_extract_epi16(diff,0),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,1));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 1,(unsigned short) _mm_extract_epi16(diff,1),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,2));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 2,(unsigned short) _mm_extract_epi16(diff,2),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,3));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 3,(unsigned short) _mm_extract_epi16(diff,3),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,4));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 4,(unsigned short) _mm_extract_epi16(diff,4),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,5));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 5,(unsigned short) _mm_extract_epi16(diff,5),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,6));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 6,(unsigned short) _mm_extract_epi16(diff,6),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*((unsigned short) _mm_extract_epi16(diff,7));
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff piece %d %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 7,(unsigned short) _mm_extract_epi16(diff,7),score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+#else
+    p = 3*(diff & 0x0000FFFF);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    totalscore += score_low[p+2];
+    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    offset += 16;
+
+    p = 3*(diff >> 16);
+    if ((score = score_low[p] + totalscore) > bestscore) {
+      bestscore = score;
+      trimpos = offset + score_low[p+1];
+    }
+    /* totalscore += score_low[p+2]; */
+    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
+		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
+    /* offset += 16; */
+#endif
+
+    debug14(if (startblocki_32 == endblocki_32) assert(answer == trimpos + 1));
+    return (trimpos + 1);	/* trimpos+1 is on side of mismatch */
+
+#ifdef HAVE_SSE2
+  }
+#endif
+}
+
+
+int
+Genome_trim_left (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+		  bool plusp, int genestrand, bool first_read_p) {
+#if 0
+  if (dibasep) {
+    /* Not implemented */
+    return 0;
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    return trim_left_substring(query_compress,left,pos5,pos3,plusp,genestrand,first_read_p);
+  } else {
+    return trim_left_substring_snps(query_compress,left,pos5,pos3,plusp,genestrand,first_read_p);
+  }
+}
+
+int
+Genome_trim_right (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+		   bool plusp, int genestrand, bool first_read_p) {
+#if 0
+  if (dibasep) {
+    /* Not implemented */
+    return 0;
+  }
+#endif
+
+  if (snp_blocks == NULL) {
+    return trim_right_substring(query_compress,left,pos5,pos3,plusp,genestrand,first_read_p);
+  } else {
+    return trim_right_substring_snps(query_compress,left,pos5,pos3,plusp,genestrand,first_read_p);
+  }
+}
+
+
+
diff --git a/src/genome128_hr.h b/src/genome128_hr.h
new file mode 100644
index 0000000..f5bbadd
--- /dev/null
+++ b/src/genome128_hr.h
@@ -0,0 +1,76 @@
+/* $Id: genome128_hr.h 133760 2014-04-20 05:16:56Z twu $ */
+#ifndef GENOME128_HR_INCLUDED
+#define GENOME128_HR_INCLUDED
+#include "types.h"
+#include "mode.h"
+#include "genomicpos.h"
+#include "compress.h"
+
+extern void
+Genome_hr_setup (Genomecomp_T *ref_blocks_in, Genomecomp_T *snp_blocks_in,
+		 bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
+		 Mode_T mode_in);
+
+extern void
+Genome_hr_user_setup (UINT4 *ref_blocks_in,
+		      bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
+		      Mode_T mode_in);
+
+extern int
+Genome_consecutive_matches_rightward (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				      bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_consecutive_matches_leftward (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				     bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_consecutive_matches_pair (UINT4 lefta, UINT4 leftb, UINT4 genomelength);
+
+extern int
+Genome_count_mismatches_limit (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+			       int max_mismatches, bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_count_mismatches_substring_ref (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				       bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_count_mismatches_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+				   bool plusp, int genestrand, bool first_read_p);
+
+extern int
+Genome_count_mismatches_fragment_left (Compress_T query_compress, int pos5, int pos3,
+				       Genomecomp_T ref_fragment, Genomecomp_T alt_fragment);
+extern int
+Genome_count_mismatches_fragment_right (Compress_T query_compress, int pos5, int pos3,
+					Genomecomp_T ref_fragment, Genomecomp_T alt_fragment);
+
+extern int
+Genome_mismatches_left (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_mismatches_left_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			     Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_mismatches_right (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			 Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_mismatches_right_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
+			      Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand, bool first_read_p);
+
+extern int
+Genome_mark_mismatches_ref (char *genomic, int querylength, Compress_T query_compress,
+			    Univcoord_T left, int pos5, int pos3, int mismatch_offset,
+			    bool plusp, int genestrand, bool first_read_p);
+extern int
+Genome_mark_mismatches (char *genomic, int querylength, Compress_T query_compress,
+			Univcoord_T left, int pos5, int pos3, int mismatch_offset,
+			bool plusp, int genestrand, bool first_read_p);
+
+extern int
+Genome_trim_left (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+		  bool plusp, int genestrand, bool first_read_p);
+
+extern int
+Genome_trim_right (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
+		   bool plusp, int genestrand, bool first_read_p);
+
+#endif
+
diff --git a/src/genome_hr.c b/src/genome_hr.c
deleted file mode 100644
index 2de5aee..0000000
--- a/src/genome_hr.c
+++ /dev/null
@@ -1,71664 +0,0 @@
-static char rcsid[] = "$Id: genome_hr.c 99749 2013-06-27 21:03:51Z twu $";
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifndef HAVE_MEMCPY
-# define memcpy(d,s,n) bcopy((s),(d),(n))
-#endif
-#ifndef HAVE_MEMMOVE
-# define memmove(d,s,n) bcopy((s),(d),(n))
-#endif
-
-#include "genome_hr.h"
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>		/* For tolower() */
-
-#include "assert.h"
-#include "except.h"
-#include "mem.h"
-#include "cmet.h"
-#include "atoi.h"
-
-
-#ifdef WORDS_BIGENDIAN
-#include "bigendian.h"
-#else
-#include "littleendian.h"
-#endif
-
-
-#ifdef DEBUG
-#define debug(x) x
-#else
-#define debug(x)
-#endif
-
-/* Fragments */
-#ifdef DEBUG1
-#define debug1(x) x
-#else
-#define debug1(x)
-#endif
-
-/* Splice sites */
-#ifdef DEBUG2
-#define debug2(x) x
-#else
-#define debug2(x)
-#endif
-
-/* last_dinucleotide_positions */
-#ifdef DEBUG3
-#define debug3(x) x
-#else
-#define debug3(x)
-#endif
-
-/* prev_dinucleotide_positions_fwd */
-#ifdef DEBUG3A
-#define debug3a(x) x
-#else
-#define debug3a(x)
-#endif
-
-/* prev_dinucleotide_positions_rev */
-#ifdef DEBUG3B
-#define debug3b(x) x
-#else
-#define debug3b(x)
-#endif
-
-
-#ifndef HAVE_BUILTIN_POPCOUNT
-static const int count_bits[] =
-{ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
-  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
- 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
- 11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,12,13,13,14,13,14,14,15,13,14,14,15,14,15,15,16,
- };
-#endif
-
-static const Genomecomp_T reduce_nt[] =
-{0x00,0x01,0x01,0x01,0x02,0x03,0x03,0x03,0x02,0x03,0x03,0x03,0x02,0x03,0x03,0x03,
- 0x04,0x05,0x05,0x05,0x06,0x07,0x07,0x07,0x06,0x07,0x07,0x07,0x06,0x07,0x07,0x07,
- 0x04,0x05,0x05,0x05,0x06,0x07,0x07,0x07,0x06,0x07,0x07,0x07,0x06,0x07,0x07,0x07,
- 0x04,0x05,0x05,0x05,0x06,0x07,0x07,0x07,0x06,0x07,0x07,0x07,0x06,0x07,0x07,0x07,
- 0x08,0x09,0x09,0x09,0x0A,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x08,0x09,0x09,0x09,0x0A,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x08,0x09,0x09,0x09,0x0A,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x0C,0x0D,0x0D,0x0D,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,
- 0x10,0x11,0x11,0x11,0x12,0x13,0x13,0x13,0x12,0x13,0x13,0x13,0x12,0x13,0x13,0x13,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x10,0x11,0x11,0x11,0x12,0x13,0x13,0x13,0x12,0x13,0x13,0x13,0x12,0x13,0x13,0x13,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x10,0x11,0x11,0x11,0x12,0x13,0x13,0x13,0x12,0x13,0x13,0x13,0x12,0x13,0x13,0x13,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x14,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x18,0x19,0x19,0x19,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,0x1A,0x1B,0x1B,0x1B,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x1C,0x1D,0x1D,0x1D,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,0x1E,0x1F,0x1F,0x1F,
- 0x20,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x20,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x20,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x26,0x27,0x27,0x27,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x28,0x29,0x29,0x29,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,0x2A,0x2B,0x2B,0x2B,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x2C,0x2D,0x2D,0x2D,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,0x2E,0x2F,0x2F,0x2F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x30,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x32,0x33,0x33,0x33,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x34,0x35,0x35,0x35,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,0x36,0x37,0x37,0x37,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x38,0x39,0x39,0x39,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,0x3A,0x3B,0x3B,0x3B,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x3C,0x3D,0x3D,0x3D,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,0x3E,0x3F,0x3F,0x3F,
- 0x40,0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x40,0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x40,0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x44,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x48,0x49,0x49,0x49,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,0x4A,0x4B,0x4B,0x4B,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x4C,0x4D,0x4D,0x4D,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,0x4E,0x4F,0x4F,0x4F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x54,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x56,0x57,0x57,0x57,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x58,0x59,0x59,0x59,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,0x5A,0x5B,0x5B,0x5B,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x5C,0x5D,0x5D,0x5D,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,0x5E,0x5F,0x5F,0x5F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,0x62,0x63,0x63,0x63,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,0x66,0x67,0x67,0x67,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x68,0x69,0x69,0x69,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,0x6A,0x6B,0x6B,0x6B,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x6C,0x6D,0x6D,0x6D,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,0x6E,0x6F,0x6F,0x6F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x70,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,0x72,0x73,0x73,0x73,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,0x76,0x77,0x77,0x77,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7B,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x7C,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,
- 0x80,0x81,0x81,0x81,0x82,0x83,0x83,0x83,0x82,0x83,0x83,0x83,0x82,0x83,0x83,0x83,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0x80,0x81,0x81,0x81,0x82,0x83,0x83,0x83,0x82,0x83,0x83,0x83,0x82,0x83,0x83,0x83,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0x80,0x81,0x81,0x81,0x82,0x83,0x83,0x83,0x82,0x83,0x83,0x83,0x82,0x83,0x83,0x83,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x84,0x85,0x85,0x85,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x87,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x88,0x89,0x89,0x89,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,0x8A,0x8B,0x8B,0x8B,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x8C,0x8D,0x8D,0x8D,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,0x8E,0x8F,0x8F,0x8F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x90,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,0x92,0x93,0x93,0x93,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x94,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,0x96,0x97,0x97,0x97,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x98,0x99,0x99,0x99,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9B,0x9B,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0x9C,0x9D,0x9D,0x9D,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,0x9E,0x9F,0x9F,0x9F,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xA0,0xA1,0xA1,0xA1,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,0xA2,0xA3,0xA3,0xA3,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA4,0xA5,0xA5,0xA5,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,0xA6,0xA7,0xA7,0xA7,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xA8,0xA9,0xA9,0xA9,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,0xAA,0xAB,0xAB,0xAB,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xAC,0xAD,0xAD,0xAD,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,0xAE,0xAF,0xAF,0xAF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB0,0xB1,0xB1,0xB1,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,0xB2,0xB3,0xB3,0xB3,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB4,0xB5,0xB5,0xB5,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,0xB6,0xB7,0xB7,0xB7,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xB8,0xB9,0xB9,0xB9,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,0xBA,0xBB,0xBB,0xBB,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xBC,0xBD,0xBD,0xBD,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,0xBF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xC0,0xC1,0xC1,0xC1,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,0xC2,0xC3,0xC3,0xC3,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC4,0xC5,0xC5,0xC5,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,0xC6,0xC7,0xC7,0xC7,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xC8,0xC9,0xC9,0xC9,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,0xCA,0xCB,0xCB,0xCB,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xCC,0xCD,0xCD,0xCD,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,0xCE,0xCF,0xCF,0xCF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD0,0xD1,0xD1,0xD1,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,0xD2,0xD3,0xD3,0xD3,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD4,0xD5,0xD5,0xD5,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,0xD6,0xD7,0xD7,0xD7,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xD8,0xD9,0xD9,0xD9,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,0xDA,0xDB,0xDB,0xDB,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xDC,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xE0,0xE1,0xE1,0xE1,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,0xE2,0xE3,0xE3,0xE3,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE4,0xE5,0xE5,0xE5,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,0xE6,0xE7,0xE7,0xE7,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xE8,0xE9,0xE9,0xE9,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,0xEA,0xEB,0xEB,0xEB,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xEC,0xED,0xED,0xED,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,0xEE,0xEF,0xEF,0xEF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF0,0xF1,0xF1,0xF1,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,0xF2,0xF3,0xF3,0xF3,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF4,0xF5,0xF5,0xF5,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,0xF6,0xF7,0xF7,0xF7,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xF8,0xF9,0xF9,0xF9,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- 0xFC,0xFD,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
- };
-
-#ifndef HAVE_BUILTIN_CLZ
-static const int clz_table[] =
-{16,15,14,14,13,13,13,13,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-#endif
-
-/* bestscore, besti, totalscore from low bit */
-static const int score_low[] =
-{16,15, 16,14,15, 14,14,15, 14,12,15, 12,14,15, 14,12,15, 12,12,15, 12,10,15, 10,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 14,15, 14,12,15, 12,12,15, 12,10,15, 10,12,15, 12,10,15, 10,10,15, 10, 8,15,  8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 12,15, 12,10,15, 10,10,15, 10, 8,15,  8,10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,15, 10, 8,15,  8, 8,15,  8, 6,15,  6, 8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,15,  8, 6,15,  6, 6,15,  6, 4,15,  4, 6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,15,  6, 4,15,  4, 4,15,  4, 2,15,  2, 4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0,
-  4,15,  4, 2,15,  2, 2,15,  2, 0,15,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 12,11, 12,10,11, 10,10,11, 10, 8,11,  8,10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 14,13, 14,12,13, 12,12,13, 12,10,13, 10,12,13, 12,10,13, 10,10,13, 10, 8,13,  8,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 12,13, 12,10,13, 10,10,13, 10, 8,13,  8,10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,13, 10, 8,13,  8, 8,13,  8, 6,13,  6, 8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  8, 6,13,  6, 6,13,  6, 4,13,  4, 6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,13,  6, 4,13,  4, 4,13,  4, 2,13,  2, 4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0,
-  4,13,  4, 2,13,  2, 2,13,  2, 0,13,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 12,11, 12,10,11, 10,10,11, 10, 8,11,  8,10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,11, 10, 8,11,  8, 8,11,  8, 6,11,  6, 8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  8, 6,11,  6, 6,11,  6, 4,11,  4, 6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6,11,  6, 4,11,  4, 4,11,  4, 2,11,  2, 4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0,
-  4,11,  4, 2,11,  2, 2,11,  2, 0,11,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10, 9, 10, 8, 9,  8, 8, 9,  8, 6, 9,  6, 8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  8, 6, 9,  6, 6, 9,  6, 4, 9,  4, 6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 9,  6, 4, 9,  4, 4, 9,  4, 2, 9,  2, 4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0,
-  4, 9,  4, 2, 9,  2, 2, 9,  2, 0, 9,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 7,  8, 6, 7,  6, 6, 7,  6, 4, 7,  4, 6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  6, 7,  6, 4, 7,  4, 4, 7,  4, 2, 7,  2, 4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0,
-  4, 7,  4, 2, 7,  2, 2, 7,  2, 0, 7,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 5,  6, 4, 5,  4, 4, 5,  4, 2, 5,  2, 4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0,
-  4, 5,  4, 2, 5,  2, 2, 5,  2, 0, 5,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  4, 3,  4, 2, 3,  2, 2, 3,  2, 0, 3,  0, 2, 1,  2, 0, 1,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 13,12, 12,11,12, 10,11,12, 10, 9,12,  8,11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 12,11, 10,10,11,  8,10,11,  8, 8,11,  6,10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
- 15,14, 14,13,14, 12,13,14, 12,11,14, 10,13,14, 12,11,14, 10,11,14, 10, 9,14,  8,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 13,14, 12,11,14, 10,11,14, 10, 9,14,  8,11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 11,14, 10, 9,14,  8, 9,14,  8, 7,14,  6, 9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,14,  8, 7,14,  6, 7,14,  6, 5,14,  4, 7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,14,  6, 5,14,  4, 5,14,  4, 3,14,  2, 5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  5,14,  4, 3,14,  2, 3,14,  2, 1,14,  0, 3,14,  2, 1,14,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 13,12, 12,11,12, 10,11,12, 10, 9,12,  8,11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 11,12, 10, 9,12,  8, 9,12,  8, 7,12,  6, 9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  8, 7,12,  6, 7,12,  6, 5,12,  4, 7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  6, 5,12,  4, 5,12,  4, 3,12,  2, 5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  5,12,  4, 3,12,  2, 3,12,  2, 1,12,  0, 3,12,  2, 1,12,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 11,10, 10, 9,10,  8, 9,10,  8, 7,10,  6, 9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  8, 7,10,  6, 7,10,  6, 5,10,  4, 7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  6, 5,10,  4, 5,10,  4, 3,10,  2, 5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  5,10,  4, 3,10,  2, 3,10,  2, 1,10,  0, 3,10,  2, 1,10,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9, 8,  8, 7, 8,  6, 7, 8,  6, 5, 8,  4, 7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  6, 5, 8,  4, 5, 8,  4, 3, 8,  2, 5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  5, 8,  4, 3, 8,  2, 3, 8,  2, 1, 8,  0, 3, 8,  2, 1, 8,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 6,  6, 5, 6,  4, 5, 6,  4, 3, 6,  2, 5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  5, 6,  4, 3, 6,  2, 3, 6,  2, 1, 6,  0, 3, 6,  2, 1, 6,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  5, 4,  4, 3, 4,  2, 3, 4,  2, 1, 4,  0, 3, 4,  2, 1, 4,  0, 1, 0,  0,-1, 0, -2,
-  3, 2,  2, 1, 2,  0, 1, 0,  0,-1, 0, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 12,11, 10,10,11,  8,10,11,  8, 8,11,  6,10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
- 14,13, 12,12,13, 10,12,13, 10,10,13,  8,12,13, 10,10,13,  8,10,13,  8, 8,13,  6,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 12,13, 10,10,13,  8,10,13,  8, 8,13,  6,10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10,13,  8, 8,13,  6, 8,13,  6, 6,13,  4, 8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,13,  6, 6,13,  4, 6,13,  4, 4,13,  2, 6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,13,  4, 4,13,  2, 4,13,  2, 2,13,  0, 4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2,
-  4,13,  2, 2,13,  0, 2,13,  0, 0,13, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 12,11, 10,10,11,  8,10,11,  8, 8,11,  6,10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10,11,  8, 8,11,  6, 8,11,  6, 6,11,  4, 8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  6, 6,11,  4, 6,11,  4, 4,11,  2, 6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6,11,  4, 4,11,  2, 4,11,  2, 2,11,  0, 4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2,
-  4,11,  2, 2,11,  0, 2,11,  0, 0,11, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10, 9,  8, 8, 9,  6, 8, 9,  6, 6, 9,  4, 8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  6, 6, 9,  4, 6, 9,  4, 4, 9,  2, 6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 9,  4, 4, 9,  2, 4, 9,  2, 2, 9,  0, 4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2,
-  4, 9,  2, 2, 9,  0, 2, 9,  0, 0, 9, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 7,  6, 6, 7,  4, 6, 7,  4, 4, 7,  2, 6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  6, 7,  4, 4, 7,  2, 4, 7,  2, 2, 7,  0, 4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2,
-  4, 7,  2, 2, 7,  0, 2, 7,  0, 0, 7, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 5,  4, 4, 5,  2, 4, 5,  2, 2, 5,  0, 4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2,
-  4, 5,  2, 2, 5,  0, 2, 5,  0, 0, 5, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  4, 3,  2, 2, 3,  0, 2, 3,  0, 0, 3, -2, 2, 1,  0, 0, 1, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
- 13,12, 10,11,12,  8,11,12,  8, 9,12,  6,11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 11,12,  8, 9,12,  6, 9,12,  6, 7,12,  4, 9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,12,  6, 7,12,  4, 7,12,  4, 5,12,  2, 7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,12,  4, 5,12,  2, 5,12,  2, 3,12,  0, 5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  5,12,  2, 3,12,  0, 3,12,  0, 1,12, -2, 3,12,  0, 1,12, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 11,10,  8, 9,10,  6, 9,10,  6, 7,10,  4, 9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,10,  6, 7,10,  4, 7,10,  4, 5,10,  2, 7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  4, 5,10,  2, 5,10,  2, 3,10,  0, 5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  5,10,  2, 3,10,  0, 3,10,  0, 1,10, -2, 3,10,  0, 1,10, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9, 8,  6, 7, 8,  4, 7, 8,  4, 5, 8,  2, 7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  4, 5, 8,  2, 5, 8,  2, 3, 8,  0, 5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  5, 8,  2, 3, 8,  0, 3, 8,  0, 1, 8, -2, 3, 8,  0, 1, 8, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 6,  4, 5, 6,  2, 5, 6,  2, 3, 6,  0, 5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  5, 6,  2, 3, 6,  0, 3, 6,  0, 1, 6, -2, 3, 6,  0, 1, 6, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  5, 4,  2, 3, 4,  0, 3, 4,  0, 1, 4, -2, 3, 4,  0, 1, 4, -2, 1, 0, -2,-1, 0, -4,
-  3, 2,  0, 1, 2, -2, 1, 0, -2,-1, 0, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
- 12,11,  8,10,11,  6,10,11,  6, 8,11,  4,10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
- 10,11,  6, 8,11,  4, 8,11,  4, 6,11,  2, 8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8,11,  4, 6,11,  2, 6,11,  2, 4,11,  0, 6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6,11,  2, 4,11,  0, 4,11,  0, 2,11, -2, 4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4,
-  4,11,  0, 2,11, -2, 2,11, -2, 0,11, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
- 10, 9,  6, 8, 9,  4, 8, 9,  4, 6, 9,  2, 8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 9,  4, 6, 9,  2, 6, 9,  2, 4, 9,  0, 6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 9,  2, 4, 9,  0, 4, 9,  0, 2, 9, -2, 4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4,
-  4, 9,  0, 2, 9, -2, 2, 9, -2, 0, 9, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 7,  4, 6, 7,  2, 6, 7,  2, 4, 7,  0, 6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  6, 7,  2, 4, 7,  0, 4, 7,  0, 2, 7, -2, 4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4,
-  4, 7,  0, 2, 7, -2, 2, 7, -2, 0, 7, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 5,  2, 4, 5,  0, 4, 5,  0, 2, 5, -2, 4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4,
-  4, 5,  0, 2, 5, -2, 2, 5, -2, 0, 5, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  4, 3,  0, 2, 3, -2, 2, 3, -2, 0, 3, -4, 2, 1, -2, 0, 1, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
- 11,10,  6, 9,10,  4, 9,10,  4, 7,10,  2, 9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0,
-  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
-  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  9,10,  4, 7,10,  2, 7,10,  2, 5,10,  0, 7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7,10,  2, 5,10,  0, 5,10,  0, 3,10, -2, 5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  5,10,  0, 3,10, -2, 3,10, -2, 1,10, -4, 3,10, -2, 1,10, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  9, 8,  4, 7, 8,  2, 7, 8,  2, 5, 8,  0, 7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  2, 5, 8,  0, 5, 8,  0, 3, 8, -2, 5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  5, 8,  0, 3, 8, -2, 3, 8, -2, 1, 8, -4, 3, 8, -2, 1, 8, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 6,  2, 5, 6,  0, 5, 6,  0, 3, 6, -2, 5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  5, 6,  0, 3, 6, -2, 3, 6, -2, 1, 6, -4, 3, 6, -2, 1, 6, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  5, 4,  0, 3, 4, -2, 3, 4, -2, 1, 4, -4, 3, 4, -2, 1, 4, -4, 1, 0, -4,-1, 0, -6,
-  3, 2, -2, 1, 2, -4, 1, 0, -4,-1, 0, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
- 10, 9,  4, 8, 9,  2, 8, 9,  2, 6, 9,  0, 8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2,
-  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
-  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  8, 9,  2, 6, 9,  0, 6, 9,  0, 4, 9, -2, 6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 9,  0, 4, 9, -2, 4, 9, -2, 2, 9, -4, 4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6,
-  4, 9, -2, 2, 9, -4, 2, 9, -4, 0, 9, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  8, 7,  2, 6, 7,  0, 6, 7,  0, 4, 7, -2, 6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  6, 7,  0, 4, 7, -2, 4, 7, -2, 2, 7, -4, 4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6,
-  4, 7, -2, 2, 7, -4, 2, 7, -4, 0, 7, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 5,  0, 4, 5, -2, 4, 5, -2, 2, 5, -4, 4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6,
-  4, 5, -2, 2, 5, -4, 2, 5, -4, 0, 5, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  4, 3, -2, 2, 3, -4, 2, 3, -4, 0, 3, -6, 2, 1, -4, 0, 1, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  9, 8,  2, 7, 8,  0, 7, 8,  0, 5, 8, -2, 7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4,
-  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
-  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
-  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
-  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
-  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
-  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  7, 8,  0, 5, 8, -2, 5, 8, -2, 3, 8, -4, 5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6,
-  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
-  5, 8, -2, 3, 8, -4, 3, 8, -4, 1, 8, -6, 3, 8, -4, 1, 8, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  7, 6,  0, 5, 6, -2, 5, 6, -2, 3, 6, -4, 5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  5, 6, -2, 3, 6, -4, 3, 6, -4, 1, 6, -6, 3, 6, -4, 1, 6, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  5, 4, -2, 3, 4, -4, 3, 4, -4, 1, 4, -6, 3, 4, -4, 1, 4, -6, 1, 0, -6,-1, 0, -8,
-  3, 2, -4, 1, 2, -6, 1, 0, -6,-1, 0, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  8, 7,  0, 6, 7, -2, 6, 7, -2, 4, 7, -4, 6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6,
-  6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6, 4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8,
-  6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6, 4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8,
-  4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  6, 7, -2, 4, 7, -4, 4, 7, -4, 2, 7, -6, 4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8,
-  4, 7, -4, 2, 7, -6, 2, 7, -6, 0, 7, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  6, 5, -2, 4, 5, -4, 4, 5, -4, 2, 5, -6, 4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8,
-  4, 5, -4, 2, 5, -6, 2, 5, -6, 0, 5, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  4, 3, -4, 2, 3, -6, 2, 3, -6, 0, 3, -8, 2, 1, -6, 0, 1, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  7, 6, -2, 5, 6, -4, 5, 6, -4, 3, 6, -6, 5, 6, -4, 3, 6, -6, 3, 6, -6, 1, 6, -8,
-  5, 6, -4, 3, 6, -6, 3, 6, -6, 1, 6, -8, 3, 6, -6, 1, 6, -8, 1, 0, -8,-1, 0,-10,
-  5, 6, -4, 3, 6, -6, 3, 6, -6, 1, 6, -8, 3, 6, -6, 1, 6, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  5, 4, -4, 3, 4, -6, 3, 4, -6, 1, 4, -8, 3, 4, -6, 1, 4, -8, 1, 0, -8,-1, 0,-10,
-  3, 2, -6, 1, 2, -8, 1, 0, -8,-1, 0,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  6, 5, -4, 4, 5, -6, 4, 5, -6, 2, 5, -8, 4, 5, -6, 2, 5, -8, 2, 5, -8, 0, 5,-10,
-  4, 5, -6, 2, 5, -8, 2, 5, -8, 0, 5,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  4, 3, -6, 2, 3, -8, 2, 3, -8, 0, 3,-10, 2, 1, -8, 0, 1,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  5, 4, -6, 3, 4, -8, 3, 4, -8, 1, 4,-10, 3, 4, -8, 1, 4,-10, 1, 0,-10,-1, 0,-12,
-  3, 2, -8, 1, 2,-10, 1, 0,-10,-1, 0,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  4, 3, -8, 2, 3,-10, 2, 3,-10, 0, 3,-12, 2, 1,-10, 0, 1,-12, 1, 0,-12,-1, 0,-14,
-  3, 2,-10, 1, 2,-12, 1, 0,-12,-1, 0,-14, 2, 1,-12, 0, 1,-14, 1, 0,-14,-1, 0,-16,
-};
- 
-/* bestscore, besti, totalscore from high bit */
-static const int score_high[] =
-{16,15, 16,15,14, 14,14,13, 14,14,13, 12,14,15, 14,13,12, 12,13,12, 12,13,12, 10,
- 14,15, 14,13,14, 12,12,11, 12,12,11, 10,12,11, 12,12,11, 10,12,11, 10,12,11,  8,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,10, 10,11,10, 10,11,10,  8,
- 12,15, 12,11,10, 10,11,10, 10,11,10,  8,11,10, 10,11,10,  8,11,10,  8,11,10,  6,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10, 9, 10,10, 9,  8,10, 9, 10,10, 9,  8,10, 9,  8,10, 9,  6,
- 12,15, 12,11,14, 10,10, 9, 10,10, 9,  8,10, 9, 10,10, 9,  8,10, 9,  8,10, 9,  6,
- 10, 9, 10,10, 9,  8,10, 9,  8,10, 9,  6,10, 9,  8,10, 9,  6,10, 9,  6,10, 9,  4,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6,
- 10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6, 9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6,
- 10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6, 9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4,
- 10,15, 10, 9, 8,  8, 9, 8,  8, 9, 8,  6, 9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4,
-  9, 8,  8, 9, 8,  6, 9, 8,  6, 9, 8,  4, 9, 8,  6, 9, 8,  4, 9, 8,  4, 9, 8,  2,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
- 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
-  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
- 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
-  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
- 10,15, 10, 9,14,  8, 8, 7,  8, 8, 7,  6, 8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4,
-  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
-  8, 7,  8, 8, 7,  6, 8, 7,  6, 8, 7,  4, 8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2,
-  8, 7,  6, 8, 7,  4, 8, 7,  4, 8, 7,  2, 8, 7,  4, 8, 7,  2, 8, 7,  2, 8, 7,  0,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
-  8,15,  8, 7, 6,  6, 7, 6,  6, 7, 6,  4, 7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2,
-  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
-  7, 6,  6, 7, 6,  4, 7, 6,  4, 7, 6,  2, 7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0,
-  7, 6,  4, 7, 6,  2, 7, 6,  2, 7, 6,  0, 7, 6,  2, 7, 6,  0, 7, 6,  0, 7, 6, -2,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
-  8,15,  8, 7,14,  6, 6, 5,  6, 6, 5,  4, 6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
-  6, 5,  6, 6, 5,  4, 6, 5,  4, 6, 5,  2, 6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0,
-  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
-  6, 5,  4, 6, 5,  2, 6, 5,  2, 6, 5,  0, 6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2,
-  6, 5,  2, 6, 5,  0, 6, 5,  0, 6, 5, -2, 6, 5,  0, 6, 5, -2, 6, 5, -2, 6, 5, -4,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
-  6,15,  6, 5, 4,  4, 5, 4,  4, 5, 4,  2, 5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
-  5, 4,  4, 5, 4,  2, 5, 4,  2, 5, 4,  0, 5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
-  5, 4,  2, 5, 4,  0, 5, 4,  0, 5, 4, -2, 5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4,
-  5, 4,  0, 5, 4, -2, 5, 4, -2, 5, 4, -4, 5, 4, -2, 5, 4, -4, 5, 4, -4, 5, 4, -6,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
-  6,15,  6, 5,14,  4, 4, 3,  4, 4, 3,  2, 4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
-  4, 3,  4, 4, 3,  2, 4, 3,  2, 4, 3,  0, 4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
-  4, 3,  2, 4, 3,  0, 4, 3,  0, 4, 3, -2, 4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
-  4, 3,  0, 4, 3, -2, 4, 3, -2, 4, 3, -4, 4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6,
-  4, 3, -2, 4, 3, -4, 4, 3, -4, 4, 3, -6, 4, 3, -4, 4, 3, -6, 4, 3, -6, 4, 3, -8,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  4,15,  4, 3, 2,  2, 3, 2,  2, 3, 2,  0, 3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  3, 2,  2, 3, 2,  0, 3, 2,  0, 3, 2, -2, 3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  3, 2,  0, 3, 2, -2, 3, 2, -2, 3, 2, -4, 3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  3, 2, -2, 3, 2, -4, 3, 2, -4, 3, 2, -6, 3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8,
-  3, 2, -4, 3, 2, -6, 3, 2, -6, 3, 2, -8, 3, 2, -6, 3, 2, -8, 3, 2, -8, 3, 2,-10,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6, 3, 4, -4, 3, 4, -6, 3, 4, -6, 3, 4, -8,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  4,15,  4, 3,14,  2, 2, 1,  2, 2, 1,  0, 2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  2, 1,  2, 2, 1,  0, 2, 1,  0, 2, 1, -2, 2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  2, 1,  0, 2, 1, -2, 2, 1, -2, 2, 1, -4, 2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  2, 1, -2, 2, 1, -4, 2, 1, -4, 2, 1, -6, 2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  2, 1, -4, 2, 1, -6, 2, 1, -6, 2, 1, -8, 2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10,
-  2, 1, -6, 2, 1, -8, 2, 1, -8, 2, 1,-10, 2, 1, -8, 2, 1,-10, 2, 1,-10, 2, 1,-12,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6, 3, 4, -4, 3, 4, -6, 3, 4, -6, 3, 4, -8,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8, 2, 3, -6, 2, 3, -8, 2, 3, -8, 2, 3,-10,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  2,15,  2, 1, 0,  0, 1, 0,  0, 1, 0, -2, 1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  1, 0,  0, 1, 0, -2, 1, 0, -2, 1, 0, -4, 1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  1, 0, -2, 1, 0, -4, 1, 0, -4, 1, 0, -6, 1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  1, 0, -4, 1, 0, -6, 1, 0, -6, 1, 0, -8, 1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  1, 0, -6, 1, 0, -8, 1, 0, -8, 1, 0,-10, 1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12,
-  1, 0, -8, 1, 0,-10, 1, 0,-10, 1, 0,-12, 1, 0,-10, 1, 0,-12, 1, 0,-12, 1, 0,-14,
- 14,15, 14,13,14, 12,12,13, 12,12,13, 10,12,15, 12,11,12, 10,11,12, 10,11,12,  8,
- 12,15, 12,11,14, 10,10,11, 10,10,11,  8,10,11, 10,10,11,  8,10,11,  8,10,11,  6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6,
- 10,15, 10, 9,10,  8, 9,10,  8, 9,10,  6, 9,10,  8, 9,10,  6, 9,10,  6, 9,10,  4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
- 10,15, 10, 9,14,  8, 8, 9,  8, 8, 9,  6, 8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4,
-  8, 9,  8, 8, 9,  6, 8, 9,  6, 8, 9,  4, 8, 9,  6, 8, 9,  4, 8, 9,  4, 8, 9,  2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  8,15,  8, 7, 8,  6, 7, 8,  6, 7, 8,  4, 7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2,
-  7, 8,  6, 7, 8,  4, 7, 8,  4, 7, 8,  2, 7, 8,  4, 7, 8,  2, 7, 8,  2, 7, 8,  0,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  8,15,  8, 7,14,  6, 6, 7,  6, 6, 7,  4, 6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  6, 6, 7,  4, 6, 7,  4, 6, 7,  2, 6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0,
-  6, 7,  4, 6, 7,  2, 6, 7,  2, 6, 7,  0, 6, 7,  2, 6, 7,  0, 6, 7,  0, 6, 7, -2,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  6,15,  6, 5, 6,  4, 5, 6,  4, 5, 6,  2, 5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  4, 5, 6,  2, 5, 6,  2, 5, 6,  0, 5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2,
-  5, 6,  2, 5, 6,  0, 5, 6,  0, 5, 6, -2, 5, 6,  0, 5, 6, -2, 5, 6, -2, 5, 6, -4,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  6,15,  6, 5,14,  4, 4, 5,  4, 4, 5,  2, 4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  4, 4, 5,  2, 4, 5,  2, 4, 5,  0, 4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  2, 4, 5,  0, 4, 5,  0, 4, 5, -2, 4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4,
-  4, 5,  0, 4, 5, -2, 4, 5, -2, 4, 5, -4, 4, 5, -2, 4, 5, -4, 4, 5, -4, 4, 5, -6,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  4,15,  4, 3, 4,  2, 3, 4,  2, 3, 4,  0, 3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4,  2, 3, 4,  0, 3, 4,  0, 3, 4, -2, 3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4,  0, 3, 4, -2, 3, 4, -2, 3, 4, -4, 3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6,
-  3, 4, -2, 3, 4, -4, 3, 4, -4, 3, 4, -6, 3, 4, -4, 3, 4, -6, 3, 4, -6, 3, 4, -8,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  4,15,  4, 3,14,  2, 2, 3,  2, 2, 3,  0, 2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3,  2, 2, 3,  0, 2, 3,  0, 2, 3, -2, 2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3,  0, 2, 3, -2, 2, 3, -2, 2, 3, -4, 2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3, -2, 2, 3, -4, 2, 3, -4, 2, 3, -6, 2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8,
-  2, 3, -4, 2, 3, -6, 2, 3, -6, 2, 3, -8, 2, 3, -6, 2, 3, -8, 2, 3, -8, 2, 3,-10,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  2,15,  2, 1, 2,  0, 1, 2,  0, 1, 2, -2, 1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  1, 2,  0, 1, 2, -2, 1, 2, -2, 1, 2, -4, 1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  1, 2, -2, 1, 2, -4, 1, 2, -4, 1, 2, -6, 1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  1, 2, -4, 1, 2, -6, 1, 2, -6, 1, 2, -8, 1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10,
-  1, 2, -6, 1, 2, -8, 1, 2, -8, 1, 2,-10, 1, 2, -8, 1, 2,-10, 1, 2,-10, 1, 2,-12,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8, 1, 4, -6, 1, 4, -8, 1, 4, -8, 1, 4,-10,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  2,15,  2, 1,14,  0, 0, 1,  0, 0, 1, -2, 0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  0, 1,  0, 0, 1, -2, 0, 1, -2, 0, 1, -4, 0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  0, 1, -2, 0, 1, -4, 0, 1, -4, 0, 1, -6, 0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  0, 1, -4, 0, 1, -6, 0, 1, -6, 0, 1, -8, 0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  0, 1, -6, 0, 1, -8, 0, 1, -8, 0, 1,-10, 0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12,
-  0, 1, -8, 0, 1,-10, 0, 1,-10, 0, 1,-12, 0, 1,-10, 0, 1,-12, 0, 1,-12, 0, 1,-14,
- 12,15, 12,11,14, 10,10,13, 10,10,13,  8,10,15, 10, 9,12,  8, 9,12,  8, 9,12,  6,
- 10,15, 10, 9,14,  8, 8,11,  8, 8,11,  6, 8,11,  8, 8,11,  6, 8,11,  6, 8,11,  4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4,
-  8,15,  8, 7,10,  6, 7,10,  6, 7,10,  4, 7,10,  6, 7,10,  4, 7,10,  4, 7,10,  2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  8,15,  8, 7,14,  6, 6, 9,  6, 6, 9,  4, 6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2,
-  6, 9,  6, 6, 9,  4, 6, 9,  4, 6, 9,  2, 6, 9,  4, 6, 9,  2, 6, 9,  2, 6, 9,  0,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  6,15,  6, 5, 8,  4, 5, 8,  4, 5, 8,  2, 5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0,
-  5, 8,  4, 5, 8,  2, 5, 8,  2, 5, 8,  0, 5, 8,  2, 5, 8,  0, 5, 8,  0, 5, 8, -2,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  6,15,  6, 5,14,  4, 4, 7,  4, 4, 7,  2, 4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  4, 4, 7,  2, 4, 7,  2, 4, 7,  0, 4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2,
-  4, 7,  2, 4, 7,  0, 4, 7,  0, 4, 7, -2, 4, 7,  0, 4, 7, -2, 4, 7, -2, 4, 7, -4,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  4,15,  4, 3, 6,  2, 3, 6,  2, 3, 6,  0, 3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  2, 3, 6,  0, 3, 6,  0, 3, 6, -2, 3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4,
-  3, 6,  0, 3, 6, -2, 3, 6, -2, 3, 6, -4, 3, 6, -2, 3, 6, -4, 3, 6, -4, 3, 6, -6,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  4,15,  4, 3,14,  2, 2, 5,  2, 2, 5,  0, 2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  2, 2, 5,  0, 2, 5,  0, 2, 5, -2, 2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5,  0, 2, 5, -2, 2, 5, -2, 2, 5, -4, 2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6,
-  2, 5, -2, 2, 5, -4, 2, 5, -4, 2, 5, -6, 2, 5, -4, 2, 5, -6, 2, 5, -6, 2, 5, -8,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  2,15,  2, 1, 4,  0, 1, 4,  0, 1, 4, -2, 1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  1, 4,  0, 1, 4, -2, 1, 4, -2, 1, 4, -4, 1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  1, 4, -2, 1, 4, -4, 1, 4, -4, 1, 4, -6, 1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8,
-  1, 4, -4, 1, 4, -6, 1, 4, -6, 1, 4, -8, 1, 4, -6, 1, 4, -8, 1, 4, -8, 1, 4,-10,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  2,15,  2, 1,14,  0, 0, 3,  0, 0, 3, -2, 0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  0, 3,  0, 0, 3, -2, 0, 3, -2, 0, 3, -4, 0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  0, 3, -2, 0, 3, -4, 0, 3, -4, 0, 3, -6, 0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  0, 3, -4, 0, 3, -6, 0, 3, -6, 0, 3, -8, 0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10,
-  0, 3, -6, 0, 3, -8, 0, 3, -8, 0, 3,-10, 0, 3, -8, 0, 3,-10, 0, 3,-10, 0, 3,-12,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8, 0, 5, -6, 0, 5, -8, 0, 5, -8, 0, 5,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
- 10,15, 10, 9,14,  8, 8,13,  8, 8,13,  6, 8,15,  8, 7,12,  6, 7,12,  6, 7,12,  4,
-  8,15,  8, 7,14,  6, 6,11,  6, 6,11,  4, 6,11,  6, 6,11,  4, 6,11,  4, 6,11,  2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2,
-  6,15,  6, 5,10,  4, 5,10,  4, 5,10,  2, 5,10,  4, 5,10,  2, 5,10,  2, 5,10,  0,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  6,15,  6, 5,14,  4, 4, 9,  4, 4, 9,  2, 4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0,
-  4, 9,  4, 4, 9,  2, 4, 9,  2, 4, 9,  0, 4, 9,  2, 4, 9,  0, 4, 9,  0, 4, 9, -2,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  4,15,  4, 3, 8,  2, 3, 8,  2, 3, 8,  0, 3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2,
-  3, 8,  2, 3, 8,  0, 3, 8,  0, 3, 8, -2, 3, 8,  0, 3, 8, -2, 3, 8, -2, 3, 8, -4,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  4,15,  4, 3,14,  2, 2, 7,  2, 2, 7,  0, 2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  2, 2, 7,  0, 2, 7,  0, 2, 7, -2, 2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4,
-  2, 7,  0, 2, 7, -2, 2, 7, -2, 2, 7, -4, 2, 7, -2, 2, 7, -4, 2, 7, -4, 2, 7, -6,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  2,15,  2, 1, 6,  0, 1, 6,  0, 1, 6, -2, 1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6,  0, 1, 6, -2, 1, 6, -2, 1, 6, -4, 1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6,
-  1, 6, -2, 1, 6, -4, 1, 6, -4, 1, 6, -6, 1, 6, -4, 1, 6, -6, 1, 6, -6, 1, 6, -8,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  2,15,  2, 1,14,  0, 0, 5,  0, 0, 5, -2, 0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  0, 5,  0, 0, 5, -2, 0, 5, -2, 0, 5, -4, 0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  0, 5, -2, 0, 5, -4, 0, 5, -4, 0, 5, -6, 0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8,
-  0, 5, -4, 0, 5, -6, 0, 5, -6, 0, 5, -8, 0, 5, -6, 0, 5, -8, 0, 5, -8, 0, 5,-10,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
-  8,15,  8, 7,14,  6, 6,13,  6, 6,13,  4, 6,15,  6, 5,12,  4, 5,12,  4, 5,12,  2,
-  6,15,  6, 5,14,  4, 4,11,  4, 4,11,  2, 4,11,  4, 4,11,  2, 4,11,  2, 4,11,  0,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0,
-  4,15,  4, 3,10,  2, 3,10,  2, 3,10,  0, 3,10,  2, 3,10,  0, 3,10,  0, 3,10, -2,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  4,15,  4, 3,14,  2, 2, 9,  2, 2, 9,  0, 2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2,
-  2, 9,  2, 2, 9,  0, 2, 9,  0, 2, 9, -2, 2, 9,  0, 2, 9, -2, 2, 9, -2, 2, 9, -4,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  2,15,  2, 1, 8,  0, 1, 8,  0, 1, 8, -2, 1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4,
-  1, 8,  0, 1, 8, -2, 1, 8, -2, 1, 8, -4, 1, 8, -2, 1, 8, -4, 1, 8, -4, 1, 8, -6,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  2,15,  2, 1,14,  0, 0, 7,  0, 0, 7, -2, 0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7,  0, 0, 7, -2, 0, 7, -2, 0, 7, -4, 0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6,
-  0, 7, -2, 0, 7, -4, 0, 7, -4, 0, 7, -6, 0, 7, -4, 0, 7, -6, 0, 7, -6, 0, 7, -8,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
-  6,15,  6, 5,14,  4, 4,13,  4, 4,13,  2, 4,15,  4, 3,12,  2, 3,12,  2, 3,12,  0,
-  4,15,  4, 3,14,  2, 2,11,  2, 2,11,  0, 2,11,  2, 2,11,  0, 2,11,  0, 2,11, -2,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2,
-  2,15,  2, 1,10,  0, 1,10,  0, 1,10, -2, 1,10,  0, 1,10, -2, 1,10, -2, 1,10, -4,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  2,15,  2, 1,14,  0, 0, 9,  0, 0, 9, -2, 0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4,
-  0, 9,  0, 0, 9, -2, 0, 9, -2, 0, 9, -4, 0, 9, -2, 0, 9, -4, 0, 9, -4, 0, 9, -6,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
-  4,15,  4, 3,14,  2, 2,13,  2, 2,13,  0, 2,15,  2, 1,12,  0, 1,12,  0, 1,12, -2,
-  2,15,  2, 1,14,  0, 0,11,  0, 0,11, -2, 0,11,  0, 0,11, -2, 0,11, -2, 0,11, -4,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
-  2,15,  2, 1,14,  0, 0,13,  0, 0,13, -2, 0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
-  0,15,  0,-1, 0, -2,-1, 0, -2,-1, 0, -4,-1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
- -1, 0, -2,-1, 0, -4,-1, 0, -4,-1, 0, -6,-1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
- -1, 0, -4,-1, 0, -6,-1, 0, -6,-1, 0, -8,-1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
- -1, 0, -6,-1, 0, -8,-1, 0, -8,-1, 0,-10,-1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
- -1, 0, -8,-1, 0,-10,-1, 0,-10,-1, 0,-12,-1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,
- -1, 0,-10,-1, 0,-12,-1, 0,-12,-1, 0,-14,-1, 0,-12,-1, 0,-14,-1, 0,-14,-1, 0,-16,
-};   
-
-
-
-static const Genomecomp_T donor_gt_bits[] =
-{0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x052,0x051,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x052,0x051,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x152,0x151,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x152,0x151,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x152,0x151,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x154,0x154,0x154,0x155,0x150,0x150,0x152,0x151,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x052,0x051,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
-};
-
-
-static const Genomecomp_T donor_gtgc_bits[] =
-{0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
- 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
- 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
- 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
- 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
- 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
- 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
- 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
- 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
- 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
- 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
- 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
- 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
- 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
- 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
-};
-
-static const Genomecomp_T acceptor_bits[] =
-{0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
- 0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
- 0x154,0x154,0x155,0x154,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
- 0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x054,0x054,0x055,0x054,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0AA,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x054,0x054,0x055,0x054,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x054,0x054,0x055,0x054,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
- 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
-};
-
-
-static const Genomecomp_T antidonor_ac_bits[] =
-{0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
-};
-
-
-static const Genomecomp_T antidonor_acgc_bits[] =
-{0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
- 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
-};
-
-static const Genomecomp_T antiacceptor_bits[] =
-{0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
- 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
- 0x150,0x150,0x150,0x151,0x154,0x154,0x154,0x155,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
- 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
- 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
- 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0AA,0x0A8,0x0A9,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
- 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
- 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
- 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
- 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
- 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
-};
-
-
-static const Genomecomp_T mark_a[] =
-{0xFF,0xFE,0xFE,0xFE,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,
- 0xFB,0xFA,0xFA,0xFA,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,
- 0xFB,0xFA,0xFA,0xFA,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,
- 0xFB,0xFA,0xFA,0xFA,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,
- 0xF7,0xF6,0xF6,0xF6,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF7,0xF6,0xF6,0xF6,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF7,0xF6,0xF6,0xF6,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xF3,0xF2,0xF2,0xF2,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,
- 0xEF,0xEE,0xEE,0xEE,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xEF,0xEE,0xEE,0xEE,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xEF,0xEE,0xEE,0xEE,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xEB,0xEA,0xEA,0xEA,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE7,0xE6,0xE6,0xE6,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xE3,0xE2,0xE2,0xE2,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,
- 0xDF,0xDE,0xDE,0xDE,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xDF,0xDE,0xDE,0xDE,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xDF,0xDE,0xDE,0xDE,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xDB,0xDA,0xDA,0xDA,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD7,0xD6,0xD6,0xD6,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xD3,0xD2,0xD2,0xD2,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xCF,0xCE,0xCE,0xCE,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xCB,0xCA,0xCA,0xCA,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC7,0xC6,0xC6,0xC6,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xC3,0xC2,0xC2,0xC2,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,
- 0xBF,0xBE,0xBE,0xBE,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0xBF,0xBE,0xBE,0xBE,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0xBF,0xBE,0xBE,0xBE,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xBB,0xBA,0xBA,0xBA,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB7,0xB6,0xB6,0xB6,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xB3,0xB2,0xB2,0xB2,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xAF,0xAE,0xAE,0xAE,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xAB,0xAA,0xAA,0xAA,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA7,0xA6,0xA6,0xA6,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0xA3,0xA2,0xA2,0xA2,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x9F,0x9E,0x9E,0x9E,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x9B,0x9A,0x9A,0x9A,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x97,0x96,0x96,0x96,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x93,0x92,0x92,0x92,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x8F,0x8E,0x8E,0x8E,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x8B,0x8A,0x8A,0x8A,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x87,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x83,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,
- 0x7F,0x7E,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x7F,0x7E,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x7F,0x7E,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x7B,0x7A,0x7A,0x7A,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x77,0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x73,0x72,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x6F,0x6E,0x6E,0x6E,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x6B,0x6A,0x6A,0x6A,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x67,0x66,0x66,0x66,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x63,0x62,0x62,0x62,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x5F,0x5E,0x5E,0x5E,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x5B,0x5A,0x5A,0x5A,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x57,0x56,0x56,0x56,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x53,0x52,0x52,0x52,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x4F,0x4E,0x4E,0x4E,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x4B,0x4A,0x4A,0x4A,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x47,0x46,0x46,0x46,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x3F,0x3E,0x3E,0x3E,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x3B,0x3A,0x3A,0x3A,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x37,0x36,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x33,0x32,0x32,0x32,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x2F,0x2E,0x2E,0x2E,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x2B,0x2A,0x2A,0x2A,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x27,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x1F,0x1E,0x1E,0x1E,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x1B,0x1A,0x1A,0x1A,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x17,0x16,0x16,0x16,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x13,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x0F,0x0E,0x0E,0x0E,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x0B,0x0A,0x0A,0x0A,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x07,0x06,0x06,0x06,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
-};
-
-static const Genomecomp_T mark_c[] =
-{0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x7C,0x7D,0x7C,0x7C,0x7E,0x7F,0x7E,0x7E,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xBC,0xBD,0xBC,0xBC,0xBE,0xBF,0xBE,0xBE,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xDC,0xDD,0xDC,0xDC,0xDE,0xDF,0xDE,0xDE,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xEC,0xED,0xEC,0xEC,0xEE,0xEF,0xEE,0xEE,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF4,0xF5,0xF4,0xF4,0xF6,0xF7,0xF6,0xF6,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF8,0xF9,0xF8,0xF8,0xFA,0xFB,0xFA,0xFA,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,
- 0xFC,0xFD,0xFC,0xFC,0xFE,0xFF,0xFE,0xFE,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,
- 0xF8,0xF9,0xF8,0xF8,0xFA,0xFB,0xFA,0xFA,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,
- 0xF8,0xF9,0xF8,0xF8,0xFA,0xFB,0xFA,0xFA,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF4,0xF5,0xF4,0xF4,0xF6,0xF7,0xF6,0xF6,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF4,0xF5,0xF4,0xF4,0xF6,0xF7,0xF6,0xF6,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xF0,0xF1,0xF0,0xF0,0xF2,0xF3,0xF2,0xF2,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xEC,0xED,0xEC,0xEC,0xEE,0xEF,0xEE,0xEE,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xEC,0xED,0xEC,0xEC,0xEE,0xEF,0xEE,0xEE,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xE8,0xE9,0xE8,0xE8,0xEA,0xEB,0xEA,0xEA,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE4,0xE5,0xE4,0xE4,0xE6,0xE7,0xE6,0xE6,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xE0,0xE1,0xE0,0xE0,0xE2,0xE3,0xE2,0xE2,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xDC,0xDD,0xDC,0xDC,0xDE,0xDF,0xDE,0xDE,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xDC,0xDD,0xDC,0xDC,0xDE,0xDF,0xDE,0xDE,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xD8,0xD9,0xD8,0xD8,0xDA,0xDB,0xDA,0xDA,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD4,0xD5,0xD4,0xD4,0xD6,0xD7,0xD6,0xD6,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xD0,0xD1,0xD0,0xD0,0xD2,0xD3,0xD2,0xD2,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xCC,0xCD,0xCC,0xCC,0xCE,0xCF,0xCE,0xCE,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC8,0xC9,0xC8,0xC8,0xCA,0xCB,0xCA,0xCA,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC4,0xC5,0xC4,0xC4,0xC6,0xC7,0xC6,0xC6,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0xC0,0xC1,0xC0,0xC0,0xC2,0xC3,0xC2,0xC2,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xBC,0xBD,0xBC,0xBC,0xBE,0xBF,0xBE,0xBE,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xBC,0xBD,0xBC,0xBC,0xBE,0xBF,0xBE,0xBE,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xB8,0xB9,0xB8,0xB8,0xBA,0xBB,0xBA,0xBA,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB4,0xB5,0xB4,0xB4,0xB6,0xB7,0xB6,0xB6,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xB0,0xB1,0xB0,0xB0,0xB2,0xB3,0xB2,0xB2,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xAC,0xAD,0xAC,0xAC,0xAE,0xAF,0xAE,0xAE,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA8,0xA9,0xA8,0xA8,0xAA,0xAB,0xAA,0xAA,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA4,0xA5,0xA4,0xA4,0xA6,0xA7,0xA6,0xA6,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0xA0,0xA1,0xA0,0xA0,0xA2,0xA3,0xA2,0xA2,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x9C,0x9D,0x9C,0x9C,0x9E,0x9F,0x9E,0x9E,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x98,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9A,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x94,0x95,0x94,0x94,0x96,0x97,0x96,0x96,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x90,0x91,0x90,0x90,0x92,0x93,0x92,0x92,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x8C,0x8D,0x8C,0x8C,0x8E,0x8F,0x8E,0x8E,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x88,0x89,0x88,0x88,0x8A,0x8B,0x8A,0x8A,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x84,0x85,0x84,0x84,0x86,0x87,0x86,0x86,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x80,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x7C,0x7D,0x7C,0x7C,0x7E,0x7F,0x7E,0x7E,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x7C,0x7D,0x7C,0x7C,0x7E,0x7F,0x7E,0x7E,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x78,0x79,0x78,0x78,0x7A,0x7B,0x7A,0x7A,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x74,0x75,0x74,0x74,0x76,0x77,0x76,0x76,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x70,0x71,0x70,0x70,0x72,0x73,0x72,0x72,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x6C,0x6D,0x6C,0x6C,0x6E,0x6F,0x6E,0x6E,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x68,0x69,0x68,0x68,0x6A,0x6B,0x6A,0x6A,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x64,0x65,0x64,0x64,0x66,0x67,0x66,0x66,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x60,0x61,0x60,0x60,0x62,0x63,0x62,0x62,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x5C,0x5D,0x5C,0x5C,0x5E,0x5F,0x5E,0x5E,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x58,0x59,0x58,0x58,0x5A,0x5B,0x5A,0x5A,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x54,0x55,0x54,0x54,0x56,0x57,0x56,0x56,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x50,0x51,0x50,0x50,0x52,0x53,0x52,0x52,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x4C,0x4D,0x4C,0x4C,0x4E,0x4F,0x4E,0x4E,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x48,0x49,0x48,0x48,0x4A,0x4B,0x4A,0x4A,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x44,0x45,0x44,0x44,0x46,0x47,0x46,0x46,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x40,0x41,0x40,0x40,0x42,0x43,0x42,0x42,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x3C,0x3D,0x3C,0x3C,0x3E,0x3F,0x3E,0x3E,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x38,0x39,0x38,0x38,0x3A,0x3B,0x3A,0x3A,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x34,0x35,0x34,0x34,0x36,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x30,0x31,0x30,0x30,0x32,0x33,0x32,0x32,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x2C,0x2D,0x2C,0x2C,0x2E,0x2F,0x2E,0x2E,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x28,0x29,0x28,0x28,0x2A,0x2B,0x2A,0x2A,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x24,0x25,0x24,0x24,0x26,0x27,0x26,0x26,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x20,0x21,0x20,0x20,0x22,0x23,0x22,0x22,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x1C,0x1D,0x1C,0x1C,0x1E,0x1F,0x1E,0x1E,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x18,0x19,0x18,0x18,0x1A,0x1B,0x1A,0x1A,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x14,0x15,0x14,0x14,0x16,0x17,0x16,0x16,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x10,0x11,0x10,0x10,0x12,0x13,0x12,0x12,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x0C,0x0D,0x0C,0x0C,0x0E,0x0F,0x0E,0x0E,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x08,0x09,0x08,0x08,0x0A,0x0B,0x0A,0x0A,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x04,0x05,0x04,0x04,0x06,0x07,0x06,0x06,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
-};
-
-static const Genomecomp_T mark_g[] =
-{0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7E,0x7E,0x7F,0x7E,0x7C,0x7C,0x7D,0x7C,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7E,0x7E,0x7F,0x7E,0x7C,0x7C,0x7D,0x7C,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBE,0xBE,0xBF,0xBE,0xBC,0xBC,0xBD,0xBC,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBE,0xBE,0xBF,0xBE,0xBC,0xBC,0xBD,0xBC,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDE,0xDE,0xDF,0xDE,0xDC,0xDC,0xDD,0xDC,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDE,0xDE,0xDF,0xDE,0xDC,0xDC,0xDD,0xDC,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEE,0xEE,0xEF,0xEE,0xEC,0xEC,0xED,0xEC,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEE,0xEE,0xEF,0xEE,0xEC,0xEC,0xED,0xEC,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF6,0xF6,0xF7,0xF6,0xF4,0xF4,0xF5,0xF4,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF6,0xF6,0xF7,0xF6,0xF4,0xF4,0xF5,0xF4,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xFA,0xFA,0xFB,0xFA,0xF8,0xF8,0xF9,0xF8,
- 0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xFA,0xFA,0xFB,0xFA,0xF8,0xF8,0xF9,0xF8,
- 0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFE,0xFE,0xFF,0xFE,0xFC,0xFC,0xFD,0xFC,
- 0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xFA,0xFA,0xFB,0xFA,0xF8,0xF8,0xF9,0xF8,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF6,0xF6,0xF7,0xF6,0xF4,0xF4,0xF5,0xF4,
- 0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF2,0xF2,0xF3,0xF2,0xF0,0xF0,0xF1,0xF0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEE,0xEE,0xEF,0xEE,0xEC,0xEC,0xED,0xEC,
- 0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xEA,0xEA,0xEB,0xEA,0xE8,0xE8,0xE9,0xE8,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE6,0xE6,0xE7,0xE6,0xE4,0xE4,0xE5,0xE4,
- 0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE2,0xE2,0xE3,0xE2,0xE0,0xE0,0xE1,0xE0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDE,0xDE,0xDF,0xDE,0xDC,0xDC,0xDD,0xDC,
- 0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xDA,0xDA,0xDB,0xDA,0xD8,0xD8,0xD9,0xD8,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD6,0xD6,0xD7,0xD6,0xD4,0xD4,0xD5,0xD4,
- 0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD2,0xD2,0xD3,0xD2,0xD0,0xD0,0xD1,0xD0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCE,0xCE,0xCF,0xCE,0xCC,0xCC,0xCD,0xCC,
- 0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xCA,0xCA,0xCB,0xCA,0xC8,0xC8,0xC9,0xC8,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC6,0xC6,0xC7,0xC6,0xC4,0xC4,0xC5,0xC4,
- 0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC2,0xC2,0xC3,0xC2,0xC0,0xC0,0xC1,0xC0,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBE,0xBE,0xBF,0xBE,0xBC,0xBC,0xBD,0xBC,
- 0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xBA,0xBA,0xBB,0xBA,0xB8,0xB8,0xB9,0xB8,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB6,0xB6,0xB7,0xB6,0xB4,0xB4,0xB5,0xB4,
- 0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB2,0xB2,0xB3,0xB2,0xB0,0xB0,0xB1,0xB0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAE,0xAE,0xAF,0xAE,0xAC,0xAC,0xAD,0xAC,
- 0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xAA,0xAA,0xAB,0xAA,0xA8,0xA8,0xA9,0xA8,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA6,0xA6,0xA7,0xA6,0xA4,0xA4,0xA5,0xA4,
- 0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA2,0xA2,0xA3,0xA2,0xA0,0xA0,0xA1,0xA0,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9E,0x9E,0x9F,0x9E,0x9C,0x9C,0x9D,0x9C,
- 0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x9A,0x9A,0x9B,0x9A,0x98,0x98,0x99,0x98,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x97,0x96,0x94,0x94,0x95,0x94,
- 0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x92,0x92,0x93,0x92,0x90,0x90,0x91,0x90,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8E,0x8E,0x8F,0x8E,0x8C,0x8C,0x8D,0x8C,
- 0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x8A,0x8A,0x8B,0x8A,0x88,0x88,0x89,0x88,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x84,0x84,0x85,0x84,
- 0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x82,0x82,0x83,0x82,0x80,0x80,0x81,0x80,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7E,0x7E,0x7F,0x7E,0x7C,0x7C,0x7D,0x7C,
- 0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x7A,0x7A,0x7B,0x7A,0x78,0x78,0x79,0x78,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x76,0x76,0x77,0x76,0x74,0x74,0x75,0x74,
- 0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x72,0x72,0x73,0x72,0x70,0x70,0x71,0x70,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6E,0x6E,0x6F,0x6E,0x6C,0x6C,0x6D,0x6C,
- 0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x6A,0x6A,0x6B,0x6A,0x68,0x68,0x69,0x68,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x66,0x66,0x67,0x66,0x64,0x64,0x65,0x64,
- 0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x62,0x62,0x63,0x62,0x60,0x60,0x61,0x60,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5E,0x5E,0x5F,0x5E,0x5C,0x5C,0x5D,0x5C,
- 0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x5A,0x5A,0x5B,0x5A,0x58,0x58,0x59,0x58,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x56,0x56,0x57,0x56,0x54,0x54,0x55,0x54,
- 0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x52,0x52,0x53,0x52,0x50,0x50,0x51,0x50,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4E,0x4E,0x4F,0x4E,0x4C,0x4C,0x4D,0x4C,
- 0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x4A,0x4A,0x4B,0x4A,0x48,0x48,0x49,0x48,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x46,0x46,0x47,0x46,0x44,0x44,0x45,0x44,
- 0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x42,0x42,0x43,0x42,0x40,0x40,0x41,0x40,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3E,0x3E,0x3F,0x3E,0x3C,0x3C,0x3D,0x3C,
- 0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x3A,0x3A,0x3B,0x3A,0x38,0x38,0x39,0x38,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x36,0x36,0x37,0x36,0x34,0x34,0x35,0x34,
- 0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x32,0x32,0x33,0x32,0x30,0x30,0x31,0x30,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2E,0x2E,0x2F,0x2E,0x2C,0x2C,0x2D,0x2C,
- 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x2A,0x2A,0x2B,0x2A,0x28,0x28,0x29,0x28,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x27,0x26,0x24,0x24,0x25,0x24,
- 0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x22,0x22,0x23,0x22,0x20,0x20,0x21,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1E,0x1E,0x1F,0x1E,0x1C,0x1C,0x1D,0x1C,
- 0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x1A,0x1A,0x1B,0x1A,0x18,0x18,0x19,0x18,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x16,0x16,0x17,0x16,0x14,0x14,0x15,0x14,
- 0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x12,0x12,0x13,0x12,0x10,0x10,0x11,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0E,0x0E,0x0F,0x0E,0x0C,0x0C,0x0D,0x0C,
- 0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x0A,0x0A,0x0B,0x0A,0x08,0x08,0x09,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
- 0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x06,0x06,0x07,0x06,0x04,0x04,0x05,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
-};
-
-static const Genomecomp_T mark_t[] =
-{0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7E,0x7E,0x7E,0x7F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7E,0x7E,0x7E,0x7F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,
- 0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x08,0x08,0x08,0x09,0x0A,0x0A,0x0A,0x0B,
- 0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0E,0x0E,0x0E,0x0F,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x12,0x12,0x12,0x13,
- 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x15,0x16,0x16,0x16,0x17,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x19,0x1A,0x1A,0x1A,0x1B,
- 0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1C,0x1C,0x1C,0x1D,0x1E,0x1E,0x1E,0x1F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x23,
- 0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x27,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2B,
- 0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2E,0x2E,0x2E,0x2F,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
- 0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x37,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x39,0x3A,0x3A,0x3A,0x3B,
- 0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3C,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x41,0x42,0x42,0x42,0x43,
- 0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x46,0x47,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4A,0x4A,0x4A,0x4B,
- 0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4C,0x4C,0x4C,0x4D,0x4E,0x4E,0x4E,0x4F,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x53,
- 0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x57,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,0x5A,0x5A,0x5A,0x5B,
- 0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5C,0x5C,0x5C,0x5D,0x5E,0x5E,0x5E,0x5F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
- 0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x66,0x66,0x66,0x67,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x68,0x68,0x68,0x69,0x6A,0x6A,0x6A,0x6B,
- 0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6C,0x6C,0x6C,0x6D,0x6E,0x6E,0x6E,0x6F,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,
- 0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x77,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x78,0x78,0x78,0x79,0x7A,0x7A,0x7A,0x7B,
- 0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7E,0x7E,0x7E,0x7F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBE,0xBE,0xBE,0xBF,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBE,0xBE,0xBE,0xBF,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x83,
- 0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x88,0x88,0x88,0x89,0x8A,0x8A,0x8A,0x8B,
- 0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8C,0x8C,0x8C,0x8D,0x8E,0x8E,0x8E,0x8F,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,
- 0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x94,0x94,0x94,0x95,0x96,0x96,0x96,0x97,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x99,0x9A,0x9A,0x9A,0x9B,
- 0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9C,0x9C,0x9C,0x9D,0x9E,0x9E,0x9E,0x9F,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA0,0xA0,0xA0,0xA1,0xA2,0xA2,0xA2,0xA3,
- 0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA4,0xA4,0xA4,0xA5,0xA6,0xA6,0xA6,0xA7,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xA8,0xA8,0xA8,0xA9,0xAA,0xAA,0xAA,0xAB,
- 0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAC,0xAC,0xAC,0xAD,0xAE,0xAE,0xAE,0xAF,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB0,0xB0,0xB0,0xB1,0xB2,0xB2,0xB2,0xB3,
- 0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB4,0xB4,0xB4,0xB5,0xB6,0xB6,0xB6,0xB7,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xB8,0xB8,0xB8,0xB9,0xBA,0xBA,0xBA,0xBB,
- 0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBD,0xBE,0xBE,0xBE,0xBF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDE,0xDE,0xDE,0xDF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDE,0xDE,0xDE,0xDF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC0,0xC0,0xC0,0xC1,0xC2,0xC2,0xC2,0xC3,
- 0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC4,0xC4,0xC4,0xC5,0xC6,0xC6,0xC6,0xC7,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xC8,0xC8,0xC8,0xC9,0xCA,0xCA,0xCA,0xCB,
- 0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCC,0xCC,0xCC,0xCD,0xCE,0xCE,0xCE,0xCF,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD0,0xD0,0xD0,0xD1,0xD2,0xD2,0xD2,0xD3,
- 0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD4,0xD4,0xD4,0xD5,0xD6,0xD6,0xD6,0xD7,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xD8,0xD8,0xD8,0xD9,0xDA,0xDA,0xDA,0xDB,
- 0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDC,0xDC,0xDC,0xDD,0xDE,0xDE,0xDE,0xDF,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEE,0xEE,0xEE,0xEF,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEE,0xEE,0xEE,0xEF,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE0,0xE0,0xE0,0xE1,0xE2,0xE2,0xE2,0xE3,
- 0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE4,0xE4,0xE4,0xE5,0xE6,0xE6,0xE6,0xE7,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xE8,0xE8,0xE8,0xE9,0xEA,0xEA,0xEA,0xEB,
- 0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEC,0xEC,0xEC,0xED,0xEE,0xEE,0xEE,0xEF,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF6,0xF6,0xF6,0xF7,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF6,0xF6,0xF6,0xF7,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF0,0xF0,0xF0,0xF1,0xF2,0xF2,0xF2,0xF3,
- 0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF4,0xF4,0xF4,0xF5,0xF6,0xF6,0xF6,0xF7,
- 0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xFA,0xFA,0xFA,0xFB,
- 0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xFA,0xFA,0xFA,0xFB,
- 0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xF8,0xF8,0xF8,0xF9,0xFA,0xFA,0xFA,0xFB,
- 0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFE,0xFE,0xFE,0xFF,
-}; 
-
-
-/*** Indexdb code starts here.  Put here to access clz_table. ***/
-
-/* Original code */
-#if 0
-if (ctr >= 32) {
-  ctr -= 32;
-  if (ctr == 0) {
-    value = gamma;
-    gamma = *++gptr;
-  } else {
-    value = gamma << ctr;
-    gamma = *++gptr;
-    value |= gamma >> (32 - ctr);
-  }
- } else {
-  value = gamma >> (32 - ctr);
- }
-#endif
-
-
-
-/* ctr is 0 at high bit and 31 at low bit */
-int
-Genome_read_gamma (Positionsptr_T **ptr, int ctr, Positionsptr_T *cum) {
-  Positionsptr_T gamma;
-  Positionsptr_T value;
-#ifdef BRANCHLESS
-  unsigned int ge32p, mask;
-#endif
-#ifdef HAVE_BUILTIN_CLZ
-  int firstbit;
-#elif defined(HAVE_ASM_BSR)
-  int msb;
-#else
-  Genomecomp_T top;
-  int firstbit;
-#endif
-
-  debug3(printf("Entering read_gamma with ctr %d\n",ctr));
-  gamma = **ptr & (~0U >> ctr);
-
-  if (gamma == 0U) {
-    ctr -= 32;
-    gamma = *(++(*ptr));
-  }
-
-#ifdef HAVE_BUILTIN_CLZ
-  firstbit = __builtin_clz(gamma);
-  ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-  asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-  ctr = 62 - msb - msb - ctr;
-#else
-  firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-  ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-#ifdef BRANCHLESS
-  ctr += 1;
-  ge32p = (ctr >> 5);	/* If ctr >= 32, ge32p = 1, else 0 */
-  mask = -ge32p;	/* If ctr >= 32, all 1's, else all 0's */
-  ctr &= 0xDF;		/* Subtracts 32 if necessary */
-  value = (gamma << ctr) & mask; /* Keeps result only if ctr >= 32 */
-
-  (*ptr) += ge32p;
-  gamma ^= ((gamma ^ **ptr) & mask); /* Selects *gptr if mask is 1's, else keeps old gamma */
-
-  /* Shift in two parts so it works when ctr originally 32, now 0 */
-  value |= ((gamma >> 1) >> (31 - ctr));
-#else
-  if (ctr < 31) {
-    value = gamma >> (31 - ctr);
-    ctr++;
-  } else {
-    ctr -= 31;
-    value = gamma << ctr;
-    gamma = *(++(*ptr));
-    /* Shift in two parts so it works for ctr == 32 => 0 */
-    value |= ((gamma >> 1) >> (31 - ctr));
-  }
-#endif
-
-  value -= 1;			/* To allow zero to be represented */
-
-  *cum += value;
-
-  return ctr;
-}
-
-
-/* In-lined read_gamma_function */
-Positionsptr_T
-Genome_offsetptr_from_gammas (Positionsptr_T *end0, Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-			      Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo) {
-  Positionsptr_T ptr0;
-  Positionsptr_T *gptr;
-  int ctr;
-#ifdef BRANCHLESS
-  unsigned int ge32p, mask;
-#endif
-  Blocksize_T remainder, j;
-
-  Positionsptr_T gamma;
-  Positionsptr_T value;
-#ifdef HAVE_BUILTIN_CLZ
-  int firstbit;
-#elif defined(HAVE_ASM_BSR)
-  int msb;
-#else
-  Genomecomp_T top;
-  int firstbit;
-#endif
-
-  gptr = &(offsetscomp[gammaptrs[oligo/offsetscomp_blocksize]]);
-  ptr0 = *gptr;
-
-  ctr = 0;
-  remainder = oligo % offsetscomp_blocksize;
-  gamma = *++gptr;
-
-  for (j = 0; j < remainder; j++) {
-    if (gamma == 0U) {
-      ctr -= 32;
-      gamma = *++gptr;
-    }
-
-#ifdef HAVE_BUILTIN_CLZ
-    firstbit = __builtin_clz(gamma);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-    asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-    ctr = 62 - msb - msb - ctr;
-#else
-    firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-#ifdef BRANCHLESS
-    ctr += 1;
-    ge32p = (ctr >> 5);	/* If ctr >= 32, ge32p = 1, else 0 */
-    mask = -ge32p;	/* If ctr >= 32, all 1's, else all 0's */
-    ctr &= 0xDF;		/* Subtracts 32 if necessary */
-    value = (gamma << ctr) & mask; /* Keeps result only if ctr >= 32 */
-
-    gptr += ge32p;
-    gamma ^= ((gamma ^ *gptr) & mask); /* Selects *gptr if mask is 1's, else keeps old gamma */
-
-    /* Shift in two parts so it works when ctr originally 32, now 0 */
-    value |= ((gamma >> 1) >> (31 - ctr));
-#else
-    if (ctr < 31) {
-      value = gamma >> (31 - ctr);
-      ctr++;
-    } else {
-      ctr -= 31;
-      value = gamma << ctr;
-      gamma = *++gptr;
-      /* Shift in two parts so it works for ctr == 32 => 0 */
-      value |= ((gamma >> 1) >> (31 - ctr));
-    }
-#endif
-
-    gamma &= (~0U >> ctr);
-
-#if 0
-    /* Just subtract remainder at end */
-    value -= 1;			/* To allow zero to be represented */
-#endif
-
-    ptr0 += value;
-  }
-
-  ptr0 -= remainder;		/* Makes up for each 1-increment to value */
-
-
-  /* Compute end0 */
-  if (remainder == offsetscomp_blocksize - 1) {
-    if (ctr > 0) {
-      /* Happens only with large integers, but if ctr == 0, we have advanced already */
-      gptr++;			/* Done with last gamma byte */
-    }
-    *end0 = *gptr;
-
-    assert(*end0 == offsetscomp[gammaptrs[oligo/offsetscomp_blocksize + 1]]);
-
-  } else {
-    /* Decode one more value */
-    if (gamma == 0U) {
-      ctr -= 32;
-      gamma = *++gptr;
-    }
-
-#ifdef HAVE_BUILTIN_CLZ
-    firstbit = __builtin_clz(gamma);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-    asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-    ctr = 62 - msb - msb - ctr;
-#else
-    firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-#ifdef BRANCHLESS
-    ctr += 1;
-    ge32p = (ctr >> 5);	/* If ctr >= 32, ge32p = 1, else 0 */
-    mask = -ge32p;	/* If ctr >= 32, all 1's, else all 0's */
-    ctr &= 0xDF;		/* Subtracts 32 if necessary */
-    value = (gamma << ctr) & mask; /* Keeps result only if ctr >= 32 */
-
-    gptr += ge32p;
-    gamma ^= ((gamma ^ *gptr) & mask); /* Selects *gptr if mask is 1's, else keeps old gamma */
-
-    /* Shift in two parts so it works when ctr originally 32, now 0 */
-    value |= ((gamma >> 1) >> (31 - ctr));
-#else
-    if (ctr < 31) {
-      value = gamma >> (31 - ctr);
-      ctr++;
-    } else {
-      ctr -= 31;
-      value = gamma << ctr;
-      gamma = *++gptr;
-      /* Shift in two parts so it works for ctr == 32 => 0 */
-      value |= ((gamma >> 1) >> (31 - ctr));
-    }
-#endif
-
-    /* gamma &= (~0U >> ctr); -- gamma not needed past end0 */
-
-    value -= 1;			/* To allow zero to be represented */
-
-    *end0 = ptr0 + value;
-  }
-
-  return ptr0;
-}
-
-Positionsptr_T
-Genome_offsetptr_only_from_gammas (Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-				   Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo) {
-  Positionsptr_T ptr0;
-  Positionsptr_T *gptr;
-  int ctr;
-#ifdef BRANCHLESS
-  unsigned int ge32p, mask;
-#endif
-  Blocksize_T remainder, j;
-
-  Positionsptr_T gamma;
-  Positionsptr_T value;
-#ifdef HAVE_BUILTIN_CLZ
-  int firstbit;
-#elif defined(HAVE_ASM_BSR)
-  int msb;
-#else
-  Genomecomp_T top;
-  int firstbit;
-#endif
-
-  gptr = &(offsetscomp[gammaptrs[oligo/offsetscomp_blocksize]]);
-  ptr0 = *gptr;
-
-  if ((remainder = oligo % offsetscomp_blocksize) > 0) {
-    ctr = 0;
-    gamma = *++gptr;
-
-    for (j = 0; j < remainder; j++) {
-      if (gamma == 0U) {
-	ctr -= 32;
-	gamma = *++gptr;
-      }
-
-#ifdef HAVE_BUILTIN_CLZ
-      firstbit = __builtin_clz(gamma);
-      ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-      asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-      ctr = 62 - msb - msb - ctr;
-#else
-      firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-      ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-#ifdef BRANCHLESS
-      ctr += 1;
-      ge32p = (ctr >> 5);    /* If ctr >= 32, ge32p = 1, else 0 */
-      mask = -ge32p;	     /* If ctr >= 32, all 1's, else all 0's */
-      ctr &= 0xDF;	     /* Subtracts 32 if necessary */
-      value = (gamma << ctr) & mask; /* Keeps result only if ctr >= 32 */
-
-      gptr += ge32p;
-      gamma ^= ((gamma ^ *gptr) & mask); /* Selects *gptr if mask is 1's, else keeps old gamma */
-
-      /* Shift in two parts so it works when ctr originally 32, now 0 */
-      value |= ((gamma >> 1) >> (31 - ctr));
-#else
-      if (ctr < 31) {
-	value = gamma >> (31 - ctr);
-	ctr++;
-      } else {
-	ctr -= 31;
-	value = gamma << ctr;
-	gamma = *++gptr;
-	/* Shift in two parts so it works for ctr == 32 => 0 */
-	value |= ((gamma >> 1) >> (31 - ctr));
-      }
-#endif
-
-      gamma &= (~0U >> ctr);
-
-#if 0
-      /* Just subtract remainder at end */
-      value -= 1;			/* To allow zero to be represented */
-#endif
-
-      ptr0 += value;
-    }
-
-    ptr0 -= remainder;		/* Makes up for each 1-increment to value */
-  }
-
-  return ptr0;
-}
-
-
-
-#ifdef WORDS_BIGENDIAN
-/* ctr is 0 at high bit and 31 at low bit */
-int
-Genome_read_gamma_bigendian (Positionsptr_T **ptr, int ctr, Positionsptr_T *cum) {
-  Positionsptr_T gamma;
-  Positionsptr_T value;
-#ifdef HAVE_BUILTIN_CLZ
-  int firstbit;
-#elif defined(HAVE_ASM_BSR)
-  Genomecomp_T msb;
-#else
-  Genomecomp_T top;
-  int firstbit;
-#endif
-
-  debug3(printf("Entering read_gamma with ctr %d\n",ctr));
-  gamma = Bigendian_convert_uint(**ptr) & (~0U >> ctr);
-  debug3(printf("buffer is now %08X\n",gamma));
-
-  while (gamma == 0U) {
-    ctr -= 32;
-    gamma = Bigendian_convert_uint(*(++(*ptr)));
-    debug3(printf("new gamma %08X\n",gamma));
-  }
-
-#ifdef HAVE_BUILTIN_CLZ
-  firstbit = __builtin_clz(gamma);
-  ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-  asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-  ctr = 62 - msb - msb - ctr;
-#else
-  firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-  ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-  if (ctr < 31) {
-    value = gamma >> (31 - ctr);
-    ctr++;
-  } else {
-    ctr -= 31;
-    value = gamma << ctr;
-    gamma = Bigendian_convert_uint(*(++(*ptr)));
-    /* Shift in two parts so it works for ctr == 32 => 0 */
-    value |= ((gamma >> 1) >> (31 - ctr));
-  }
-
-  value -= 1;			/* To allow zero to be represented */
-
-  *cum += value;
-
-  return ctr;
-}
-
-
-/* In-lined read_gamma_function */
-Positionsptr_T
-Genome_offsetptr_from_gammas_bigendian (Positionsptr_T *end0, Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-					Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo) {
-  Positionsptr_T ptr0;
-  Positionsptr_T *gptr;
-  int ctr;
-  Blocksize_T remainder, j;
-
-  Positionsptr_T gamma;
-  Positionsptr_T value;
-#ifdef HAVE_BUILTIN_CLZ
-  int firstbit;
-#elif defined(HAVE_ASM_BSR)
-  Genomecomp_T msb;
-#else
-  Genomecomp_T top;
-  int firstbit;
-#endif
-
-  gptr = &(offsetscomp[gammaptrs[oligo/offsetscomp_blocksize]]);
-  ptr0 = Bigendian_convert_uint(*gptr);
-
-  ctr = 0;
-  remainder = oligo % offsetscomp_blocksize;
-  gamma = Bigendian_convert_uint(*++gptr);
-
-  for (j = 0; j < remainder; j++) {
-    if (gamma == 0U) {
-      ctr -= 32;
-      gamma = Bigendian_convert_uint(*++gptr);
-    }
-
-#ifdef HAVE_BUILTIN_CLZ
-    firstbit = __builtin_clz(gamma);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-    asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-    ctr = 62 - msb - msb - ctr;
-#else
-    firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-    if (ctr < 31) {
-      value = gamma >> (31 - ctr);
-      ctr++;
-    } else {
-      ctr -= 31;
-      value = gamma << ctr;
-      gamma = Bigendian_convert_uint(*++gptr);
-      /* Shift in two parts so it works for ctr == 32 => 0 */
-      value |= ((gamma >> 1) >> (31 - ctr));
-    }
-
-    gamma &= (~0U >> ctr);
-
-#if 0
-    /* Just subtract remainder at end */
-    value -= 1;			/* To allow zero to be represented */
-#endif
-
-    ptr0 += value;
-  }
-
-  ptr0 -= remainder;		/* Makes up for each 1-increment to value */
-
-
-  /* Compute end0 */
-  if (remainder == offsetscomp_blocksize - 1) {
-    if (ctr > 0) {
-      /* Happens only with large integers, but if ctr == 0, we have advanced already */
-      gptr++;			/* Done with last gamma byte */
-    }
-    *end0 = Bigendian_convert_uint(*gptr);
-
-    /* assert(*end0 == offsetscomp[gammaptrs[oligo/offsetscomp_blocksize + 1]]); */
-
-  } else {
-    /* Decode one more value */
-    if (gamma == 0U) {
-      ctr -= 32;
-      gamma = Bigendian_convert_uint(*++gptr);
-    }
-
-#ifdef HAVE_BUILTIN_CLZ
-    firstbit = __builtin_clz(gamma);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-    asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-    ctr = 62 - msb - msb - ctr;
-#else
-    firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-    ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-    if (ctr < 31) {
-      value = gamma >> (31 - ctr);
-      ctr++;
-    } else {
-      ctr -= 31;
-      value = gamma << ctr;
-      gamma = Bigendian_convert_uint(*++gptr);
-      /* Shift in two parts so it works for ctr == 32 => 0 */
-      value |= ((gamma >> 1) >> (31 - ctr));
-    }
-
-    /* gamma &= (~0U >> ctr); -- gamma not needed past end0 */
-
-    value -= 1;			/* To allow zero to be represented */
-
-    *end0 = ptr0 + value;
-  }
-
-  return ptr0;
-}
-
-
-Positionsptr_T
-Genome_offsetptr_only_from_gammas_bigendian (Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-					     Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo) {
-  Positionsptr_T ptr0;
-  Positionsptr_T *gptr;
-  int ctr;
-  Blocksize_T remainder, j;
-
-  Positionsptr_T gamma;
-  Positionsptr_T value;
-#ifdef HAVE_BUILTIN_CLZ
-  int firstbit;
-#elif defined(HAVE_ASM_BSR)
-  int msb;
-#else
-  Genomecomp_T top;
-  int firstbit;
-#endif
-
-  gptr = &(offsetscomp[gammaptrs[oligo/offsetscomp_blocksize]]);
-  ptr0 = Bigendian_convert_uint(*gptr);
-
-  if ((remainder = oligo % offsetscomp_blocksize) > 0) {
-    ctr = 0;
-    gamma = Bigendian_convert_uint(*++gptr);
-
-    for (j = 0; j < remainder; j++) {
-      if (gamma == 0U) {
-	ctr -= 32;
-	gamma = Bigendian_convert_uint(*++gptr);
-      }
-
-#ifdef HAVE_BUILTIN_CLZ
-      firstbit = __builtin_clz(gamma);
-      ctr = firstbit + firstbit - ctr /* + 1 */;
-#elif defined(HAVE_ASM_BSR)
-      asm("bsr %1,%0" : "=r"(msb) : "r"(gamma));
-      ctr = 62 - msb - msb - ctr;
-#else
-      firstbit = ((top = gamma >> 16) ? clz_table[top] : 16 + clz_table[gamma]);
-      ctr = firstbit + firstbit - ctr /* + 1 */;
-#endif
-
-      if (ctr < 31) {
-	value = gamma >> (31 - ctr);
-	ctr++;
-      } else {
-	ctr -= 31;
-	value = gamma << ctr;
-	gamma = Bigendian_convert_uint(*++gptr);
-	/* Shift in two parts so it works for ctr == 32 => 0 */
-	value |= ((gamma >> 1) >> (31 - ctr));
-      }
-
-      gamma &= (~0U >> ctr);
-
-#if 0
-      /* Just subtract remainder at end */
-      value -= 1;			/* To allow zero to be represented */
-#endif
-
-      ptr0 += value;
-    }
-
-    ptr0 -= remainder;		/* Makes up for each 1-increment to value */
-  }
-
-  return ptr0;
-}
-#endif
-
-
-/* Genome_hr code starts here */
-
-
-#ifdef GSNAP
-
-static Storedoligomer_T
-convert_mark_a (Storedoligomer_T high, Storedoligomer_T low) {
-  Storedoligomer_T mark;
-
-  mark = (mark_a[high >> 16] << 24);
-  mark |= mark_a[high & 0x0000FFFF] << 16;
-  mark |= mark_a[low >> 16] << 8;
-  mark |= mark_a[low & 0x0000FFFF];
-  return mark;
-}
-
-static Storedoligomer_T
-convert_mark_c (Storedoligomer_T high, Storedoligomer_T low) {
-  Storedoligomer_T mark;
-
-  mark = (mark_c[high >> 16] << 24);
-  mark |= mark_c[high & 0x0000FFFF] << 16;
-  mark |= mark_c[low >> 16] << 8;
-  mark |= mark_c[low & 0x0000FFFF];
-  return mark;
-}
-
-static Storedoligomer_T
-convert_mark_g (Storedoligomer_T high, Storedoligomer_T low) {
-  Storedoligomer_T mark;
-
-  mark = (mark_g[high >> 16] << 24);
-  mark |= mark_g[high & 0x0000FFFF] << 16;
-  mark |= mark_g[low >> 16] << 8;
-  mark |= mark_g[low & 0x0000FFFF];
-  return mark;
-}
-
-static Storedoligomer_T
-convert_mark_t (Storedoligomer_T high, Storedoligomer_T low) {
-  Storedoligomer_T mark;
-
-  mark = (mark_t[high >> 16] << 24);
-  mark |= mark_t[high & 0x0000FFFF] << 16;
-  mark |= mark_t[low >> 16] << 8;
-  mark |= mark_t[low & 0x0000FFFF];
-  return mark;
-}
-
-#endif
-
-
-#if 0
-static int
-popcount_run (Genomecomp_T *lastbit, int count, Genomecomp_T diff) {
-  Genomecomp_T bit;
-  int i;
-
-  for (i = 0; i < 32; i++) {
-    bit = diff & 1U;
-    count += *lastbit & bit;
-    diff >>= 1;
-    *lastbit = bit;
-  }
-
-  return count;
-}
-#endif
-
-
-static void
-write_chars (Genomecomp_T high, Genomecomp_T low, Genomecomp_T flags) {
-  char Buffer[33];
-  int i;
-
-  Buffer[32] = '\0';
-  /* printf("%08X %08X %08X => ",high,low,flags); */
-  for (i = 0; i < 16; i++) {
-    switch (low & 3U) {
-    case 0U: Buffer[i] = 'A'; break;
-    case 1U: Buffer[i] = 'C'; break;
-    case 2U: Buffer[i] = 'G'; break;
-    case 3U: Buffer[i] = 'T'; break;
-    default: abort();
-    }
-    low >>= 2;
-  }
-  for ( ; i < 32; i++) {
-    switch (high & 3U) {
-    case 0U: Buffer[i] = 'A'; break;
-    case 1U: Buffer[i] = 'C'; break;
-    case 2U: Buffer[i] = 'G'; break;
-    case 3U: Buffer[i] = 'T'; break;
-    default: abort();
-    }
-    high >>= 2;
-  }
-  for (i = 0; i < 32; i++) {
-    if ((flags & 1U) == 1U) {
-      Buffer[i] = 'N';
-    }
-    flags >>= 1;
-  }
-
-  printf("%s",Buffer);
-  return;
-}
-
-
-#ifdef DEBUG
-static void
-print_blocks (Genomecomp_T *blocks, int nblocks) {
-  int ptr = 0;
-
-  while (ptr < nblocks*3) {
-    printf("high: %08X  low: %08X  flags: %08X\t",
-	   blocks[ptr],blocks[ptr+1],blocks[ptr+2]);
-    write_chars(blocks[ptr],blocks[ptr+1],blocks[ptr+2]);
-    printf("\n");
-    ptr += 3;
-  }
-  printf("\n");
-  return;
-}
-#endif
-
-
-static void
-Genome_print_blocks (Genomecomp_T *blocks, Univcoord_T startpos, Univcoord_T endpos) {
-  /* Chrpos_T length = endpos - startpos; */
-  Univcoord_T startblock, endblock, ptr;
-  int startdiscard, enddiscard;
-  Genomecomp_T high, low, flags;
-  int i;
-
-  /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
-
-  ptr = startblock = startpos/32U*3;
-  endblock = endpos/32U*3;
-  startdiscard = startpos % 32;
-  enddiscard = endpos % 32;
-  
-  /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
-  printf("                                              \t");
-  printf("%u\t",startblock/3*32U);
-  for (i = 0; i < startdiscard; i++) {
-    printf("*");
-  }
-  printf("\n");
-
-  for (ptr = startblock ; ptr <= endblock; ptr += 3) {
-#ifdef WORDS_BIGENDIAN
-    high = Bigendian_convert_uint(blocks[ptr]);
-    low = Bigendian_convert_uint(blocks[ptr+1]);
-    flags = Bigendian_convert_uint(blocks[ptr+2]);
-#else
-    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
-#endif
-    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
-    printf("%u\t",ptr/3*32U);
-    write_chars(high,low,flags);
-    printf("\n");
-  }
-
-  /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
-  printf("                                              \t");
-  printf("%u\t",(endblock+3)/3*32U);
-  for (i = 0; i < enddiscard; i++) {
-    printf(" ");
-  }
-  for ( ; i < 32; i++) {
-    printf("*");
-  }
-  printf("\n");
-
-
-  return;
-}
-
-#ifdef DEBUG
-static void
-Genome_print_blocks_snp (Genomecomp_T *blocks, Genomecomp_T *snp_blocks, Univcoord_T startpos, Univcoord_T endpos) {
-  /* Chrpos_T length = endpos - startpos; */
-  Univcoord_T startblock, endblock, ptr;
-  int startdiscard, enddiscard;
-  Genomecomp_T high, low, flags, snpmask;
-
-  /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
-
-  ptr = startblock = startpos/32U*3;
-  endblock = endpos/32U*3;
-  startdiscard = startpos % 32;
-  enddiscard = endpos % 32;
-  
-  for (ptr = startblock ; ptr <= endblock; ptr += 3) {
-#ifdef WORDS_BIGENDIAN
-    high = Bigendian_convert_uint(blocks[ptr]);
-    low = Bigendian_convert_uint(blocks[ptr+1]);
-    flags = Bigendian_convert_uint(blocks[ptr+2]);
-    snpmask = Bigendian_convert_uint(snp_blocks[ptr+2]);
-#else
-    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2]; snpmask = snp_blocks[ptr+2];
-#endif
-    printf("high: %08X  low: %08X  flags: %08X  snpmask: %08X\n",high,low,flags,snpmask);
-  }
-
-  return;
-}
-#endif
-
-
-static Genomecomp_T *ref_blocks;
-static Genomecomp_T *snp_blocks;
-
-
-/* Note: not currently called by any procedure */
-#if 0
-int
-Genome_count_mismatches (Compress_T query_compress, Univcoord_T left, Univcoord_T left_plus_length) {
-  int nmismatches;
-  int_T startdiscard, enddiscard;
-  Genomecomp_T *startblock, *endblock, *ptr;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff, compare;
-  int nshift, i, k = 0;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in Genome_count_mismatches) from %u to %u:\n",left,left_plus_length);
-	Genome_print_blocks(ref_blocks,left,left_plus_length);
-	printf("\n");
-	);
-
-  ptr = startblock = &(ref_blocks[left/32U*3]); /*(left+pos5)/32U*3 */
-  endblock = &(ref_blocks[left_plus_length/32U*3]); /* (left+pos3)/32U*3 */
-  startdiscard = left % 32; /* (left+pos5) % 32 */
-  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
-  
-  nshift = left % 32;
-  query_shifted = Compress_shift(query_compress,nshift);
-#if 0
-  /* Not needed if pos5 is 0, since nshift < 32, so nshift/32U*3 = 0 */
-  query_shifted = &(query_shifted[nshift/32U*3]); /* (nshift+pos5)/32U*3 */
-#endif
-
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-
-  /* Initial: High */
-  debug(printf("comparing high: %08X with %08X, ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-  compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-  compare = (*query_shifted++) ^ (*ptr++);
-#endif
-  debug(printf("adding %08X and %08X to diff\n",
-	       reduce_nt[compare & 0x0000FFFF] << 16,reduce_nt[compare >> 16] << 24));
-  diff = (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-
-  /* Initial: Low */
-  debug(printf("comparing low: %08X with %08X, ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-  compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-  compare = (*query_shifted++) ^ (*ptr++);
-#endif
-  debug(printf("adding %08X and %08X to diff\n",
-	       reduce_nt[compare & 0x0000FFFF],reduce_nt[compare >> 16] << 8));
-
-  diff |= reduce_nt[compare >> 16] << 8;
-  diff |= reduce_nt[compare & 0x0000FFFF];
-
-  /* Initial: Flags */
-  debug(printf("comparing flags: %08X with %08X, yielding",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-  diff |= (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-  diff |= (*query_shifted++) ^ (*ptr++);
-#endif
-  debug(printf(" %08X\n",diff));
-
-  if (startblock == endblock) {
-    /* Mask both */
-    diff &= (~0U << startdiscard);
-    diff &= ~(~0U << enddiscard);
-    debug(printf("adding masks %08X and %08x = %08X\n",
-		 ~0U << startdiscard,~(~0U << enddiscard),(~0U << startdiscard) & ~(~0U << enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    nmismatches = __builtin_popcount(diff);
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-#else
-    nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-#endif
-
-  } else {
-    /* Mask startdiscard */
-    diff &= (~0U << startdiscard);
-    debug(printf("adding start mask %08X\n",~0U << startdiscard));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    nmismatches = __builtin_popcount(diff);
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-#else
-    nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		diff >> 16,count_bits[diff >> 16]));
-#endif
-
-    while (ptr < endblock) {
-      /* Middle: High */
-      debug(printf("comparing high: %08X with %08X, ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-      compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-      compare = (*query_shifted++) ^ (*ptr++);
-#endif
-      debug(printf("adding %08X and %08X to diff\n",
-		   reduce_nt[compare & 0x0000FFFF] << 16,reduce_nt[compare >> 16] << 24));
-      diff = (reduce_nt[compare >> 16] << 24);
-      diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-
-      /* Middle: Low */
-      debug(printf("comparing low: %08X with %08X, ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-      compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-      compare = (*query_shifted++) ^ (*ptr++);
-#endif
-      debug(printf("adding %08X and %08X to diff\n",
-		   reduce_nt[compare & 0x0000FFFF],reduce_nt[compare >> 16] << 8));
-      diff |= reduce_nt[compare >> 16] << 8;
-      diff |= reduce_nt[compare & 0x0000FFFF];
-
-      /* Middle: Flags */
-      debug(printf("comparing flags: %08X with %08X, yielding",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-      diff |= (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-      diff |= (*query_shifted++) ^ (*ptr++);
-#endif
-      debug(printf(" %08X\n",diff));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      nmismatches += __builtin_popcount(diff);
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-#else
-      nmismatches += count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-#endif
-    }
-
-    /* Final: High */
-    debug(printf("comparing high: %08X with %08X, ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-    compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-    compare = (*query_shifted++) ^ (*ptr++);
-#endif
-    debug(printf("adding %08X and %08X to diff\n",
-		 reduce_nt[compare & 0x0000FFFF] << 16,reduce_nt[compare >> 16] << 24));
-    diff = (reduce_nt[compare >> 16] << 24);
-    diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-
-    /* Final: Low */
-    debug(printf("comparing low: %08X with %08X, ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-    compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-    compare = (*query_shifted++) ^ (*ptr++);
-#endif
-    debug(printf("adding %08X and %08X to diff\n",
-		 reduce_nt[compare & 0x0000FFFF],reduce_nt[compare >> 16] << 8));
-    diff |= reduce_nt[compare >> 16] << 8;
-    diff |= reduce_nt[compare & 0x0000FFFF];
-
-    /* Final: Flags */
-    debug(printf("comparing flags: %08X with %08X, yielding",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff |= (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-    diff |= (*query_shifted++) ^ (*ptr++);
-#endif
-    debug(printf(" %08X\n",diff));
-
-    /* Mask enddiscard */
-    diff &= ~(~0U << enddiscard);
-    debug(printf("adding end mask %08x\n",~(~0U << enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    nmismatches += __builtin_popcount(diff);
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-#else
-    nmismatches += count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		diff >> 16,count_bits[diff >> 16]));
-#endif
-  }
-
-  return nmismatches;
-}
-#endif
-
-
-
-/* These are global values, used for alignment.  But for trimming, we want to treat query N's as mismatches */
-static bool query_unk_mismatch_p = false;
-static bool genome_unk_mismatch_p = true;
-
-
-static Genomecomp_T
-block_diff_standard (Genomecomp_T *query_shifted, Genomecomp_T *ptr, bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* High */
-  debug(printf("Comparing high: query %08X with genome %08X ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-  compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-  compare = (*query_shifted++) ^ (*ptr++);
-#endif
-  diff = (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X with genome %08X ",*query_shifted,*ptr));
-#ifdef WORDS_BIGENDIAN
-  compare = (*query_shifted++) ^ Bigendian_convert_uint(*ptr++);
-#else
-  compare = (*query_shifted++) ^ (*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-
-  /* Query: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  /* Genome: Considering N as a mismatch */
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(*ptr);
-#else
-    diff |= (*ptr);
-#endif
-  } else {
-    debug(printf("Clearing genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(*ptr));
-#else
-    diff &= ~(*ptr);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-static Genomecomp_T
-block_diff_no_flags (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
-		     bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* High */
-  debug(printf("Comparing high: query %08X with alt genome %08X ",*query_shifted,alt_ptr[0]));
-#ifdef WORDS_BIGENDIAN
-  compare = (*query_shifted++) ^ Bigendian_convert_uint(alt_ptr[0]);
-#else
-  compare = (*query_shifted++) ^ (alt_ptr[0]);
-#endif
-  diff = (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X with alt genome %08X ",*query_shifted,alt_ptr[1]));
-#ifdef WORDS_BIGENDIAN
-  compare = (*query_shifted++) ^ Bigendian_convert_uint(alt_ptr[1]);
-#else
-  compare = (*query_shifted++) ^ (alt_ptr[1]);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-
-  /* Query: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  /* Ref genome: Considering N as a mismatch */
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(ref_ptr[2]);
-#else
-    diff |= (ref_ptr[2]);
-#endif
-  } else {
-    debug(printf("Clearing ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(ref_ptr[2]));
-#else
-    diff &= ~(ref_ptr[2]);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-
-  return diff;
-}
-
-
-/* wildcard if ref == alt && ref_flag == 0 && alt_flag == 1 */
-/* not wildcard if ref != alt || ref_flag == 1 || alt_flag == 0 */
-/* diffs are (query ^ ref) & (query ^ alt) & ~wildcard */
-static Genomecomp_T
-block_diff_non_wildcard (Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr) {
-  Genomecomp_T non_wildcard, compare, ref_flags, alt_flags;
-
-  /* Test for equality of ref and alt */
-  debug(printf("Equality high: ref genome %08X with alt genome %08X ",ref_ptr[0],alt_ptr[0]));
-#ifdef WORDS_BIGENDIAN
-  compare = Bigendian_convert_uint(ref_ptr[0]) ^ Bigendian_convert_uint(alt_ptr[0]);
-#else
-  compare = (ref_ptr[0]) ^ (alt_ptr[0]);
-#endif
-  non_wildcard = (reduce_nt[compare >> 16] << 24);
-  non_wildcard |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",non_wildcard));
-  
-  debug(printf("Equality low: ref genome %08X with alt genome %08X ",ref_ptr[1],alt_ptr[1]));
-#ifdef WORDS_BIGENDIAN
-  compare = Bigendian_convert_uint(ref_ptr[1]) ^ Bigendian_convert_uint(alt_ptr[1]);
-#else
-  compare = (ref_ptr[1]) ^ (alt_ptr[1]);
-#endif
-  non_wildcard |= (reduce_nt[compare >> 16] << 8);
-  non_wildcard |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",non_wildcard));
-
-  /* Ref flags */
-  debug(printf("Wildcard add ref flags: ref genome %08X and alt genome %08X ",ref_ptr[2],alt_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-  ref_flags = Bigendian_convert_uint(ref_ptr[2]);
-#else
-  ref_flags = (ref_ptr[2]);
-#endif
-  non_wildcard |= ref_flags;
-
-  /* Alt flags */
-  debug(printf("Wildcard add alt flags: ref genome %08X and alt genome %08X ",ref_ptr[2],alt_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-  alt_flags = Bigendian_convert_uint(alt_ptr[2]);
-#else
-  alt_flags = (alt_ptr[2]);
-#endif
-  non_wildcard |= ~alt_flags;
-  debug(printf(" => non_wildcard %08X\n",non_wildcard));
-
-  return non_wildcard;
-}
-
-
-#ifdef GSNAP
-
-/************************************************************************
- *   CMET
- ************************************************************************/
-
-static Genomecomp_T
-block_diff_metct (Genomecomp_T *query_shifted, Genomecomp_T *ptr, bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-T to query-C mismatches */
-  debug(printf("Marking query C %08X and genome T %08X ",
-	       convert_mark_c(query_shifted[0],query_shifted[1]),
-	       convert_mark_t(ptr[0],ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_c(query_shifted[0],query_shifted[1]) & 
-    convert_mark_t(Bigendian_convert_uint(ptr[0]),Bigendian_convert_uint(ptr[1]));
-#else
-  diff = convert_mark_c(query_shifted[0],query_shifted[1]) & convert_mark_t(ptr[0],ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (CT %08X) with genome %08X (CT %08X) ",
-	       *query_shifted,Cmet_reduce_ct(*query_shifted),*ptr,Cmet_reduce_ct(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (CT %08X) with genome %08X (CT %08X) ",
-	       *query_shifted,Cmet_reduce_ct(*query_shifted),*ptr,Cmet_reduce_ct(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Flags: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(*ptr);
-#else
-    diff |= (*ptr);
-#endif
-  } else {
-    debug(printf("Clearing genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(*ptr));
-#else
-    diff &= ~(*ptr);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-static Genomecomp_T
-block_diff_metga (Genomecomp_T *query_shifted, Genomecomp_T *ptr, bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-A to query-G mismatches */
-  debug(printf("Marking query G %08X and genome A %08X ",
-	       convert_mark_g(query_shifted[0],query_shifted[1]),
-	       convert_mark_a(ptr[0],ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_g(query_shifted[0],query_shifted[1]) & 
-    convert_mark_a(Bigendian_convert_uint(ptr[0]),Bigendian_convert_uint(ptr[1]));
-#else
-  diff = convert_mark_g(query_shifted[0],query_shifted[1]) & convert_mark_a(ptr[0],ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (GA %08X) with genome %08X (GA %08X) ",
-	       *query_shifted,Cmet_reduce_ga(*query_shifted),*ptr,Cmet_reduce_ga(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (GA %08X) with genome %08X (GA %08X) ",
-	       *query_shifted,Cmet_reduce_ga(*query_shifted),*ptr,Cmet_reduce_ga(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Flags: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(*ptr);
-#else
-    diff |= (*ptr);
-#endif
-  } else {
-    debug(printf("Clearing genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(*ptr));
-#else
-    diff &= ~(*ptr);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-
-static Genomecomp_T
-block_diff_metct_no_flags (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
-			   bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-T to query-C mismatches */
-  debug(printf("Marking query C %08X and genome T %08X ",
-	       convert_mark_c(query_shifted[0],query_shifted[1]),
-	       convert_mark_t(alt_ptr[0],alt_ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_c(query_shifted[0],query_shifted[1]) & 
-    convert_mark_t(Bigendian_convert_uint(alt_ptr[0]),Bigendian_convert_uint(alt_ptr[1]));
-#else
-  diff = convert_mark_c(query_shifted[0],query_shifted[1]) & convert_mark_t(alt_ptr[0],alt_ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (CT %08X) with genome %08X (CT %08X) ",
-	       *query_shifted,Cmet_reduce_ct(*query_shifted),*alt_ptr,Cmet_reduce_ct(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (CT %08X) with genome %08X (CT %08X) ",
-	       *query_shifted,Cmet_reduce_ct(*query_shifted),*alt_ptr,Cmet_reduce_ct(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Cmet_reduce_ct(*query_shifted++) ^ Cmet_reduce_ct(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-
-  /* Query: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  /* Ref genome: Considering N as a mismatch */
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(ref_ptr[2]);
-#else
-    diff |= (ref_ptr[2]);
-#endif
-  } else {
-    debug(printf("Clearing ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(ref_ptr[2]));
-#else
-    diff &= ~(ref_ptr[2]);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-static Genomecomp_T
-block_diff_metga_no_flags (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
-			   bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-A to query-G mismatches */
-  debug(printf("Marking query G %08X and genome A %08X ",
-	       convert_mark_g(query_shifted[0],query_shifted[1]),
-	       convert_mark_a(alt_ptr[0],alt_ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_g(query_shifted[0],query_shifted[1]) & 
-    convert_mark_a(Bigendian_convert_uint(alt_ptr[0]),Bigendian_convert_uint(alt_ptr[1]));
-#else
-  diff = convert_mark_g(query_shifted[0],query_shifted[1]) & convert_mark_a(alt_ptr[0],alt_ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (GA %08X) with genome %08X (GA %08X) ",
-	       *query_shifted,Cmet_reduce_ga(*query_shifted),*alt_ptr,Cmet_reduce_ga(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (GA %08X) with genome %08X (GA %08X) ",
-	       *query_shifted,Cmet_reduce_ga(*query_shifted),*alt_ptr,Cmet_reduce_ga(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Cmet_reduce_ga(*query_shifted++) ^ Cmet_reduce_ga(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-
-  /* Query: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  /* Ref genome: Considering N as a mismatch */
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(ref_ptr[2]);
-#else
-    diff |= (ref_ptr[2]);
-#endif
-  } else {
-    debug(printf("Clearing ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(ref_ptr[2]));
-#else
-    diff &= ~(ref_ptr[2]);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-/************************************************************************
- *   ATOI
- ************************************************************************/
-
-static Genomecomp_T
-block_diff_a2iag (Genomecomp_T *query_shifted, Genomecomp_T *ptr, bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-G to query-A mismatches */
-  debug(printf("Marking query A %08X and genome G %08X ",
-	       convert_mark_a(query_shifted[0],query_shifted[1]),
-	       convert_mark_g(ptr[0],ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_a(query_shifted[0],query_shifted[1]) & 
-    convert_mark_g(Bigendian_convert_uint(ptr[0]),Bigendian_convert_uint(ptr[1]));
-#else
-  diff = convert_mark_a(query_shifted[0],query_shifted[1]) & convert_mark_g(ptr[0],ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (AG %08X) with genome %08X (AG %08X) ",
-	       *query_shifted,Atoi_reduce_ag(*query_shifted),*ptr,Atoi_reduce_ag(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (AG %08X) with genome %08X (AG %08X) ",
-	       *query_shifted,Atoi_reduce_ag(*query_shifted),*ptr,Atoi_reduce_ag(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Flags: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(*ptr);
-#else
-    diff |= (*ptr);
-#endif
-  } else {
-    debug(printf("Clearing genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(*ptr));
-#else
-    diff &= ~(*ptr);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-static Genomecomp_T
-block_diff_a2itc (Genomecomp_T *query_shifted, Genomecomp_T *ptr, bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-C to query-T mismatches */
-  debug(printf("Marking query T %08X and genome C %08X ",
-	       convert_mark_t(query_shifted[0],query_shifted[1]),
-	       convert_mark_c(ptr[0],ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_t(query_shifted[0],query_shifted[1]) & 
-    convert_mark_c(Bigendian_convert_uint(ptr[0]),Bigendian_convert_uint(ptr[1]));
-#else
-  diff = convert_mark_t(query_shifted[0],query_shifted[1]) & convert_mark_c(ptr[0],ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (TC %08X) with genome %08X (TC %08X) ",
-	       *query_shifted,Atoi_reduce_tc(*query_shifted),*ptr,Atoi_reduce_tc(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (TC %08X) with genome %08X (TC %08X) ",
-	       *query_shifted,Atoi_reduce_tc(*query_shifted),*ptr,Atoi_reduce_tc(*ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(Bigendian_convert_uint(*ptr++));
-#else
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(*ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Flags: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(*ptr);
-#else
-    diff |= (*ptr);
-#endif
-  } else {
-    debug(printf("Clearing genome flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(*ptr));
-#else
-    diff &= ~(*ptr);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-static Genomecomp_T
-block_diff_a2iag_no_flags (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
-			   bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-G to query-A mismatches */
-  debug(printf("Marking query A %08X and genome G %08X ",
-	       convert_mark_a(query_shifted[0],query_shifted[1]),
-	       convert_mark_g(alt_ptr[0],alt_ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_a(query_shifted[0],query_shifted[1]) & 
-    convert_mark_g(Bigendian_convert_uint(alt_ptr[0]),Bigendian_convert_uint(alt_ptr[1]));
-#else
-  diff = convert_mark_a(query_shifted[0],query_shifted[1]) & convert_mark_g(alt_ptr[0],alt_ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (AG %08X) with genome %08X (AG %08X) ",
-	       *query_shifted,Atoi_reduce_ag(*query_shifted),*alt_ptr,Atoi_reduce_ag(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (AG %08X) with genome %08X (AG %08X) ",
-	       *query_shifted,Atoi_reduce_ag(*query_shifted),*alt_ptr,Atoi_reduce_ag(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Atoi_reduce_ag(*query_shifted++) ^ Atoi_reduce_ag(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-
-  /* Query: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  /* Ref genome: Considering N as a mismatch */
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(ref_ptr[2]);
-#else
-    diff |= (ref_ptr[2]);
-#endif
-  } else {
-    debug(printf("Clearing ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(ref_ptr[2]));
-#else
-    diff &= ~(ref_ptr[2]);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-
-static Genomecomp_T
-block_diff_a2itc_no_flags (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
-			   bool query_unk_mismatch_local_p) {
-  Genomecomp_T diff, compare;
-
-  /* Mark genome-C to query-T mismatches */
-  debug(printf("Marking query T %08X and genome C %08X ",
-	       convert_mark_t(query_shifted[0],query_shifted[1]),
-	       convert_mark_c(alt_ptr[0],alt_ptr[1])));
-#ifdef WORDS_BIGENDIAN
-  diff = convert_mark_t(query_shifted[0],query_shifted[1]) & 
-    convert_mark_c(Bigendian_convert_uint(alt_ptr[0]),Bigendian_convert_uint(alt_ptr[1]));
-#else
-  diff = convert_mark_t(query_shifted[0],query_shifted[1]) & convert_mark_c(alt_ptr[0],alt_ptr[1]);
-#endif
-  debug(printf(" => diff %08X\n",diff));
-
-  /* High */
-  debug(printf("Comparing high: query %08X (TC %08X) with genome %08X (TC %08X) ",
-	       *query_shifted,Atoi_reduce_tc(*query_shifted),*alt_ptr,Atoi_reduce_tc(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 24);
-  diff |= reduce_nt[compare & 0x0000FFFF] << 16;
-  debug(printf(" => diff %08X\n",diff));
-
-  /* Low */
-  debug(printf("Comparing low: query %08X (TC %08X) with genome %08X (TC %08X) ",
-	       *query_shifted,Atoi_reduce_tc(*query_shifted),*alt_ptr,Atoi_reduce_tc(*alt_ptr)));
-#ifdef WORDS_BIGENDIAN
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(Bigendian_convert_uint(*alt_ptr++));
-#else
-  compare = Atoi_reduce_tc(*query_shifted++) ^ Atoi_reduce_tc(*alt_ptr++);
-#endif
-  diff |= (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug(printf(" => diff %08X\n",diff));
-
-
-  /* Query: Considering N as a mismatch */
-  if (query_unk_mismatch_local_p) {
-    debug(printf("Marking query flags: query %08X ",*query_shifted));
-    diff |= (*query_shifted);
-  } else {
-    debug(printf("Clearing query flags: query %08X ",*query_shifted));
-    diff &= ~(*query_shifted);
-  }
-
-  /* Ref genome: Considering N as a mismatch */
-  if (genome_unk_mismatch_p) {
-    debug(printf("Marking ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff |= Bigendian_convert_uint(ref_ptr[2]);
-#else
-    diff |= (ref_ptr[2]);
-#endif
-  } else {
-    debug(printf("Clearing ref genome flags: genome %08X ",ref_ptr[2]));
-#ifdef WORDS_BIGENDIAN
-    diff &= ~(Bigendian_convert_uint(ref_ptr[2]));
-#else
-    diff &= ~(ref_ptr[2]);
-#endif
-  }
-  debug(printf(" => diff %08X\n",diff));
-
-  return diff;
-}
-
-#endif
-
-
-
-static Mode_T mode;
-
-static inline Genomecomp_T
-block_diff (Genomecomp_T *query_shifted, Genomecomp_T *ptr, bool plusp, int genestrand, bool query_unk_mismatch_local_p) {
-#ifndef GSNAP
-  return block_diff_standard(query_shifted,ptr,query_unk_mismatch_local_p);
-#else
-  if (mode == STANDARD) {
-    return block_diff_standard(query_shifted,ptr,query_unk_mismatch_local_p);
-  } else if (mode == CMET_STRANDED) {
-    return plusp ? block_diff_metct(query_shifted,ptr,query_unk_mismatch_local_p) :
-      block_diff_metga(query_shifted,ptr,query_unk_mismatch_local_p);
-  } else if (mode == CMET_NONSTRANDED) {
-    return (genestrand == +1) ? block_diff_metct(query_shifted,ptr,query_unk_mismatch_local_p) :
-      block_diff_metga(query_shifted,ptr,query_unk_mismatch_local_p);
-  } else if (mode == ATOI_STRANDED) {
-    return plusp ? block_diff_a2iag(query_shifted,ptr,query_unk_mismatch_local_p) :
-      block_diff_a2itc(query_shifted,ptr,query_unk_mismatch_local_p);
-  } else if (mode == ATOI_NONSTRANDED) {
-    return (genestrand == +1) ? block_diff_a2iag(query_shifted,ptr,query_unk_mismatch_local_p) :
-      block_diff_a2itc(query_shifted,ptr,query_unk_mismatch_local_p);
-  } else {
-    abort();
-    return 0U;
-  }
-#endif
-}
-
-static inline Genomecomp_T
-block_diff_snp (Genomecomp_T *query_shifted, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr, bool plusp, int genestrand,
-		bool query_unk_mismatch_local_p) {
-#ifndef GSNAP
-  return (block_diff_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p) & block_diff_non_wildcard(ref_ptr,alt_ptr));
-#else
-  if (mode == STANDARD) {
-    return (block_diff_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p) & block_diff_non_wildcard(ref_ptr,alt_ptr));
-  } else if (mode == CMET_STRANDED) {
-    return plusp ? block_diff_metct_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p) :
-      block_diff_metga_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p);
-  } else if (mode == CMET_NONSTRANDED) {
-    return (genestrand == +1) ? block_diff_metct_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p) :
-      block_diff_metga_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p);
-  } else if (mode == ATOI_STRANDED) {
-    return plusp ? block_diff_a2iag_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p) :
-      block_diff_a2itc_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p);
-  } else if (mode == ATOI_NONSTRANDED) {
-    return (genestrand == +1) ? block_diff_a2iag_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p) :
-      block_diff_a2itc_no_flags(query_shifted,ref_ptr,alt_ptr,query_unk_mismatch_local_p);
-  } else {
-    abort();
-    return 0U;
-  }
-#endif
-}
-
-
-void
-Genome_hr_setup (Genomecomp_T *ref_blocks_in, Genomecomp_T *snp_blocks_in,
-		 bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
-		 Mode_T mode_in) {
-  ref_blocks = ref_blocks_in;
-  snp_blocks = snp_blocks_in;
-  query_unk_mismatch_p = query_unk_mismatch_p_in;
-  genome_unk_mismatch_p = genome_unk_mismatch_p_in;
-  mode = mode_in;
-
-#if 0
-  if (cmetp == false) {
-    block_diff = block_diff_standard;
-    block_diff_snp = block_diff_snp_standard;
-  } else {
-    block_diff = block_diff_cmet;
-    block_diff_snp = block_diff_snp_cmet;
-  }
-#endif
-
-
-  return;
-}
-
-void
-Genome_hr_user_setup (UINT4 *ref_blocks_in,
-		      bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
-		      Mode_T mode_in) {
-  ref_blocks = ref_blocks_in;
-  snp_blocks = (UINT4 *) NULL;
-  query_unk_mismatch_p = query_unk_mismatch_p_in;
-  genome_unk_mismatch_p = genome_unk_mismatch_p_in;
-  mode = mode_in;
-
-#if 0
-  if (cmetp == false) {
-    block_diff = block_diff_standard;
-    block_diff_snp = block_diff_snp_standard;
-  } else {
-    block_diff = block_diff_cmet;
-    block_diff_snp = block_diff_snp_cmet;
-  }
-#endif
-
-
-  return;
-}
-
-
-
-/************************************************************************/
-
-/*                 76543210 */
-#define HIGH_BIT 0x80000000
-
-#define clear_start(diff,startdiscard) (diff & (~0U << (startdiscard)))
-#define clear_end(diff,enddiscard) (diff & ~(~0U << (enddiscard)))
-
-#define clear_start_mask(startdiscard) (~0U << (startdiscard))
-#define clear_end_mask(enddiscard) (~(~0U << (enddiscard)))
-
-/* Same speed: clear_highbit(diff,relpos) diff -= (HIGH_BIT >> relpos) */
-/* Note: xor assumes that bit at relpos was on */
-#define clear_highbit(diff,relpos) diff ^= (HIGH_BIT >> relpos)
-
-/* Slower: clear_lowbit(diff,relpos) diff -= (1 << relpos) */
-#define clear_lowbit(diff,relpos) diff &= (diff - 1);
-
-
-static int
-count_mismatches_limit (Compress_T query_compress, Univcoord_T left, 
-			int pos5, int pos3, int max_mismatches, bool plusp, int genestrand) {
-  int nmismatches;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *endblock, *ptr;
-  Genomecomp_T *query_shifted, *query_shifted_save_start;
-  Genomecomp_T diff;
-  int nshift;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in count_mismatches_limit) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-  
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-
-  if (endblocki == startblocki) {
-    debug(printf("** Single block **\n"));
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x = %08X\n",
-		 clear_start_mask(startdiscard),clear_end_mask(enddiscard),clear_start_mask(startdiscard) & clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    return __builtin_popcount(diff);
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-    return count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-  } else if (endblocki == startblocki + 3) {
-    /* Only two blocks to check */
-
-    if (32 - startdiscard >= enddiscard) {
-      /* Two blocks to check and more bits counted in startblock */
-      debug(printf("* Two blocks, start block first **\n"));
-
-      /* 1/2: Startblock */
-      diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-      
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      if ((nmismatches = __builtin_popcount(diff)) > max_mismatches) {
-	return nmismatches;
-      }
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      if ((nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]) > max_mismatches) {
-	return nmismatches;
-      }
-#endif
-      
-      /* 2/2: Endblock */
-      diff = block_diff(query_shifted/*endblock*/+3,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      return nmismatches + __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      return nmismatches + count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-    } else {
-      /* Two blocks to check and more bits counted in endblock */
-      debug(printf("** Two blocks, end block first **\n"));
-
-      /* 1/2: Endblock */
-      diff = block_diff(query_shifted/*endblock*/+3,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      if ((nmismatches = __builtin_popcount(diff)) > max_mismatches) {
-	return nmismatches;
-      }
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      if ((nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]) > max_mismatches) {
-	return nmismatches;
-      }
-#endif
-
-      /* 2/2: Startblock */
-      diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      return nmismatches + __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      return nmismatches + count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-    }
-
-  } else {
-    /* More than 2 blocks to check */
-    debug(printf("** More than two blocks **\n"));
-
-    query_shifted_save_start = query_shifted;
-
-    /* 2..(n-1) / n: Check all middle blocks first */
-    query_shifted += 3;
-    ptr = &(ref_blocks[startblocki+3]);
-    endblock = &(ref_blocks[endblocki]);
-    nmismatches = 0;
-
-    while (ptr < endblock) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-      
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      if ((nmismatches += __builtin_popcount(diff)) > max_mismatches) {
-	return nmismatches;
-      }
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      if ((nmismatches += count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]) > max_mismatches) {
-	return nmismatches;
-      }
-#endif
-
-      query_shifted += 3;
-      ptr += 3;
-    }
-
-    if (enddiscard >= 32 - startdiscard) {
-      /* More bits in end block */
-      debug(printf("** Final block, end block first **\n"));
-
-      /* n/n: Go first to end block */
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      if ((nmismatches += __builtin_popcount(diff)) > max_mismatches) {
-	return nmismatches;
-      }
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      if ((nmismatches += count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]) > max_mismatches) {
-	return nmismatches;
-      }
-#endif
-      
-      /* 1/n: Go second to start block */
-      diff = block_diff(query_shifted_save_start,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-      
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      return nmismatches + __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      return nmismatches + count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-    } else {
-      /* 1/n: Go first to start block */
-      debug(printf("** Final block, start block first **\n"));
-
-      diff = block_diff(query_shifted_save_start,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-      
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      if ((nmismatches += __builtin_popcount(diff)) > max_mismatches) {
-	return nmismatches;
-      }
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      if ((nmismatches += count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]) > max_mismatches) {
-	return nmismatches;
-      }
-#endif
-
-      /* n/n: Go second to end block */
-      diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      return nmismatches + __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      return nmismatches + count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-    }
-  }
-}
-
-
-static int
-count_mismatches_limit_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3, int max_mismatches,
-			     bool plusp, int genestrand) {
-  int nmismatches, incr;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *endblock;
-  Genomecomp_T *query_shifted, *query_shifted_save_start;
-  Genomecomp_T diff;
-  int nshift;
-  Genomecomp_T *ref_ptr, *alt_ptr;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in count_mismatches_limit_snps) from %u+%d to %u+%d\n",left,pos5,left,pos3);
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-  
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-
-  if (endblocki == startblocki) {
-    /* 1/1 blocks */
-    debug(printf("** Single block **\n"));
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x = %08X\n",
-		 clear_start_mask(startdiscard),clear_end_mask(enddiscard),clear_start_mask(startdiscard) & clear_end_mask(enddiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    nmismatches = __builtin_popcount(diff);
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-    nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-      
-    return nmismatches;
-
-  } else if (endblocki == startblocki + 3) {
-    /* Only two blocks to check */
-
-    if (32 - startdiscard >= enddiscard) {
-      /* 1/2: Startblock */
-      diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-      if (snp_blocks[startblocki+2]) {
-	/* SNPs present in startblock */
-	diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches /* init */ = __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches /* init */ = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-
-      /* 2/2: Endblock */
-      diff = block_diff(query_shifted/*endblock*/+3,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-      if (snp_blocks[endblocki+2]) {
-	/* SNPs present in endblock */
-	diff &= block_diff_snp(query_shifted/*endblock*/+3,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      return nmismatches;
-
-    } else {
-      /* Two blocks to check and more bits counted in endblock */
-      debug(printf("** Two blocks, end block first **\n"));
-
-      /* 1/2: Endblock */
-      diff = block_diff(query_shifted/*endblock*/+3,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-      if (snp_blocks[endblocki+2]) {
-	/* SNPs present in endblock */
-	diff &= block_diff_snp(query_shifted/*endblock*/+3,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches /* init */ = __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches /* init */ = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-
-      /* 2/2: Startblock */
-      diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-      if (snp_blocks[startblocki+2]) {
-	/* SNPs present in startblock */
-	diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      return nmismatches;
-    }
-
-  } else {
-    /* More than 2 blocks to check */
-    debug(printf("** More than two blocks **\n"));
-
-    query_shifted_save_start = query_shifted;
-
-    /* 2..(n-1) / n: Check all middle blocks first */
-    query_shifted += 3;
-    ref_ptr = &(ref_blocks[startblocki+3]);
-    alt_ptr = &(snp_blocks[startblocki+3]);
-    endblock = &(ref_blocks[endblocki]);
-    nmismatches = 0;
-
-    while (ref_ptr < endblock) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-
-      query_shifted += 3;
-      ref_ptr += 3;
-      alt_ptr += 3;
-    }
-
-    if (enddiscard >= 32 - startdiscard) {
-      /* n/n: Go first to end block */
-      debug(printf("** Final block, end block first **\n"));
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in endblock */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-
-      /* 1/n: Go second to start block */
-      diff = block_diff(query_shifted_save_start,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-      
-      if (snp_blocks[startblocki+2]) {
-	/* SNPs present in startblock */
-	diff &= block_diff_snp(query_shifted_save_start,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      return nmismatches;
-
-    } else {
-      debug(printf("** Final block, start block first **\n"));
-
-      /* 1/n: Go first to start block */
-      diff = block_diff(query_shifted_save_start,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_start(diff,startdiscard);
-      debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-      
-      if (snp_blocks[startblocki+2]) {
-	/* SNPs present in startblock */
-	diff &= block_diff_snp(query_shifted_save_start,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-      
-      /* n/n: Go second to end block */
-      diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      diff = clear_end(diff,enddiscard);
-      debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-      if (snp_blocks[endblocki+2]) {
-	/* SNPs present in endblock */
-	diff &= block_diff_snp(query_shifted,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      return nmismatches;
-    }
-  }
-}
-
-
-int
-Genome_count_mismatches_limit (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-			       int max_mismatches, bool plusp, int genestrand) {
-
-#if 0
-  if (dibasep) {
-    debug(printf("Dibase_count_mismatches_limit from %u+%d to %u+%d with max_mismatches %d:\n",
-		 left,pos5,left,pos3,max_mismatches));
-
-    return Dibase_count_mismatches_limit(&(*ncolordiffs),query,pos5,pos3,
-					 /*startpos*/left+pos5,/*endpos*/left+pos3,max_mismatches);
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    return count_mismatches_limit(query_compress,left,pos5,pos3,max_mismatches,plusp,genestrand);
-  } else {
-    return count_mismatches_limit_snps(query_compress,left,pos5,pos3,max_mismatches,plusp,genestrand);
-  }
-}
-
-
-
-int
-Genome_count_mismatches_substring_ref (Compress_T query_compress,
-				       Univcoord_T left, int pos5, int pos3,
-				       bool plusp, int genestrand) {
-  int nmismatches;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *end;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff;
-  int nshift;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in count_mismatches_substring) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x = %08X\n",
-		 clear_start_mask(startdiscard),clear_end_mask(enddiscard),clear_start_mask(startdiscard) & clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    return __builtin_popcount(diff);
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-    return count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    nmismatches = __builtin_popcount(diff);
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		diff >> 16,count_bits[diff >> 16]));
-    nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-    query_shifted += 3;
-    ptr = &(ref_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    while (ptr < end) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += __builtin_popcount(diff);
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-      query_shifted += 3;
-      ptr += 3;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    return nmismatches + __builtin_popcount(diff);
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		diff >> 16,count_bits[diff >> 16]));
-    return nmismatches + count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-  }
-}
-
-static int
-count_mismatches_substring_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-				 bool plusp, int genestrand) {
-  int nmismatches, incr;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ref_ptr, *alt_ptr, *end;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff;
-  int nshift;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in count_mismatches_substring_snps) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-  
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x = %08X\n",
-		 clear_start_mask(startdiscard),clear_end_mask(enddiscard),clear_start_mask(startdiscard) & clear_end_mask(enddiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    nmismatches = __builtin_popcount(diff);
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-#else
-    nmismatches = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-#endif
-
-    return nmismatches;
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in startblock */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    nmismatches /* init */ = __builtin_popcount(diff);
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-    nmismatches /* init */ = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16];
-#endif
-
-    query_shifted += 3;
-    ref_ptr = &(ref_blocks[startblocki+3]);
-    alt_ptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    while (ref_ptr < end) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-      }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-      debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-      nmismatches += (incr = __builtin_popcount(diff));
-#else
-      debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		   diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		   diff >> 16,count_bits[diff >> 16]));
-      nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-      query_shifted += 3;
-      ref_ptr += 3;
-      alt_ptr += 3;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    if (*(alt_ptr+2)) {
-      /* SNPs present in endblock */
-      diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-    }
-      
-#ifdef HAVE_BUILTIN_POPCOUNT
-    debug(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-    nmismatches += (incr = __builtin_popcount(diff));
-#else
-    debug(printf("nmismatches %08X => %d plus %08X => %d\n",
-		 diff & 0x0000FFFF,count_bits[diff & 0x0000FFFF],
-		 diff >> 16,count_bits[diff >> 16]));
-    nmismatches += (incr = count_bits[diff & 0x0000FFFF] + count_bits[diff >> 16]);
-#endif
-
-    return nmismatches;
-  }
-}
-
-
-/* left is where the start of the query matches.  pos5 is where we
-   want to start comparing in the query.  pos3 is just after where we
-   want to stop comparing in the query, i.e., stop at (pos3-1)
-   inclusive */
-int
-Genome_count_mismatches_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-				   bool plusp, int genestrand) {
-
-#if 0
-  if (dibasep) {
-    Dibase_count_mismatches_substring(&ncolordiffs,query,pos5,pos3,
-				      /*startpos*/left+pos5,/*endpos*/left+pos3);
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    return Genome_count_mismatches_substring_ref(query_compress,left,pos5,pos3,plusp,genestrand);
-  } else {
-    return count_mismatches_substring_snps(query_compress,left,pos5,pos3,plusp,genestrand);
-  }
-}
-
-
-
-/* pos5 is where we want to start comparing in the query.  pos3 is
-   just after where we want to stop comparing in the query, i.e., stop
-   at (pos3-1) inclusive */
-Genomecomp_T
-Genome_query_shift_fragment_right (Genomecomp_T *flags, Genomecomp_T *mask, Compress_T query_compress, int pos5, int pos3) {
-  int enddiscard;
-  Genomecomp_T *query_shifted;
-  int nshift, nblocks;
-
-#if 0
-  for (nshift = 0; nshift < 32; nshift++) {
-    query_shifted = Compress_shift(query_compress,nshift);
-    printf("%d: %08X %08X  %08X %08X  %08X %08X\n",
-	   nshift,query_shifted[0],query_shifted[1],
-	   query_shifted[3],query_shifted[4],
-	   query_shifted[6],query_shifted[7]);
-  }
-#endif
-
-  nblocks = (pos5 + 15) / 16;
-  nshift = (nblocks*16 - pos5) % 16;
-
-#if 0
-  if (pos3 - pos5 == 16) {
-    enddiscard = 16;
-  } else {
-    enddiscard = (pos3 - pos5) % 16;
-  }
-#else
-  enddiscard = pos3 - pos5;
-#endif
-  debug1(printf("shift_fragment_right: pos5 %d, pos3 %d => nblocks = %d, nshift = %d, startdiscard = %d, enddiscard = %d\n",
-		pos5,pos3,nblocks,nshift,0,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  query_shifted += (nblocks/2)*3;
-  *flags = query_shifted[2];
-  if (nblocks % 2 == 0) {
-    query_shifted += 1;		/* Point to low */
-    (*flags) &= 0x0000FFFF;	/* Keep flags on bottom */
-  } else {
-    (*flags) >>= 16;		/* Move flags into bottom */
-  }
-  debug1(printf("Query shifted %d: %08X\n",nshift,*query_shifted));
-
-  *mask = clear_end_mask(enddiscard);
-  *mask &= 0x0000FFFF;
-  debug1(printf("Mask for enddiscard %d: %08X\n",enddiscard,*mask));
-
-  return *query_shifted;
-}
-
-
-/* pos5 is where we want to start comparing in the query.  pos3 is
-   just after where we want to stop comparing in the query, i.e., stop
-   at (pos3-1) inclusive */
-Genomecomp_T
-Genome_query_shift_fragment_left (Genomecomp_T *flags, Genomecomp_T *mask, Compress_T query_compress, int pos5, int pos3) {
-  int startdiscard;
-  Genomecomp_T *query_shifted;
-  int nshift, nblocks;
-
-  nblocks = (pos3 - 1) / 16;
-  nshift = (16 + nblocks*16 - pos3) % 16;
-
-#if 0
-  startdiscard = nshift % 16;
-#else
-  startdiscard = nshift;
-#endif
-  debug1(printf("shift_fragment_left: pos5 %d, pos3 %d => nblocks = %d, nshift = %d, startdiscard = %d, enddiscard = %d\n",
-		pos5,pos3,nblocks,nshift,startdiscard,0));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  query_shifted += (nblocks/2)*3;
-  *flags = query_shifted[2];
-  if (nblocks % 2 == 0) {
-    query_shifted += 1;		/* Point to low */
-    (*flags) &= 0x0000FFFF;	/* Keep flags on bottom */
-  } else {
-    (*flags) >>= 16;		/* Move flags into bottom */
-  }
-  debug1(printf("Query shifted %d: %08X\n",nshift,*query_shifted));
-
-  /* from clear_start */
-  *mask = clear_start_mask(startdiscard);
-  *mask &= 0x0000FFFF;
-  debug1(printf("Mask for startdiscard %d: %08X\n",startdiscard,*mask));
-
-  return *query_shifted;
-}
-
-
-
-/* pos5 is where we want to start comparing in the query.  pos3 is
-   just after where we want to stop comparing in the query, i.e., stop
-   at (pos3-1) inclusive */
-int
-Genome_count_mismatches_fragment (Genomecomp_T query_shifted, Genomecomp_T flags, Genomecomp_T mask,
-				  Genomecomp_T ref_fragment, Genomecomp_T alt_fragment) {
-  Genomecomp_T diff, alt_diff, compare;
-
-  /* Taken from block_diff, ptr to low */
-  debug1(printf("Comparing: query %08X with ref fragment %08X and alt fragment %08X",
-		query_shifted,ref_fragment,alt_fragment));
-  compare = query_shifted ^ ref_fragment;
-  diff = (reduce_nt[compare >> 16] << 8);
-  diff |= reduce_nt[compare & 0x0000FFFF];
-  debug1(printf(" => ref_diff %08X",diff));
-
-  compare = query_shifted ^ alt_fragment;
-  alt_diff = (reduce_nt[compare >> 16] << 8);
-  alt_diff |= reduce_nt[compare & 0x0000FFFF];
-  debug1(printf(" and alt_diff %08X\n",alt_diff));
-
-  diff &= alt_diff;
-
-  diff |= flags;
-
-  diff &= mask;
-
-  if (diff > 0x0000FFFF) {
-    fprintf(stderr,"Problem: diff %08X > FFFF, flags = %08X, mask = %08X\n",diff,flags,mask);
-    abort();
-  }
-
-#ifdef HAVE_BUILTIN_POPCOUNT
-  debug1(printf("nmismatches %08X => %d\n",diff,__builtin_popcount(diff)));
-  return __builtin_popcount(diff);
-#else
-  debug1(printf("nmismatches %08X => %d\n",diff,count_bits[diff]));
-  return count_bits[diff];
-#endif
-}
-
-
-
-
-#ifndef HAVE_BUILTIN_CTZ
-static const int
-mod_37_bit_position[] = 
-  {
-    32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, 11, 0, 13, 4,
-    7, 17, 0, 25, 22, 31, 15, 29, 10, 12, 6, 0, 21, 14, 9, 5,
-    20, 8, 19, 18
-  };
-#endif
-
-
-static int
-mismatches_left (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-		 Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand,
-		 bool query_unk_mismatch_local_p) {
-  int nmismatches = 0, offset, nshift;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *query_shifted, *ptr, *end;
-  Genomecomp_T diff;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in mismatches_left):\n");
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = -startdiscard + pos5;
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_positions[nmismatches++] = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else      
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_positions[nmismatches++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-    }
-    return nmismatches;
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_positions[nmismatches++] = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_positions[nmismatches++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-    }
-    if (nmismatches > max_mismatches) {
-      return nmismatches;
-    }
-
-    query_shifted += 3;
-    ptr = &(ref_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset += 32;
-    while (ptr < end) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_local_p);
-
-      while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-	mismatch_positions[nmismatches++] = offset + (relpos = __builtin_ctz(diff));
-	clear_lowbit(diff,relpos);
-#else
-	debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-	mismatch_positions[nmismatches++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-	diff -= lowbit;
-#endif
-	debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      }
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-
-      query_shifted += 3;
-      ptr += 3;
-      offset += 32;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_positions[nmismatches++] = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_positions[nmismatches++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-    }
-    return nmismatches;
-  }
-
-}
-
-/* Returns mismatch_positions[0..max_mismatches] */
-static int
-mismatches_left_snps (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-		      Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand,
-		      bool query_unk_mismatch_local_p) {
-  int nmismatches_both = 0, offset, nshift;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *query_shifted, *ref_ptr, *alt_ptr, *end;
-  Genomecomp_T diff;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in mismatches_left_snps):\n");
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = -startdiscard + pos5;
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    }
-
-    while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_positions[nmismatches_both++] = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else      
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_positions[nmismatches_both++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-    }
-    return nmismatches_both;
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in startblock */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    }
-
-    while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_positions[nmismatches_both++] = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_positions[nmismatches_both++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-    }
-    if (nmismatches_both > max_mismatches) {
-      return nmismatches_both;
-    }
-
-    query_shifted += 3;
-    ref_ptr = &(ref_blocks[startblocki+3]);
-    alt_ptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset += 32;
-    while (ref_ptr < end) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-      }
-
-      while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-	mismatch_positions[nmismatches_both++] = offset + (relpos = __builtin_ctz(diff));
-	clear_lowbit(diff,relpos);
-#else
-	debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-	mismatch_positions[nmismatches_both++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-	diff -= lowbit;
-#endif
-	debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      }
-      if (nmismatches_both > max_mismatches) {
-	return nmismatches_both;
-      }
-
-      query_shifted += 3;
-      ref_ptr += 3;
-      alt_ptr += 3;
-      offset += 32;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    if (*(alt_ptr+2)) {
-      /* SNPs present in middle block */
-      diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-    }
-
-    while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_positions[nmismatches_both++] = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_positions[nmismatches_both++] = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-    }
-    return nmismatches_both;
-  }
-
-}
-
-
-
-/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches + 1 */
-/* If request max_mismatches 3, could return m0, m1, m2, m3, m4 */
-int
-Genome_mismatches_left (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand) {
-  int nmismatches;
-#ifdef DEBUG
-  int i;
-#endif
-
-#if 0
-  if (dibasep) {
-    debug(printf("Dibase_mismatches_left from %u+%d to %u+%d:\n",left,pos5,left,pos3));
-
-    nmismatches = Dibase_mismatches_left(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
-					 pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
-    mismatch_positions[nmismatches] = pos3 + 1;	/* Need +1 because of starting assumed nt */
-
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    nmismatches = mismatches_left(&(*mismatch_positions),max_mismatches,query_compress,
-				  left,pos5,pos3,plusp,genestrand,query_unk_mismatch_p);
-    mismatch_positions[nmismatches] = pos3;
-  } else {
-    nmismatches = mismatches_left_snps(&(*mismatch_positions),max_mismatches,query_compress,
-				       left,pos5,pos3,plusp,genestrand,query_unk_mismatch_p);
-    mismatch_positions[nmismatches] = pos3;
-  }
-  debug(
-	printf("%d mismatches on left: ",nmismatches);
-	for (i = 0; i <= nmismatches; i++) {
-	  printf("%d ",mismatch_positions[i]);
-	}
-	printf("\n");
-	);
-  
-  return nmismatches;
-}
-
-
-/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches + 1 */
-/* If request max_mismatches 3, could return m0, m1, m2, m3, m4 */
-int
-Genome_mismatches_left_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			     Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand) {
-  int nmismatches;
-#ifdef DEBUG
-  int i;
-#endif
-
-#if 0
-  if (dibasep) {
-    debug(printf("Dibase_mismatches_left from %u+%d to %u+%d:\n",left,pos5,left,pos3));
-
-    nmismatches = Dibase_mismatches_left(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
-					 pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
-    mismatch_positions[nmismatches] = pos3 + 1;	/* Need +1 because of starting assumed nt */
-
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    nmismatches = mismatches_left(&(*mismatch_positions),max_mismatches,query_compress,
-				  left,pos5,pos3,plusp,genestrand,/*query_unk_mismatch_p*/true);
-    mismatch_positions[nmismatches] = pos3;
-  } else {
-    nmismatches = mismatches_left_snps(&(*mismatch_positions),max_mismatches,query_compress,
-				       left,pos5,pos3,plusp,genestrand,/*query_unk_mismatch_p*/true);
-    mismatch_positions[nmismatches] = pos3;
-  }
-  debug(
-	printf("%d mismatches on left: ",nmismatches);
-	for (i = 0; i <= nmismatches; i++) {
-	  printf("%d ",mismatch_positions[i]);
-	}
-	printf("\n");
-	);
-  
-  return nmismatches;
-}
-
-
-static int
-mismatches_right (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-		  Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand,
-		  bool query_unk_mismatch_local_p) {
-  int nmismatches = 0, offset, relpos, nshift;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *query_shifted, *start, *ptr;
-  Genomecomp_T diff;
-#ifndef HAVE_BUILTIN_CLZ
-  Genomecomp_T top;
-#endif
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in mismatches_right):\n");
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = (pos3 - 1) - enddiscard + 32;
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
-	       nshift,startdiscard,enddiscard,offset));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos3)/32U*3;
-
-  if (startblocki == endblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-      mismatch_positions[nmismatches++] = offset - (relpos = __builtin_clz(diff));
-#else
-      mismatch_positions[nmismatches++] = offset - (relpos = ((top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]));
-#endif
-      debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-      clear_highbit(diff,relpos);
-    }
-    return nmismatches;
-
-  } else {
-    /* Endblock */
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-      mismatch_positions[nmismatches++] = offset - (relpos = __builtin_clz(diff));
-#else
-      mismatch_positions[nmismatches++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-      debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-      clear_highbit(diff,relpos);
-    }
-    if (nmismatches > max_mismatches) {
-      return nmismatches;
-    }
-
-    query_shifted -= 3;
-    ptr = &(ref_blocks[endblocki-3]);
-    start = &(ref_blocks[startblocki]);
-    offset -= 32;
-    while (ptr > start) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_local_p);
-
-      while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-	mismatch_positions[nmismatches++] = offset - (relpos = __builtin_clz(diff));
-#else
-	mismatch_positions[nmismatches++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-	debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-	clear_highbit(diff,relpos);
-      }
-      if (nmismatches > max_mismatches) {
-	return nmismatches;
-      }
-
-      query_shifted -= 3;
-      ptr -= 3;
-      offset -= 32;
-    }
-
-    /* Startblock */
-    diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-    while (diff != 0U && nmismatches <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-      mismatch_positions[nmismatches++] = offset - (relpos = __builtin_clz(diff));
-#else
-      mismatch_positions[nmismatches++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-      debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-      clear_highbit(diff,relpos);
-    }
-
-    return nmismatches;
-  }
-}
-
-
-static int
-mismatches_right_snps (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-		       Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand,
-		       bool query_unk_mismatch_local_p) {
-  int nmismatches_both = 0, offset, relpos, nshift;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *query_shifted, *ref_ptr, *alt_ptr, *start;
-  Genomecomp_T diff;
-#ifndef HAVE_BUILTIN_CLZ
-  Genomecomp_T top;
-#endif
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in mismatches_right_snps):\n");
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = (pos3 - 1) - enddiscard + 32;
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
-	       nshift,startdiscard,enddiscard,offset));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos3)/32U*3;
-
-  if (startblocki == endblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    if (snp_blocks[endblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    }
-
-    while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-      mismatch_positions[nmismatches_both++] = offset - (relpos = __builtin_clz(diff));
-#else
-      mismatch_positions[nmismatches_both++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-      debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-      clear_highbit(diff,relpos);
-    }
-    return nmismatches_both;
-
-  } else {
-    /* Endblock */
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    if (snp_blocks[endblocki+2]) {
-      /* SNPs present in endblock */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_local_p);
-    }
-
-    while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-      mismatch_positions[nmismatches_both++] = offset - (relpos = __builtin_clz(diff));
-#else
-      mismatch_positions[nmismatches_both++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-      debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-      clear_highbit(diff,relpos);
-    }
-    if (nmismatches_both > max_mismatches) {
-      return nmismatches_both;
-    }
-
-    query_shifted -= 3;
-    ref_ptr = &(ref_blocks[endblocki-3]);
-    alt_ptr = &(snp_blocks[endblocki-3]);
-    start = &(ref_blocks[startblocki]);
-    offset -= 32;
-    while (ref_ptr > start) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-      }
-
-      while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-	mismatch_positions[nmismatches_both++] = offset - (relpos = __builtin_clz(diff));
-#else
-	mismatch_positions[nmismatches_both++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-	debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-	clear_highbit(diff,relpos);
-      }
-      if (nmismatches_both > max_mismatches) {
-	return nmismatches_both;
-      }
-
-      query_shifted -= 3;
-      ref_ptr -= 3;
-      alt_ptr -= 3;
-      offset -= 32;
-    }
-
-    /* Startblock */
-    diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    if (*(alt_ptr+2)) {
-      /* SNPs present in start block */
-      diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_local_p);
-    }
-
-    while (diff != 0U && nmismatches_both <= max_mismatches) {
-#ifdef HAVE_BUILTIN_CLZ
-      mismatch_positions[nmismatches_both++] = offset - (relpos = __builtin_clz(diff));
-#else
-      mismatch_positions[nmismatches_both++] = offset - (relpos = (top = diff >> 16) ? clz_table[top] : 16 + clz_table[diff]);
-#endif
-      debug(printf("diff is %08X => offset %d - relpos %d\n",diff,offset,relpos));
-      clear_highbit(diff,relpos);
-    }
-
-    return nmismatches_both;
-  }
-
-}
-
-
-/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches */
-int
-Genome_mismatches_right (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			 Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand) {
-  int nmismatches;
-#ifdef DEBUG
-  int i;
-#endif
-
-#if 0
-  if (dibasep) {
-    debug(printf("Dibase_mismatches_right from %u+%d to %u+%d:\n",left,pos5,left,pos3));
-
-    nmismatches = Dibase_mismatches_right(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
-					  pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    nmismatches = mismatches_right(&(*mismatch_positions),max_mismatches,query_compress,
-				   left,pos5,pos3,plusp,genestrand,query_unk_mismatch_p);
-  } else {
-    nmismatches = mismatches_right_snps(&(*mismatch_positions),max_mismatches,query_compress,
-					left,pos5,pos3,plusp,genestrand,query_unk_mismatch_p);
-  }
-  mismatch_positions[nmismatches] = -1;
-  debug(
-	printf("%d mismatches on right: ",nmismatches);
-	for (i = 0; i <= nmismatches; i++) {
-	  printf("%d ",mismatch_positions[i]);
-	}
-	printf("\n");
-	);
-  return nmismatches;
-}
-
-
-/* Returns mismatch_positions[0..nmismatches], where nmismatches <= max_mismatches */
-int
-Genome_mismatches_right_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			      Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand) {
-  int nmismatches;
-#ifdef DEBUG
-  int i;
-#endif
-
-#if 0
-  if (dibasep) {
-    debug(printf("Dibase_mismatches_right from %u+%d to %u+%d:\n",left,pos5,left,pos3));
-
-    nmismatches = Dibase_mismatches_right(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
-					  pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    nmismatches = mismatches_right(&(*mismatch_positions),max_mismatches,query_compress,
-				   left,pos5,pos3,plusp,genestrand,/*query_unk_mismatch_p*/true);
-  } else {
-    nmismatches = mismatches_right_snps(&(*mismatch_positions),max_mismatches,query_compress,
-					left,pos5,pos3,plusp,genestrand,/*query_unk_mismatch_p*/true);
-  }
-  mismatch_positions[nmismatches] = -1;
-  debug(
-	printf("%d mismatches on right: ",nmismatches);
-	for (i = 0; i <= nmismatches; i++) {
-	  printf("%d ",mismatch_positions[i]);
-	}
-	printf("\n");
-	);
-  return nmismatches;
-}
-
-
-/************************************************************************
- *  Marking
- ************************************************************************/
-
-/* Derived from mismatches_left() */
-int
-Genome_mark_mismatches_ref (char *genomic, int querylength, Compress_T query_compress,
-			    Univcoord_T left, int pos5, int pos3, int mismatch_offset,
-			    bool plusp, int genestrand) {
-  int mismatch_position;
-  int nmismatches = 0, offset, nshift;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *query_shifted, *ptr, *end;
-  Genomecomp_T diff;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  debug(
-	printf("\n\n");
-	printf("genomic = %s\n",genomic);
-	printf("Genome (in mark_mismatches_ref):\n");
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  if (plusp == true) {
-    offset = -startdiscard + pos5 + mismatch_offset;
-  } else {
-    offset = -startdiscard + pos5 - mismatch_offset;
-  }
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_position = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else      
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      if (plusp == false) {
-	mismatch_position = (querylength - 1) - mismatch_position;
-      }
-      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-      nmismatches++;
-    }
-    debug(printf("genomic = %s\n",genomic));
-    return nmismatches;
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_position = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      if (plusp == false) {
-	mismatch_position = (querylength - 1) - mismatch_position;
-      }
-      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-      nmismatches++;
-    }
-
-    query_shifted += 3;
-    ptr = &(ref_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset += 32;
-    while (ptr < end) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	mismatch_position = offset + (relpos = __builtin_ctz(diff));
-	clear_lowbit(diff,relpos);
-#else
-	debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-	mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-	diff -= lowbit;
-#endif
-	debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-	if (plusp == false) {
-	  mismatch_position = (querylength - 1) - mismatch_position;
-	}
-	genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-	nmismatches++;
-      }
-
-      query_shifted += 3;
-      ptr += 3;
-      offset += 32;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_position = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      if (plusp == false) {
-	mismatch_position = (querylength - 1) - mismatch_position;
-      }
-      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-      nmismatches++;
-    }
-    debug(printf("genomic = %s\n",genomic));
-    return nmismatches;
-  }
-
-}
-
-/* Derived from mismatches_left_snps() */
-static int
-mark_mismatches_snps (char *genomic, int querylength, Compress_T query_compress,
-		      Univcoord_T left, int pos5, int pos3, int mismatch_offset, bool plusp, int genestrand) {
-  int mismatch_position;
-  int nmismatches_both = 0, offset, nshift;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *query_shifted, *ref_ptr, *alt_ptr, *end;
-  Genomecomp_T diff;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  debug(
-	printf("\n\n");
-	printf("genomic = %s\n",genomic);
-	printf("Genome (in mark_mismatches_snps):\n");
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  if (plusp == true) {
-    offset = -startdiscard + pos5 + mismatch_offset;
-  } else {
-    offset = -startdiscard + pos5 - mismatch_offset;
-  }
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_position = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else      
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      if (plusp == false) {
-	mismatch_position = (querylength - 1) - mismatch_position;
-      }
-      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-      nmismatches_both++;
-    }
-    debug(printf("genomic = %s\n",genomic));
-    return nmismatches_both;
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard);
-    debug(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in startblock */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_position = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      if (plusp == false) {
-	mismatch_position = (querylength - 1) - mismatch_position;
-      }
-      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-      nmismatches_both++;
-    }
-
-    query_shifted += 3;
-    ref_ptr = &(ref_blocks[startblocki+3]);
-    alt_ptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset += 32;
-    while (ref_ptr < end) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-      }
-
-      while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	mismatch_position = offset + (relpos = __builtin_ctz(diff));
-	clear_lowbit(diff,relpos);
-#else
-	debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-	mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-	diff -= lowbit;
-#endif
-	debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-	if (plusp == false) {
-	  mismatch_position = (querylength - 1) - mismatch_position;
-	}
-	genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-	nmismatches_both++;
-      }
-
-      query_shifted += 3;
-      ref_ptr += 3;
-      alt_ptr += 3;
-      offset += 32;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_end(diff,enddiscard);
-    debug(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    if (*(alt_ptr+2)) {
-      /* SNPs present in middle block */
-      diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    while (diff != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      mismatch_position = offset + (relpos = __builtin_ctz(diff));
-      clear_lowbit(diff,relpos);
-#else
-      debug(printf("diff is %08X, -diff & diff is %08X\n",diff,-diff & diff));
-      mismatch_position = offset + mod_37_bit_position[(lowbit = -diff & diff) % 37];
-      diff -= lowbit;
-#endif
-      debug(printf("diff is %08X => offset %d + relpos %d\n",diff,offset,relpos));
-      if (plusp == false) {
-	mismatch_position = (querylength - 1) - mismatch_position;
-      }
-      genomic[mismatch_position] = tolower(genomic[mismatch_position]);
-      nmismatches_both++;
-    }
-    debug(printf("genomic = %s\n",genomic));
-    return nmismatches_both;
-  }
-
-}
-
-
-int
-Genome_mark_mismatches (char *genomic, int querylength, Compress_T query_compress,
-			Univcoord_T left, int pos5, int pos3, int mismatch_offset, bool plusp, int genestrand) {
-
-#if 0
-  if (dibasep) {
-    fprintf(stderr,"Not implemented\n");
-#if 0
-    debug(printf("Dibase_mismatches_left from %u+%d to %u+%d:\n",left,pos5,left,pos3));
-
-    nmismatches = Dibase_mismatches_left(&(*mismatch_positions),&(*colordiffs),max_mismatches,query,
-					 pos5,pos3,/*startpos*/left+pos5,/*endpos*/left+pos3);
-    mismatch_positions[nmismatches] = pos3 + 1;	/* Need +1 because of starting assumed nt */
-#endif
-    return 0;
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    return Genome_mark_mismatches_ref(&(*genomic),querylength,query_compress,
-				      left,pos5,pos3,mismatch_offset,plusp,genestrand);
-  } else {
-    return mark_mismatches_snps(&(*genomic),querylength,query_compress,
-				left,pos5,pos3,mismatch_offset,plusp,genestrand);
-  }
-}
-
-
-/************************************************************************
- *  Trimming
- ************************************************************************/
-
-#define set_start(diff,startdiscard) (diff | ~(~0U << startdiscard))
-#define set_end(diff,enddiscard) (diff | (~0U << enddiscard))
-
-#define set_start_mask(startdiscard) (~(~0U << startdiscard))
-#define set_end_mask(enddiscard) (~0U << enddiscard)
-
-static int
-trim_left_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-		     bool plusp, int genestrand) {
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *start;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff;
-  int nshift;
-
-  int totalscore, bestscore, score;
-  int trimpos, offset;
-  Genomecomp_T p;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in trim_left_substring) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = (pos3 - 1) - enddiscard + 32;
-
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
-	       nshift,startdiscard,enddiscard,offset));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos3)/32U*3;
-
-
-  if (startblocki == endblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
-    diff = set_start(diff,startdiscard);  /* puts 1 (mismatches) at start */
-    debug(printf("adding masks %08X and %08x\n",clear_end_mask(enddiscard),set_start_mask(startdiscard)));
-
-    p = 3*(diff >> 16);
-    bestscore = score_high[p];
-    trimpos = offset - score_high[p+1];
-    totalscore = score_high[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    /* totalscore += score_high[p+2]; */
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset -= 16 */
-    
-    return trimpos - 1;		/* trimpos-1 is on side of mismatch */
-
-  } else {
-    /* Endblock */
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
-    debug(printf("adding end mask %08X\n",clear_end_mask(enddiscard)));
-
-    p = 3*(diff >> 16);
-    bestscore = score_high[p];
-    trimpos = offset - score_high[p+1];
-    totalscore = score_high[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    totalscore += score_high[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    query_shifted -= 3;
-    ptr = &(ref_blocks[endblocki-3]);
-    start = &(ref_blocks[startblocki]);
-    while (ptr > start) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      p = 3*(diff >> 16);
-      if ((score = score_high[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset - score_high[p+1];
-      }
-      totalscore += score_high[p+2];
-      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset -= 16;
-
-      p = 3*(diff & 0x0000FFFF);
-      if ((score = score_high[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset - score_high[p+1];
-      }
-      totalscore += score_high[p+2];
-      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset -= 16;
-
-
-      query_shifted -= 3;
-      ptr -= 3;
-    }
-
-    /* Startblock */
-    diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-    diff = set_start(diff,startdiscard); /* puts 1 (mismatches) at start */
-    debug(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    p = 3*(diff >> 16);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    totalscore += score_high[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    /* totalscore += score_high[p+2]; */
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset -= 16; */
-    
-    return trimpos - 1;		/* trimpos-1 is on side of mismatch */
-  }
-}
-
-
-static int
-trim_left_substring_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand) {
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ref_ptr, *alt_ptr, *start;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff;
-  int nshift;
-
-  int totalscore, bestscore, score;
-  int trimpos, offset;
-  Genomecomp_T p;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in trim_left_substring_snps) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = (pos3 - 1) - enddiscard + 32;
-
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u, offset = %d\n",
-	       nshift,startdiscard,enddiscard,offset));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos3)/32U*3;
-  
-  if (startblocki == endblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-
-    if (snp_blocks[endblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
-    diff = set_start(diff,startdiscard);  /* puts 1 (mismatches) at start */
-    debug(printf("adding masks %08X and %08x\n",clear_end_mask(enddiscard),set_start_mask(startdiscard)));
-
-    p = 3*(diff >> 16);
-    bestscore = score_high[p];
-    trimpos = offset - score_high[p+1];
-    totalscore = score_high[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    /* totalscore += score_high[p+2]; */
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset -= 16; */
-    
-    return trimpos - 1;		/* trimpos-1 is on side of mismatch */
-
-  } else {
-    /* Endblock */
-    diff = block_diff(query_shifted,&(ref_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-
-    if (snp_blocks[endblocki+2]) {
-      /* SNPs present in endblock */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[endblocki]),&(snp_blocks[endblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    diff = clear_end(diff,enddiscard); /* puts 0 (matches) at end */
-    debug(printf("adding end mask %08X\n",clear_end_mask(enddiscard)));
-
-    p = 3*(diff >> 16);
-    bestscore = score_high[p];
-    trimpos = offset - score_high[p+1];
-    totalscore = score_high[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    totalscore += score_high[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-
-    query_shifted -= 3;
-    ref_ptr = &(ref_blocks[endblocki-3]);
-    alt_ptr = &(snp_blocks[endblocki-3]);
-    start = &(ref_blocks[startblocki]);
-    while (ref_ptr > start) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-      }
-
-      p = 3*(diff >> 16);
-      if ((score = score_high[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset - score_high[p+1];
-      }
-      totalscore += score_high[p+2];
-      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset -= 16;
-
-      p = 3*(diff & 0x0000FFFF);
-      if ((score = score_high[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset - score_high[p+1];
-      }
-      totalscore += score_high[p+2];
-      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset -= 16;
-
-
-      query_shifted -= 3;
-      ref_ptr -= 3;
-      alt_ptr -= 3;
-    }
-
-    /* Startblock */
-    diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-    if (*(alt_ptr+2)) {
-      /* SNPs present in startblock */
-      diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    diff = set_start(diff,startdiscard); /* puts 1 (mismatches) at start */
-    debug(printf("adding start mask %08x\n",set_start_mask(startdiscard)));
-
-    p = 3*(diff >> 16);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    totalscore += score_high[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset -= 16;
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_high[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset - score_high[p+1];
-    }
-    /* totalscore += score_high[p+2]; */
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset -= 16; */
-
-    return trimpos - 1;		/* trimpos-1 is on side of mismatch */
-  }
-}
-
-
-
-
-static int
-trim_right_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-		      bool plusp, int genestrand) {
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *end;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff;
-  int nshift;
-
-  int totalscore, bestscore, score;
-  int trimpos, offset;
-  Genomecomp_T p;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in trim_right_substring) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = -startdiscard + pos5;
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-
-
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
-    diff = set_end(diff,enddiscard);  /* puts 1 (mismatches) at end */
-    debug(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),set_end_mask(enddiscard)));
-
-    p = 3*(diff & 0x0000FFFF);
-    bestscore = score_low[p];
-    trimpos = offset + score_low[p+1];
-    totalscore = score_low[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-    p = 3*(diff >> 16);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    /* totalscore += score_low[p+2]; */
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset += 16; */
-    
-    return trimpos + 1;		/* trimpos+1 is on side of mismatch */
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
-    debug(printf("clearing start %08X\n",clear_start_mask(startdiscard)));
-
-    p = 3*(diff & 0x0000FFFF);
-    bestscore = score_low[p];
-    trimpos = offset + score_low[p+1];
-    totalscore = score_low[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-    p = 3*(diff >> 16);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    totalscore += score_low[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-
-    query_shifted += 3;
-    ptr = &(ref_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    while (ptr < end) {
-      diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      p = 3*(diff & 0x0000FFFF);
-      if ((score = score_low[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset + score_low[p+1];
-      }
-      totalscore += score_low[p+2];
-      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset += 16;
-
-      p = 3*(diff >> 16);
-      if ((score = score_low[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset + score_low[p+1];
-      }
-      totalscore += score_low[p+2];
-      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset += 16;
-
-
-      query_shifted += 3;
-      ptr += 3;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ptr,plusp,genestrand,query_unk_mismatch_p);
-    diff = set_end(diff,enddiscard); /* puts 1 (mismatches) at end */
-    debug(printf("adding end mask %08X\n",~0U << enddiscard));
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    totalscore += score_low[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-    p = 3*(diff >> 16);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    /* totalscore += score_low[p+2]; */
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset += 16; */
-    
-    return trimpos + 1;		/* trimpos+1 is on side of mismatch */
-  }
-}
-
-
-
-static int
-trim_right_substring_snps (Compress_T query_compress, Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand) {
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ref_ptr, *alt_ptr, *end;
-  Genomecomp_T *query_shifted;
-  Genomecomp_T diff;
-  int nshift;
-
-  int totalscore, bestscore, score;
-  int trimpos, offset;
-  Genomecomp_T p;
-
-  debug(
-	printf("\n\n");
-	printf("Genome (in trim_right_substring_snps) from %u+%d to %u+%d:\n",left,pos5,left,pos3);
-	Genome_print_blocks_snp(ref_blocks,snp_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  nshift = left % 32;
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = -startdiscard + pos5;
-  
-  debug(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug(printf("nshift = %d, startdiscard = %u, enddiscard = %u\n",nshift,startdiscard,enddiscard));
-
-  query_shifted = Compress_shift(query_compress,nshift);
-  debug(printf("Query shifted %d:\n",nshift));
-  debug(print_blocks(query_shifted,Compress_nblocks(query_compress)+1));
-  query_shifted += (nshift+pos5)/32U*3;
-  
-  if (endblocki == startblocki) {
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in single block */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
-    diff = set_end(diff,enddiscard);  /* puts 1 (mismatches) at end */
-    debug(printf("adding masks %08X and %08X\n",clear_start_mask(startdiscard),set_end_mask(enddiscard)));
-
-    p = 3*(diff & 0x0000FFFF);
-    bestscore = score_low[p];
-    trimpos = offset + score_low[p+1];
-    totalscore = score_low[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-    p = 3*(diff >> 16);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    /* totalscore += score_low[p+2]; */
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset += 16; */
-    
-    return trimpos + 1;		/* trimpos+1 is on side of mismatch */
-
-  } else {
-    /* Startblock */
-    diff = block_diff(query_shifted,&(ref_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-
-    if (snp_blocks[startblocki+2]) {
-      /* SNPs present in startblock */
-      diff &= block_diff_snp(query_shifted,&(ref_blocks[startblocki]),&(snp_blocks[startblocki]),plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    diff = clear_start(diff,startdiscard); /* puts 0 (matches) at start */
-    debug(printf("adding start mask %08X\n",clear_start_mask(startdiscard)));
-
-    p = 3*(diff & 0x0000FFFF);
-    bestscore = score_low[p];
-    trimpos = offset + score_low[p+1];
-    totalscore = score_low[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-    p = 3*(diff >> 16);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    totalscore += score_low[p+2];
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-
-    query_shifted += 3;
-    ref_ptr = &(ref_blocks[startblocki+3]);
-    alt_ptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    while (ref_ptr < end) {
-      diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-      if (*(alt_ptr+2)) {
-	/* SNPs present in middle block */
-	diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-      }
-
-      p = 3*(diff & 0x0000FFFF);
-      if ((score = score_low[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset + score_low[p+1];
-      }
-      totalscore += score_low[p+2];
-      debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset += 16;
-
-      p = 3*(diff >> 16);
-      if ((score = score_low[p] + totalscore) > bestscore) {
-	bestscore = score;
-	trimpos = offset + score_low[p+1];
-      }
-      totalscore += score_low[p+2];
-      debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		   diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-      offset += 16;
-
-
-      query_shifted += 3;
-      ref_ptr += 3;
-      alt_ptr += 3;
-    }
-
-    /* Endblock */
-    diff = block_diff(query_shifted,ref_ptr,plusp,genestrand,query_unk_mismatch_p);
-
-    if (*(alt_ptr+2)) {
-      /* SNPs present in endblock */
-      diff &= block_diff_snp(query_shifted,ref_ptr,alt_ptr,plusp,genestrand,query_unk_mismatch_p);
-    }
-
-    diff = set_end(diff,enddiscard); /* puts 1 (mismatches) at end */
-    debug(printf("adding end mask %08X\n",set_end_mask(enddiscard)));
-
-    p = 3*(diff & 0x0000FFFF);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    totalscore += score_low[p+2];
-    debug(printf("diff low %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff & 0x0000FFFF,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    offset += 16;
-
-    p = 3*(diff >> 16);
-    if ((score = score_low[p] + totalscore) > bestscore) {
-      bestscore = score;
-      trimpos = offset + score_low[p+1];
-    }
-    /* totalscore += score_low[p+2]; */
-    debug(printf("diff high %04X => bestscore %d at pos %d, offset %d, trimpos %d, totalscore %d\n",
-		 diff >> 16,score_high[p],score_high[p+1],offset,trimpos,totalscore));
-    /* offset += 16; */
-
-    return trimpos + 1;		/* trimpos+1 is on side of mismatch */
-  }
-}
-
-
-int
-Genome_trim_left (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-		  bool plusp, int genestrand) {
-#if 0
-  if (dibasep) {
-    /* Not implemented */
-    return 0;
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    return trim_left_substring(query_compress,left,pos5,pos3,plusp,genestrand);
-  } else {
-    return trim_left_substring_snps(query_compress,left,pos5,pos3,plusp,genestrand);
-  }
-}
-
-int
-Genome_trim_right (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-		   bool plusp, int genestrand) {
-#if 0
-  if (dibasep) {
-    /* Not implemented */
-    return 0;
-  }
-#endif
-
-  if (snp_blocks == NULL) {
-    return trim_right_substring(query_compress,left,pos5,pos3,plusp,genestrand);
-  } else {
-    return trim_right_substring_snps(query_compress,left,pos5,pos3,plusp,genestrand);
-  }
-}
-
-
-
-/* Not tested yet */
-char
-Genome_get_dinucleotide (char *altdinucl, Univcoord_T pos) {
-  char refdinucl;
-  Univcoord_T ptr;
-  int shift;
-  Genomecomp_T high, low;
-
-  ptr = pos/32*3;
-  shift = pos % 32;
-
-  if (shift < 15) {
-#ifdef WORDS_BIGENDIAN
-    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-#else
-    low = ref_blocks[ptr+1];
-#endif
-    refdinucl = (char) ((low >> (shift+shift)) & 0x0F);
-
-    if (snp_blocks == NULL) {
-      *altdinucl = refdinucl;
-    } else {
-#ifdef WORDS_BIGENDIAN
-      low = Bigendian_convert_uint(snp_blocks[ptr+1]);
-#else
-      low = snp_blocks[ptr+1];
-#endif
-      *altdinucl = (char) ((low >> (shift+shift)) & 0x0F);
-    }
-
-  } else if (shift == 15) {
-#ifdef WORDS_BIGENDIAN
-    high = Bigendian_convert_uint(ref_blocks[ptr]);
-    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-#else
-    high = ref_blocks[ptr]; low = ref_blocks[ptr+1];
-#endif
-    refdinucl = (char) (((low >> 30) | (high << 2)) & 0x0F);
-
-    if (snp_blocks == NULL) {
-      *altdinucl = refdinucl;
-    } else {
-#ifdef WORDS_BIGENDIAN
-      high = Bigendian_convert_uint(snp_blocks[ptr]);
-      low = Bigendian_convert_uint(snp_blocks[ptr+1]);
-#else
-      high = snp_blocks[ptr]; low = snp_blocks[ptr+1];
-#endif
-      *altdinucl = (char) (((low >> 30) | (high << 2)) & 0x0F);
-    }
-    
-  } else if (shift < 31) {
-#ifdef WORDS_BIGENDIAN
-    high = Bigendian_convert_uint(ref_blocks[ptr]);
-#else
-    high = ref_blocks[ptr];
-#endif
-    shift -= 16;
-    refdinucl = (char) ((high >> (shift+shift)) & 0x0F);
-
-    if (snp_blocks == NULL) {
-      *altdinucl = refdinucl;
-    } else {
-#ifdef WORDS_BIGENDIAN
-      high = Bigendian_convert_uint(snp_blocks[ptr]);
-#else
-      high = snp_blocks[ptr];
-#endif
-      shift -= 16;
-      *altdinucl = (char) ((high >> (shift+shift)) & 0x0F);
-    }
-      
-  } else {
-    /* shift == 31 */
-#ifdef WORDS_BIGENDIAN
-    high = Bigendian_convert_uint(ref_blocks[ptr]);
-    low = Bigendian_convert_uint(ref_blocks[ptr+4]);
-#else
-    high = ref_blocks[ptr]; low = ref_blocks[ptr+4];
-#endif
-    refdinucl = (char) (((high >> 30) | (low << 2)) & 0x0F);
-
-    if (snp_blocks == NULL) {
-      *altdinucl = refdinucl;
-    } else {
-#ifdef WORDS_BIGENDIAN
-      high = Bigendian_convert_uint(snp_blocks[ptr]);
-      low = Bigendian_convert_uint(snp_blocks[ptr+4]);
-#else
-      high = snp_blocks[ptr]; low = snp_blocks[ptr+4];
-#endif
-      *altdinucl = (char) (((high >> 30) | (low << 2)) & 0x0F);
-    }
-
-  }
-
-  return refdinucl;
-}
-
-
-/************************************************************************
- *   Splice sites
- ************************************************************************/
-
-
-static Genomecomp_T
-block_find (Genomecomp_T *high_halfsite, Genomecomp_T *low_halfsite, Genomecomp_T *ptr, const Genomecomp_T *splicesite_bits) {
-  Genomecomp_T found, compare, flags;
-
-  /* High */
-  debug2(printf("Evaluating high %08X and low %08X\n",*ptr,ptr[1]));
-#ifdef WORDS_BIGENDIAN
-  compare = Bigendian_convert_uint(*ptr++);
-#else
-  compare = *ptr++;
-#endif
-  /* Get high_halfsite bit */
-  found = splicesite_bits[compare >> 16];
-  *high_halfsite = (found & 0x100) >> 8;
-  found = (found << 24) | 0x00FFFFFF;
-  debug2(printf("  splicesite_bits_3: %08X, high_halfsite %d\n",
-		splicesite_bits[compare >> 16] << 24,*high_halfsite));
-
-  found &= (splicesite_bits[compare & 0x0000FFFF] << 16) | 0xFE00FFFF; /* Use FE to allow for high bit */
-  debug2(printf("  splicesite_bits_2: %08X\n",splicesite_bits[compare & 0x0000FFFF] << 16));
-
-  /* Low */
-#ifdef WORDS_BIGENDIAN
-  compare = Bigendian_convert_uint(*ptr++);
-#else
-  compare = *ptr++;
-#endif
-  found &= (splicesite_bits[compare >> 16] << 8) | 0xFFFE00FF;
-  debug2(printf("  splicesite_bits_1: %08X\n",splicesite_bits[compare >> 16] << 8));
-
-  found &= splicesite_bits[compare & 0x0000FFFF] | 0xFFFFFE00;
-  debug2(printf("  splicesite_bits_0: %08X, low_halfsite %d\n",
-		splicesite_bits[compare & 0x0000FFFF],found & 0x1));
-
-
-  /* Flags: N is considered a mismatch */
-  debug2(printf("Marking flags: genome %08X ",*ptr));
-#ifdef WORDS_BIGENDIAN
-  flags = Bigendian_convert_uint(*ptr);
-#else
-  flags = (*ptr);
-#endif
-
-  found &= ~flags;
-  found &= ~(flags << 1);
-
-  *low_halfsite = found & 0x00000001;
-
-  *high_halfsite &= ~(flags >> 31);
-
-  /* splicesite_bits are 1-based, so need to reduce values by 1 */
-  /* No need to clear top bit */
-  found >>= 1;
-  debug2(printf(" => found %08X, high_halfsite %d, low_halfsite %d\n",found,*high_halfsite,*low_halfsite));
-
-  return found;
-}
-
-
-
-static Genomecomp_T
-block_find_snp (Genomecomp_T *high_halfsite, Genomecomp_T *low_halfsite, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
-		const Genomecomp_T *splicesite_bits) {
-  Genomecomp_T found, ref, alt, flags;
-
-  /* High */
-  debug2(printf("Evaluating ref high %08X and low %08X, and alt high %08X and low %08X\n",
-		*ref_ptr,ref_ptr[1],*alt_ptr,alt_ptr[1]));
-#ifdef WORDS_BIGENDIAN
-  ref = Bigendian_convert_uint(*ref_ptr++);
-  alt = Bigendian_convert_uint(*alt_ptr++);
-#else
-  ref = *ref_ptr++;
-  alt = *alt_ptr++;
-#endif
-  /* Get high_halfsite bit */
-  found = splicesite_bits[ref >> 16] | splicesite_bits[alt >> 16];
-  *high_halfsite = (found & 0x100) >> 8;
-  found = (found << 24) | 0x00FFFFFF;
-  debug2(printf("  splicesite_bits_3: %08X | %08X, high_halfsite %d\n",
-		splicesite_bits[ref >> 16] << 24,splicesite_bits[alt >> 16] << 24,*high_halfsite));
-
- /* Use FE to allow for high bit */
-  found &= ((splicesite_bits[ref & 0x0000FFFF] | splicesite_bits[alt & 0x0000FFFF]) << 16) | 0xFE00FFFF;
-  debug2(printf("  splicesite_bits_2: %08X | %08X\n",
-		splicesite_bits[ref & 0x0000FFFF] << 16,splicesite_bits[alt & 0x0000FFFF] << 16));
-
-  /* Low */
-#ifdef WORDS_BIGENDIAN
-  ref = Bigendian_convert_uint(*ref_ptr++);
-  alt = Bigendian_convert_uint(*alt_ptr++);
-#else
-  ref = *ref_ptr++;
-  alt = *alt_ptr++;
-#endif
-  found &= ((splicesite_bits[ref >> 16] | splicesite_bits[alt >> 16]) << 8) | 0xFFFE00FF;
-  debug2(printf("  splicesite_bits_1: %08X | %08X\n",
-		splicesite_bits[ref >> 16] << 8,splicesite_bits[alt >> 16] << 8));
-
-  found &= (splicesite_bits[ref & 0x0000FFFF] | splicesite_bits[alt & 0x0000FFFF]) | 0xFFFFFE00;
-  debug2(printf("  splicesite_bits_0: %08X | %08X, low_halfsite %d\n",
-		splicesite_bits[ref & 0x0000FFFF],splicesite_bits[ref & 0x0000FFFF],found & 0x1));
-
-
-  /* Handle only reference flags, which indicate N */
-  /* Reference flags: N is considered a mismatch */
-  debug2(printf("Marking flags: genome %08X ",*ref_ptr));
-#ifdef WORDS_BIGENDIAN
-  flags = Bigendian_convert_uint(*ref_ptr);
-#else
-  flags = (*ref_ptr);
-#endif
-
-  found &= ~flags;
-  found &= ~(flags << 1);
-
-  *low_halfsite = found & 0x00000001;
-
-  *high_halfsite &= ~(flags >> 31);
-
-  /* splicesite_bits are 1-based, so need to reduce values by 1 */
-  /* No need to clear top bit */
-  found >>= 1;
-  debug2(printf(" => found %08X, high_halfsite %d, low_halfsite %d\n",found,*high_halfsite,*low_halfsite));
-
-  return found;
-}
-
-
-static int
-splicesite_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-		      Univcoord_T left, int pos5, int pos3,
-		      const Genomecomp_T *splicesite_bits, int splicepos_offset) {
-  int nfound = 0, offset;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *altptr, *end;
-  Genomecomp_T found;
-  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
-  int pos;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  debug2(
-	printf("\n\n");
-	printf("Genome (in splicesite_positions):\n");
-	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
-	printf("\n");
-	);
-
-  /* nshift = left % 32; */
-
-  startblocki = (left+pos5)/32U*3;
-  endblocki = (left+pos3)/32U*3;
-  startdiscard = (left+pos5) % 32;
-  enddiscard = (left+pos3) % 32;
-
-  offset = -startdiscard + pos5 + splicepos_offset;
-  
-  debug2(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-	       left,pos5,pos3,startblocki,endblocki));
-  debug2(printf("startdiscard = %u, enddiscard = %u\n",startdiscard,enddiscard));
-
-  if (endblocki == startblocki) {
-    /* Advance knownpos past pos5 */
-    while (*knownpos < pos5) {
-      debug2(printf("Skipping knownpos #%d at %d < pos5 %d\n",*knowni,*knownpos,pos5));
-      knowni++;
-      knownpos++;
-    }
-
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    found = clear_end(found,enddiscard);
-    debug2(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset + (relpos = __builtin_ctz(found));
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-      clear_lowbit(found,relpos);
-#else      
-      debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-      found -= lowbit;
-#endif
-      debug2(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-    }
-
-    /* Add knownpos to pos3 */
-    while (*knownpos < pos3) {
-      debug2(printf("Adding knownpos #%d at %d < pos3 %d\n",*knowni,*knownpos,pos3));
-      site_knowni[nfound] = *knowni++;
-      site_positions[nfound++] = *knownpos++;
-    }
-
-    return nfound;
-
-  } else {
-    /* Advance knownpos past pos5 */
-    while (*knownpos < pos5) {
-      debug2(printf("Skipping knownpos #%d at %d < pos5 %d\n",*knowni,*knownpos,pos5));
-      knowni++;
-      knownpos++;
-    }
-
-    /* Startblock */
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    debug2(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset + (relpos = __builtin_ctz(found));
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-      clear_lowbit(found,relpos);
-#else
-      debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-      found -= lowbit;
-#endif
-      debug2(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-    }
-
-    ptr = &(ref_blocks[startblocki+3]);
-    altptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset += 32;
-    while (ptr < end) {
-      prev_high_halfsite = high_halfsite;
-      if (snp_blocks) {
-	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-      } else {
-	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-      }
-
-      if (low_halfsite & prev_high_halfsite) {
-	debug2(printf("low_halfsite & prev_high_halfsite => offset %d - 1\n",offset));
-	pos = offset - 1;	/* verified that this should be offset - 1 */
-	while (*knownpos < pos) {
-	  site_knowni[nfound] = *knowni++;
-	  site_positions[nfound++] = *knownpos++;
-	}
-	if (*knownpos == pos) {
-	  site_knowni[nfound] = *knowni++;
-	  site_positions[nfound++] = *knownpos++;
-	} else {
-	  site_knowni[nfound] = -1;
-	  site_positions[nfound++] = pos;
-	}
-      }
-
-      while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	pos = offset + (relpos = __builtin_ctz(found));
-	while (*knownpos < pos) {
-	  site_knowni[nfound] = *knowni++;
-	  site_positions[nfound++] = *knownpos++;
-	}
-	if (*knownpos == pos) {
-	  site_knowni[nfound] = *knowni++;
-	  site_positions[nfound++] = *knownpos++;
-	} else {
-	  site_knowni[nfound] = -1;
-	  site_positions[nfound++] = pos;
-	}
-	clear_lowbit(found,relpos);
-#else
-	debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-	pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-	while (*knownpos < pos) {
-	  site_knowni[nfound] = *knowni++;
-	  site_positions[nfound++] = *knownpos++;
-	}
-	if (*knownpos == pos) {
-	  site_knowni[nfound] = *knowni++;
-	  site_positions[nfound++] = *knownpos++;
-	} else {
-	  site_knowni[nfound] = -1;
-	  site_positions[nfound++] = pos;
-	}
-	found -= lowbit;
-#endif
-	debug2(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-      }
-
-      ptr += 3;
-      altptr += 3;
-      offset += 32;
-    }
-
-    /* Endblock */
-    prev_high_halfsite = high_halfsite;
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-    }
-    found = clear_end(found,enddiscard);
-    debug2(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    if (low_halfsite & prev_high_halfsite) {
-      debug2(printf("low_halfsite & prev_high_halfsite => offset %d - 1\n",offset));
-      pos = offset - 1;		/* verified that this should be offset - 1 */
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-    }
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset + (relpos = __builtin_ctz(found));
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-      clear_lowbit(found,relpos);
-#else
-      debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (*knownpos < pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      }
-      if (*knownpos == pos) {
-	site_knowni[nfound] = *knowni++;
-	site_positions[nfound++] = *knownpos++;
-      } else {
-	site_knowni[nfound] = -1;
-	site_positions[nfound++] = pos;
-      }
-      found -= lowbit;
-#endif
-      debug2(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-    }
-
-    /* Add knownpos to pos3 */
-    while (*knownpos < pos3) {
-      debug2(printf("Adding knownpos #%d at %d < pos3 %d\n",*knowni,*knownpos,pos3));
-      site_knowni[nfound] = *knowni++;
-      site_positions[nfound++] = *knownpos++;
-    }
-
-    return nfound;
-  }
-
-}
-
-
-int
-Genome_donor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			Univcoord_T left, int pos5, int pos3) {
-  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,donor_gtgc_bits,
-			      /*splicepos_offset*/0);
-}
-
-int
-Genome_acceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			   Univcoord_T left, int pos5, int pos3) {
-  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,acceptor_bits,
-			      /*splicepos_offset*/2);
-}
-
-int
-Genome_antidonor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			    Univcoord_T left, int pos5, int pos3) {
-  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,antidonor_acgc_bits,
-			      /*splicepos_offset*/2);
-}
-
-int
-Genome_antiacceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			       Univcoord_T left, int pos5, int pos3) {
-  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,antiacceptor_bits,
-			      /*splicepos_offset*/0);
-}
-
-
-/* prevpos (startblock) corresponds to a lower genomicpos than pos */
-static Chrpos_T
-prev_dinucleotide_position_fwd (Chrpos_T pos, Chrpos_T prevpos, Univcoord_T chroffset,
-				const Genomecomp_T *splicesite_bits, int splicepos_offset) {
-  Chrpos_T foundpos;
-  Chrpos_T offset;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *altptr, *start;
-  Genomecomp_T found;
-  Genomecomp_T high_halfsite, low_halfsite, prev_low_halfsite;
-  int relpos;
-#ifndef HAVE_BUILTIN_CLZ
-  Genomecomp_T top;
-#endif
-
-  startblocki = (chroffset+prevpos)/32U*3;
-  endblocki = (chroffset+pos)/32U*3;
-  enddiscard = (chroffset+pos) % 32;
-
-#if 1
-  debug3a(
-	printf("\n\n");
-	printf("Genome (in prev_dinucleotide_position_fwd): chroffset %lu, pos %u, prevpos %u\n",
-	       chroffset,pos,prevpos);
-	Genome_print_blocks(ref_blocks,chroffset+prevpos,chroffset+pos);
-	printf("\n");
-	);
-#endif
-
-  offset = (pos - 1) - enddiscard + 32 + splicepos_offset;
-
-  if (endblocki == startblocki) {
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[endblocki]),&(snp_blocks[endblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[endblocki]),splicesite_bits);
-    }
-    found = clear_end(found,enddiscard);
-    startdiscard = (chroffset+prevpos) % 32;
-    found = clear_start(found,startdiscard);
-
-    if (found != 0U) {
-#ifdef HAVE_BUILTIN_CLZ
-      foundpos = offset - (relpos = __builtin_clz(found));
-#else
-      foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
-#endif
-      debug3a(printf("oneblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		     found,offset,relpos,chroffset+foundpos));
-      return foundpos;
-    } else {
-      debug3a(printf("oneblock: not found\n"));
-      return -1U;
-    }
-
-  } else {
-    /* Endblock */
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[endblocki]),&(snp_blocks[endblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[endblocki]),splicesite_bits);
-    }
-    found = clear_end(found,enddiscard);
-
-    if (found != 0U) {
-#ifdef HAVE_BUILTIN_CLZ
-      foundpos = offset - (relpos = __builtin_clz(found));
-#else
-      foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
-#endif
-      debug3a(printf("endblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		     found,offset,relpos,chroffset+foundpos));
-      return foundpos;
-    }
-
-    ptr = &(ref_blocks[endblocki-3]);
-    altptr = &(snp_blocks[endblocki-3]);
-    start = &(ref_blocks[startblocki]);
-    offset -= 32;
-
-    while (ptr > start) {
-      /* Middle blocks */
-      prev_low_halfsite = low_halfsite;
-      if (snp_blocks) {
-	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-      } else {
-	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-      }
-
-      if (high_halfsite & prev_low_halfsite) {
-	debug3a(printf("high_halfsite & prev_low_halfsite => offset %d - 1 (%lu)\n",
-		       offset,chroffset+offset));
-	return offset;
-      } else if (found != 0U) {
-#ifdef HAVE_BUILTIN_CLZ
-	foundpos = offset - (relpos = __builtin_clz(found));
-#else
-	foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
-#endif
-	debug3a(printf("middleblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		       found,offset,relpos,chroffset+foundpos));
-	return foundpos;
-      }
-
-      ptr -= 3;
-      altptr -= 3;
-      offset -= 32;
-    }
-
-    /* Startblock */
-    prev_low_halfsite = low_halfsite;
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-    }
-
-    if (high_halfsite & prev_low_halfsite) {
-      debug3a(printf("high_halfsite & prev_low_halfsite => offset %d - 1 (%lu)\n",
-		     offset,chroffset+offset));
-      return offset;
-    } else {
-      startdiscard = (chroffset+prevpos) % 32;
-      found = clear_start(found,startdiscard);
-
-      if (found != 0U) {
-#ifdef HAVE_BUILTIN_CLZ
-	foundpos = offset - (relpos = __builtin_clz(found));
-#else
-	foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
-#endif
-	debug3a(printf("startblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		       found,offset,relpos,chroffset+foundpos));
-	return foundpos;
-      } else {
-	debug3a(printf("startblock: not found\n"));
-	return -1U;
-      }
-    }
-  }
-}
-
-
-#if 0
-/* Same as splicesite_positions, but designed for stage 2 */
-static void
-last_dinucleotide_positions_fwd (int *last_position, Univcoord_T genomicstart, 
-				 int margin5, int margin3, int genomiclength,
-				 const Genomecomp_T *splicesite_bits, int splicepos_offset) {
-  int lastpos = -1, pos5, pos3;
-  int offset;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *altptr, *end;
-  Genomecomp_T found;
-  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
-  int pos, i = 0;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  pos5 = margin5;
-  pos3 = genomiclength - margin3;
-
-#if 0
-  debug3(
-	printf("\n\n");
-	printf("Genome (in last_dinucleotide_positions):\n");
-	Genome_print_blocks(ref_blocks,genomicstart+pos5,genomicstart+pos3);
-	printf("\n");
-	);
-#endif
-
-  startblocki = (genomicstart+pos5)/32U*3;
-  endblocki = (genomicstart+pos3)/32U*3;
-  startdiscard = (genomicstart+pos5) % 32;
-  enddiscard = (genomicstart+pos3) % 32;
-
-  offset = -startdiscard + pos5 + splicepos_offset;
-  
-  debug3(printf("genomicstart = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
-		genomicstart,pos5,pos3,startblocki,endblocki));
-  debug3(printf("startdiscard = %u, enddiscard = %u\n",startdiscard,enddiscard));
-
-  if (endblocki == startblocki) {
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    found = clear_end(found,enddiscard);
-    debug3(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset + (relpos = __builtin_ctz(found));
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-
-      clear_lowbit(found,relpos);
-#else      
-      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-
-      found -= lowbit;
-#endif
-      debug3(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-    }
-
-    while (i < genomiclength) {
-      last_position[i] = lastpos;
-      i++;
-    }
-
-    return;
-
-  } else {
-
-    /* Startblock */
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    debug3(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset + (relpos = __builtin_ctz(found));
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-
-      clear_lowbit(found,relpos);
-#else
-      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-
-      found -= lowbit;
-#endif
-      debug3(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-    }
-
-    ptr = &(ref_blocks[startblocki+3]);
-    altptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset += 32;
-    while (ptr < end) {
-      prev_high_halfsite = high_halfsite;
-      if (snp_blocks) {
-	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-      } else {
-	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-      }
-
-      if (low_halfsite & prev_high_halfsite) {
-	debug3(printf("low_halfsite & prev_high_halfsite => offset %d\n",offset));
-	pos = offset;
-	while (i < pos) {
-	  last_position[i] = lastpos;
-	  i++;
-	}
-	lastpos = pos;
-      }
-
-      while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	pos = offset + (relpos = __builtin_ctz(found));
-	while (i < pos) {
-	  last_position[i] = lastpos;
-	  i++;
-	}
-	lastpos = pos;
-
-	clear_lowbit(found,relpos);
-#else
-	debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-	pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-	while (i < pos) {
-	  last_position[i] = lastpos;
-	  i++;
-	}
-	lastpos = pos;
-
-	found -= lowbit;
-#endif
-	debug3(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-      }
-
-      ptr += 3;
-      altptr += 3;
-      offset += 32;
-    }
-
-    /* Endblock */
-    prev_high_halfsite = high_halfsite;
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-    }
-    found = clear_end(found,enddiscard);
-    debug3(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
-
-    if (low_halfsite & prev_high_halfsite) {
-      debug3(printf("low_halfsite & prev_high_halfsite => offset %d\n",offset));
-      pos = offset;
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-    }
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset + (relpos = __builtin_ctz(found));
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-
-      clear_lowbit(found,relpos);
-#else
-      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (i < pos) {
-	last_position[i] = lastpos;
-	i++;
-      }
-      lastpos = pos;
-
-      found -= lowbit;
-#endif
-      debug3(printf("found is %08X => offset %d + relpos %d\n",found,offset,relpos));
-    }
-
-    while (i < genomiclength) {
-      last_position[i] = lastpos;
-      i++;
-    }
-
-    return;
-  }
-
-}
-#endif
-
-
-/* prevpos is lower than pos, but (chrhigh-prevpos) (endblock)
-   corresponds to a higher genomicpos than (chrhigh-pos) */
-static Chrpos_T
-prev_dinucleotide_position_rev (Chrpos_T pos, Chrpos_T prevpos, Univcoord_T chrhigh,
-				const Genomecomp_T *splicesite_bits, int splicepos_offset) {
-  Chrpos_T foundpos, offset;
-  int startdiscard, enddiscard;
-  Univcoord_T startblocki, endblocki;
-  Genomecomp_T *ptr, *altptr, *end;
-  Genomecomp_T found;
-  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
-  int relpos;
-#ifndef HAVE_BUILTIN_CTZ
-  Genomecomp_T lowbit;
-#endif
-
-  startblocki = (chrhigh-pos)/32U*3;
-  endblocki = (chrhigh-prevpos)/32U*3;
-  startdiscard = (chrhigh-pos) % 32;
-
-  debug3b(
-	printf("\n\n");
-	printf("Genome (in prev_dinucleotide_position_rev): chrhigh %u, pos %u, prevpos %u\n",
-	       chrhigh,pos,prevpos);
-	Genome_print_blocks(ref_blocks,chrhigh-pos,chrhigh-prevpos);
-	printf("\n");
-	);
-
-  offset = pos + startdiscard + splicepos_offset;
-  debug3b(printf("offset %d = pos %d + startdiscard %d + splicepos_offset %d\n",
-		offset,pos,startdiscard,splicepos_offset));
-
-  if (startblocki == endblocki) {
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    enddiscard = (chrhigh-prevpos) % 32;
-    found = clear_end(found,enddiscard);
-
-    if (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      foundpos = offset - (relpos = __builtin_ctz(found));
-#else
-      foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
-#endif
-      debug3b(printf("oneblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		     found,offset,relpos,chrhigh - foundpos));
-      return foundpos;
-    } else {
-      return (Chrpos_T) -1;
-    }
-
-  } else {
-    /* Startblock */
-    found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    found = clear_start(found,startdiscard);
-
-    if (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      foundpos = offset - (relpos = __builtin_ctz(found));
-#else
-      foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
-#endif
-      debug3b(printf("startblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		     found,offset,relpos,chrhigh-foundpos));
-      return foundpos;
-    }
-
-    ptr = &(ref_blocks[startblocki+3]);
-    altptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset -= 32;
-
-    while (ptr < end) {
-      /* Middle blocks */
-      prev_high_halfsite = high_halfsite;
-      if (snp_blocks) {
-	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-      } else {
-	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-      }
-
-      if (low_halfsite & prev_high_halfsite) {
-	debug3b(printf("low_halfsite & prev_high_halfsite => offset %d + 1 (%lu)\n",
-		       offset,chrhigh - (offset + 1)));
-	return offset + 1;
-      } else if (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	foundpos = offset - (relpos = __builtin_ctz(found));
-#else
-	foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
-#endif
-	debug3b(printf("middleblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		       found,offset,relpos,chrhigh-foundpos));
-	return foundpos;
-      }
-
-      ptr += 3;
-      altptr += 3;
-      offset -= 32;
-    }
-
-    /* Endblock */
-    prev_high_halfsite = high_halfsite;
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-    }
-
-    if (low_halfsite & prev_high_halfsite) {
-      debug3b(printf("low_halfsite & prev_high_halfsite => offset %d + 1 (%lu)\n",
-		     offset,chrhigh - (offset + 1)));
-      return offset + 1;
-    } else {
-      enddiscard = (chrhigh-prevpos) % 32;
-      found = clear_end(found,enddiscard);
-
-      if (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	foundpos = offset - (relpos = __builtin_ctz(found));
-#else
-	foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
-#endif
-	debug3b(printf("endblock: found is %08X => offset %d - relpos %d (%lu)\n",
-		       found,offset,relpos,chrhigh-foundpos));
-	return foundpos;
-      } else {
-	return (Chrpos_T) -1;
-      }
-    }
-  }
-}
-
-
-#if 0
-static void
-last_dinucleotide_positions_rev (int *last_position, Univcoord_T genomicstart, 
-				 int margin5, int margin3, int genomiclength,
-				 const Genomecomp_T *splicesite_bits, int splicepos_offset) {
-  int pos5, pos3;
-  int offset;
-  int startdiscard, enddiscard, origindiscard;
-  Univcoord_T startblocki, endblocki, originblocki;
-  Genomecomp_T *ptr, *altptr, *end;
-  Genomecomp_T found;
-  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
-  int pos, i = genomiclength - 1;
-#ifdef HAVE_BUILTIN_CTZ
-  int relpos;
-#else
-  Genomecomp_T lowbit;
-#endif
-
-  pos5 = margin3;
-  pos3 = genomiclength - margin5;
-
-  debug3(
-	printf("\n\n");
-	printf("Genome (in last_dinucleotide_positions):\n");
-	Genome_print_blocks(ref_blocks,genomicstart+pos5,genomicstart+pos3);
-	printf("\n");
-	);
-
-  startblocki = (genomicstart+pos5)/32U*3;
-  endblocki = (genomicstart+pos3)/32U*3;
-  originblocki = (genomicstart+genomiclength)/32U*3;
-
-  startdiscard = (genomicstart+pos5) % 32;
-  enddiscard = (genomicstart+pos3) % 32;
-  origindiscard = (genomicstart+genomiclength) % 32;
-
-  offset = (originblocki - startblocki) * 32U/3 + origindiscard + splicepos_offset;
-
-  debug3(printf("genomicstart = %u, pos5 = %d, pos3 = %d, genomiclength = %d, startblocki = %u, endblocki = %u, originblocki = %u\n",
-		genomicstart,pos5,pos3,genomiclength,startblocki,endblocki,originblocki));
-  debug3(printf("startdiscard = %u, enddiscard = %u, origindiscard = %u\n",
-		startdiscard,enddiscard,origindiscard));
-  debug3(printf("offset = %d\n",offset));
-
-  if (endblocki == startblocki) {
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    found = clear_end(found,enddiscard);
-    debug3(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset - (relpos = __builtin_ctz(found));
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-
-      clear_lowbit(found,relpos);
-#else      
-      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-
-      found -= lowbit;
-#endif
-      debug3(printf("found is %08X => offset %d - relpos %d\n",found,offset,relpos));
-    }
-
-    while (i >= 0) {
-      last_position[i] = -1;
-      i--;
-    }
-
-    assert(i == -1);
-    return;
-
-  } else {
-
-    /* Startblock */
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,
-			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
-    }
-    found = clear_start(found,startdiscard);
-    debug3(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset - (relpos = __builtin_ctz(found));
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-
-      clear_lowbit(found,relpos);
-#else
-      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-
-      found -= lowbit;
-#endif
-      debug3(printf("found is %08X => offset %d - relpos %d\n",found,offset,relpos));
-    }
-
-    ptr = &(ref_blocks[startblocki+3]);
-    altptr = &(snp_blocks[startblocki+3]);
-    end = &(ref_blocks[endblocki]);
-    offset -= 32;
-    while (ptr < end) {
-      prev_high_halfsite = high_halfsite;
-      if (snp_blocks) {
-	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-      } else {
-	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-      }
-
-      if (low_halfsite & prev_high_halfsite) {
-	debug3(printf("high_halfsite & prev_low_halfsite => offset %d + 1\n",offset));
-	pos = offset + 1;
-	while (i >= pos) {
-	  last_position[i] = pos;
-	  i--;
-	}
-      }
-
-      while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-	pos = offset - (relpos = __builtin_ctz(found));
-	while (i >= pos) {
-	  last_position[i] = pos;
-	  i--;
-	}
-
-	clear_lowbit(found,relpos);
-#else
-	debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-	pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
-	while (i >= pos) {
-	  last_position[i] = pos;
-	  i--;
-	}
-
-	found -= lowbit;
-#endif
-	debug3(printf("found is %08X => offset %d - relpos %d\n",found,offset,relpos));
-      }
-
-      ptr += 3;
-      altptr += 3;
-      offset -= 32;
-    }
-
-    /* Endblock */
-    prev_high_halfsite = high_halfsite;
-    if (snp_blocks) {
-      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
-    } else {
-      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
-    }
-    found = clear_end(found,enddiscard);
-    debug3(printf("adding end mask %08x => found %08x\n",clear_end_mask(enddiscard),found));
-
-    if (low_halfsite & prev_high_halfsite) {
-      debug3(printf("high_halfsite & prev_low_halfsite => offset %d + 1\n",offset));
-      pos = offset + 1;
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-    }
-
-    while (found != 0U) {
-#ifdef HAVE_BUILTIN_CTZ
-      pos = offset - (relpos = __builtin_ctz(found));
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-
-      clear_lowbit(found,relpos);
-#else
-      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
-      pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
-      while (i >= pos) {
-	last_position[i] = pos;
-	i--;
-      }
-
-      found -= lowbit;
-#endif
-      debug3(printf("found is %08X => offset %d - relpos %d\n",found,offset,relpos));
-    }
-
-    while (i >= 0) {
-      last_position[i] = -1;
-      i--;
-    }
-
-    assert(i == -1);
-    return;
-  }
-
-}
-#endif
-  
-
-Chrpos_T
-Genome_prev_donor_position (Chrpos_T pos, Chrpos_T prevpos,
-			    Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp) {
-  if (plusp == true) {
-    debug3(printf("==> Looking for donor GT\n"));
-    return prev_dinucleotide_position_fwd(pos+2,prevpos,chroffset,donor_gt_bits,/*splicepos_offset*/-1);
-  } else {
-    debug3(printf("==> Looking for antidonor AC\n"));
-    return prev_dinucleotide_position_rev(pos+3,prevpos,chrhigh,antidonor_ac_bits,/*splicepos_offset*/-3);
-  }
-}
-
-Chrpos_T
-Genome_prev_acceptor_position (Chrpos_T pos, Chrpos_T prevpos,
-			       Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp) {
-  if (plusp == true) {
-    debug3(printf("==> Looking for acceptor AG\n"));
-    return prev_dinucleotide_position_fwd(pos-1,prevpos,chroffset,acceptor_bits,/*splicepos_offset*/2);
-  } else {
-    debug3(printf("==> Looking for antiacceptor CT\n"));
-    return prev_dinucleotide_position_rev(pos,prevpos,chrhigh,antiacceptor_bits,/*splicepos_offset*/0);
-  }
-}
-
-Chrpos_T
-Genome_prev_antidonor_position (Chrpos_T pos, Chrpos_T prevpos,
-				Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp) {
-  if (plusp == true) {
-    debug3(printf("==> Looking for antidonor AC\n"));
-    return prev_dinucleotide_position_fwd(pos-1,prevpos,chroffset,antidonor_ac_bits,/*splicepos_offset*/2);
-  } else {
-    debug3(printf("==> Looking for donor GT\n"));
-    return prev_dinucleotide_position_rev(pos,prevpos,chrhigh,donor_gt_bits,/*splicepos_offset*/0);
-  }
-}
-
-Chrpos_T
-Genome_prev_antiacceptor_position (Chrpos_T pos, Chrpos_T prevpos,
-				   Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp) {
-  if (plusp == true) {
-    debug3(printf("==> Looking for antiacceptor CT\n"));
-    return prev_dinucleotide_position_fwd(pos+2,prevpos,chroffset,antiacceptor_bits,/*splicepos_offset*/-1);
-  } else {
-    debug3(printf("==> Looking for acceptor AG\n"));
-    return prev_dinucleotide_position_rev(pos+3,prevpos,chrhigh,acceptor_bits,/*splicepos_offset*/-3);
-  }
-}
-
-
-#if 0
-void
-Genome_last_donor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-			     bool plusp) {
-  if (plusp == true) {
-    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,donor_gt_bits,
-					   /*splicepos_offset*/-1);
-  } else {
-    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,antidonor_ac_bits,
-					   /*splicepos_offset*/-3);
-  }
-}
-
-void
-Genome_last_acceptor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-				bool plusp) {
-  if (plusp == true) {
-    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,acceptor_bits,
-					   /*splicepos_offset*/2);
-  } else {
-    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,antiacceptor_bits,
-					   /*splicepos_offset*/0);
-  }
-}
-
-void
-Genome_last_antidonor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-				 bool plusp) {
-  if (plusp == true) {
-    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,antidonor_ac_bits,
-					   /*splicepos_offset*/2);
-  } else {
-    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,donor_gt_bits,
-					   /*splicepos_offset*/0);
-  }
-}
-
-void
-Genome_last_antiacceptor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-				    bool plusp) {
-  if (plusp == true) {
-    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,antiacceptor_bits,
-					   /*splicepos_offset*/-1);
-  } else {
-    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,acceptor_bits,
-					   /*splicepos_offset*/-3);
-  }
-}
-#endif
-
diff --git a/src/genome_hr.h b/src/genome_hr.h
deleted file mode 100644
index 9a108fa..0000000
--- a/src/genome_hr.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* $Id: genome_hr.h 99749 2013-06-27 21:03:51Z twu $ */
-#ifndef GENOME_HR_INCLUDED
-#define GENOME_HR_INCLUDED
-#include "types.h"
-#include "mode.h"
-#include "genomicpos.h"
-#include "chrnum.h"
-#include "compress.h"
-#include "chrnum.h"
-
-extern void
-Genome_hr_setup (Genomecomp_T *ref_blocks_in, Genomecomp_T *snp_blocks_in,
-		 bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
-		 Mode_T mode_in);
-
-extern void
-Genome_hr_user_setup (UINT4 *ref_blocks_in,
-		      bool query_unk_mismatch_p_in, bool genome_unk_mismatch_p_in,
-		      Mode_T mode_in);
-
-/* Procedures for indexdb */
-extern int
-Genome_read_gamma (Positionsptr_T **ptr, int ctr, Positionsptr_T *cum);
-extern Positionsptr_T
-Genome_offsetptr_from_gammas (Positionsptr_T *end0, Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-			      Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo);
-extern Positionsptr_T
-Genome_offsetptr_only_from_gammas (Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-				   Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo);
-
-#ifdef WORDS_BIGENDIAN
-extern int
-Genome_read_gamma_bigendian (Positionsptr_T **ptr, int ctr, Positionsptr_T *cum);
-extern Positionsptr_T
-Genome_offsetptr_from_gammas_bigendian (Positionsptr_T *end0, Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-					Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo);
-extern Positionsptr_T
-Genome_offsetptr_only_from_gammas_bigendian (Gammaptr_T *gammaptrs, Positionsptr_T *offsetscomp,
-					     Blocksize_T offsetscomp_blocksize, Storedoligomer_T oligo);
-#endif
-
-
-extern int
-Genome_count_mismatches (Compress_T query_compress, Univcoord_T left, Univcoord_T left_plus_length);
-extern int
-Genome_count_mismatches_limit (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-			       int max_mismatches, bool plusp, int genestrand);
-extern int
-Genome_count_mismatches_substring_ref (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-				       bool plusp, int genestrand);
-extern int
-Genome_count_mismatches_substring (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-				   bool plusp, int genestrand);
-extern Genomecomp_T
-Genome_query_shift_fragment_right (Genomecomp_T *flags, Genomecomp_T *mask, Compress_T query_compress, int pos5, int pos3);
-extern Genomecomp_T
-Genome_query_shift_fragment_left (Genomecomp_T *flags, Genomecomp_T *mask, Compress_T query_compress, int pos5, int pos3);
-extern int
-Genome_count_mismatches_fragment (Genomecomp_T query_shifted, Genomecomp_T flags, Genomecomp_T mask,
-				  Genomecomp_T ref_fragment, Genomecomp_T alt_fragment);
-
-extern int
-Genome_mismatches_left (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand);
-extern int
-Genome_mismatches_right (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			 Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand);
-
-extern int
-Genome_mismatches_left_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			     Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand);
-extern int
-Genome_mismatches_right_trim (int *mismatch_positions, int max_mismatches, Compress_T query_compress,
-			      Univcoord_T left, int pos5, int pos3, bool plusp, int genestrand);
-
-extern int
-Genome_mark_mismatches_ref (char *genomic, int querylength, Compress_T query_compress,
-			    Univcoord_T left, int pos5, int pos3, int mismatch_offset,
-			    bool plusp, int genestrand);
-extern int
-Genome_mark_mismatches (char *genomic, int querylength, Compress_T query_compress,
-			Univcoord_T left, int pos5, int pos3, int mismatch_offset, bool plusp, int genestrand);
-
-extern int
-Genome_trim_left (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-		  bool plusp, int genestrand);
-
-extern int
-Genome_trim_right (Compress_T query_compress, Univcoord_T left, int pos5, int pos3,
-		   bool plusp, int genestrand);
-
-extern char
-Genome_get_dinucleotide (char *altdinucl, Univcoord_T pos);
-
-extern int
-Genome_donor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			Univcoord_T left, int pos5, int pos3);
-
-extern int
-Genome_acceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			   Univcoord_T left, int pos5, int pos3);
-
-extern int
-Genome_antidonor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			    Univcoord_T left, int pos5, int pos3);
-
-extern int
-Genome_antiacceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
-			       Univcoord_T left, int pos5, int pos3);
-
-
-Chrpos_T
-Genome_prev_donor_position (Chrpos_T pos, Chrpos_T prevpos,
-			    Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp);
-Chrpos_T
-Genome_prev_acceptor_position (Chrpos_T pos, Chrpos_T prevpos,
-			       Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp);
-Chrpos_T
-Genome_prev_antidonor_position (Chrpos_T pos, Chrpos_T prevpos,
-				Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp);
-Chrpos_T
-Genome_prev_antiacceptor_position (Chrpos_T pos, Chrpos_T prevpos,
-				   Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp);
-
-
-#if 0
-extern void
-Genome_last_donor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-			     bool plusp);
-
-extern void
-Genome_last_acceptor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-				bool plusp);
-
-extern void
-Genome_last_antidonor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-				 bool plusp);
-
-extern void
-Genome_last_antiacceptor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
-				    bool plusp);
-#endif
-
-
-#endif
-
diff --git a/src/genome_sites.c b/src/genome_sites.c
new file mode 100644
index 0000000..2f08f9a
--- /dev/null
+++ b/src/genome_sites.c
@@ -0,0 +1,26262 @@
+static char rcsid[] = "$Id: genome_sites.c 132144 2014-04-02 16:02:28Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#ifndef HAVE_MEMCPY
+# define memcpy(d,s,n) bcopy((s),(d),(n))
+#endif
+#ifndef HAVE_MEMMOVE
+# define memmove(d,s,n) bcopy((s),(d),(n))
+#endif
+
+#include "genome_sites.h"
+
+#include <stdio.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>		/* For tolower() */
+
+#include "assert.h"
+#include "except.h"
+#include "mem.h"
+#include "cmet.h"
+#include "atoi.h"
+#include "maxent_hr.h"
+#include "popcount.h"
+
+
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"
+#else
+#include "littleendian.h"
+#endif
+
+
+/* Splice sites */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+/* last_dinucleotide_positions */
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
+/* prev_dinucleotide_position */
+#ifdef DEBUG3A
+#define debug3a(x) x
+#else
+#define debug3a(x)
+#endif
+
+/* prev_dinucleotide_positions_rev */
+#ifdef DEBUG3B
+#define debug3b(x) x
+#else
+#define debug3b(x)
+#endif
+
+/* canonicalp */
+#ifdef DEBUG4
+#define debug4(x) x
+#else
+#define debug4(x)
+#endif
+
+
+
+
+static const Genomecomp_T donor_gt_bits[] =
+{0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x052,0x051,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x052,0x051,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x152,0x151,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x152,0x151,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x152,0x151,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x154,0x154,0x154,0x155,0x150,0x150,0x152,0x151,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x142,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x14A,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x142,0x141,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x122,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x12A,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x122,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x112,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x112,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x102,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x10A,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x102,0x101,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A2,0x0A1,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x092,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x092,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x082,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x08A,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x082,0x081,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x052,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x052,0x051,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x042,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x04A,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x042,0x041,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x022,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x02A,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x022,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x012,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x012,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x002,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x00A,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x002,0x001,
+};
+
+
+static const Genomecomp_T donor_gtgc_bits[] =
+{0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,
+ 0x150,0x151,0x150,0x151,0x150,0x151,0x152,0x151,0x154,0x155,0x154,0x155,0x150,0x151,0x152,0x151,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,0x148,0x149,0x148,0x149,0x148,0x149,0x14A,0x149,
+ 0x140,0x141,0x140,0x141,0x140,0x141,0x142,0x141,0x144,0x145,0x144,0x145,0x140,0x141,0x142,0x141,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,0x128,0x129,0x128,0x129,0x128,0x129,0x12A,0x129,
+ 0x120,0x121,0x120,0x121,0x120,0x121,0x122,0x121,0x124,0x125,0x124,0x125,0x120,0x121,0x122,0x121,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,
+ 0x110,0x111,0x110,0x111,0x110,0x111,0x112,0x111,0x114,0x115,0x114,0x115,0x110,0x111,0x112,0x111,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,0x108,0x109,0x108,0x109,0x108,0x109,0x10A,0x109,
+ 0x100,0x101,0x100,0x101,0x100,0x101,0x102,0x101,0x104,0x105,0x104,0x105,0x100,0x101,0x102,0x101,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0A8,0x0A9,0x0AA,0x0A9,
+ 0x0A0,0x0A1,0x0A0,0x0A1,0x0A0,0x0A1,0x0A2,0x0A1,0x0A4,0x0A5,0x0A4,0x0A5,0x0A0,0x0A1,0x0A2,0x0A1,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,
+ 0x090,0x091,0x090,0x091,0x090,0x091,0x092,0x091,0x094,0x095,0x094,0x095,0x090,0x091,0x092,0x091,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,0x088,0x089,0x088,0x089,0x088,0x089,0x08A,0x089,
+ 0x080,0x081,0x080,0x081,0x080,0x081,0x082,0x081,0x084,0x085,0x084,0x085,0x080,0x081,0x082,0x081,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,
+ 0x050,0x051,0x050,0x051,0x050,0x051,0x052,0x051,0x054,0x055,0x054,0x055,0x050,0x051,0x052,0x051,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,0x048,0x049,0x048,0x049,0x048,0x049,0x04A,0x049,
+ 0x040,0x041,0x040,0x041,0x040,0x041,0x042,0x041,0x044,0x045,0x044,0x045,0x040,0x041,0x042,0x041,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,0x028,0x029,0x028,0x029,0x028,0x029,0x02A,0x029,
+ 0x020,0x021,0x020,0x021,0x020,0x021,0x022,0x021,0x024,0x025,0x024,0x025,0x020,0x021,0x022,0x021,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,
+ 0x010,0x011,0x010,0x011,0x010,0x011,0x012,0x011,0x014,0x015,0x014,0x015,0x010,0x011,0x012,0x011,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+ 0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,0x008,0x009,0x008,0x009,0x008,0x009,0x00A,0x009,
+ 0x000,0x001,0x000,0x001,0x000,0x001,0x002,0x001,0x004,0x005,0x004,0x005,0x000,0x001,0x002,0x001,
+};
+
+static const Genomecomp_T acceptor_bits[] =
+{0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
+ 0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
+ 0x154,0x154,0x155,0x154,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
+ 0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,0x150,0x150,0x150,0x151,0x150,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,0x148,0x148,0x148,0x149,0x148,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x144,0x144,0x145,0x144,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,0x140,0x140,0x140,0x141,0x140,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,0x128,0x128,0x128,0x129,0x128,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x124,0x124,0x125,0x124,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,0x120,0x120,0x120,0x121,0x120,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x114,0x114,0x115,0x114,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,0x110,0x110,0x110,0x111,0x110,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,0x108,0x108,0x108,0x109,0x108,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x104,0x104,0x105,0x104,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,0x100,0x100,0x100,0x101,0x100,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x054,0x054,0x055,0x054,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0AA,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A4,0x0A4,0x0A5,0x0A4,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x094,0x094,0x095,0x094,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,0x090,0x090,0x090,0x091,0x090,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,0x088,0x088,0x088,0x089,0x088,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x084,0x084,0x085,0x084,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,0x080,0x080,0x080,0x081,0x080,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x054,0x054,0x055,0x054,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x054,0x054,0x055,0x054,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,0x050,0x050,0x050,0x051,0x050,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,0x048,0x048,0x048,0x049,0x048,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x044,0x044,0x045,0x044,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,0x040,0x040,0x040,0x041,0x040,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,0x028,0x028,0x028,0x029,0x028,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x024,0x024,0x025,0x024,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,0x020,0x020,0x020,0x021,0x020,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x014,0x014,0x015,0x014,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,0x010,0x010,0x010,0x011,0x010,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,0x008,0x008,0x008,0x009,0x008,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x004,0x004,0x005,0x004,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+ 0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,0x000,0x000,0x000,0x001,0x000,
+};
+
+
+static const Genomecomp_T antidonor_ac_bits[] =
+{0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+};
+
+
+static const Genomecomp_T antidonor_acgc_bits[] =
+{0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A8,0x0A9,0x0A8,0x0A8,0x0AA,0x0A9,0x0AA,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A4,0x0A5,0x0A4,0x0A4,0x0A2,0x0A1,0x0A2,0x0A0,0x0A4,0x0A5,0x0A4,0x0A4,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x0A0,0x0A1,0x0A0,0x0A0,0x0A2,0x0A1,0x0A2,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x094,0x095,0x094,0x094,0x092,0x091,0x092,0x090,0x094,0x095,0x094,0x094,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x090,0x091,0x090,0x090,0x092,0x091,0x092,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x088,0x089,0x088,0x088,0x08A,0x089,0x08A,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x084,0x085,0x084,0x084,0x082,0x081,0x082,0x080,0x084,0x085,0x084,0x084,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x080,0x081,0x080,0x080,0x082,0x081,0x082,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x154,0x155,0x154,0x154,0x152,0x151,0x152,0x150,0x154,0x155,0x154,0x154,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x150,0x151,0x150,0x150,0x152,0x151,0x152,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x148,0x149,0x148,0x148,0x14A,0x149,0x14A,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x144,0x145,0x144,0x144,0x142,0x141,0x142,0x140,0x144,0x145,0x144,0x144,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x140,0x141,0x140,0x140,0x142,0x141,0x142,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x128,0x129,0x128,0x128,0x12A,0x129,0x12A,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x124,0x125,0x124,0x124,0x122,0x121,0x122,0x120,0x124,0x125,0x124,0x124,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x120,0x121,0x120,0x120,0x122,0x121,0x122,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x114,0x115,0x114,0x114,0x112,0x111,0x112,0x110,0x114,0x115,0x114,0x114,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x110,0x111,0x110,0x110,0x112,0x111,0x112,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x108,0x109,0x108,0x108,0x10A,0x109,0x10A,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x104,0x105,0x104,0x104,0x102,0x101,0x102,0x100,0x104,0x105,0x104,0x104,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x100,0x101,0x100,0x100,0x102,0x101,0x102,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x054,0x055,0x054,0x054,0x052,0x051,0x052,0x050,0x054,0x055,0x054,0x054,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x050,0x051,0x050,0x050,0x052,0x051,0x052,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x048,0x049,0x048,0x048,0x04A,0x049,0x04A,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x044,0x045,0x044,0x044,0x042,0x041,0x042,0x040,0x044,0x045,0x044,0x044,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x040,0x041,0x040,0x040,0x042,0x041,0x042,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x028,0x029,0x028,0x028,0x02A,0x029,0x02A,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x024,0x025,0x024,0x024,0x022,0x021,0x022,0x020,0x024,0x025,0x024,0x024,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x020,0x021,0x020,0x020,0x022,0x021,0x022,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x014,0x015,0x014,0x014,0x012,0x011,0x012,0x010,0x014,0x015,0x014,0x014,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x010,0x011,0x010,0x010,0x012,0x011,0x012,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x008,0x009,0x008,0x008,0x00A,0x009,0x00A,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x004,0x005,0x004,0x004,0x002,0x001,0x002,0x000,0x004,0x005,0x004,0x004,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+ 0x000,0x001,0x000,0x000,0x002,0x001,0x002,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,
+};
+
+static const Genomecomp_T antiacceptor_bits[] =
+{0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
+ 0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
+ 0x150,0x150,0x150,0x151,0x154,0x154,0x154,0x155,0x150,0x150,0x150,0x151,0x150,0x152,0x150,0x151,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x148,0x148,0x149,0x148,0x14A,0x148,0x149,
+ 0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x140,0x140,0x140,0x141,0x144,0x144,0x144,0x145,0x140,0x140,0x140,0x141,0x140,0x142,0x140,0x141,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x128,0x128,0x129,0x128,0x12A,0x128,0x129,
+ 0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x120,0x120,0x120,0x121,0x124,0x124,0x124,0x125,0x120,0x120,0x120,0x121,0x120,0x122,0x120,0x121,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x110,0x110,0x110,0x111,0x114,0x114,0x114,0x115,0x110,0x110,0x110,0x111,0x110,0x112,0x110,0x111,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x108,0x108,0x109,0x108,0x10A,0x108,0x109,
+ 0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x100,0x100,0x100,0x101,0x104,0x104,0x104,0x105,0x100,0x100,0x100,0x101,0x100,0x102,0x100,0x101,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0A8,0x0A8,0x0A9,0x0A8,0x0AA,0x0A8,0x0A9,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x0A0,0x0A0,0x0A0,0x0A1,0x0A4,0x0A4,0x0A4,0x0A5,0x0A0,0x0A0,0x0A0,0x0A1,0x0A0,0x0A2,0x0A0,0x0A1,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x090,0x090,0x090,0x091,0x094,0x094,0x094,0x095,0x090,0x090,0x090,0x091,0x090,0x092,0x090,0x091,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x088,0x088,0x089,0x088,0x08A,0x088,0x089,
+ 0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x080,0x080,0x080,0x081,0x084,0x084,0x084,0x085,0x080,0x080,0x080,0x081,0x080,0x082,0x080,0x081,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x050,0x050,0x050,0x051,0x054,0x054,0x054,0x055,0x050,0x050,0x050,0x051,0x050,0x052,0x050,0x051,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x048,0x048,0x049,0x048,0x04A,0x048,0x049,
+ 0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x040,0x040,0x040,0x041,0x044,0x044,0x044,0x045,0x040,0x040,0x040,0x041,0x040,0x042,0x040,0x041,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x028,0x028,0x029,0x028,0x02A,0x028,0x029,
+ 0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x020,0x020,0x020,0x021,0x024,0x024,0x024,0x025,0x020,0x020,0x020,0x021,0x020,0x022,0x020,0x021,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x010,0x010,0x010,0x011,0x014,0x014,0x014,0x015,0x010,0x010,0x010,0x011,0x010,0x012,0x010,0x011,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x008,0x008,0x009,0x008,0x00A,0x008,0x009,
+ 0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+ 0x000,0x000,0x000,0x001,0x004,0x004,0x004,0x005,0x000,0x000,0x000,0x001,0x000,0x002,0x000,0x001,
+};
+
+
+/* Code starts here */
+
+static void
+write_chars_comp (UINT4 high, UINT4 low, UINT4 flags) {
+  char Buffer[33];
+  int i;
+
+  Buffer[32] = '\0';
+  /* printf("%08X %08X %08X => ",high,low,flags); */
+  for (i = 0; i < 16; i++) {
+    switch (low & 3U) {
+    case 0U: Buffer[i] = 'A'; break;
+    case 1U: Buffer[i] = 'C'; break;
+    case 2U: Buffer[i] = 'G'; break;
+    case 3U: Buffer[i] = 'T'; break;
+    default: abort();
+    }
+    low >>= 2;
+  }
+  for ( ; i < 32; i++) {
+    switch (high & 3U) {
+    case 0U: Buffer[i] = 'A'; break;
+    case 1U: Buffer[i] = 'C'; break;
+    case 2U: Buffer[i] = 'G'; break;
+    case 3U: Buffer[i] = 'T'; break;
+    default: abort();
+    }
+    high >>= 2;
+  }
+  for (i = 0; i < 32; i++) {
+    if ((flags & 1U) == 1U) {
+      Buffer[i] = 'N';
+    }
+    flags >>= 1;
+  }
+
+  printf("%s",Buffer);
+  return;
+}
+
+
+static void
+Genome_print_blocks (Genomecomp_T *blocks, Univcoord_T startpos, Univcoord_T endpos) {
+  /* Chrpos_T length = endpos - startpos; */
+  Univcoord_T startblock, endblock, ptr;
+  int startdiscard, enddiscard;
+  Genomecomp_T high, low, flags;
+  int i;
+
+  /* sequence = (char *) CALLOC(length+1,sizeof(char)); */
+
+  ptr = startblock = startpos/32U*3;
+  endblock = endpos/32U*3;
+  startdiscard = startpos % 32;
+  enddiscard = endpos % 32;
+  
+  /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+  printf("                                              \t");
+  printf("%u\t",startblock/3*32U);
+  for (i = 0; i < startdiscard; i++) {
+    printf("*");
+  }
+  printf("\n");
+
+  for (ptr = startblock ; ptr <= endblock; ptr += 3) {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(blocks[ptr]);
+    low = Bigendian_convert_uint(blocks[ptr+1]);
+    flags = Bigendian_convert_uint(blocks[ptr+2]);
+#else
+    high = blocks[ptr]; low = blocks[ptr+1]; flags = blocks[ptr+2];
+#endif
+    printf("high: %08X  low: %08X  flags: %08X\t",high,low,flags);
+    printf("%u\t",ptr/3*32U);
+    write_chars_comp(high,low,flags);
+    printf("\n");
+  }
+
+  /*      high: 9F61B62A  low: 6D68A157  flags: 00000000 */
+  printf("                                              \t");
+  printf("%u\t",(endblock+3)/3*32U);
+  for (i = 0; i < enddiscard; i++) {
+    printf(" ");
+  }
+  for ( ; i < 32; i++) {
+    printf("*");
+  }
+  printf("\n");
+
+
+  return;
+}
+
+
+
+static Genomecomp_T *ref_blocks;
+static Genomecomp_T *snp_blocks;
+
+
+void
+Genome_sites_setup (Genomecomp_T *ref_blocks_in, Genomecomp_T *snp_blocks_in) {
+  ref_blocks = ref_blocks_in;
+  snp_blocks = snp_blocks_in;
+
+  return;
+}
+
+
+/*                 76543210 */
+#define HIGH_BIT 0x80000000
+
+#define clear_start(diff,startdiscard) (diff & (~0U << (startdiscard)))
+#define clear_end(diff,enddiscard) (diff & ~(~0U << (enddiscard)))
+
+#define clear_start_mask(startdiscard) (~0U << (startdiscard))
+#define clear_end_mask(enddiscard) (~(~0U << (enddiscard)))
+
+/* Same speed: clear_highbit(diff,relpos) diff -= (HIGH_BIT >> relpos) */
+/* Note: xor assumes that bit at relpos was on */
+#define clear_highbit(diff,relpos) diff ^= (HIGH_BIT >> relpos)
+
+/* Slower: clear_lowbit(diff,relpos) diff -= (1 << relpos) */
+#define clear_lowbit(diff,relpos) diff &= (diff - 1);
+
+
+/************************************************************************
+ *   Splice sites
+ ************************************************************************/
+
+
+static Genomecomp_T
+block_find (Genomecomp_T *high_halfsite, Genomecomp_T *low_halfsite, Genomecomp_T *ptr, const Genomecomp_T *splicesite_bits) {
+  Genomecomp_T found, compare, flags;
+
+  /* High */
+  debug2(printf("Evaluating high %08X and low %08X\n",*ptr,ptr[1]));
+#ifdef WORDS_BIGENDIAN
+  compare = Bigendian_convert_uint(*ptr++);
+#else
+  compare = *ptr++;
+#endif
+  /* Get high_halfsite bit */
+  found = splicesite_bits[compare >> 16];
+  *high_halfsite = (found & 0x100) >> 8;
+  found = (found << 24) | 0x00FFFFFF;
+  debug2(printf("  splicesite_bits_3: %08X, high_halfsite %d\n",
+		splicesite_bits[compare >> 16] << 24,*high_halfsite));
+
+  found &= (splicesite_bits[compare & 0x0000FFFF] << 16) | 0xFE00FFFF; /* Use FE to allow for high bit */
+  debug2(printf("  splicesite_bits_2: %08X\n",splicesite_bits[compare & 0x0000FFFF] << 16));
+
+  /* Low */
+#ifdef WORDS_BIGENDIAN
+  compare = Bigendian_convert_uint(*ptr++);
+#else
+  compare = *ptr++;
+#endif
+  found &= (splicesite_bits[compare >> 16] << 8) | 0xFFFE00FF;
+  debug2(printf("  splicesite_bits_1: %08X\n",splicesite_bits[compare >> 16] << 8));
+
+  found &= splicesite_bits[compare & 0x0000FFFF] | 0xFFFFFE00;
+  debug2(printf("  splicesite_bits_0: %08X, low_halfsite %d\n",
+		splicesite_bits[compare & 0x0000FFFF],found & 0x1));
+
+
+  /* Flags: N is considered a mismatch */
+  debug2(printf("Marking flags: genome %08X ",*ptr));
+#ifdef WORDS_BIGENDIAN
+  flags = Bigendian_convert_uint(*ptr);
+#else
+  flags = (*ptr);
+#endif
+
+  found &= ~flags;
+  found &= ~(flags << 1);
+
+  *low_halfsite = found & 0x00000001;
+
+  *high_halfsite &= ~(flags >> 31);
+
+  /* splicesite_bits are 1-based, so need to reduce values by 1 */
+  /* No need to clear top bit */
+  found >>= 1;
+  debug2(printf(" => found %08X, high_halfsite %d, low_halfsite %d\n",found,*high_halfsite,*low_halfsite));
+
+  return found;
+}
+
+
+
+static Genomecomp_T
+block_find_snp (Genomecomp_T *high_halfsite, Genomecomp_T *low_halfsite, Genomecomp_T *ref_ptr, Genomecomp_T *alt_ptr,
+		const Genomecomp_T *splicesite_bits) {
+  Genomecomp_T found, ref, alt, flags;
+
+  /* High */
+  debug2(printf("Evaluating ref high %08X and low %08X, and alt high %08X and low %08X\n",
+		*ref_ptr,ref_ptr[1],*alt_ptr,alt_ptr[1]));
+#ifdef WORDS_BIGENDIAN
+  ref = Bigendian_convert_uint(*ref_ptr++);
+  alt = Bigendian_convert_uint(*alt_ptr++);
+#else
+  ref = *ref_ptr++;
+  alt = *alt_ptr++;
+#endif
+  /* Get high_halfsite bit */
+  found = splicesite_bits[ref >> 16] | splicesite_bits[alt >> 16];
+  *high_halfsite = (found & 0x100) >> 8;
+  found = (found << 24) | 0x00FFFFFF;
+  debug2(printf("  splicesite_bits_3: %08X | %08X, high_halfsite %d\n",
+		splicesite_bits[ref >> 16] << 24,splicesite_bits[alt >> 16] << 24,*high_halfsite));
+
+ /* Use FE to allow for high bit */
+  found &= ((splicesite_bits[ref & 0x0000FFFF] | splicesite_bits[alt & 0x0000FFFF]) << 16) | 0xFE00FFFF;
+  debug2(printf("  splicesite_bits_2: %08X | %08X\n",
+		splicesite_bits[ref & 0x0000FFFF] << 16,splicesite_bits[alt & 0x0000FFFF] << 16));
+
+  /* Low */
+#ifdef WORDS_BIGENDIAN
+  ref = Bigendian_convert_uint(*ref_ptr++);
+  alt = Bigendian_convert_uint(*alt_ptr++);
+#else
+  ref = *ref_ptr++;
+  alt = *alt_ptr++;
+#endif
+  found &= ((splicesite_bits[ref >> 16] | splicesite_bits[alt >> 16]) << 8) | 0xFFFE00FF;
+  debug2(printf("  splicesite_bits_1: %08X | %08X\n",
+		splicesite_bits[ref >> 16] << 8,splicesite_bits[alt >> 16] << 8));
+
+  found &= (splicesite_bits[ref & 0x0000FFFF] | splicesite_bits[alt & 0x0000FFFF]) | 0xFFFFFE00;
+  debug2(printf("  splicesite_bits_0: %08X | %08X, low_halfsite %d\n",
+		splicesite_bits[ref & 0x0000FFFF],splicesite_bits[ref & 0x0000FFFF],found & 0x1));
+
+
+  /* Handle only reference flags, which indicate N */
+  /* Reference flags: N is considered a mismatch */
+  debug2(printf("Marking flags: genome %08X ",*ref_ptr));
+#ifdef WORDS_BIGENDIAN
+  flags = Bigendian_convert_uint(*ref_ptr);
+#else
+  flags = (*ref_ptr);
+#endif
+
+  found &= ~flags;
+  found &= ~(flags << 1);
+
+  *low_halfsite = found & 0x00000001;
+
+  *high_halfsite &= ~(flags >> 31);
+
+  /* splicesite_bits are 1-based, so need to reduce values by 1 */
+  /* No need to clear top bit */
+  found >>= 1;
+  debug2(printf(" => found %08X, high_halfsite %d, low_halfsite %d\n",found,*high_halfsite,*low_halfsite));
+
+  return found;
+}
+
+
+static int
+splicesite_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+		      Univcoord_T left, int pos5, int pos3,
+		      const Genomecomp_T *splicesite_bits, int splicepos_offset) {
+  int nfound = 0, offset;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki;
+  Genomecomp_T *ptr, *altptr, *end;
+  Genomecomp_T found;
+  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
+  int pos;
+#ifdef HAVE_BUILTIN_CTZ
+  int relpos;
+#else
+  Genomecomp_T lowbit;
+#endif
+
+  debug2(
+	printf("\n\n");
+	printf("Genome (in splicesite_positions):\n");
+	Genome_print_blocks(ref_blocks,left+pos5,left+pos3);
+	printf("\n");
+	);
+
+  /* nshift = left % 32; */
+
+  startblocki = (left+pos5)/32U*3;
+  endblocki = (left+pos3)/32U*3;
+  startdiscard = (left+pos5) % 32;
+  enddiscard = (left+pos3) % 32;
+
+  offset = -startdiscard + pos5 + splicepos_offset;
+  
+  debug2(printf("left = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+	       left,pos5,pos3,startblocki,endblocki));
+  debug2(printf("startdiscard = %u, enddiscard = %u\n",startdiscard,enddiscard));
+
+  if (endblocki == startblocki) {
+    /* Advance knownpos past pos5 */
+    while (*knownpos < pos5) {
+      debug2(printf("Skipping knownpos #%d at %d < pos5 %d\n",*knowni,*knownpos,pos5));
+      knowni++;
+      knownpos++;
+    }
+
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    found = clear_end(found,enddiscard);
+    debug2(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset + (relpos = __builtin_ctz(found));
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+      clear_lowbit(found,relpos);
+#else      
+      debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+      found -= lowbit;
+#endif
+      debug2(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+    }
+
+    /* Add knownpos to pos3 */
+    while (*knownpos < pos3) {
+      debug2(printf("Adding knownpos #%d at %d < pos3 %d\n",*knowni,*knownpos,pos3));
+      site_knowni[nfound] = *knowni++;
+      site_positions[nfound++] = *knownpos++;
+    }
+
+    return nfound;
+
+  } else {
+    /* Advance knownpos past pos5 */
+    while (*knownpos < pos5) {
+      debug2(printf("Skipping knownpos #%d at %d < pos5 %d\n",*knowni,*knownpos,pos5));
+      knowni++;
+      knownpos++;
+    }
+
+    /* Startblock */
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    debug2(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset + (relpos = __builtin_ctz(found));
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+      clear_lowbit(found,relpos);
+#else
+      debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+      found -= lowbit;
+#endif
+      debug2(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+    }
+
+    ptr = &(ref_blocks[startblocki+3]);
+    altptr = &(snp_blocks[startblocki+3]);
+    end = &(ref_blocks[endblocki]);
+    offset += 32;
+    while (ptr < end) {
+      prev_high_halfsite = high_halfsite;
+      if (snp_blocks) {
+	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+      } else {
+	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+      }
+
+      if (low_halfsite & prev_high_halfsite) {
+	debug2(printf("low_halfsite & prev_high_halfsite => offset %u - 1\n",offset));
+	pos = offset - 1;	/* verified that this should be offset - 1 */
+	while (*knownpos < pos) {
+	  site_knowni[nfound] = *knowni++;
+	  site_positions[nfound++] = *knownpos++;
+	}
+	if (*knownpos == pos) {
+	  site_knowni[nfound] = *knowni++;
+	  site_positions[nfound++] = *knownpos++;
+	} else {
+	  site_knowni[nfound] = -1;
+	  site_positions[nfound++] = pos;
+	}
+      }
+
+      while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+	pos = offset + (relpos = __builtin_ctz(found));
+	while (*knownpos < pos) {
+	  site_knowni[nfound] = *knowni++;
+	  site_positions[nfound++] = *knownpos++;
+	}
+	if (*knownpos == pos) {
+	  site_knowni[nfound] = *knowni++;
+	  site_positions[nfound++] = *knownpos++;
+	} else {
+	  site_knowni[nfound] = -1;
+	  site_positions[nfound++] = pos;
+	}
+	clear_lowbit(found,relpos);
+#else
+	debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+	pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+	while (*knownpos < pos) {
+	  site_knowni[nfound] = *knowni++;
+	  site_positions[nfound++] = *knownpos++;
+	}
+	if (*knownpos == pos) {
+	  site_knowni[nfound] = *knowni++;
+	  site_positions[nfound++] = *knownpos++;
+	} else {
+	  site_knowni[nfound] = -1;
+	  site_positions[nfound++] = pos;
+	}
+	found -= lowbit;
+#endif
+	debug2(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+      }
+
+      ptr += 3;
+      altptr += 3;
+      offset += 32;
+    }
+
+    /* Endblock */
+    prev_high_halfsite = high_halfsite;
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+    }
+    found = clear_end(found,enddiscard);
+    debug2(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
+
+    if (low_halfsite & prev_high_halfsite) {
+      debug2(printf("low_halfsite & prev_high_halfsite => offset %u - 1\n",offset));
+      pos = offset - 1;		/* verified that this should be offset - 1 */
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+    }
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset + (relpos = __builtin_ctz(found));
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+      clear_lowbit(found,relpos);
+#else
+      debug2(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (*knownpos < pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      }
+      if (*knownpos == pos) {
+	site_knowni[nfound] = *knowni++;
+	site_positions[nfound++] = *knownpos++;
+      } else {
+	site_knowni[nfound] = -1;
+	site_positions[nfound++] = pos;
+      }
+      found -= lowbit;
+#endif
+      debug2(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+    }
+
+    /* Add knownpos to pos3 */
+    while (*knownpos < pos3) {
+      debug2(printf("Adding knownpos #%d at %d < pos3 %d\n",*knowni,*knownpos,pos3));
+      site_knowni[nfound] = *knowni++;
+      site_positions[nfound++] = *knownpos++;
+    }
+
+    return nfound;
+  }
+
+}
+
+
+int
+Genome_donor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			Univcoord_T left, int pos5, int pos3) {
+  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,donor_gtgc_bits,
+			      /*splicepos_offset*/0);
+}
+
+int
+Genome_acceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			   Univcoord_T left, int pos5, int pos3) {
+  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,acceptor_bits,
+			      /*splicepos_offset*/2);
+}
+
+int
+Genome_antidonor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			    Univcoord_T left, int pos5, int pos3) {
+  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,antidonor_acgc_bits,
+			      /*splicepos_offset*/2);
+}
+
+int
+Genome_antiacceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			       Univcoord_T left, int pos5, int pos3) {
+  return splicesite_positions(site_positions,site_knowni,knownpos,knowni,left,pos5,pos3,antiacceptor_bits,
+			      /*splicepos_offset*/0);
+}
+
+
+/* prevpos (startblock) corresponds to a lower genomicpos than pos */
+static Univcoord_T
+prev_dinucleotide_position (Univcoord_T pos, Univcoord_T prevpos,
+#ifdef DEBUG3A
+			    Univcoord_T chroffset,
+#endif
+			    const Genomecomp_T *splicesite_bits, int splicepos_offset) {
+  Univcoord_T foundpos;
+  Univcoord_T offset;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki;
+  Genomecomp_T *ptr, *altptr, *start;
+  Genomecomp_T found;
+  Genomecomp_T high_halfsite, low_halfsite, prev_low_halfsite;
+  int relpos;
+#ifndef HAVE_BUILTIN_CLZ
+  Genomecomp_T top;
+#endif
+
+  startblocki = prevpos/32U*3;
+  endblocki = pos/32U*3;
+  enddiscard = pos % 32;
+
+  debug3a(
+	printf("\n\n");
+	printf("Genome (in prev_dinucleotide_position): chroffset %lu, pos %u, prevpos %u\n",
+	       chroffset,pos-chroffset,prevpos-chroffset);
+	Genome_print_blocks(ref_blocks,prevpos-chroffset,pos-chroffset);
+	printf("\n");
+	);
+
+  offset = (pos - 1) - enddiscard + 32 + splicepos_offset;
+
+  if (endblocki == startblocki) {
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[endblocki]),&(snp_blocks[endblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[endblocki]),splicesite_bits);
+    }
+    found = clear_end(found,enddiscard);
+    startdiscard = prevpos % 32;
+    found = clear_start(found,startdiscard);
+
+    if (found != 0U) {
+#ifdef HAVE_BUILTIN_CLZ
+      foundpos = offset - (relpos = __builtin_clz(found));
+#else
+      foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
+#endif
+      debug3a(printf("oneblock: found is %08X => offset %u - relpos %d (%lu) => returning %u\n",
+		     found,offset,relpos,foundpos-chroffset,foundpos));
+      return foundpos;
+    } else {
+      debug3a(printf("oneblock: not found\n"));
+      return -1;
+    }
+
+  } else {
+    /* Endblock */
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[endblocki]),&(snp_blocks[endblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[endblocki]),splicesite_bits);
+    }
+    found = clear_end(found,enddiscard);
+
+    if (found != 0U) {
+#ifdef HAVE_BUILTIN_CLZ
+      foundpos = offset - (relpos = __builtin_clz(found));
+#else
+      foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
+#endif
+      debug3a(printf("endblock: found is %08X => offset %u - relpos %d (%lu) => returning %u\n",
+		     found,offset,relpos,foundpos-chroffset,foundpos));
+      return foundpos;
+    }
+
+    ptr = &(ref_blocks[endblocki-3]);
+    altptr = &(snp_blocks[endblocki-3]);
+    start = &(ref_blocks[startblocki]);
+    offset -= 32;
+
+    while (ptr > start) {
+      /* Middle blocks */
+      prev_low_halfsite = low_halfsite;
+      if (snp_blocks) {
+	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+      } else {
+	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+      }
+
+      if (high_halfsite & prev_low_halfsite) {
+	debug3a(printf("high_halfsite & prev_low_halfsite => offset %u - 1 (%lu)\n",
+		       offset,offset));
+	return offset;
+      } else if (found != 0U) {
+#ifdef HAVE_BUILTIN_CLZ
+	foundpos = offset - (relpos = __builtin_clz(found));
+#else
+	foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
+#endif
+	debug3a(printf("middleblock: found is %08X => offset %u - relpos %d (%lu) => returning %u\n",
+		       found,offset,relpos,foundpos-chroffset,foundpos));
+	return foundpos;
+      }
+
+      ptr -= 3;
+      altptr -= 3;
+      offset -= 32;
+    }
+
+    /* Startblock */
+    prev_low_halfsite = low_halfsite;
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+    }
+
+    if (high_halfsite & prev_low_halfsite) {
+      debug3a(printf("high_halfsite & prev_low_halfsite => offset %u - 1 (%lu) => returning %u\n",
+		     offset,offset-1-chroffset,offset));
+      return offset;
+    } else {
+      startdiscard = prevpos % 32;
+      found = clear_start(found,startdiscard);
+
+      if (found != 0U) {
+#ifdef HAVE_BUILTIN_CLZ
+	foundpos = offset - (relpos = __builtin_clz(found));
+#else
+	foundpos = offset - (relpos = (top = found >> 16) ? clz_table[top] : 16 + clz_table[found]);
+#endif
+	debug3a(printf("startblock: found is %08X => offset %u - relpos %d (%lu) => returning %u\n",
+		       found,offset,relpos,foundpos-chroffset,foundpos));
+	return foundpos;
+      } else {
+	debug3a(printf("startblock: not found\n"));
+	return -1;
+      }
+    }
+  }
+}
+
+
+#if 0
+/* Same as splicesite_positions, but designed for stage 2 */
+static void
+last_dinucleotide_positions_fwd (int *last_position, Univcoord_T genomicstart, 
+				 int margin5, int margin3, int genomiclength,
+				 const Genomecomp_T *splicesite_bits, int splicepos_offset) {
+  int lastpos = -1, pos5, pos3;
+  int offset;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki;
+  Genomecomp_T *ptr, *altptr, *end;
+  Genomecomp_T found;
+  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
+  int pos, i = 0;
+#ifdef HAVE_BUILTIN_CTZ
+  int relpos;
+#else
+  Genomecomp_T lowbit;
+#endif
+
+  pos5 = margin5;
+  pos3 = genomiclength - margin3;
+
+#if 0
+  debug3(
+	printf("\n\n");
+	printf("Genome (in last_dinucleotide_positions):\n");
+	Genome_print_blocks(ref_blocks,genomicstart+pos5,genomicstart+pos3);
+	printf("\n");
+	);
+#endif
+
+  startblocki = (genomicstart+pos5)/32U*3;
+  endblocki = (genomicstart+pos3)/32U*3;
+  startdiscard = (genomicstart+pos5) % 32;
+  enddiscard = (genomicstart+pos3) % 32;
+
+  offset = -startdiscard + pos5 + splicepos_offset;
+  
+  debug3(printf("genomicstart = %u, pos5 = %d, pos3 = %d, startblocki = %u, endblocki = %u\n",
+		genomicstart,pos5,pos3,startblocki,endblocki));
+  debug3(printf("startdiscard = %u, enddiscard = %u\n",startdiscard,enddiscard));
+
+  if (endblocki == startblocki) {
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    found = clear_end(found,enddiscard);
+    debug3(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset + (relpos = __builtin_ctz(found));
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+
+      clear_lowbit(found,relpos);
+#else      
+      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+
+      found -= lowbit;
+#endif
+      debug3(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+    }
+
+    while (i < genomiclength) {
+      last_position[i] = lastpos;
+      i++;
+    }
+
+    return;
+
+  } else {
+
+    /* Startblock */
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    debug3(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset + (relpos = __builtin_ctz(found));
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+
+      clear_lowbit(found,relpos);
+#else
+      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+
+      found -= lowbit;
+#endif
+      debug3(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+    }
+
+    ptr = &(ref_blocks[startblocki+3]);
+    altptr = &(snp_blocks[startblocki+3]);
+    end = &(ref_blocks[endblocki]);
+    offset += 32;
+    while (ptr < end) {
+      prev_high_halfsite = high_halfsite;
+      if (snp_blocks) {
+	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+      } else {
+	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+      }
+
+      if (low_halfsite & prev_high_halfsite) {
+	debug3(printf("low_halfsite & prev_high_halfsite => offset %u\n",offset));
+	pos = offset;
+	while (i < pos) {
+	  last_position[i] = lastpos;
+	  i++;
+	}
+	lastpos = pos;
+      }
+
+      while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+	pos = offset + (relpos = __builtin_ctz(found));
+	while (i < pos) {
+	  last_position[i] = lastpos;
+	  i++;
+	}
+	lastpos = pos;
+
+	clear_lowbit(found,relpos);
+#else
+	debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+	pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+	while (i < pos) {
+	  last_position[i] = lastpos;
+	  i++;
+	}
+	lastpos = pos;
+
+	found -= lowbit;
+#endif
+	debug3(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+      }
+
+      ptr += 3;
+      altptr += 3;
+      offset += 32;
+    }
+
+    /* Endblock */
+    prev_high_halfsite = high_halfsite;
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+    }
+    found = clear_end(found,enddiscard);
+    debug3(printf("adding end mask %08x\n",clear_end_mask(enddiscard)));
+
+    if (low_halfsite & prev_high_halfsite) {
+      debug3(printf("low_halfsite & prev_high_halfsite => offset %u\n",offset));
+      pos = offset;
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+    }
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset + (relpos = __builtin_ctz(found));
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+
+      clear_lowbit(found,relpos);
+#else
+      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset + mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (i < pos) {
+	last_position[i] = lastpos;
+	i++;
+      }
+      lastpos = pos;
+
+      found -= lowbit;
+#endif
+      debug3(printf("found is %08X => offset %u + relpos %d\n",found,offset,relpos));
+    }
+
+    while (i < genomiclength) {
+      last_position[i] = lastpos;
+      i++;
+    }
+
+    return;
+  }
+
+}
+#endif
+
+
+#if 0
+/* prevpos is lower than pos, but (chrhigh-prevpos) (endblock)
+   corresponds to a higher genomicpos than (chrhigh-pos) */
+static Chrpos_T
+prev_dinucleotide_position_rev (Chrpos_T pos, Chrpos_T prevpos, Univcoord_T chrhigh,
+				const Genomecomp_T *splicesite_bits, int splicepos_offset) {
+  Chrpos_T foundpos, offset;
+  int startdiscard, enddiscard;
+  Univcoord_T startblocki, endblocki;
+  Genomecomp_T *ptr, *altptr, *end;
+  Genomecomp_T found;
+  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
+  int relpos;
+#ifndef HAVE_BUILTIN_CTZ
+  Genomecomp_T lowbit;
+#endif
+
+  startblocki = (chrhigh-pos)/32U*3;
+  endblocki = (chrhigh-prevpos)/32U*3;
+  startdiscard = (chrhigh-pos) % 32;
+
+  debug3b(
+	printf("\n\n");
+	printf("Genome (in prev_dinucleotide_position_rev): chrhigh %u, pos %u, prevpos %u\n",
+	       chrhigh,pos,prevpos);
+	Genome_print_blocks(ref_blocks,chrhigh-pos,chrhigh-prevpos);
+	printf("\n");
+	);
+
+  offset = pos + startdiscard + splicepos_offset;
+  debug3b(printf("offset %u = pos %d + startdiscard %d + splicepos_offset %u\n",
+		offset,pos,startdiscard,splicepos_offset));
+
+  if (startblocki == endblocki) {
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    enddiscard = (chrhigh-prevpos) % 32;
+    found = clear_end(found,enddiscard);
+
+    if (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      foundpos = offset - (relpos = __builtin_ctz(found));
+#else
+      foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
+#endif
+      debug3b(printf("oneblock: found is %08X => offset %u - relpos %d (%lu)\n",
+		     found,offset,relpos,chrhigh - foundpos));
+      return foundpos;
+    } else {
+      return (Chrpos_T) -1;
+    }
+
+  } else {
+    /* Startblock */
+    found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    found = clear_start(found,startdiscard);
+
+    if (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      foundpos = offset - (relpos = __builtin_ctz(found));
+#else
+      foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
+#endif
+      debug3b(printf("startblock: found is %08X => offset %u - relpos %d (%lu)\n",
+		     found,offset,relpos,chrhigh-foundpos));
+      return foundpos;
+    }
+
+    ptr = &(ref_blocks[startblocki+3]);
+    altptr = &(snp_blocks[startblocki+3]);
+    end = &(ref_blocks[endblocki]);
+    offset -= 32;
+
+    while (ptr < end) {
+      /* Middle blocks */
+      prev_high_halfsite = high_halfsite;
+      if (snp_blocks) {
+	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+      } else {
+	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+      }
+
+      if (low_halfsite & prev_high_halfsite) {
+	debug3b(printf("low_halfsite & prev_high_halfsite => offset %u + 1 (%lu)\n",
+		       offset,chrhigh - (offset + 1)));
+	return offset + 1;
+      } else if (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+	foundpos = offset - (relpos = __builtin_ctz(found));
+#else
+	foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
+#endif
+	debug3b(printf("middleblock: found is %08X => offset %u - relpos %d (%lu)\n",
+		       found,offset,relpos,chrhigh-foundpos));
+	return foundpos;
+      }
+
+      ptr += 3;
+      altptr += 3;
+      offset -= 32;
+    }
+
+    /* Endblock */
+    prev_high_halfsite = high_halfsite;
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+    }
+
+    if (low_halfsite & prev_high_halfsite) {
+      debug3b(printf("low_halfsite & prev_high_halfsite => offset %u + 1 (%lu)\n",
+		     offset,chrhigh - (offset + 1)));
+      return offset + 1;
+    } else {
+      enddiscard = (chrhigh-prevpos) % 32;
+      found = clear_end(found,enddiscard);
+
+      if (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+	foundpos = offset - (relpos = __builtin_ctz(found));
+#else
+	foundpos = offset - (relpos = mod_37_bit_position[(lowbit = -found & found) % 37]);
+#endif
+	debug3b(printf("endblock: found is %08X => offset %u - relpos %d (%lu)\n",
+		       found,offset,relpos,chrhigh-foundpos));
+	return foundpos;
+      } else {
+	return (Chrpos_T) -1;
+      }
+    }
+  }
+}
+#endif
+
+#if 0
+static void
+last_dinucleotide_positions_rev (int *last_position, Univcoord_T genomicstart, 
+				 int margin5, int margin3, int genomiclength,
+				 const Genomecomp_T *splicesite_bits, int splicepos_offset) {
+  int pos5, pos3;
+  int offset;
+  int startdiscard, enddiscard, origindiscard;
+  Univcoord_T startblocki, endblocki, originblocki;
+  Genomecomp_T *ptr, *altptr, *end;
+  Genomecomp_T found;
+  Genomecomp_T high_halfsite, low_halfsite, prev_high_halfsite;
+  int pos, i = genomiclength - 1;
+#ifdef HAVE_BUILTIN_CTZ
+  int relpos;
+#else
+  Genomecomp_T lowbit;
+#endif
+
+  pos5 = margin3;
+  pos3 = genomiclength - margin5;
+
+  debug3(
+	printf("\n\n");
+	printf("Genome (in last_dinucleotide_positions):\n");
+	Genome_print_blocks(ref_blocks,genomicstart+pos5,genomicstart+pos3);
+	printf("\n");
+	);
+
+  startblocki = (genomicstart+pos5)/32U*3;
+  endblocki = (genomicstart+pos3)/32U*3;
+  originblocki = (genomicstart+genomiclength)/32U*3;
+
+  startdiscard = (genomicstart+pos5) % 32;
+  enddiscard = (genomicstart+pos3) % 32;
+  origindiscard = (genomicstart+genomiclength) % 32;
+
+  offset = (originblocki - startblocki) * 32U/3 + origindiscard + splicepos_offset;
+
+  debug3(printf("genomicstart = %u, pos5 = %d, pos3 = %d, genomiclength = %d, startblocki = %u, endblocki = %u, originblocki = %u\n",
+		genomicstart,pos5,pos3,genomiclength,startblocki,endblocki,originblocki));
+  debug3(printf("startdiscard = %u, enddiscard = %u, origindiscard = %u\n",
+		startdiscard,enddiscard,origindiscard));
+  debug3(printf("offset = %d\n",offset));
+
+  if (endblocki == startblocki) {
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    found = clear_end(found,enddiscard);
+    debug3(printf("adding masks %08X and %08x\n",clear_start_mask(startdiscard),clear_end_mask(enddiscard)));
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset - (relpos = __builtin_ctz(found));
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+
+      clear_lowbit(found,relpos);
+#else      
+      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+
+      found -= lowbit;
+#endif
+      debug3(printf("found is %08X => offset %u - relpos %d\n",found,offset,relpos));
+    }
+
+    while (i >= 0) {
+      last_position[i] = -1;
+      i--;
+    }
+
+    assert(i == -1);
+    return;
+
+  } else {
+
+    /* Startblock */
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,
+			     &(ref_blocks[startblocki]),&(snp_blocks[startblocki]),splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,&(ref_blocks[startblocki]),splicesite_bits);
+    }
+    found = clear_start(found,startdiscard);
+    debug3(printf("adding start mask %08x\n",clear_start_mask(startdiscard)));
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset - (relpos = __builtin_ctz(found));
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+
+      clear_lowbit(found,relpos);
+#else
+      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+
+      found -= lowbit;
+#endif
+      debug3(printf("found is %08X => offset %u - relpos %d\n",found,offset,relpos));
+    }
+
+    ptr = &(ref_blocks[startblocki+3]);
+    altptr = &(snp_blocks[startblocki+3]);
+    end = &(ref_blocks[endblocki]);
+    offset -= 32;
+    while (ptr < end) {
+      prev_high_halfsite = high_halfsite;
+      if (snp_blocks) {
+	found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+      } else {
+	found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+      }
+
+      if (low_halfsite & prev_high_halfsite) {
+	debug3(printf("high_halfsite & prev_low_halfsite => offset %u + 1\n",offset));
+	pos = offset + 1;
+	while (i >= pos) {
+	  last_position[i] = pos;
+	  i--;
+	}
+      }
+
+      while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+	pos = offset - (relpos = __builtin_ctz(found));
+	while (i >= pos) {
+	  last_position[i] = pos;
+	  i--;
+	}
+
+	clear_lowbit(found,relpos);
+#else
+	debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+	pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
+	while (i >= pos) {
+	  last_position[i] = pos;
+	  i--;
+	}
+
+	found -= lowbit;
+#endif
+	debug3(printf("found is %08X => offset %u - relpos %d\n",found,offset,relpos));
+      }
+
+      ptr += 3;
+      altptr += 3;
+      offset -= 32;
+    }
+
+    /* Endblock */
+    prev_high_halfsite = high_halfsite;
+    if (snp_blocks) {
+      found = block_find_snp(&high_halfsite,&low_halfsite,ptr,altptr,splicesite_bits);
+    } else {
+      found = block_find(&high_halfsite,&low_halfsite,ptr,splicesite_bits);
+    }
+    found = clear_end(found,enddiscard);
+    debug3(printf("adding end mask %08x => found %08x\n",clear_end_mask(enddiscard),found));
+
+    if (low_halfsite & prev_high_halfsite) {
+      debug3(printf("high_halfsite & prev_low_halfsite => offset %u + 1\n",offset));
+      pos = offset + 1;
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+    }
+
+    while (found != 0U) {
+#ifdef HAVE_BUILTIN_CTZ
+      pos = offset - (relpos = __builtin_ctz(found));
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+
+      clear_lowbit(found,relpos);
+#else
+      debug3(printf("found is %08X, -found & found is %08X\n",found,-found & found));
+      pos = offset - mod_37_bit_position[(lowbit = -found & found) % 37];
+      while (i >= pos) {
+	last_position[i] = pos;
+	i--;
+      }
+
+      found -= lowbit;
+#endif
+      debug3(printf("found is %08X => offset %u - relpos %d\n",found,offset,relpos));
+    }
+
+    while (i >= 0) {
+      last_position[i] = -1;
+      i--;
+    }
+
+    assert(i == -1);
+    return;
+  }
+
+}
+#endif
+  
+
+Univcoord_T
+Genome_prev_donor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset) {
+  debug3(printf("==> Looking for donor GT\n"));
+  return prev_dinucleotide_position(pos+1,prevpos,
+#ifdef DEBUG3A
+				    chroffset,
+#endif
+				    donor_gt_bits,/*splicepos_offset*/-1);
+}
+
+Univcoord_T
+Genome_prev_acceptor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset) {
+  debug3(printf("==> Looking for acceptor AG\n"));
+  return prev_dinucleotide_position(pos-1,prevpos-2,
+#ifdef DEBUG3A
+				    chroffset,
+#endif
+				    acceptor_bits,/*splicepos_offset*/2);
+}
+
+Univcoord_T
+Genome_prev_antidonor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset) {
+  debug3(printf("==> Looking for antidonor AC\n"));
+  return prev_dinucleotide_position(pos-1,prevpos-2,
+#ifdef DEBUG3A
+				    chroffset,
+#endif
+				    antidonor_ac_bits,/*splicepos_offset*/2);
+}
+
+Univcoord_T
+Genome_prev_antiacceptor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset) {
+  debug3(printf("==> Looking for antiacceptor CT\n"));
+  return prev_dinucleotide_position(pos+1,prevpos,
+#ifdef DEBUG3A
+				    chroffset,
+#endif
+				    antiacceptor_bits,/*splicepos_offset*/-1);
+}
+
+
+bool
+Genome_sense_canonicalp (Univcoord_T donor_rightbound, Univcoord_T donor_leftbound,
+			 Univcoord_T acceptor_rightbound, Univcoord_T acceptor_leftbound,
+			 Univcoord_T chroffset) {
+  Univcoord_T donorpos, acceptorpos;
+  Univcoord_T donor_shift, acceptor_shift;
+
+  debug4(printf("Entered Genome_sense_canonicalp with donor %u..%u and acceptor %u..%u\n",
+		donor_leftbound-chroffset,donor_rightbound-chroffset,acceptor_leftbound-chroffset,acceptor_rightbound-chroffset));
+  if ((donorpos = prev_dinucleotide_position(donor_rightbound+1,donor_leftbound,
+#ifdef DEBUG3A
+					     chroffset,
+#endif
+					     donor_gt_bits,/*splicepos_offset*/-1)) == (Univcoord_T) -1) {
+    return false;
+  } else {
+    donorpos += 1U;		/* Shift coordinates to match input */
+    donor_shift = donor_rightbound - donorpos;
+    debug4(printf("Found donor at %u (shift %u)\n",donorpos-chroffset,donor_shift));
+  }
+
+  if ((acceptorpos = prev_dinucleotide_position(acceptor_rightbound-1,acceptor_leftbound-2,
+#ifdef DEBUG3A
+						chroffset,
+#endif
+						acceptor_bits,/*splicepos_offset*/2)) == (Univcoord_T) -1) {
+    return false;
+  } else {
+    acceptor_shift = acceptor_rightbound - acceptorpos; 
+    debug4(printf("Found acceptor at %u (shift %u)\n",acceptorpos-chroffset,acceptor_shift));
+  }
+
+  while (1) {
+    debug4(printf("sense: donor_shift %lu, acceptor_shift %lu\n",donor_shift,acceptor_shift));
+    if (donor_shift == acceptor_shift) {
+      debug4(printf("donor prob %f, acceptor prob %f\n",
+		    Maxent_hr_donor_prob(donorpos,chroffset),Maxent_hr_acceptor_prob(acceptorpos,chroffset)));
+      if (Maxent_hr_donor_prob(donorpos,chroffset) > 0.9 && Maxent_hr_acceptor_prob(acceptorpos,chroffset) > 0.9) {
+	return true;
+      } else {
+	if ((donorpos = prev_dinucleotide_position((donorpos+1)-1,donor_leftbound,
+#ifdef DEBUG3A
+						   chroffset,
+#endif
+						   donor_gt_bits,/*splicepos_offset*/-1)) == (Univcoord_T) -1) {
+	  return false;
+	} else {
+	  donorpos += 1U;		/* Shift coordinates to match input */
+	  donor_shift = donor_rightbound - donorpos;
+	  debug4(printf("Found donor at %u (shift %u)\n",donorpos-chroffset,donor_shift));
+	}
+
+	if ((acceptorpos = prev_dinucleotide_position((acceptorpos-1)-1,acceptor_leftbound-2,
+#ifdef DEBUG3A
+						      chroffset,
+#endif
+						      acceptor_bits,/*splicepos_offset*/2)) == (Univcoord_T) -1) {
+	  return false;
+	} else {
+	  acceptor_shift = acceptor_rightbound - acceptorpos;
+	  debug4(printf("Found acceptor at %u (shift %u)\n",acceptorpos-chroffset,acceptor_shift));
+	}
+      }
+
+    } else if (donor_shift < acceptor_shift) {
+      if ((donorpos = prev_dinucleotide_position((donorpos+1)-1,donor_leftbound,
+#ifdef DEBUG3A
+						 chroffset,
+#endif
+						 donor_gt_bits,/*splicepos_offset*/-1)) == (Univcoord_T) -1) {
+	return false;
+      } else {
+	donorpos += 1U;		/* Shift coordinates to match input */
+	donor_shift = donor_rightbound - donorpos;
+	debug4(printf("Found donor at %u (shift %u)\n",donorpos-chroffset,donor_shift));
+      }
+    } else {
+      if ((acceptorpos = prev_dinucleotide_position((acceptorpos-1)-1,acceptor_leftbound-2,
+#ifdef DEBUG3A
+						    chroffset,
+#endif
+						    acceptor_bits,/*splicepos_offset*/2)) == (Univcoord_T) -1) {
+	return false;
+      } else {
+	acceptor_shift = acceptor_rightbound - acceptorpos;
+	debug4(printf("Found acceptor at %u (shift %u)\n",acceptorpos-chroffset,acceptor_shift));
+      }
+    }
+  }
+}
+
+bool
+Genome_antisense_canonicalp (Univcoord_T donor_rightbound, Univcoord_T donor_leftbound,
+			     Univcoord_T acceptor_rightbound, Univcoord_T acceptor_leftbound,
+			     Univcoord_T chroffset) {
+  Univcoord_T donorpos, acceptorpos;
+  Univcoord_T donor_shift, acceptor_shift;
+
+  debug4(printf("Entered Genome_antisense_canonicalp with donor %u..%u and acceptor %u..%u\n",
+		donor_leftbound-chroffset,donor_rightbound-chroffset,acceptor_leftbound-chroffset,acceptor_rightbound-chroffset));
+  if ((donorpos = prev_dinucleotide_position(donor_rightbound-1,donor_leftbound-2,
+#ifdef DEBUG3A
+					     chroffset,
+#endif
+					     antidonor_ac_bits,/*splicepos_offset*/2)) == (Univcoord_T) -1) {
+    return false;
+  } else {
+    donor_shift = donor_rightbound - donorpos;
+    debug4(printf("Found donor at %u (shift %u)\n",donorpos-chroffset,donor_shift));
+  }
+
+  if ((acceptorpos = prev_dinucleotide_position(acceptor_rightbound+1,acceptor_leftbound,
+#ifdef DEBUG3A
+						chroffset,
+#endif
+						antiacceptor_bits,/*splicepos_offset*/-1)) == (Univcoord_T) -1) {
+    return false;
+  } else {
+    acceptorpos += 1U;		/* Shift coordinates to match input */
+    acceptor_shift = acceptor_rightbound - acceptorpos;
+    debug4(printf("Found acceptor at %u (shift %u)\n",acceptorpos-chroffset,acceptor_shift));
+  }
+
+  while (1) {
+    debug4(printf("antisense: donor_shift %lu, acceptor_shift %lu\n",donor_shift,acceptor_shift));
+    if (donor_shift == acceptor_shift) {
+      debug4(printf("antidonor prob %f, antiacceptor prob %f\n",
+		    Maxent_hr_antidonor_prob(donorpos,chroffset),Maxent_hr_antiacceptor_prob(acceptorpos,chroffset)));
+      if (Maxent_hr_antidonor_prob(donorpos,chroffset) > 0.9 && Maxent_hr_antiacceptor_prob(acceptorpos,chroffset) > 0.9) {
+	return true;
+      } else {
+	if ((donorpos = prev_dinucleotide_position((donorpos-1)-1,donor_leftbound-2,
+#ifdef DEBUG3A
+						   chroffset,
+#endif
+						   antidonor_ac_bits,/*splicepos_offset*/2)) == (Univcoord_T) -1) {
+	  return false;
+	} else {
+	  donor_shift = donor_rightbound - donorpos;
+	  debug4(printf("Found donor at %u (shift %u)\n",donorpos-chroffset,donor_shift));
+	}
+
+	if ((acceptorpos = prev_dinucleotide_position((acceptorpos+1)-1,acceptor_leftbound,
+#ifdef DEBUG3A
+						      chroffset,
+#endif
+						      antiacceptor_bits,/*splicepos_offset*/-1)) == (Univcoord_T) -1) {
+	  return false;
+	} else {
+	  acceptorpos += 1U;	/* Shift coordinates to match input */
+	  acceptor_shift = acceptor_rightbound - acceptorpos;
+	  debug4(printf("Found acceptor at %u (shift %u)\n",acceptorpos-chroffset,acceptor_shift));
+	}
+      }
+
+    } else if (donor_shift < acceptor_shift) {
+      if ((donorpos = prev_dinucleotide_position((donorpos-1)-1,donor_leftbound-2,
+#ifdef DEBUG3A
+						 chroffset,
+#endif
+						 antidonor_ac_bits,/*splicepos_offset*/2)) == (Univcoord_T) -1) {
+	return false;
+      } else {
+	donor_shift = donor_rightbound - donorpos;
+	debug4(printf("Found donor at %u (shift %u)\n",donorpos-chroffset,donor_shift));
+      }
+    } else {
+      if ((acceptorpos = prev_dinucleotide_position((acceptorpos+1)-1,acceptor_leftbound,
+#ifdef DEBUG3A
+						    chroffset,
+#endif
+						    antiacceptor_bits,/*splicepos_offset*/-1)) == (Univcoord_T) -1) {
+	return false;
+      } else {
+	acceptorpos += 1U;	/* Shift coordinates to match input */
+	acceptor_shift = acceptor_rightbound - acceptorpos;
+	debug4(printf("Found acceptor at %u (shift %u)\n",acceptorpos-chroffset,acceptor_shift));
+      }
+    }
+  }
+}
+
+
+
+
+#if 0
+void
+Genome_last_donor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
+			     bool plusp) {
+  if (plusp == true) {
+    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,donor_gt_bits,
+					   /*splicepos_offset*/-1);
+  } else {
+    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,antidonor_ac_bits,
+					   /*splicepos_offset*/-3);
+  }
+}
+
+void
+Genome_last_acceptor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
+				bool plusp) {
+  if (plusp == true) {
+    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,acceptor_bits,
+					   /*splicepos_offset*/2);
+  } else {
+    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,antiacceptor_bits,
+					   /*splicepos_offset*/0);
+  }
+}
+
+void
+Genome_last_antidonor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
+				 bool plusp) {
+  if (plusp == true) {
+    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,antidonor_ac_bits,
+					   /*splicepos_offset*/2);
+  } else {
+    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,donor_gt_bits,
+					   /*splicepos_offset*/0);
+  }
+}
+
+void
+Genome_last_antiacceptor_positions (int *last_position, Univcoord_T genomicstart, int margin5, int margin3, int genomiclength,
+				    bool plusp) {
+  if (plusp == true) {
+    last_dinucleotide_positions_fwd(last_position,genomicstart,margin5,margin3,genomiclength,antiacceptor_bits,
+					   /*splicepos_offset*/-1);
+  } else {
+    last_dinucleotide_positions_rev(last_position,genomicstart,margin5,margin3,genomiclength,acceptor_bits,
+					   /*splicepos_offset*/-3);
+  }
+}
+#endif
+
diff --git a/src/genome_sites.h b/src/genome_sites.h
new file mode 100644
index 0000000..21ee23e
--- /dev/null
+++ b/src/genome_sites.h
@@ -0,0 +1,49 @@
+/* $Id: genome_sites.h 106198 2013-08-28 23:07:34Z twu $ */
+#ifndef GENOME_SITES_INCLUDED
+#define GENOME_SITES_INCLUDED
+#include "bool.h"
+#include "types.h"
+#include "genomicpos.h"
+
+
+extern void
+Genome_sites_setup (Genomecomp_T *ref_blocks_in, Genomecomp_T *snp_blocks_in);
+
+extern int
+Genome_donor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			Univcoord_T left, int pos5, int pos3);
+
+extern int
+Genome_acceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			   Univcoord_T left, int pos5, int pos3);
+
+extern int
+Genome_antidonor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			    Univcoord_T left, int pos5, int pos3);
+
+extern int
+Genome_antiacceptor_positions (int *site_positions, int *site_knowni, int *knownpos, int *knowni,
+			       Univcoord_T left, int pos5, int pos3);
+
+extern bool
+Genome_sense_canonicalp (Univcoord_T donor_rightbound, Univcoord_T donor_leftbound,
+			 Univcoord_T acceptor_rightbound, Univcoord_T acceptor_leftbound,
+			 Univcoord_T chroffset);
+
+extern bool
+Genome_antisense_canonicalp (Univcoord_T donor_rightbound, Univcoord_T donor_leftbound,
+			     Univcoord_T acceptor_rightbound, Univcoord_T acceptor_leftbound,
+			     Univcoord_T chroffset);
+
+
+extern Univcoord_T
+Genome_prev_donor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset);
+extern Univcoord_T
+Genome_prev_acceptor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset);
+extern Univcoord_T
+Genome_prev_antidonor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset);
+extern Univcoord_T
+Genome_prev_antiacceptor_position (Univcoord_T pos, Univcoord_T prevpos, Univcoord_T chroffset);
+
+#endif
+
diff --git a/src/genomicpos.c b/src/genomicpos.c
index 7771ac9..92f3742 100644
--- a/src/genomicpos.c
+++ b/src/genomicpos.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: genomicpos.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: genomicpos.c 101488 2013-07-15 16:52:36Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -19,8 +19,15 @@ static char rcsid[] = "$Id: genomicpos.c 99737 2013-06-27 19:33:03Z twu $";
 
 #define BUFSIZE 100
 
+/* Needs to handle large files */
 char *
-Genomicpos_commafmt (Univcoord_T N) {
+Genomicpos_commafmt (
+#ifdef HAVE_64_BIT
+		     UINT8 N
+#else
+		     UINT4 N
+#endif
+		     ) {
   char *string, *buffer;
   int len, posn = 1;
   char *ptr, *start;
diff --git a/src/genomicpos.h b/src/genomicpos.h
index 3836ff8..3a8eb92 100644
--- a/src/genomicpos.h
+++ b/src/genomicpos.h
@@ -1,4 +1,4 @@
-/* $Id: genomicpos.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: genomicpos.h 101488 2013-07-15 16:52:36Z twu $ */
 #ifndef GENOMICPOS_INCLUDED
 #define GENOMICPOS_INCLUDED
 #include <stdlib.h>
@@ -23,7 +23,13 @@ typedef Uintlist_T Genomicposlist_T;
 typedef UINT4 Chrpos_T;
 
 extern char *
-Genomicpos_commafmt (Univcoord_T N);
+Genomicpos_commafmt (
+#ifdef HAVE_64_BIT
+		     UINT8 N
+#else
+		     UINT4 N
+#endif
+		     );
 extern int
 UINT8_compare (const void *a, const void *b);
 extern int
diff --git a/src/get-genome.c b/src/get-genome.c
index d67f328..ed114cf 100644
--- a/src/get-genome.c
+++ b/src/get-genome.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: get-genome.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: get-genome.c 137099 2014-05-23 21:15:00Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -17,7 +17,6 @@ static char rcsid[] = "$Id: get-genome.c 99737 2013-06-27 19:33:03Z twu $";
 #include "chrom.h"
 #include "genome.h"
 #include "iit-read.h"
-#include "chrsubset.h"
 #include "datadir.h"
 #include "parserange.h"
 #include "separator.h"
@@ -63,18 +62,19 @@ static char *map_iitfile = NULL;
 static int nflanking = 0;
 static bool exonsp = false;
 static bool sequencep = false;
+static bool force_label_p = false;
 
 static bool exactp = false;
 static bool sortp = false;
 static bool signedp = false;
 
+static bool vareffect_p = false;
 
 /* Dump options */
 static bool dumpallp = false;
 static bool dumpchrp = false;
 static bool dumpchr_forsam_p = false;
 static bool dumpsegsp = false;
-static bool dumpchrsubsetsp = false;
 
 static struct option long_options[] = {
   /* Input options */
@@ -101,14 +101,17 @@ static struct option long_options[] = {
   {"sequence", no_argument, 0, 'S'},	   /* sequencep */
   {"exact", no_argument, 0, 0},		/* exactp */
   {"signed", no_argument, 0, 's'},	   /* signedp */
+  {"aslabel", no_argument, 0, 0},	   /* force_label_p */
 
   /* Dump options */
   {"dump", no_argument, 0, 'A'},	/* dumpallp */
   {"chromosomes", no_argument, 0, 'L'},	/* dumpchrp */
   {"forsam", no_argument, 0, 0},	/* dumpchr_forsam_p */
   {"contigs", no_argument, 0, 'I'}, /* dumpsegsp */
-  {"chrsubsets", no_argument, 0, 'c'}, /* dumpchrsubsetsp */
   
+  /* Special (hidden) options */
+  {"vareffect", no_argument, 0, 0}, /* vareffect_p */
+
   /* Help options */
   {"version", no_argument, 0, '^'}, /* print_program_version */
   {"help", no_argument, 0, '?'}, /* print_program_usage */
@@ -169,6 +172,7 @@ External map file options\n\
   -s, --signed            Show only intervals with same direction as query.  If flanking hits\n\
                             are also requested, show only flanking hits downstream in direction of\n\
                             query.\n\
+  --aslabel               Consider all queries to be labels, even if numeric\n\
 \n\
 Dump options\n\
   -A, --dump              Dump entire genome in FASTA format\n\
@@ -384,12 +388,14 @@ index_compare (const void *a, const void *b) {
 static void
 print_sequence (Genome_T genome, Genome_T genomealt, Univcoord_T genomicstart, Chrpos_T genomiclength,
 		Univ_IIT_T chromosome_iit, bool whole_chromosome_p) {
-  char *chromosome1, *chromosome2;
+  char *chromosome1, *chromosome2, *ptr, c;
   Sequence_T genomicseg, genomicseg_alt, genomicseg_snp;
   Chrpos_T chrpos;
 
   /* Handle reference strain */
-  if (user_typestring != NULL) {
+  if (vareffect_p == true) {
+    /* Don't print a header */
+  } else if (user_typestring != NULL) {
     /* Don't print a header */
   } else if (header != NULL) {
     printf(">%s\n",header);
@@ -431,7 +437,45 @@ print_sequence (Genome_T genome, Genome_T genomealt, Univcoord_T genomicstart, C
     FREE(chromosome1);
   }
 
-  if (snps_root == NULL || print_snps_mode == 0 || print_snps_mode == 2) {
+  if (vareffect_p == true) {
+    chromosome1 = Univ_IIT_string_from_position(&chrpos,genomicstart,chromosome_iit);
+    genomicseg = Genome_get_segment(genome,genomicstart,genomiclength,chromosome_iit,revcomp);
+    ptr = Sequence_fullpointer(genomicseg);
+    while ((c = *ptr++) != '\0') {
+      chrpos++;			/* Converts to a 1-based coordinate */
+      switch (c) {
+      case 'A':
+	printf("%s\t%u\t%u\tA/C\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tA/G\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tA/T\n",chromosome1,chrpos,chrpos);
+	break;
+      case 'C':
+	printf("%s\t%u\t%u\tC/A\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tC/G\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tC/T\n",chromosome1,chrpos,chrpos);
+	break;
+      case 'G':
+	printf("%s\t%u\t%u\tG/A\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tG/C\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tG/T\n",chromosome1,chrpos,chrpos);
+	break;
+      case 'T':
+	printf("%s\t%u\t%u\tT/A\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tT/C\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tT/G\n",chromosome1,chrpos,chrpos);
+	break;
+      default:
+	printf("%s\t%u\t%u\tN/A\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tN/C\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tN/G\n",chromosome1,chrpos,chrpos);
+	printf("%s\t%u\t%u\tN/T\n",chromosome1,chrpos,chrpos);
+	break;
+      }
+    }
+    Sequence_free(&genomicseg);
+    FREE(chromosome1);
+
+  } else if (snps_root == NULL || print_snps_mode == 0 || print_snps_mode == 2) {
     genomicseg = Genome_get_segment(genome,genomicstart,genomiclength,chromosome_iit,revcomp);
     if (user_typestring == NULL) {
       if (rawp == true) {
@@ -678,17 +722,17 @@ get_matches (int *nmatches, int *sign, char *divstring, Chrpos_T coordstart, Chr
     *sign = +1;
   }
 
-  if (typestring == NULL) {
-    /* Treat query as coordinates, without a typestring */
-    if (*iit == NULL) {
-      /* This call can give a warning if there are no entries in the map IIT file for the given div */
-      if ((*iit = IIT_read(filename,/*name*/NULL,true,/*divread*/READ_ONE,divstring,
-			   /*add_iit_p*/true,/*labels_read_p*/false)) == NULL) {
-	fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
-	exit(9);
-      }
+  if (*iit == NULL) {
+    /* This call can give a warning if there are no entries in the map IIT file for the given div */
+    if ((*iit = IIT_read(filename,/*name*/NULL,true,/*divread*/READ_ONE,divstring,
+			 /*add_iit_p*/true,/*labels_read_p*/false)) == NULL) {
+      fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
+      exit(9);
     }
+  }
 
+  if (typestring == NULL) {
+    /* Treat query as coordinates, without a typestring */
     if (exactp == true) {
       matches = IIT_get_exact_multiple(&(*nmatches),*iit,divstring,coordstart,coordend,/*type*/0);
     } else {
@@ -701,14 +745,6 @@ get_matches (int *nmatches, int *sign, char *divstring, Chrpos_T coordstart, Chr
 
   } else if ((typeint = IIT_typeint(*iit,typestring)) < 0) {
     fprintf(stderr,"No such type as %s.  Ignoring the type.\n",typestring);
-    /* Treat query as coordinates, without a typestring */
-    if (*iit == NULL) {
-      if ((*iit = IIT_read(filename,/*name*/NULL,true,/*divread*/READ_ONE,divstring,
-			   /*add_iit_p*/true,/*labels_read_p*/false)) == NULL) {
-	fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
-	exit(9);
-      }
-    }
     if (exactp == true) {
       matches = IIT_get_exact_multiple(&(*nmatches),*iit,divstring,coordstart,coordend,/*type*/0);
     } else {
@@ -721,16 +757,11 @@ get_matches (int *nmatches, int *sign, char *divstring, Chrpos_T coordstart, Chr
 
   } else {
     /* Treat query as coordinates, with a typestring */
-    if (*iit == NULL) {
-      if ((*iit = IIT_read(filename,/*name*/NULL,true,/*divread*/READ_ONE,divstring,
-			   /*add_iit_p*/true,/*labels_read_p*/false)) == NULL) {
-	fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
-	exit(9);
-      }
-    }
     if (exactp == true) {
+      debug(printf("Calling IIT_get_exact_multiple\n"));
       matches = IIT_get_exact_multiple(&(*nmatches),*iit,divstring,coordstart,coordend,typeint);
     } else {
+      debug(printf("Calling IIT_get_typed_signed with sign %d\n",*sign));
       matches = IIT_get_typed_signed(&(*nmatches),*iit,divstring,coordstart,coordend,typeint,*sign,sortp);
     }
     if (nflanking > 0) {
@@ -1015,17 +1046,18 @@ print_interval (char *divstring, int index, IIT_T iit, int ndivs, Univ_IIT_T chr
 int
 main (int argc, char *argv[]) {
   char *snpsdir = NULL;
-  char *iitfile, *chrsubsetfile;
+  char *iitfile;
   FILE *fp;
   Genome_T genome = NULL, genomealt = NULL;
   Univcoord_T genomicstart, chroffset;
   Chrpos_T genomiclength, chrlength, chrstart, chrend;
   char *mapdir = NULL, *fileroot = NULL, *p;
+  char *typestring_ptr = NULL;
   char *divstring, *divstring2;
   Univ_IIT_T chromosome_iit, contig_iit;
   IIT_T map_iit = NULL;
-  Chrsubset_T chrsubset;
   char Buffer[BUFFERLEN], subsetname[BUFFERLEN], *segment;
+  char coords[BUFFERLEN], typestring[BUFFERLEN];
 
   int fieldint = -1;
   int *matches, nmatches, ndivs, i, *leftflanks, *rightflanks, nleftflanks = 0, nrightflanks = 0;
@@ -1041,7 +1073,7 @@ main (int argc, char *argv[]) {
   int long_option_index = 0;
   const char *long_name;
 
-  while ((opt = getopt_long(argc,argv,"D:d:CUl:Gh:V:v:f:M:m:kru:ESALIc^?",
+  while ((opt = getopt_long(argc,argv,"D:d:CUl:Gh:V:v:f:M:m:kru:ESALI^?",
 			    long_options,&long_option_index)) != -1) {
     switch (opt) {
     case 0:
@@ -1056,10 +1088,16 @@ main (int argc, char *argv[]) {
       } else if (!strcmp(long_name,"exact")) {
 	exactp = true;
 
+      } else if (!strcmp(long_name,"aslabel")) {
+	force_label_p = true;
+
       } else if (!strcmp(long_name,"forsam")) {
 	dumpchrp = true;
 	dumpchr_forsam_p = true;
 
+      } else if (!strcmp(long_name,"vareffect")) {
+	vareffect_p = true;
+
       } else {
 	/* Shouldn't reach here */
 	fprintf(stderr,"Don't recognize option %s.  For usage, run 'get-genome --help'",long_name);
@@ -1094,7 +1132,6 @@ main (int argc, char *argv[]) {
     case 'A': dumpallp = true; break;
     case 'L': dumpchrp = true; dumpchr_forsam_p = false; break;
     case 'I': dumpsegsp = true; break;
-    case 'c': dumpchrsubsetsp = true; break;
 
     case '^': print_program_version(); exit(0);
     case '?': print_program_usage(); exit(0);
@@ -1128,16 +1165,16 @@ main (int argc, char *argv[]) {
     FREE(iitfile);
 
     if (snps_root == NULL || print_snps_mode == 0) {
-      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			  /*access*/USE_MMAP_ONLY);
+      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			  uncompressedp,/*access*/USE_MMAP_ONLY);
     } else if (print_snps_mode == 2) {
-      genome = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			  /*access*/USE_MMAP_ONLY);
+      genome = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			  uncompressedp,/*access*/USE_MMAP_ONLY);
     } else if (print_snps_mode == 1 || print_snps_mode == 3) {
-      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			  /*access*/USE_MMAP_ONLY);
-      genomealt = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			     /*access*/USE_MMAP_ONLY);
+      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			  uncompressedp,/*access*/USE_MMAP_ONLY);
+      genomealt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			     uncompressedp,/*access*/USE_MMAP_ONLY);
     }
 
     for (indx = 1; indx <= Univ_IIT_total_nintervals(chromosome_iit); indx++) {
@@ -1175,7 +1212,7 @@ main (int argc, char *argv[]) {
       Univ_IIT_dump_sam(/*fp*/stdout,chromosome_iit,/*sam_read_group_id*/NULL,/*sam_read_group_name*/NULL,
 			/*sam_read_group_library*/NULL,/*sam_read_group_platform*/NULL);
     } else {
-      Univ_IIT_dump_table(chromosome_iit,/*zerobasedp*/true);
+      Univ_IIT_dump_table(chromosome_iit,/*zerobasedp*/false);
     }
     Univ_IIT_free(&chromosome_iit);
     return 0;
@@ -1197,45 +1234,6 @@ main (int argc, char *argv[]) {
     Univ_IIT_free(&contig_iit);
     return 0;
 
-  } else if (dumpchrsubsetsp == true) {
-    iitfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+
-			      strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char));
-    sprintf(iitfile,"%s/%s.chromosome.iit",genomesubdir,fileroot);
-    chromosome_iit = Univ_IIT_read(iitfile,/*readonlyp*/true,/*add_iit_p*/false);
-    FREE(iitfile);
-
-    chrsubsetfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+
-				    strlen(fileroot)+strlen(".chrsubset")+1,sizeof(char));
-    sprintf(chrsubsetfile,"%s/%s.chrsubset",genomesubdir,fileroot);
-    if ((fp = fopen(chrsubsetfile,"r")) == NULL) {
-      fprintf(stderr,"Cannot open file %s\n",chrsubsetfile);
-      exit(9);
-    } else {
-      while (fgets(Buffer,BUFFERLEN,fp) != NULL) {
-	if (Buffer[0] == '>') {
-	  if (Buffer[1] == '\0' || isspace(Buffer[1])) {
-	    /* Skip */
-	  } else {
-	    if ((p = rindex(Buffer,'\n')) != NULL) {
-	      *p = '\0';
-	    }
-	    sscanf(&(Buffer[1]),"%s",subsetname);
-	    printf("%s\t",subsetname);
-	    chrsubset = Chrsubset_read(chrsubsetfile,genomesubdir,fileroot,subsetname,chromosome_iit);
-	    Chrsubset_print_chromosomes(chrsubset,chromosome_iit);
-	    Chrsubset_free(&chrsubset);
-	    printf("\n");
-	  }
-	}
-      }
-      fclose(fp);
-    }
-
-    FREE(chrsubsetfile);
-    Univ_IIT_free(&chromosome_iit);
-
-    return 0;
-
   }
 
 #if 0
@@ -1265,16 +1263,16 @@ main (int argc, char *argv[]) {
       debug(printf("No map file\n"));
 
       if (snps_root == NULL || print_snps_mode == 0) {
-	genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			    /*access*/USE_MMAP_ONLY);
+	genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,/*access*/USE_MMAP_ONLY);
       } else if (print_snps_mode == 2) {
-	genome = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			    /*access*/USE_MMAP_ONLY);
+	genome = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,/*access*/USE_MMAP_ONLY);
       } else if (print_snps_mode == 1 || print_snps_mode == 3) {
-	genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			    /*access*/USE_MMAP_ONLY);
-	genomealt = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			       /*access*/USE_MMAP_ONLY);
+	genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,/*access*/USE_MMAP_ONLY);
+	genomealt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			       uncompressedp,/*access*/USE_MMAP_ONLY);
       }
 
       if (Parserange_universal(&segment,&revcomp,&genomicstart,&genomiclength,&chrstart,&chrend,
@@ -1306,22 +1304,23 @@ main (int argc, char *argv[]) {
 
       if (exonsp == true || sequencep == true) {
 	if (snps_root == NULL || print_snps_mode == 0) {
-	  genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			      /*access*/USE_MMAP_ONLY);
+	  genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			      uncompressedp,/*access*/USE_MMAP_ONLY);
 	} else if (print_snps_mode == 2) {
-	  genome = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			      /*access*/USE_MMAP_ONLY);
+	  genome = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			      uncompressedp,/*access*/USE_MMAP_ONLY);
 	} else if (print_snps_mode == 1 || print_snps_mode == 3) {
-	  genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			      /*access*/USE_MMAP_ONLY);
+	  genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			      uncompressedp,/*access*/USE_MMAP_ONLY);
 #if 0
-	  genomealt = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-				 /*access*/USE_MMAP_ONLY);
+	  genomealt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+				 uncompressedp,/*access*/USE_MMAP_ONLY);
 #endif
 	}
       }
 
-      if (Parserange_universal(&segment,&revcomp,&genomicstart,&genomiclength,&chrstart,&chrend,
+      if (force_label_p == false &&
+	  Parserange_universal(&segment,&revcomp,&genomicstart,&genomiclength,&chrstart,&chrend,
 			       &chroffset,&chrlength,argv[0],genomesubdir,fileroot) == true) {
 	debug(printf("Query %s parsed as: genomicstart = %lu, genomiclength = %u, revcomp = %d\n",
 		     argv[0],genomicstart,genomiclength,revcomp));
@@ -1335,9 +1334,16 @@ main (int argc, char *argv[]) {
 	  chrend += 1U;
 	  debug(printf("Query translated to %s:%u..%u\n",divstring,chrstart,chrend));
 	}
+	if (argc <= 1) {
+	  debug(printf("No typestring\n"));
+	  typestring_ptr = (char *) NULL;
+	} else {
+	  debug(printf("Typestring is %s\n",argv[1]));
+	  typestring_ptr = argv[1];
+	}
 	matches = get_matches(&nmatches,&sign,divstring,chrstart,chrend,revcomp,
 			      &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-			      /*typestring*/NULL,&map_iit,/*filename*/iitfile);
+			      typestring_ptr,&map_iit,/*filename*/iitfile);
 	ndivs = IIT_ndivs(map_iit);
 	if (nflanking > 0) {
 	  if (sign != +1) {
@@ -1363,6 +1369,9 @@ main (int argc, char *argv[]) {
 	  FREE(rightflanks);
 	}
 
+	FREE(divstring2);
+	FREE(divstring);
+
       } else {
 	/* Must have been a label */
 #if 0
@@ -1452,16 +1461,16 @@ main (int argc, char *argv[]) {
     FREE(iitfile);
 
     if (snps_root == NULL || print_snps_mode == 0) {
-      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			  /*access*/USE_MMAP_ONLY);
+      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			  uncompressedp,/*access*/USE_MMAP_ONLY);
     } else if (print_snps_mode == 2) {
-      genome = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			  /*access*/USE_MMAP_ONLY);
+      genome = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			  uncompressedp,/*access*/USE_MMAP_ONLY);
     } else if (print_snps_mode == 1 || print_snps_mode == 3) {
-      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,
-			  /*access*/USE_MMAP_ONLY);
-      genomealt = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,
-			     /*access*/USE_MMAP_ONLY);
+      genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			  uncompressedp,/*access*/USE_MMAP_ONLY);
+      genomealt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			     uncompressedp,/*access*/USE_MMAP_ONLY);
     }
 
     iitfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(fileroot)+
@@ -1474,11 +1483,18 @@ main (int argc, char *argv[]) {
       if ((p = rindex(Buffer,'\n')) != NULL) {
 	*p = '\0';
       }
-      fprintf(stdout,"# Query: %s\n",Buffer);
-      if (Parserange_universal_iit(&segment,&revcomp,&genomicstart,&genomiclength,&chrstart,&chrend,
-				   &chroffset,&chrlength,Buffer,chromosome_iit,contig_iit) == true) {
+      if (sscanf(Buffer,"%s %s",coords,typestring) < 2) {
+	typestring_ptr = (char *) NULL;
+      } else {
+	typestring_ptr = &(typestring[0]);
+      }
+      
+      fprintf(stdout,"# Query: %s\n",coords);
+      if (force_label_p == false &&
+	  Parserange_universal_iit(&segment,&revcomp,&genomicstart,&genomiclength,&chrstart,&chrend,
+				   &chroffset,&chrlength,coords,chromosome_iit,contig_iit) == true) {
 	debug(printf("Query %s parsed as: genomicstart = %lu, genomiclength = %u, revcomp = %d\n",
-		     Buffer,genomicstart,genomiclength,revcomp));
+		     coords,genomicstart,genomiclength,revcomp));
 	divstring = Univ_IIT_string_from_position(&chrstart,genomicstart,chromosome_iit);
 	divstring2 = Univ_IIT_string_from_position(&chrend,genomicstart+genomiclength-1U,chromosome_iit);
 	if (strcmp(divstring,divstring2)) {
@@ -1489,11 +1505,10 @@ main (int argc, char *argv[]) {
 	  chrend += 1U;
 	  debug(printf("Query translated to %s:%u..%u\n",divstring,chrstart,chrend));
 	}
-
 	if (map_iit != NULL) {
 	  matches = get_matches(&nmatches,&sign,divstring,chrstart,chrend,revcomp,
 				&leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-				/*typestring*/NULL,&map_iit,/*filename*/NULL);
+				typestring_ptr,&map_iit,/*filename*/NULL);
 	  if (nflanking > 0) {
 	    if (sign != +1) {
 	      for (i = nleftflanks-1; i >= 0; i--) {
@@ -1529,6 +1544,9 @@ main (int argc, char *argv[]) {
 			 /*whole_chromosome_p*/false);
 	}
 
+	FREE(divstring2);
+	FREE(divstring);
+
       } else {
 	/* Must have been a label */
 
diff --git a/src/gmap.c b/src/gmap.c
index ba01742..caa9f22 100644
--- a/src/gmap.c
+++ b/src/gmap.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: gmap.c 99750 2013-06-27 21:08:12Z twu $";
+static char rcsid[] = "$Id: gmap.c 138000 2014-06-04 02:04:31Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -31,22 +31,32 @@ static char rcsid[] = "$Id: gmap.c 99750 2013-06-27 21:08:12Z twu $";
 #include "access.h"
 
 #include "sequence.h"
-#include "oligoindex.h"
 #include "match.h"
 #include "matchpool.h"
 #include "pairpool.h"
 #include "diagpool.h"
+#include "cellpool.h"
 #include "stopwatch.h"
 #include "genome.h"
 #include "genome-write.h"
-#include "genome_hr.h"		/* For Genome_hr_setup */
+#include "genome128_hr.h"	/* For Genome_hr_setup */
+#include "genome_sites.h"	/* For Genome_sites_setup */
+#include "compress-write.h"
 #include "maxent_hr.h"		/* For Maxent_hr_setup */
 #include "stage1.h"
 #include "gregion.h"
+#ifdef PMAP
+#include "oligoindex_pmap.h"
+#else
 #include "oligoindex_hr.h"	/* For Oligoindex_hr_setup */
+#endif
 #include "stage2.h"
-#include "splicetrie.h"
+#include "splicestringpool.h"
+#include "splicetrie_build.h"
 #include "dynprog.h"
+#include "dynprog_single.h"
+#include "dynprog_genome.h"
+#include "dynprog_end.h"
 #include "stage3.h"
 #include "comp.h"
 #include "chimera.h"
@@ -64,28 +74,27 @@ static char rcsid[] = "$Id: gmap.c 99750 2013-06-27 21:08:12Z twu $";
 #include "listdef.h"
 #include "iit-read-univ.h"
 #include "iit-read.h"
-#include "chrsubset.h"
 #include "datadir.h"
 #include "inbuffer.h"
 #include "outbuffer.h"
 #include "getopt.h"
 
 
+#define MAX_QUERYLENGTH_FOR_ALLOC    100000
+#define MAX_GENOMICLENGTH_FOR_ALLOC 1000000
+
+
 #define POSSIBLE_OLIGOS 65536	/* 4^8 */
 #define MAX_OLIGODEPTH 3.0
 #define MAX_BADOLIGOS 0.30	/* Setting to 1.0 effectively turns this check off */
 #define MAX_REPOLIGOS 0.40	/* Setting to 1.0 effectively turns this check off */
 
 #define MAX_CHIMERA_ITER 3
+#define CHIMERA_PENALTY 30	/* A small value for chimera_margin will reduce this  */
 #define CHIMERA_IDENTITY 0.98
 #define CHIMERA_PVALUE 0.01
 #define CHIMERA_FVALUE 6.634897	/* qnorm(CHIMERA_PVALUE/2)^2 */
-#define CHIMERA_HANDICAP 10	/* points, for minor alignment differences based on different defect rates */
-#ifdef PMAP
-#define CHIMERA_SLOP 6
-#else
-#define CHIMERA_SLOP 20
-#endif
+#define CHIMERA_SLOP 90	/* in nucleotides */
 
 #define MIN_MATCHES 20
 
@@ -133,12 +142,13 @@ static Univ_IIT_T chromosome_iit = NULL;
 static int circular_typeint = -1;
 static int nchrs;
 static bool *circularp = NULL;
-static Chrsubset_T chrsubset = NULL;
 static Univ_IIT_T contig_iit = NULL;
-static Genome_T genome = NULL;
-static Genome_T genomealt = NULL;
-static Genomecomp_T *genome_blocks = NULL;
-static Genomecomp_T *snp_blocks = NULL;
+static Genome_T genomecomp = NULL;
+static Genome_T genomecomp_alt = NULL;
+static Genome_T genomebits = NULL;
+static Genome_T genomebits_alt = NULL;
+static Genomecomp_T *genomecomp_blocks = NULL;
+static Genomecomp_T *genomebits_blocks = NULL;
 
 #ifdef PMAP
 static Alphabet_T required_alphabet = AA0;
@@ -152,8 +162,6 @@ static Width_T index1part;
 static Indexdb_T indexdb_fwd = NULL;
 static Indexdb_T indexdb_rev = NULL;
 
-static Width_T basesize;
-static Width_T required_basesize = 0;
 static Width_T required_index1part = 0;
 static Width_T index1interval;
 static Width_T required_index1interval = 0;
@@ -176,7 +184,8 @@ static int *map_divint_crosstable = NULL;
 static Width_T minindexsize = 3;	/* In stage 2; in aa */
 static Width_T maxindexsize = 6;	/* In stage 2; in aa */
 #endif
-static int maxpeelback = 12;	/* Needs to be at least indexsize
+/* Now controlled by defect_rate */
+static int maxpeelback = 20;	/* Needs to be at least indexsize
 				   because stage 2 jumps by indexsize.
 				   Also should exceed length of
 				   repeated nucleotides (e.g., a
@@ -207,15 +216,15 @@ static int maxoligohits = 400; /* Must be smaller than ALLOC in oligoindex.c */
 static int nullgap = 600;
 static int extramaterial_end = 10;
 static int extramaterial_paired = 8; /* Should be at least indexsize in nt */
-static int extraband_single = 3; /* This is in addition to length2 -
+static int extraband_single = 6; /* This is in addition to length2 -
 				    length1.  If onesidegap is true in
 				    dynprog.c, then this is equivalent
 				    to extraband_single of 0.  Needs
 				    to be > 0 to handle default
 				    close_indels_mode. */
-static int extraband_end = 3; /* Was 6.  Shouldn't differ from 0, since onesidegapp is true?
+static int extraband_end = 6; /* Was 6.  Shouldn't differ from 0, since onesidegapp is true?
 				 This is only on both sides of main diagonal */
-static int extraband_paired = 7; /* This is in addition to length2 - length1 */
+static int extraband_paired = 14; /* This is in addition to length2 - length1 */
 static int minendexon = 9;
 
 static Stopwatch_T stopwatch = NULL;
@@ -235,13 +244,12 @@ static bool user_selfalign_p = false;
 static bool user_pairalign_p = false;
 static char *user_cmdline = NULL;
 static Sequence_T usersegment = NULL;
-static char *user_chrsubsetfile = NULL;
 static int part_modulus = 0;
 static int part_interval = 1;
 
 /* Compute options */
 static int min_matches;
-static Access_mode_T offsetscomp_access = USE_ALLOCATE;
+static Access_mode_T offsetsstrm_access = USE_ALLOCATE;
 static bool expand_offsets_p = false;
 
 #ifdef HAVE_MMAP
@@ -255,9 +263,9 @@ static Access_mode_T genome_access = USE_ALLOCATE;
 static int min_intronlength = 9;
 static int max_deletionlength = 50;
 static int maxtotallen_bound = 2400000;
-static int maxintronlen_bound = 1000000; /* Was used previously in stage 1.  Now used only in stage 2. */
+static int maxintronlen_bound = 200000; /* Was used previously in stage 1.  Now used only in stage 2 and Stage3_mergeable. */
 static int maxextension = 1000000; /* Used in stage 1.  Not adjustable by user */
-static int chimera_margin = 40;	/* Useful for finding readthroughs */
+static int chimera_margin = 30;	/* Useful for finding readthroughs */
 static bool maponlyp = false;
 #ifdef PMAP
 static bool userstage1p = false; /* Apply stage 1 for user-provided genomic segments.  Must be false. */
@@ -277,21 +285,28 @@ static bool altstrainp = false;
 #ifdef HAVE_PTHREAD
 static pthread_t output_thread_id, *worker_thread_ids;
 static int nworkers = 1;	/* (int) sysconf(_SC_NPROCESSORS_ONLN) */
+#else
+static int nworkers = 0;	/* (int) sysconf(_SC_NPROCESSORS_ONLN) */
 #endif
 #ifndef PMAP
 static bool prune_poor_p = false;
 static bool prune_repetitive_p = false;
 #endif
 static int canonical_mode = 1;
-static bool use_shifted_canonical_p = false; /* Use this for cross-species */
+static bool cross_species_p = false;
+static int homopolymerp = false;
+
 static char *user_chrsubsetname = NULL;
+static Univcoord_T chrsubset_start = 0;
+static Univcoord_T chrsubset_end = -1;
+
 static int close_indels_mode = +1;
 static double microexon_spliceprob = 0.95;
 static int suboptimal_score_start = -1; /* Determined by simulations to have minimal effect */
 static int suboptimal_score_end = 3; /* Determined by simulations to have diminishing returns above 3 */
 
 static int trim_mismatch_score = -3;
-static int trim_indel_score = -4;
+static int trim_indel_score = -2; /* was -4 */
 
 
 /* Output options */
@@ -326,7 +341,6 @@ static bool sam_insert_0M_p = false;
 static bool orderedp = false;
 static bool failsonlyp = false;
 static bool nofailsp = false;
-static bool fails_as_input_p = false;
 static bool checksump = false;
 static int chimera_overlap = 0;
 static bool force_xs_direction_p = false;
@@ -361,7 +375,7 @@ static int wraplength = 50;
 static bool novelsplicingp = true; /* Can be disabled with --nosplicing flag */
 static bool knownsplicingp = false;
 static bool distances_observed_p = false;
-static Chrpos_T shortsplicedist = 200000;
+static Chrpos_T shortsplicedist = 2000000;
 static int min_extra_end;		      /* If knownsplicing, then equals shortsplicedist */
 static char *user_splicingdir = (char *) NULL;
 static char *splicing_file = (char *) NULL;
@@ -394,6 +408,7 @@ static Triecontent_T *triecontents_max = NULL;
 
 /* Input/output */
 static char *sevenway_root = NULL;
+static char *failedinput_root = NULL;
 static bool appendp = false;
 static Inbuffer_T inbuffer = NULL;
 static Outbuffer_T outbuffer = NULL;
@@ -414,7 +429,6 @@ static struct option long_options[] = {
 #ifdef PMAP
   {"alphabet", required_argument, 0, 'a'}, /* required_alphabet */
 #endif
-  {"basesize", required_argument, 0, 0}, /* required_basesize, basesize */
   {"kmer", required_argument, 0, 'k'}, /* required_index1part, index1part */
   {"sampling", required_argument, 0, 0}, /* required_nterval, index1interval */
   {"genomefull", no_argument, 0, 'G'}, /* uncompressedp */
@@ -427,7 +441,7 @@ static struct option long_options[] = {
 
   /* Compute options */
 #ifdef HAVE_MMAP
-  {"batch", required_argument, 0, 'B'}, /* offsetscomp_access, positions_access, genome_access */
+  {"batch", required_argument, 0, 'B'}, /* offsetsstrm_access, positions_access, genome_access */
 #endif
   {"expand-offsets", required_argument, 0, 0}, /* expand_offsets_p */
   {"min-intronlength", required_argument, 0, 0}, /* min_intronlength */
@@ -440,18 +454,16 @@ static struct option long_options[] = {
 #else
   {"localsplicedist", required_argument, 0, 'w'}, /* shortsplicedist */
 #endif
-#ifdef HAVE_PTHREAD
+
   {"nthreads", required_argument, 0, 't'}, /* nworkers */
-#endif
   {"splicingdir", required_argument, 0, 0}, /* user_splicingdir */
   {"nosplicing", no_argument, 0, 0},	    /* novelsplicingp */
   {"use-splicing", required_argument, 0, 's'}, /* splicing_iit, knownsplicingp (was previously altstrainp) */
-  {"chrsubsetfile", required_argument, 0, 'C'}, /* user_chrsubsetfile */
   {"chrsubset", required_argument, 0, 'c'}, /* user_chrsubsetname */
   {"trimendexons", required_argument, 0, 'H'}, /* minendexon */
   {"canonical-mode", required_argument, 0, 0}, /* canonical_mode */
-  {"find-shifted-canonical", no_argument, 0, 0}, /* use_shifted_canonical_p */
-  {"cross-species", no_argument, 0, 0}, /* use_shifted_canonical_p */
+  {"cross-species", no_argument, 0, 0}, /* cross_species_p */
+  {"homopolymer", no_argument, 0, 0},	/* homopolymerp */
 #ifndef PMAP
   {"prunelevel", required_argument, 0, 'p'}, /* prune_poor_p, prune_repetitive_p */
 #endif
@@ -475,12 +487,14 @@ static struct option long_options[] = {
   {"stage3debug", required_argument, 0, '8'}, /* stage3debug, diagnosticp */
   {"check", no_argument, 0, '9'}, /* checkp */
   {"npaths", required_argument, 0, 'n'}, /* maxpaths */
+#if 0
   {"quiet-if-excessive", no_argument, 0, 0}, /* quiet_if_excessive_p */
+#endif
   {"format", required_argument, 0, 'f'}, /* printtype */
   {"failsonly", no_argument, 0, 0}, /* failsonlyp */
   {"nofails", no_argument, 0, 0}, /* nofailsp */
-  {"fails-as-input", no_argument, 0, 0}, /* fails_as_input_p */
   {"split-output", required_argument, 0, 0}, /* sevenway_root */
+  {"failed-input", required_argument, 0, 0}, /* failedinput_root */
   {"append-output", no_argument, 0, 0},	     /* appendp */
   {"suboptimal-score", required_argument, 0, 0}, /* suboptimal_score */
   {"require-splicedir", no_argument, 0, 0}, /* require_splicedir_p */
@@ -662,7 +676,11 @@ check_compiler_assumptions () {
 #ifdef HAVE_SSE2
   int z;
   __m128i a;
+#ifdef HAVE_SSE4_1
+  char negx, negy;
 #endif
+#endif
+
 
   fprintf(stderr,"Checking compiler assumptions for popcnt: ");
   fprintf(stderr,"%08X ",x);
@@ -683,14 +701,36 @@ check_compiler_assumptions () {
   a = _mm_xor_si128(_mm_set1_epi32(x),_mm_set1_epi32(y));
   z = _mm_cvtsi128_si32(a);
   fprintf(stderr," xor=%08X\n",z);
-#endif
 
 #ifdef HAVE_SSE4_1
+  if ((negx = (char) x) > 0) {
+    negx = -negx;
+  }
+  if ((negy = (char) y) > 0) {
+    negy = -negy;
+  }
+
   fprintf(stderr,"Checking compiler assumptions for SSE4.1: ");
-  fprintf(stderr,"%d %d",(char) x,(char) y);
-  a = _mm_max_epi8(_mm_set1_epi8((char) x),_mm_set1_epi8((char) y));
+  fprintf(stderr,"%d %d",negx,negy);
+  a = _mm_max_epi8(_mm_set1_epi8(negx),_mm_set1_epi8(negy));
   z = _mm_extract_epi8(a,0);
-  fprintf(stderr," max=%d\n",z);
+  fprintf(stderr," max=%d => ",z);
+  if (negx > negy) {
+    if (z == (int) negx) {
+      fprintf(stderr,"compiler sign extends\n"); /* technically incorrect, but SIMD procedures behave properly */
+    } else {
+      fprintf(stderr,"compiler zero extends\n");
+    }
+  } else {
+    if (z == (int) negy) {
+      fprintf(stderr,"compiler sign extends\n"); /* technically incorrect, but SIMD procedures behave properly */
+    } else {
+      fprintf(stderr,"compiler zero extends\n");
+    }
+  }
+
+#endif
+
 #endif
 
   return;
@@ -712,7 +752,7 @@ evaluate_query (bool *poorp, bool *repetitivep, char *queryuc_ptr, int queryleng
   Oligoindex_set_inquery(&diagnostic->query_badoligos,&diagnostic->query_repoligos,
 			 &diagnostic->query_trimoligos,&diagnostic->query_trim_start,
 			 &diagnostic->query_trim_end,oligoindex,queryuc_ptr,
-			 querylength,/*trimp*/false);
+			 querylength);
   *poorp = false;
   *repetitivep = false;
 #else
@@ -763,7 +803,7 @@ stage3array_from_list (int *npaths, int *first_absmq, int *second_absmq, List_T
   int norig, i, j;
   int threshold_score;
 
-
+  debug2(printf("Entering stage3array_from_list\n"));
   Stage3_recompute_goodness(stage3list); /* Is this necessary? */
 
   if ((norig = List_length(stage3list)) == 0) {
@@ -772,6 +812,7 @@ stage3array_from_list (int *npaths, int *first_absmq, int *second_absmq, List_T
     return (Stage3_T *) NULL;
 
   } else if (mergedp == true) {
+    debug2(printf("mergedp is true\n"));
     array0 = (Stage3_T *) List_to_array(stage3list,NULL);
     List_free(&stage3list);
     *first_absmq = 0;
@@ -780,6 +821,7 @@ stage3array_from_list (int *npaths, int *first_absmq, int *second_absmq, List_T
     return array0;
 
   } else if (chimerap == true) {
+    debug2(printf("chimerap is true\n"));
     array0 = (Stage3_T *) List_to_array(stage3list,NULL);
     List_free(&stage3list);
     *first_absmq = Stage3_absmq_score(array0[0]);
@@ -874,9 +916,8 @@ update_stage3list (List_T stage3list, bool lowidentityp, Sequence_T queryseq,
 		   Sequence_T queryntseq,
 #endif
 		   Sequence_T queryuc,
-		   Oligoindex_T *oligoindices_major, int noligoindices_major,
-		   Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		   Pairpool_T pairpool, Diagpool_T diagpool, int straintype, char *strain,
+		   Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		   Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool, int straintype, char *strain,
 		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
 		   Chrpos_T chrstart, Chrpos_T chrend, bool watsonp, int genestrand,
 		   Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
@@ -890,7 +931,8 @@ update_stage3list (List_T stage3list, bool lowidentityp, Sequence_T queryseq,
 #elif defined(EXTRACT_GENOMICSEG)
   Sequence_T genomicuc = NULL;
 #endif
-  List_T all_paths, path, p;
+  List_T all_stage2results, p;
+  Stage2_T stage2;
   Stage3_T stage3;
 
   struct Pair_T *pairarray;
@@ -902,6 +944,7 @@ update_stage3list (List_T stage3list, bool lowidentityp, Sequence_T queryseq,
   Splicetype_T ambig_splicetype_5, ambig_splicetype_3;
   double defect_rate, min_splice_prob;
   double stage3_runtime;
+  int subseq_offset;
 
 
 #ifdef PMAP_OLD
@@ -923,93 +966,89 @@ update_stage3list (List_T stage3list, bool lowidentityp, Sequence_T queryseq,
   genomicuc_ptr = Sequence_fullpointer(genomicuc);
 #endif
 
-  debug(printf("Beginning Stage2_compute with chrstart %u and chrend %u\n",chrstart,chrend));
+  if (canonical_mode == 0) {
+    do_final_p = false;
+  } else if (canonical_mode == 1) {
+    do_final_p = true;
+  } else if (lowidentityp == false) {
+    do_final_p = false;
+  } else {
+    do_final_p = true;
+  }
+
+  debug2(printf("Beginning Stage2_compute with chrstart %u and chrend %u and query_subseq_offset %d\n",
+		chrstart,chrend,Sequence_subseq_offset(queryseq)));
+  all_stage2results = Stage2_compute(&stage2_source,&stage2_indexsize,
+				     Sequence_trimpointer(queryseq),Sequence_trimpointer(queryuc),
+				     Sequence_trimlength(queryseq),/*query_offset*/0,
+				     chrstart,chrend,chroffset,chrhigh,/*plusp*/watsonp,genestrand,
 
-  all_paths = Stage2_compute(&stage2_source,&stage2_indexsize,
-			     Sequence_trimpointer(queryseq),Sequence_trimpointer(queryuc),
-			     Sequence_trimlength(queryseq),/*query_offset*/0,
-#ifdef PMAP
-			     genomicuc_ptr,
-#endif
-			     chrstart,chrend,
-			     chroffset,chrhigh,/*plusp*/watsonp,genestrand,
-
-			     oligoindices_major,noligoindices_major,/*proceed_pctcoverage*/0.3,
-			     pairpool,diagpool,sufflookback,nsufflookback,maxintronlen_bound,
-			     /*localp*/true,/*skip_repetitive_p*/true,use_shifted_canonical_p,
-			     /*favor_right_p*/false,/*max_nalignments*/MAX_NALIGNMENTS,debug_graphic_p,
-			     diagnosticp,worker_stopwatch,diag_debug);
-
-  debug2(printf("End of Stage2_compute\n"));
-
-  for (p = all_paths; p != NULL; p = List_next(p)) {
-    path = (List_T) List_head(p);
-    if (diag_debug == true) {
-      stage3list = path;		/* really diagonals */
-
-    } else if (path != NULL) {
-      if (canonical_mode == 0) {
-	do_final_p = false;
-      } else if (canonical_mode == 1) {
-	do_final_p = true;
-      } else if (lowidentityp == false) {
-	do_final_p = false;
-      } else {
-	do_final_p = true;
-      }
+				     oligoindices_major,/*proceed_pctcoverage*/0.3,
+				     pairpool,diagpool,cellpool,sufflookback,nsufflookback,maxintronlen_bound,
+				     /*localp*/true,/*skip_repetitive_p*/true,
+				     /*favor_right_p*/false,/*max_nalignments*/MAX_NALIGNMENTS,debug_graphic_p,
+				     diagnosticp,worker_stopwatch,diag_debug);
 
-      Stopwatch_start(worker_stopwatch);
-      pairarray = Stage3_compute(&pairs,&npairs,&cdna_direction,&sensedir,&matches,
-				 &nmatches_posttrim,&max_match_length,&ambig_end_length_5,&ambig_end_length_3,
-				 &ambig_splicetype_5,&ambig_splicetype_3,
-				 &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels,
-				 &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,
-				 &defect_rate,path,
+  debug(printf("End of Stage2_compute\n"));
+
+  for (p = all_stage2results; p != NULL; p = List_next(p)) {
+    stage2 = (Stage2_T) List_head(p);
+
+    Stopwatch_start(worker_stopwatch);
 #ifdef PMAP
-				 /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
-				 genomicuc_ptr,
-				 /*queryseq_ptr*/Sequence_fullpointer(queryntseq),
-				 /*queryuc_ptr*/Sequence_fullpointer(queryntseq),
-				 /*querylength*/Sequence_fulllength(queryntseq),
-				 /*skiplength*/Sequence_skiplength(queryntseq),
-				 /*query_subseq_offset*/Sequence_subseq_offset(queryntseq),
+    subseq_offset = Sequence_subseq_offset(queryseq); /* in nucleotides */
+#endif
+    pairarray = Stage3_compute(&pairs,&npairs,&cdna_direction,&sensedir,
+			       &matches,&nmatches_posttrim,&max_match_length,
+			       &ambig_end_length_5,&ambig_end_length_3,
+			       &ambig_splicetype_5,&ambig_splicetype_3,
+			       &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels,
+			       &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,stage2,
+#ifdef PMAP
+			       /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
+			       /*queryseq_ptr*/Sequence_subseq_pointer(queryntseq,subseq_offset),
+			       /*queryuc_ptr*/Sequence_subseq_pointer(queryntseq,subseq_offset),
+			       /*querylength*/Sequence_subseq_length(queryntseq,subseq_offset),
+			       /*skiplength*/Sequence_skiplength(queryntseq),
+			       /*query_subseq_offset*/subseq_offset,
 #else
-				 /*queryseq_ptr*/Sequence_fullpointer(queryseq),
-				 /*queryuc_ptr*/Sequence_fullpointer(queryuc),
-				 /*querylength*/Sequence_fulllength(queryseq),
-				 /*skiplength*/Sequence_skiplength(queryseq),
-				 /*query_subseq_offset*/Sequence_subseq_offset(queryseq),
-#endif
-				 chrnum,chroffset,chrhigh,
-				 /*knownsplice_limit_low*/0U,/*knownsplice_limit_high*/-1U,
-				 watsonp,genestrand,/*jump_late_p*/watsonp ? false : true,
-				 maxpeelback,maxpeelback_distalmedial,nullgap,
-				 extramaterial_end,extramaterial_paired,
-				 extraband_single,extraband_end,extraband_paired,
-				 minendexon,pairpool,dynprogL,dynprogM,dynprogR,ngap,
-				 stage3debug,diagnosticp,checkp,do_final_p,sense_try,sense_filter,
-				 oligoindices_minor,noligoindices_minor,diagpool,
-				 sufflookback,nsufflookback,maxintronlen_bound,close_indels_mode,
-				 /*paired_favor_mode*/0,/*zero_offset*/0);
-      stage3_runtime = Stopwatch_stop(worker_stopwatch);
-      if (pairarray == NULL) {
-	/* Skip */
-      } else if (matches < min_matches) {
-	FREE_OUT(pairarray);
-      } else if ((stage3 = Stage3_new(pairarray,pairs,npairs,cdna_direction,sensedir,
-				      stage2_source,stage2_indexsize,matches,unknowns,mismatches,
-				      qopens,qindels,topens,tindels,ncanonical,nsemicanonical,nnoncanonical,
-				      defect_rate,chrnum,chroffset,chrhigh,chrlength,watsonp,
-				      /*querylength*/Sequence_fulllength(queryseq),
-				      /*skiplength*/Sequence_skiplength(queryseq),
-				      /*trimlength*/Sequence_trimlength(queryseq),
-				      stage3_runtime,straintype,strain,altstrain_iit)) != NULL) {
-	stage3list = List_push(stage3list,(void *) stage3);
-      }
+			       /*queryseq_ptr*/Sequence_fullpointer(queryseq),
+			       /*queryuc_ptr*/Sequence_fullpointer(queryuc),
+			       /*querylength*/Sequence_fulllength(queryseq),
+			       /*skiplength*/Sequence_skiplength(queryseq),
+			       /*query_subseq_offset*/Sequence_subseq_offset(queryseq),
+#endif
+			       chrnum,chroffset,chrhigh,
+			       /*knownsplice_limit_low*/0U,/*knownsplice_limit_high*/-1U,
+			       watsonp,genestrand,/*jump_late_p*/watsonp ? false : true,
+			       maxpeelback,maxpeelback_distalmedial,nullgap,
+			       extramaterial_end,extramaterial_paired,
+			       extraband_single,extraband_end,extraband_paired,
+			       minendexon,pairpool,dynprogL,dynprogM,dynprogR,ngap,
+			       diagnosticp,checkp,do_final_p,sense_try,sense_filter,
+			       oligoindices_minor,diagpool,cellpool,
+			       sufflookback,nsufflookback,maxintronlen_bound,close_indels_mode,
+			       /*paired_favor_mode*/0,/*zero_offset*/0);
+    stage3_runtime = Stopwatch_stop(worker_stopwatch);
+    if (pairarray == NULL) {
+      /* Skip */
+    } else if (matches < min_matches) {
+      FREE_OUT(pairarray);
+    } else if ((stage3 = Stage3_new(pairarray,pairs,npairs,cdna_direction,sensedir,
+				    stage2_source,stage2_indexsize,matches,unknowns,mismatches,
+				    qopens,qindels,topens,tindels,ncanonical,nsemicanonical,nnoncanonical,
+				    chrnum,chroffset,chrhigh,chrlength,watsonp,
+				    /*querylength*/Sequence_fulllength(queryseq),
+				    /*skiplength*/Sequence_skiplength(queryseq),
+				    /*trimlength*/Sequence_trimlength(queryseq),
+				    stage3_runtime,straintype,strain,altstrain_iit)) != NULL) {
+      stage3list = List_push(stage3list,(void *) stage3);
     }
+
+    Stage2_free(&stage2);
   }
 
-  List_free(&all_paths);
+  List_free(&all_stage2results);
 
 #ifdef PMAP_OLD
   Sequence_free(&genomicuc);
@@ -1083,11 +1122,13 @@ index_compare (const void *a, const void *b) {
 
 static Stage3_T *
 stage3_from_usersegment (int *npaths, int *first_absmq, int *second_absmq,
-			 bool lowidentityp, Sequence_T queryseq,
-			 Sequence_T queryuc, Sequence_T usersegment,
-			 Oligoindex_T *oligoindices_major, int noligoindices_major,
-			 Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			 Pairpool_T pairpool, Diagpool_T diagpool,
+			 bool lowidentityp, Sequence_T queryseq, Sequence_T queryuc,
+#ifdef PMAP
+			 Sequence_T queryntseq,
+#endif
+			 Sequence_T usersegment,
+			 Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			 Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 			 Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 			 Stopwatch_T worker_stopwatch) {
   List_T stage3list;
@@ -1096,8 +1137,7 @@ stage3_from_usersegment (int *npaths, int *first_absmq, int *second_absmq,
   Chrnum_T chrnum = 0;
 
 #ifdef PMAP
-  Sequence_T queryntseq, revcomp;
-  queryntseq = Sequence_convert_to_nucleotides(queryseq);
+  Sequence_T revcomp;
 #endif
 		    
   chroffset = chrpos = 0U;
@@ -1107,9 +1147,8 @@ stage3_from_usersegment (int *npaths, int *first_absmq, int *second_absmq,
 #ifdef PMAP
 				 queryntseq,
 #endif
-				 queryuc,oligoindices_major,noligoindices_major,
-				 oligoindices_minor,noligoindices_minor,
-				 pairpool,diagpool,/*straintype*/0,/*strain*/NULL,
+				 queryuc,oligoindices_major,oligoindices_minor,
+				 pairpool,diagpool,cellpool,/*straintype*/0,/*strain*/NULL,
 				 chrnum,chroffset,chrhigh,chrlength,
 				 /*chrstart*/0,/*chrend*/chrhigh,/*watsonp*/true,/*genestrand*/0,
 				 dynprogL,dynprogM,dynprogR,worker_stopwatch);
@@ -1122,16 +1161,14 @@ stage3_from_usersegment (int *npaths, int *first_absmq, int *second_absmq,
 #ifdef PMAP
 				 queryntseq,
 #endif
-				 queryuc,oligoindices_major,noligoindices_major,
-				 oligoindices_minor,noligoindices_minor,
-				 pairpool,diagpool,/*straintype*/0,/*strain*/NULL,
+				 queryuc,oligoindices_major,oligoindices_minor,
+				 pairpool,diagpool,cellpool,/*straintype*/0,/*strain*/NULL,
 				 chrnum,chroffset,chrhigh,chrlength,
 				 /*chrstart*/0,/*chrend*/chrhigh,/*watsonp*/false,/*genestrand*/0,
 				 dynprogL,dynprogM,dynprogR,worker_stopwatch);
 
 #ifdef PMAP
   Sequence_free(&revcomp);
-  Sequence_free(&queryntseq);
 #endif
 
   if (stage3list == NULL) {
@@ -1209,6 +1246,27 @@ stage3list_remove_duplicates (List_T stage3list) {
 }
 
 
+#if 0
+static List_T
+stage3list_remove_empties (List_T stage3list) {
+  List_T nonempty = NULL, p;
+  Stage3_T stage3;
+  
+  for (p = stage3list; p != NULL; p = List_next(p)) {
+    stage3 = (Stage3_T) List_head(p);
+    if (Stage3_pairs == NULL) {
+      debug2(printf("Removing empty stage3 %p\n",stage3));
+      Stage3_free(&stage3);
+    } else {
+      nonempty = List_push(nonempty,(void *) stage3);
+    }
+  }
+
+  return nonempty;
+}
+#endif
+
+
 static List_T
 stage3list_sort (List_T stage3list) {
   List_T sorted = NULL;
@@ -1234,13 +1292,14 @@ stage3list_sort (List_T stage3list) {
 
 
 static List_T
-stage3list_filter_and_sort (List_T stage3list) {
+stage3list_filter_and_sort (Chimera_T *chimera, List_T stage3list) {
   List_T sorted = NULL;
-  Stage3_T *array, stage3;
+  Stage3_T *array, stage3, from, to;
   int n, i;
 
   if ((n = List_length(stage3list)) == 0) {
     return (List_T) NULL;
+
   } else if (n == 1) {
     stage3 = (Stage3_T) List_head(stage3list);
     if (Stage3_passes_filter(stage3,min_trimmed_coverage,min_identity) == false) {
@@ -1250,7 +1309,8 @@ stage3list_filter_and_sort (List_T stage3list) {
     } else {
       return stage3list;
     }
-  } else {
+
+  } else if (*chimera == NULL) {
     array = (Stage3_T *) List_to_array(stage3list,NULL);
     List_free(&stage3list);
     qsort(array,n,sizeof(Stage3_T),Stage3_cmp);
@@ -1262,6 +1322,45 @@ stage3list_filter_and_sort (List_T stage3list) {
       }
     }
     FREE(array);
+    return sorted;
+
+  } else if (Stage3_passes_filter_chimera(*chimera,min_trimmed_coverage,min_identity) == true) {
+    array = (Stage3_T *) List_to_array(stage3list,NULL);
+    List_free(&stage3list);
+    qsort(array,n,sizeof(Stage3_T),Stage3_cmp);
+    for (i = n-1; i >= 0; i--) {
+      if (Stage3_chimera_left_p(array[i]) == true) {
+	sorted = List_push(sorted,(void *) array[i]);
+      } else if (Stage3_chimera_right_p(array[i]) == true) {
+	sorted = List_push(sorted,(void *) array[i]);
+      } else if (Stage3_passes_filter(array[i],min_trimmed_coverage,min_identity) == false) {
+	Stage3_free(&(array[i]));
+      } else {
+	sorted = List_push(sorted,(void *) array[i]);
+      }
+    }
+    FREE(array);
+    return sorted;
+
+  } else {
+    array = (Stage3_T *) List_to_array(stage3list,NULL);
+    List_free(&stage3list);
+    qsort(array,n,sizeof(Stage3_T),Stage3_cmp);
+    for (i = n-1; i >= 0; i--) {
+      if (Stage3_chimera_left_p(array[i]) == true) {
+	Stage3_free(&(array[i]));
+      } else if (Stage3_chimera_right_p(array[i]) == true) {
+	Stage3_free(&(array[i]));
+      } else if (Stage3_passes_filter(array[i],min_trimmed_coverage,min_identity) == false) {
+	Stage3_free(&(array[i]));
+      } else {
+	sorted = List_push(sorted,(void *) array[i]);
+      }
+    }
+    FREE(array);
+
+    Chimera_free(&(*chimera));
+    *chimera = (Chimera_T) NULL;
 
     return sorted;
   }
@@ -1269,11 +1368,14 @@ stage3list_filter_and_sort (List_T stage3list) {
 
 
 static List_T
-stage3_from_gregions (List_T stage3list, List_T gregions, bool lowidentityp, Sequence_T queryseq,
-		      Sequence_T queryuc, Sequence_T usersegment, 
-		      Oligoindex_T *oligoindices_major, int noligoindices_major,
-		      Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		      Pairpool_T pairpool, Diagpool_T diagpool,
+stage3_from_gregions (List_T stage3list, List_T gregions, bool lowidentityp,
+		      Sequence_T queryseq, Sequence_T queryuc,
+#ifdef PMAP
+		      Sequence_T queryntseq,
+#endif
+		      Sequence_T usersegment,
+		      Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		      Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		      Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		      Stopwatch_T worker_stopwatch) {
   Gregion_T gregion, *array;
@@ -1285,11 +1387,9 @@ stage3_from_gregions (List_T stage3list, List_T gregions, bool lowidentityp, Seq
 #endif
   void *item;
 
-#ifdef PMAP
-  char *genomicuc_ptr = NULL;
+#ifdef EXTRACT_GENOMICSEG
+  genomicuc_ptr = Sequence_fullpointer(genomicuc);
   Sequence_T genomicseg = NULL, genomicuc = NULL;
-  Sequence_T queryntseq;
-  queryntseq = Sequence_convert_to_nucleotides(queryseq);
 #endif
 		    
   if (usersegment == NULL && (ngregions = List_length(gregions)) > 0) {
@@ -1299,294 +1399,158 @@ stage3_from_gregions (List_T stage3list, List_T gregions, bool lowidentityp, Seq
     for (i = 0; i < ngregions; i++) {
       gregion = array[i];
 
-#ifdef PMAP
-      genomicseg = Genome_get_segment(genome,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-				      /*chromosome_iit*/NULL,Gregion_revcompp(gregion));
-      genomicuc = Sequence_uppercase(genomicseg);
-      genomicuc_ptr = Sequence_fullpointer(genomicuc);
-#elif defined(EXTRACT_GENOMICSEG)
+#if defined(EXTRACT_GENOMICSEG)
       genomicseg = Genome_get_segment(genome,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
 				      /*chromosome_iit*/NULL,Gregion_revcompp(gregion));
       genomicuc = Sequence_uppercase(genomicseg);
       genomicuc_ptr = Sequence_fullpointer(genomicuc);
 #endif
       ncovered = Stage2_scan(&stage2_source,Sequence_trimpointer(queryuc),Sequence_trimlength(queryseq),
-#ifdef PMAP
-			     genomicuc_ptr,
-#endif
 			     Gregion_chrstart(gregion),Gregion_chrend(gregion),
 			     Gregion_chroffset(gregion),Gregion_chrhigh(gregion),
 			     /*plusp*/Gregion_revcompp(gregion) ? false : true,Gregion_genestrand(gregion),
-			     oligoindices_major,noligoindices_major,diagpool,
-			     debug_graphic_p,diagnosticp);
+			     oligoindices_major,diagpool,debug_graphic_p,diagnosticp);
       Gregion_set_ncovered(gregion,ncovered,stage2_source);
       if (diagnosticp == true) {
 	fprintf(stderr,"Scanned %d ncovered\n",ncovered);
       }
-#ifdef PMAP
-      Sequence_free(&genomicuc);
-      Sequence_free(&genomicseg);
-#elif defined(EXTRACT_GENOMICSEG)
+#if defined(EXTRACT_GENOMICSEG)
       Sequence_free(&genomicuc);
       Sequence_free(&genomicseg);
 #endif
     }
     qsort(array,ngregions,sizeof(Gregion_T),Gregion_cmp);
     max_ncovered = Gregion_ncovered(array[0]);
+    debug(printf("max_ncovered of array[0] = %d\n",max_ncovered));
+    if (max_ncovered < 0.10*Sequence_fulllength(queryseq)) {
+      debug(printf("coverage is too short, so skipping\n"));
+      for (i = 0; i < ngregions; i++) {
+	Gregion_free(&(array[i]));
+      }
+      FREE(array);
 
-    gregions = (List_T) NULL;
-    i = 0;
-    while (i < ngregions && Gregion_ncovered(array[i]) > 0.80*max_ncovered) {
-      gregions = List_push(gregions,(void *) array[i]);
-      if (diagnosticp == true) {
-	fprintf(stderr,"Keeping %d ncovered relative to %d\n",Gregion_ncovered(array[i]),max_ncovered);
+    } else {
+      gregions = (List_T) NULL;
+      i = 0;
+      while (i < ngregions && Gregion_ncovered(array[i]) > 0.25*max_ncovered) {
+	debug(printf("Keeping %d ncovered relative to %d\n",Gregion_ncovered(array[i]),max_ncovered));
+	gregions = List_push(gregions,(void *) array[i]);
+	if (diagnosticp == true) {
+	  fprintf(stderr,"Keeping %d ncovered relative to %d\n",Gregion_ncovered(array[i]),max_ncovered);
+	}
+	i++;
       }
-      i++;
-    }
-    while (i < ngregions) {
-      Gregion_free(&(array[i]));
-      i++;
+      while (i < ngregions) {
+	debug(printf("Discarding array %d with ncovered = %d\n",i,Gregion_ncovered(array[i])));
+	Gregion_free(&(array[i]));
+	i++;
+      }
+      FREE(array);
     }
-    FREE(array);
-  }
 
-  while (gregions != NULL) {
-    gregions = List_pop(gregions,&item);
-    gregion = (Gregion_T) item;
+    while (gregions != NULL) {
+      gregions = List_pop(gregions,&item);
+      gregion = (Gregion_T) item;
 
-    /* if (Match_usep(match) == true) { */
-    if (1) {
-      if (usersegment != NULL) {
-	/* chrlength = Sequence_fulllength(usersegment); */
-	strain = NULL;
-#ifdef PMAP
-	genomicseg = Sequence_substring(usersegment,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-					Gregion_revcompp(gregion));
-#endif
-	stage3list = update_stage3list(stage3list,lowidentityp,queryseq,
-#ifdef PMAP
-				       queryntseq,
-#endif
-				       queryuc,oligoindices_major,noligoindices_major,
-				       oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-				       /*straintype*/0,/*strain*/NULL,Gregion_chrnum(gregion),
-				       Gregion_chroffset(gregion),Gregion_chrhigh(gregion),Gregion_chrlength(gregion),
-				       Gregion_chrstart(gregion),Gregion_chrend(gregion),
-				       Gregion_plusp(gregion),Gregion_genestrand(gregion),
-				       dynprogL,dynprogM,dynprogR,worker_stopwatch);
+      /* if (Match_usep(match) == true) { */
+      if (1) {
+	if (usersegment != NULL) {
+	  /* chrlength = Sequence_fulllength(usersegment); */
+	  strain = NULL;
+	  stage3list = update_stage3list(stage3list,lowidentityp,queryseq,
 #ifdef PMAP
-	Sequence_free(&genomicseg);
-#endif
-
-      } else if (maponlyp == true) {
-	fprintf(stderr,"maponlyp mode not currently supported\n");
-	exit(9);
+					 queryntseq,
+#endif
+					 queryuc,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					 /*straintype*/0,/*strain*/NULL,Gregion_chrnum(gregion),
+					 Gregion_chroffset(gregion),Gregion_chrhigh(gregion),Gregion_chrlength(gregion),
+					 Gregion_chrstart(gregion),Gregion_chrend(gregion),
+					 Gregion_plusp(gregion),Gregion_genestrand(gregion),
+					 dynprogL,dynprogM,dynprogR,worker_stopwatch);
+	} else if (maponlyp == true) {
+	  fprintf(stderr,"maponlyp mode not currently supported\n");
+	  exit(9);
 #if 0
-	stage3list = update_stage3list_maponlyp(stage3list,gregion,queryseq,
+	  stage3list = update_stage3list_maponlyp(stage3list,gregion,queryseq,
 #ifdef PMAP
-						queryntseq,
-#endif
-						queryuc,pairpool,/*straintype*/0,/*strain*/NULL,genome,
-						Gregion_chrnum(gregion),Gregion_chroffset(gregion),
-						Gregion_chrpos(gregion),Gregion_chrlength(gregion),Gregion_plusp(gregion),
-						dynprogL,dynprogM,dynprogR);
+						  queryntseq,
 #endif
-
-      } else {
-#if 0
-	if (diagnosticp == true) {
-	  printf("Got sequence at %u with length %u, revcomp %d\n",
-		 Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),Gregion_revcompp(gregion));
-	}
+						  queryuc,pairpool,/*straintype*/0,/*strain*/NULL,genome,
+						  Gregion_chrnum(gregion),Gregion_chroffset(gregion),
+						  Gregion_chrpos(gregion),Gregion_chrlength(gregion),Gregion_plusp(gregion),
+						  dynprogL,dynprogM,dynprogR);
 #endif
 
-#ifdef PMAP
-	if (genomealt != NULL) {
-	  genomicseg = Genome_get_segment_alt(genomealt,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-					      /*chromosome_iit*/NULL,Gregion_revcompp(gregion));
-	} else {
-	  genomicseg = Genome_get_segment(genome,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-					  /*chromosome_iit*/NULL,Gregion_revcompp(gregion));
-	}
-#elif defined(EXTRACT_GENOMICSEG)
-	if (genomealt != NULL) {
-	  genomicseg = Genome_get_segment_alt(genomealt,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-					      /*chromosome_iit*/NULL,Gregion_revcompp(gregion));
 	} else {
-	  genomicseg = Genome_get_segment(genome,Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-					  /*chromosome_iit*/NULL,Gregion_revcompp(gregion));
-	}
+#if 0
+	  if (diagnosticp == true) {
+	    printf("Got sequence at %u with length %u, revcomp %d\n",
+		   Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),Gregion_revcompp(gregion));
+	  }
 #endif
 
-	stage3list = update_stage3list(stage3list,lowidentityp,queryseq,
-#ifdef PMAP
-				       queryntseq,
-#endif
-				       queryuc,oligoindices_major,noligoindices_major,
-				       oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-				       /*straintype*/0,/*strain*/NULL,Gregion_chrnum(gregion),
-				       Gregion_chroffset(gregion),Gregion_chrhigh(gregion),Gregion_chrlength(gregion),
-				       Gregion_chrstart(gregion),Gregion_chrend(gregion),
-				       Gregion_plusp(gregion),Gregion_genestrand(gregion),
-				       dynprogL,dynprogM,dynprogR,worker_stopwatch);
+	  stage3list = update_stage3list(stage3list,lowidentityp,queryseq,
 #ifdef PMAP
-	Sequence_free(&genomicseg);
-#elif defined(EXTRACT_GENOMICSEG)
-	Sequence_free(&genomicseg);
+					 queryntseq,
 #endif
+					 queryuc,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					 /*straintype*/0,/*strain*/NULL,Gregion_chrnum(gregion),
+					 Gregion_chroffset(gregion),Gregion_chrhigh(gregion),Gregion_chrlength(gregion),
+					 Gregion_chrstart(gregion),Gregion_chrend(gregion),
+					 Gregion_plusp(gregion),Gregion_genestrand(gregion),
+					 dynprogL,dynprogM,dynprogR,worker_stopwatch);
 
 #if 0
-	/* We rely upon the fact that gbuffer1 still holds the genomic segment.  This code is duplicated in get-genome.c */
-	if (altstrain_iit != NULL) {
-	  indexarray = IIT_get(&nindices,altstrain_iit,/*divstring*/NULL,Gregion_genomicstart(gregion)+1U,
-			       Gregion_genomicstart(gregion)+Gregion_genomiclength(gregion)-1,/*sortp*/false);
-	  if (nindices > 0) {
-	    /* Sort according to type and genome position */
-	    qsort(indexarray,nindices,sizeof(int),index_compare);
-	    j = 0;
-	    while (j < nindices) {
-	      i = j++;
-	      straintype = Interval_type(IIT_interval(altstrain_iit,indexarray[i]));
-	      strain = IIT_typestring(altstrain_iit,straintype);
-	      while (j < nindices && Interval_type(IIT_interval(altstrain_iit,indexarray[j])) == straintype) {
-		j++;
-	      }
-	      /* Patch from i to j */
-	      genomicseg = Genome_patch_strain(&(indexarray[i]),j-i,altstrain_iit,
-					       Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
-					       Gregion_revcompp(gregion),
-					       Gbuffer_chars1(gbuffer),Gbuffer_chars2(gbuffer),Gbuffer_chars3(gbuffer),
-					       Gbuffer_gbufferlen(gbuffer));
-	      stage3list = update_stage3list(stage3list,lowidentityp,queryseq,
+	  /* We rely upon the fact that gbuffer1 still holds the genomic segment.  This code is duplicated in get-genome.c */
+	  if (altstrain_iit != NULL) {
+	    indexarray = IIT_get(&nindices,altstrain_iit,/*divstring*/NULL,Gregion_genomicstart(gregion)+1U,
+				 Gregion_genomicstart(gregion)+Gregion_genomiclength(gregion)-1,/*sortp*/false);
+	    if (nindices > 0) {
+	      /* Sort according to type and genome position */
+	      qsort(indexarray,nindices,sizeof(int),index_compare);
+	      j = 0;
+	      while (j < nindices) {
+		i = j++;
+		straintype = Interval_type(IIT_interval(altstrain_iit,indexarray[i]));
+		strain = IIT_typestring(altstrain_iit,straintype);
+		while (j < nindices && Interval_type(IIT_interval(altstrain_iit,indexarray[j])) == straintype) {
+		  j++;
+		}
+		/* Patch from i to j */
+		genomicseg = Genome_patch_strain(&(indexarray[i]),j-i,altstrain_iit,
+						 Gregion_genomicstart(gregion),Gregion_genomiclength(gregion),
+						 Gregion_revcompp(gregion),
+						 Gbuffer_chars1(gbuffer),Gbuffer_chars2(gbuffer),Gbuffer_chars3(gbuffer),
+						 Gbuffer_gbufferlen(gbuffer));
+		stage3list = update_stage3list(stage3list,lowidentityp,queryseq,
 #ifdef PMAP
-					     queryntseq,
+					       queryntseq,
 #endif					     
-					     queryuc,oligoindices_major,noligoindices_major,
-					     oligoindices_minor,noligoindices_minor,
-					     pairpool,diagpool,straintype,strain,
-					     Gregion_chrnum(gregion),Gregion_chroffset(gregion),
-					     Gregion_chrhigh(gregion),Gregion_chrlength(gregion),
-					     Gregion_chrstart(gregion),Gregion_chrend(gregion),
-					     Gregion_plusp(gregion),Gregion_genestrand(gregion),
-					     dynprogL,dynprogM,dynprogR,worker_stopwatch);
-	      Sequence_free(&genomicseg);
+					       queryuc,oligoindices_major,oligoindices_minor,
+					       pairpool,diagpool,straintype,strain,
+					       Gregion_chrnum(gregion),Gregion_chroffset(gregion),
+					       Gregion_chrhigh(gregion),Gregion_chrlength(gregion),
+					       Gregion_chrstart(gregion),Gregion_chrend(gregion),
+					       Gregion_plusp(gregion),Gregion_genestrand(gregion),
+					       dynprogL,dynprogM,dynprogR,worker_stopwatch);
+		Sequence_free(&genomicseg);
+	      }
+	      FREE(indexarray);
 	    }
-	    FREE(indexarray);
 	  }
-	}
 #endif
 
+	}
       }
+      Gregion_free(&gregion);
     }
-    Gregion_free(&gregion);
   }
 	
-#ifdef PMAP
-  Sequence_free(&queryntseq);
-#endif
-
   return stage3list;
 }
 
 
 static bool
-local_join_p (Stage3_T from, Stage3_T to) {
-  debug2(printf("? local_join_p from [%p] %d..%d (%u..%u) -> to [%p] %d..%d (%u..%u) => ",
-		from,Stage3_querystart(from),Stage3_queryend(from),
-		Stage3_chrstart(from),Stage3_chrend(from),
-		to,Stage3_querystart(to),Stage3_queryend(to),
-		Stage3_chrstart(to),Stage3_chrend(to)));
-
-  if (Stage3_chimera_right_p(from) == true) {
-    debug2(printf("false, because from is already part of a chimera on its right\n"));
-    return false;
-    
-  } else if (Stage3_chimera_left_p(to) == true) {
-    debug2(printf("false, because to is already part of a chimera on its left\n"));
-    return false;
-
-  } else if (Stage3_chrnum(from) != Stage3_chrnum(to)) {
-    debug2(printf("false, because different chromosomes\n"));
-    return false;
-
-  } else if (Stage3_watsonp(from) != Stage3_watsonp(to)) {
-    debug2(printf("false, because different strands\n"));
-    return false;
-
-  } else if (Stage3_querystart(from) >= Stage3_querystart(to) &&
-	     Stage3_queryend(from) <= Stage3_queryend(to)) {
-    debug2(printf("false, because from %d..%d is subsumed by to %d..%d\n",
-		  Stage3_querystart(from),Stage3_queryend(from),
-		  Stage3_querystart(to),Stage3_queryend(to)));
-    return false;
-
-  } else if (Stage3_querystart(to) >= Stage3_querystart(from) &&
-	     Stage3_queryend(to) <= Stage3_queryend(from)) {
-    debug2(printf("false, because to %d..%d is subsumed by from %d..%d\n",
-		  Stage3_querystart(to),Stage3_queryend(to),
-		  Stage3_querystart(from),Stage3_queryend(from)));
-    return false;
-
-  } else if (Stage3_queryend(from) - Stage3_querystart(to) <= CHIMERA_SLOP &&
-	     Stage3_querystart(to) - Stage3_queryend(from) <= CHIMERA_SLOP) {
-    debug2(printf("true, because %d - %d <= %d and %d - %d <= %d\n",
-		  Stage3_queryend(from),Stage3_querystart(to),CHIMERA_SLOP,
-		  Stage3_querystart(to),Stage3_queryend(from),CHIMERA_SLOP));
-    return true;
-
-  } else {
-    debug2(printf(" %d and %d ",
-		  Stage3_queryend(from) - Stage3_querystart(to),Stage3_querystart(to) - Stage3_queryend(from)));
-    debug2(printf("false\n"));
-    return false;
-  }
-}
-
-
-static bool
-chimeric_join_p (Stage3_T from, Stage3_T to) {
-  debug2(printf("? chimeric_join_p from %d..%d (%u..%u) -> to %d..%d (%u..%u) => ",
-		Stage3_querystart(from),Stage3_queryend(from),
-		Stage3_chrstart(from),Stage3_chrend(from),
-		Stage3_querystart(to),Stage3_queryend(to),
-		Stage3_chrstart(to),Stage3_chrend(to)));
-
-  if (Stage3_chimera_right_p(from) == true) {
-    debug2(printf("false, because from is already part of a chimera on its right\n"));
-    return false;
-    
-  } else if (Stage3_chimera_left_p(to) == true) {
-    debug2(printf("false, because to is already part of a chimera on its left\n"));
-    return false;
-
-  } else if (Stage3_querystart(from) >= Stage3_querystart(to) &&
-      Stage3_queryend(from) <= Stage3_queryend(to)) {
-    debug2(printf("false, because from %d..%d is subsumed by to %d..%d\n",
-		  Stage3_querystart(from),Stage3_queryend(from),
-		  Stage3_querystart(to),Stage3_queryend(to)));
-    return false;
-  } else if (Stage3_querystart(to) >= Stage3_querystart(from) &&
-	     Stage3_queryend(to) <= Stage3_queryend(from)) {
-    debug2(printf("false, because to %d..%d is subsumed by from %d..%d\n",
-		  Stage3_querystart(to),Stage3_queryend(to),
-		  Stage3_querystart(from),Stage3_queryend(from)));
-    return false;
-  } else if (Stage3_queryend(from) - Stage3_querystart(to) <= CHIMERA_SLOP &&
-	     Stage3_querystart(to) - Stage3_queryend(from) <= CHIMERA_SLOP) {
-    debug2(printf("true, because %d - %d <= %d and %d - %d <= %d\n",
-		  Stage3_queryend(from),Stage3_querystart(to),CHIMERA_SLOP,
-		  Stage3_querystart(to),Stage3_queryend(from),CHIMERA_SLOP));
-    return true;
-  } else {
-    debug2(printf(" %d and %d ",
-		  Stage3_queryend(from) - Stage3_querystart(to),Stage3_querystart(to) - Stage3_queryend(from)));
-    debug2(printf("false\n"));
-    return false;
-  }
-}
-
-
-static bool
 middle_piece_local_p (int *querystart, int *queryend,
 		      Chrpos_T *chrstart, Chrpos_T *chrend,
 		      Chrnum_T *chrnum, Univcoord_T *chroffset, Univcoord_T *chrhigh,
@@ -1703,7 +1667,7 @@ local_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
   int npaths, i, j, k;
   int queryend;
 
-  debug2(printf("chimera_separate_paths called with list length %d\n",List_length(stage3list)));
+  debug2(printf("local_separate_paths called with list length %d\n",List_length(stage3list)));
 
   if (stage3list == NULL) {
     *stage3array_sub1 = (Stage3_T *) NULL;
@@ -1724,6 +1688,20 @@ local_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
   by_querystart = (Stage3_T *) List_to_array_n(&npaths,stage3list);
   qsort(by_querystart,npaths,sizeof(Stage3_T),Stage3_querystart_cmp);
 
+#ifdef DEBUG2
+  for (i = 0; i < npaths; i++) {
+    stage3 = (Stage3_T) by_queryend[i];
+    printf("from: %p query %d..%d, genomic %u..%u\t",
+	   stage3,Stage3_querystart(stage3),Stage3_queryend(stage3),
+	   Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+
+    stage3 = (Stage3_T) by_querystart[i];
+    printf("to: %p query %d..%d, genomic %u..%u\n",
+	   stage3,Stage3_querystart(stage3),Stage3_queryend(stage3),
+	   Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+  }
+#endif
+
   j = 0;
   for (i = 0; i < npaths; i++) {
     from = by_queryend[i];
@@ -1742,7 +1720,7 @@ local_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
     while (j < npaths && Stage3_querystart(by_querystart[j]) < queryend + CHIMERA_SLOP) {
       to = by_querystart[j];
 
-      if (local_join_p(from,to) == true) {
+      if (Chimera_local_join_p(from,to,CHIMERA_SLOP) == true) {
 	debug2(printf("Found join from %d to %d\n",i,j));
 	Stage3_set_joinable_left(from);
 	Stage3_set_joinable_right(to);
@@ -1798,7 +1776,7 @@ local_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
 
 /* Returns nonjoinable */
 static List_T
-chimera_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1, 
+distant_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1, 
 			Stage3_T **stage3array_sub2, int *npaths_sub2,
 			List_T stage3list) {
   List_T nonjoinable = NULL, p;
@@ -1807,7 +1785,7 @@ chimera_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
   int npaths, i, j, k;
   int queryend;
 
-  debug2(printf("chimera_separate_paths called with list length %d\n",List_length(stage3list)));
+  debug2(printf("distant_separate_paths called with list length %d\n",List_length(stage3list)));
 
   if (stage3list == NULL) {
     *stage3array_sub1 = (Stage3_T *) NULL;
@@ -1846,7 +1824,7 @@ chimera_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
     while (j < npaths && Stage3_querystart(by_querystart[j]) < queryend + CHIMERA_SLOP) {
       to = by_querystart[j];
 
-      if (chimeric_join_p(from,to) == true) {
+      if (Chimera_distant_join_p(from,to,CHIMERA_SLOP) == true) {
 	debug2(printf("Found join from %d to %d\n",i,j));
 	Stage3_set_joinable_left(from);
 	Stage3_set_joinable_right(to);
@@ -1904,14 +1882,14 @@ chimera_separate_paths (Stage3_T **stage3array_sub1, int *npaths_sub1,
 static List_T
 merge_left_and_right_readthrough (bool *mergedp, Stage3_T *stage3array_sub1, int npaths_sub1, int bestfrom,
 				  Stage3_T *stage3array_sub2, int npaths_sub2, int bestto,
-				  bool singlep, bool dualbreakp, char comp, int cdna_direction, List_T nonjoinable,
-				  int breakpoint, int queryjump, int genomejump, int queryntlength,
+				  List_T nonjoinable, int breakpoint, int queryntlength,
 #ifdef PMAP
 				  char *queryaaseq_ptr,
 #endif
 				  Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
-				  Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM,
-				  Dynprog_T dynprogR, Genome_T genome, int ngap) {
+				  Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+				  Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+				  int ngap) {
   List_T newstage3list, p;
   Stage3_T best0, best1, *array, last, freed0 = NULL, freed1 = NULL;
   int i, k;
@@ -1941,114 +1919,101 @@ merge_left_and_right_readthrough (bool *mergedp, Stage3_T *stage3array_sub1, int
     }
     *mergedp = false;
 
-  } else {
+  }
 #endif
 
-    if (singlep == true) {
-      /* Used to call with clip1 =
-	 0..(chimeraequivpos+chimera_overlap) and clip2 =
-	 (chimerapos+1-chimera_overlap)..queryntlength, but could
-	 exceed maxpeelback */
-      debug2(printf("Running Stage3_merge_local_single with clip1 = %d..%d and clip2 = %d..%d\n",
-		    0,breakpoint+chimera_overlap,breakpoint+1-chimera_overlap,queryntlength));
-      Stage3_merge_local_single(best0,best1,/*minpos1*/0,/*maxpos1*/breakpoint+chimera_overlap,
-				/*minpos2*/breakpoint+1-chimera_overlap,/*maxpos2*/queryntlength,cdna_direction,
+  debug2(printf("Running Stage3_merge_local\n"));
+  if (Stage3_merge_local(best0,best1,/*minpos1*/0,/*maxpos1*/breakpoint,
+			 /*minpos2*/breakpoint+1,/*maxpos2*/queryntlength,
+			 /*genestrand*/0,
 #ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				queryseq,queryseq_ptr,queryuc_ptr,
-				pairpool,dynprogM,maxpeelback,extraband_single,ngap);
-    } else if (dualbreakp == true) {
-      debug2(printf("Running Stage3_merge_local_splice with dualbreak\n"));
-      Stage3_merge_local_splice(best0,best1,/*comp*/DUALBREAK_COMP,/*minpos1*/0,/*maxpos1*/breakpoint,
-				/*minpos2*/breakpoint+1,/*maxpos2*/queryntlength,queryjump,genomejump,
-				cdna_direction,
-#ifdef PMAP
-				queryaaseq_ptr,
+			 queryaaseq_ptr,
 #endif
-				queryseq,queryseq_ptr,queryuc_ptr,
-				pairpool,dynprogL,dynprogM,dynprogR,
-				genome,genomealt ? genomealt : genome,
-				maxpeelback,extramaterial_paired,extraband_paired,
-				extraband_single,ngap);
-      debug2(printf("done with Stage3_merge_local_splice"));
+			 queryseq,queryseq_ptr,queryuc_ptr,
+			 pairpool,dynprogL,dynprogM,dynprogR,
+			 maxpeelback,nullgap,oligoindices_minor,diagpool,cellpool,
+			 sufflookback,nsufflookback,maxintronlen_bound,
+			 extramaterial_paired,extraband_paired,extraband_single,ngap,
+			 /*paired_favor_mode*/0,/*zero_offset*/0) == false) {
 
-    } else {
-      debug2(printf("Running Stage3_merge_local_splice without dualbreak\n"));
-      Stage3_merge_local_splice(best0,best1,comp,/*minpos1*/0,/*maxpos1*/breakpoint,
-				/*minpos2*/breakpoint+1,/*maxpos2*/queryntlength,queryjump,genomejump,
-				cdna_direction,
-#ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				queryseq,queryseq_ptr,queryuc_ptr,
-				pairpool,dynprogL,dynprogM,dynprogR,
-				genome,genomealt ? genomealt : genome,
-				maxpeelback,extramaterial_paired,extraband_paired,
-				extraband_single,ngap);
-      debug2(printf("done with Stage3_merge_local_splice"));
+    newstage3list = (List_T) NULL;
+    newstage3list = List_push(newstage3list,(void *) best0);
+    newstage3list = List_push(newstage3list,(void *) best1);
+    for (p = nonjoinable; p != NULL; p = List_next(p)) {
+      debug2(printf("1.  Pushing readthrough nonjoinable stage3 %p.  %d..%d\n",
+		    List_head(p),Stage3_querystart(List_head(p)),Stage3_queryend(List_head(p))));
+      if (List_head(p) == NULL) {
+	debug2(printf("Unexpected: Have a NULL stage3 in nonjoinable\n"));
+      } else {
+	newstage3list = List_push(newstage3list,(void *) List_head(p));
+      }
     }
+    *mergedp = false;
+    return List_reverse(newstage3list);
+
+  } else {
+    debug2(printf("done with Stage3_merge_local"));
+
     debug2(printf("Rearranging paths\n"));
     debug2(printf("Changing genomicend of merged stage3 from %u to %u\n",Stage3_genomicend(best0),Stage3_genomicend(best1)));
     Stage3_set_genomicend(best0,Stage3_genomicend(best1));
     newstage3list = (List_T) NULL;
     newstage3list = List_push(newstage3list,(void *) best0);
+    debug2(printf("Freeing best1 %p\n",best1));
     freed1 = best1;
     Stage3_free(&best1);
     debug2(printf("Pushing stage3 %p: ",best0));
     debug2(Stage3_print_ends(best0));
     *mergedp = true;
 
-#if 0
-  }
-#endif
-
-  if (npaths_sub1 + npaths_sub2 > 2) {
-    /* Push rest of results, taking care not to have duplicates */
+    if (npaths_sub1 + npaths_sub2 > 2) {
+      /* Push rest of results, taking care not to have duplicates */
 
-    array = (Stage3_T *) CALLOC(npaths_sub1 + npaths_sub2 - 2,sizeof(Stage3_T));
-    k = 0;
-    for (i = 0; i < npaths_sub1; i++) {
-      if (i != bestfrom) {
-	debug2(printf("array %d is now sub1 %d: %p\n",k,i,stage3array_sub1[i]));
-	array[k++] = stage3array_sub1[i];
+      array = (Stage3_T *) CALLOC(npaths_sub1 + npaths_sub2 - 2,sizeof(Stage3_T));
+      k = 0;
+      for (i = 0; i < npaths_sub1; i++) {
+	if (i != bestfrom) {
+	  debug2(printf("array %d is now sub1 %d: %p\n",k,i,stage3array_sub1[i]));
+	  array[k++] = stage3array_sub1[i];
+	}
       }
-    }
-    for (i = 0; i < npaths_sub2; i++) {
-      if (i != bestto) {
-	debug2(printf("array %d is now sub2 %d: %p\n",k,i,stage3array_sub2[i]));
-	array[k++] = stage3array_sub2[i];
+      for (i = 0; i < npaths_sub2; i++) {
+	if (i != bestto) {
+	  debug2(printf("array %d is now sub2 %d: %p\n",k,i,stage3array_sub2[i]));
+	  array[k++] = stage3array_sub2[i];
+	}
+      }
+      qsort(array,npaths_sub1+npaths_sub2-2,sizeof(Stage3_T),Stage3_identity_cmp);
+
+      last = (Stage3_T) NULL;
+      for (i = 0; i < npaths_sub1+npaths_sub2-2; i++) {
+	if (array[i] == last) {
+	  /* Skip */
+	  debug2(printf("array %d: Skipping stage3 %p, because just pushed, so duplicate\n",i,array[i]));
+	} else if (array[i] == best0 || array[i] == best1) {
+	  /* Skip */
+	  debug2(printf("array %d: Skipping stage3 %p, because in chimera\n",i,array[i]));
+	} else if (array[i] == freed0 || array[i] == freed1) {
+	  /* Skip */
+	  debug2(printf("array %d: Skipping stage3 %p, because already freed\n",i,array[i]));
+	} else {
+	  debug2(printf("array %d: Pushing stage3 %p\n",i,array[i]));
+	  newstage3list = List_push(newstage3list,(void *) array[i]);
+	  last = array[i];
+	}
       }
+
+      FREE(array);
     }
-    qsort(array,npaths_sub1+npaths_sub2-2,sizeof(Stage3_T),Stage3_identity_cmp);
 
-    last = (Stage3_T) NULL;
-    for (i = 0; i < npaths_sub1+npaths_sub2-2; i++) {
-      if (array[i] == last) {
-	/* Skip */
-	debug2(printf("array %d: Skipping stage3 %p, because just pushed, so duplicate\n",i,array[i]));
-      } else if (array[i] == best0 || array[i] == best1) {
-	/* Skip */
-	debug2(printf("array %d: Skipping stage3 %p, because in chimera\n",i,array[i]));
-      } else if (array[i] == freed0 || array[i] == freed1) {
-	/* Skip */
-	debug2(printf("array %d: Skipping stage3 %p, because already freed\n",i,array[i]));
-      } else {
-	debug2(printf("array %d: Pushing stage3 %p\n",i,array[i]));
-	newstage3list = List_push(newstage3list,(void *) array[i]);
-	last = array[i];
-      }
+    for (p = nonjoinable; p != NULL; p = List_next(p)) {
+      debug2(printf("2.  Pushing readthrough nonjoinable stage3 %p.  %d..%d\n",
+		    List_head(p),Stage3_querystart(List_head(p)),Stage3_queryend(List_head(p))));
+      newstage3list = List_push(newstage3list,(void *) List_head(p));
     }
 
-    FREE(array);
-  }
-
-  for (p = nonjoinable; p != NULL; p = List_next(p)) {
-    debug2(printf("Pushing readthrough nonjoinable stage3 %p\n",List_head(p)));
-    newstage3list = List_push(newstage3list,(void *) List_head(p));
+    return List_reverse(newstage3list);
   }
-
-  return List_reverse(newstage3list);
 }
 
 
@@ -2056,12 +2021,7 @@ merge_left_and_right_readthrough (bool *mergedp, Stage3_T *stage3array_sub1, int
 static List_T
 merge_left_and_right_transloc (Stage3_T *stage3array_sub1, int npaths_sub1, int bestfrom,
 			       Stage3_T *stage3array_sub2, int npaths_sub2, int bestto,
-			       List_T nonjoinable, int breakpoint, int queryntlength,
-#ifdef PMAP
-			       char *queryaaseq_ptr,
-#endif
-			       Sequence_T queryseq, Sequence_T queryuc, Pairpool_T pairpool,
-			       Dynprog_T dynprogL, Dynprog_T dynprogR, int ngap) {
+			       List_T nonjoinable) {
   List_T newstage3list, p;
   Stage3_T best0, best1, *array, last;
   int i, k;
@@ -2072,8 +2032,6 @@ merge_left_and_right_transloc (Stage3_T *stage3array_sub1, int npaths_sub1, int
   debug2(printf("\nEntering merge_left_and_right_transloc with bestfrom %d: %p, bestto %d: %p, and nonjoinable %d\n",
 		bestfrom,best0,bestto,best1,List_length(nonjoinable)));
 
-  debug2(printf("Calling Stage3_merge_chimera with breakpoint %d and querylength %d\n",
-		breakpoint,queryntlength));
   debug2(printf("Before Stage3_merge_chimera, best0 is %p, query %d..%d\n",
 		best0,Stage3_querystart(best0),Stage3_queryend(best0)));
   debug2(Stage3_print_ends(best0));
@@ -2136,18 +2094,20 @@ merge_left_and_right_transloc (Stage3_T *stage3array_sub1, int npaths_sub1, int
 
 
 static int
-find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int *exonexonpos, char *comp,
+find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int *exonexonpos,
 		 char *donor1, char *donor2, char *acceptor2, char *acceptor1,
-		 double *donor_prob, double *acceptor_prob, Stage3_T from, Stage3_T to,
+		 bool *donor_watsonp, bool *acceptor_watsonp, double *donor_prob, double *acceptor_prob,
+		 Stage3_T from, Stage3_T to,
 #ifdef PMAP
 		 Sequence_T queryntseq,
 #endif
 		 Sequence_T queryseq, Sequence_T queryuc,
 		 int queryntlength, Genome_T genome, Genome_T genomealt,
 		 Univ_IIT_T chromosome_iit, Pairpool_T pairpool) {
-  int breakpoint, leftpos, rightpos;
+  int breakpoint, leftpos, rightpos, midpos;
   int maxpeelback_from, maxpeelback_to;
   int found_cdna_direction, try_cdna_direction;
+  char comp;			/* Not really used anywhere */
 
   int queryjump;
   int genomejump;
@@ -2181,8 +2141,13 @@ find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int
     if ((rightpos = Stage3_queryend(from) + 8) >= queryntlength) {
       rightpos = queryntlength - 1;
     }
-    maxpeelback_from = rightpos - Stage3_querystart(to);
-    maxpeelback_to = leftpos - Stage3_queryend(from);
+    midpos = (leftpos+rightpos)/2;
+    /* maxpeelback_from = rightpos - Stage3_querystart(to); */
+    /* maxpeelback_to = Stage3_queryend(from) - leftpos; */
+    maxpeelback_from = rightpos - midpos;
+    maxpeelback_to = midpos - leftpos;
+    debug2(printf("overlap: leftpos %d, rightpos %d, midpos %d, maxpeelback_from %d, maxpeelback_to %d\n",
+		  leftpos,rightpos,midpos,maxpeelback_from,maxpeelback_to));
 #if 0
     if (Stage3_watsonp(from) == true && Stage3_watsonp(to) == true) {
       queryjump = Stage3_queryend(from) - Stage3_querystart(to) - 1;
@@ -2211,7 +2176,6 @@ find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int
   Stage3_extend_right(from,/*goal*/rightpos,
 #ifdef PMAP
 		      /*querylength*/Sequence_fulllength(queryntseq),
-		      /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 		      /*queryseq_ptr*/Sequence_fullpointer(queryntseq),
 		      /*queryuc_ptr*/Sequence_fullpointer(queryntseq),
 #else
@@ -2223,7 +2187,6 @@ find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int
 
   Stage3_extend_left(to,/*goal*/leftpos,
 #ifdef PMAP
-		     /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 		     /*queryseq_ptr*/Sequence_fullpointer(queryntseq),
 		     /*queryuc_ptr*/Sequence_fullpointer(queryntseq),
 #else
@@ -2239,25 +2202,26 @@ find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int
 		to,Stage3_querystart(to),Stage3_queryend(to)));
   debug2(Stage3_print_ends(to));
 
-  *chimerapos = Chimera_find_breakpoint(&(*chimeraequivpos),from,to,queryntlength);
-
-  debug2(printf("Chimera_find_breakpoint returns boundary at %d..%d (switch can occur at %d..%d)\n",
-		*chimerapos,*chimeraequivpos,(*chimerapos)-1,*chimeraequivpos));
-
   debug2(printf("Before Chimera_find_exonexon, bestfrom is %p, query %d..%d\n",
 		from,Stage3_querystart(from),Stage3_queryend(from)));
   debug2(printf("Before Chimera_find_exonexon, bestto is %p, query %d..%d\n",
 		to,Stage3_querystart(to),Stage3_queryend(to)));
 
   if ((*exonexonpos = Chimera_find_exonexon(&found_cdna_direction,&try_cdna_direction,
-					    &(*donor1),&(*donor2),&(*acceptor2),&(*acceptor1),&(*comp),&(*donor_prob),&(*acceptor_prob),
-					    from,to,genome,genomealt ? genomealt : genome,
-					    chromosome_iit,*chimerapos/*-1*/,*chimeraequivpos)) > 0) {
-    breakpoint = *exonexonpos;
+					    &(*donor1),&(*donor2),&(*acceptor2),&(*acceptor1),
+					    &comp,&(*donor_watsonp),&(*acceptor_watsonp),&(*donor_prob),&(*acceptor_prob),
+					    /*left_part*/from,/*right_part*/to,genome,genomealt ? genomealt : genome,
+					    chromosome_iit,/*breakpoint_start*/Stage3_querystart(to),
+					    /*breakpoint_end*/Stage3_queryend(from))) > 0) {
+    breakpoint = *chimerapos = *chimeraequivpos = *exonexonpos;
     *cdna_direction = found_cdna_direction;
     debug2(printf("Exon-exon boundary found at %d, which is breakpoint.  Comp = %c\n",
-		  *exonexonpos,*comp));
+		  *exonexonpos,comp));
   } else {
+    *chimerapos = Chimera_find_breakpoint(&(*chimeraequivpos),from,to,queryntlength);
+    debug2(printf("Chimera_find_breakpoint returns boundary at %d..%d (switch can occur at %d..%d)\n",
+		  *chimerapos,*chimeraequivpos,(*chimerapos)-1,*chimeraequivpos));
+
     breakpoint = ((*chimerapos) + (*chimeraequivpos))/2;
     *cdna_direction = try_cdna_direction;
     debug2(printf("Exon-exon boundary not found, but setting breakpoint to be %d\n",breakpoint));
@@ -2268,42 +2232,47 @@ find_breakpoint (int *cdna_direction, int *chimerapos, int *chimeraequivpos, int
 
 
 static List_T
-check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int effective_start, int effective_end,
-		   Sequence_T queryseq, Sequence_T queryuc, int queryntlength, Sequence_T usersegment, 
-		   Oligoindex_T *oligoindices_major, int noligoindices_major,
-		   Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		   Matchpool_T matchpool, Pairpool_T pairpool, 
-		   Diagpool_T diagpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
-  List_T gregions = NULL, nonjoinable = NULL;
-  Stage3_T *stage3array_sub1 = NULL, *stage3array_sub2 = NULL, from, to;
+check_for_local (bool *mergedp, List_T stage3list, int effective_start, int effective_end,
+		 Sequence_T queryseq, Sequence_T queryuc,
+#ifdef PMAP
+		 Sequence_T queryntseq,
+#endif
+		 int queryntlength, Sequence_T usersegment, 
+		 Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		 Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		 Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
+  List_T gregions = NULL, nonjoinable = NULL, p;
+  Stage3_T *stage3array_sub1 = NULL, *stage3array_sub2 = NULL, from, to, stage3;
   Sequence_T querysubseq = NULL, querysubuc = NULL;
   Diagnostic_T diagnostic;
   int bestfrom, bestto;
   int five_margin, three_margin, five_score = 0, three_score = 0;
+  int extension;
   int npaths_sub1 = 0, npaths_sub2 = 0;
   bool lowidentityp, poorp, repetitivep;
 
+  int max_single_goodness, chimeric_goodness, penalty, matches0, matches1;
   int breakpoint, chimerapos, chimeraequivpos, exonexonpos;
   int cdna_direction, chimera_cdna_direction;
   char donor1, donor2, acceptor2, acceptor1;
+  bool donor_watsonp, acceptor_watsonp;
   double donor_prob, acceptor_prob;
   char comp;
-
-  bool singlep, dualbreakp;
-  int queryjump;
-  int genomejump;
   
 
 #ifdef PMAP
-  Sequence_T queryntseq;
-  queryntseq = Sequence_convert_to_nucleotides(queryseq);
-#endif
-
-
+  five_margin = effective_start - 3*Sequence_trim_start(queryseq);
+  three_margin = 3*Sequence_trim_end(queryseq) - effective_end;
+  debug2(printf("Margins are %d = %d - %d on the 5' end and %d = %d - %d on the 3' end\n",
+		five_margin,effective_start,3*Sequence_trim_start(queryseq),
+		three_margin,3*Sequence_trim_end(queryseq),effective_end));
+#else
   five_margin = effective_start - Sequence_trim_start(queryseq);
   three_margin = Sequence_trim_end(queryseq) - effective_end;
-  debug2(printf("Margins are %d on the 5' end and %d on the 3' end\n",
-		five_margin,three_margin));
+  debug2(printf("Margins are %d = %d - %d on the 5' end and %d = %d - %d on the 3' end\n",
+		five_margin,effective_start,Sequence_trim_start(queryseq),
+		three_margin,Sequence_trim_end(queryseq),effective_end));
+#endif
 
 #ifdef DEBUG2A
   for (p = stage3list; p != NULL; p = List_next(p)) {
@@ -2313,6 +2282,16 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
   }
 #endif
 
+  Stage3_recompute_goodness(stage3list);
+  max_single_goodness = 0;
+  for (p = stage3list; p != NULL; p = List_next(p)) {
+    stage3 = (Stage3_T) List_head(p);
+    if (Stage3_goodness(stage3) > max_single_goodness) {
+      max_single_goodness = Stage3_goodness(stage3);
+    }
+  }
+  debug2(printf("max single goodness = %d\n",max_single_goodness));
+
 
   /* List_free(&nonjoinable); */
   debug2(printf("Running local_separate_paths\n"));
@@ -2322,38 +2301,49 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
 		npaths_sub1,npaths_sub2,List_length(nonjoinable)));
 
   if (npaths_sub1 == 0 && npaths_sub2 == 0) {
-    List_free(&nonjoinable);
-    debug2(printf("Running chimera_separate_paths\n"));
-    nonjoinable = chimera_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
-					 stage3list);
-    debug2(printf("chimera: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
-		  npaths_sub1,npaths_sub2,List_length(nonjoinable)));
-  }
-
-  if (npaths_sub1 == 0 && npaths_sub2 == 0) {
     /* Need to compute on margin explicitly */
     if (five_margin < chimera_margin && three_margin < chimera_margin) {
       debug2(printf("Insufficient margins\n"));
     } else if (five_margin > three_margin) {
-      if ((querysubseq = Sequence_subsequence(queryseq,0,effective_start+CHIMERA_SLOP)) != NULL) {
-	if ((querysubuc = Sequence_subsequence(queryuc,0,effective_start+CHIMERA_SLOP)) != NULL) {
+      extension = CHIMERA_SLOP;
+      debug2(printf("Comparing extension %d with %d = (effective_start %d)/2\n",
+		    extension,effective_start/2,effective_start));
+      if (extension > effective_start/2) {
+	/* Extension occupies more than 1/3 of sequence */
+	debug2(printf("Proposed extension of %d is too long relative to effective_start %d\n",extension,effective_start));
+	extension = effective_start/3;
+      }
+      if ((querysubseq = Sequence_subsequence(queryseq,0,effective_start+extension)) != NULL) {
+	if ((querysubuc = Sequence_subsequence(queryuc,0,effective_start+extension)) != NULL) {
 	  debug2(printf("5 margin > 3 margin.  "));
-	  debug2(printf("Beginning Stage1_compute on 5' margin (%d..%d)\n",0,effective_start+CHIMERA_SLOP));
+	  debug2(printf("Beginning Stage1_compute on 5' margin from effective_start %d (%d..%d)\n",
+			effective_start,0,effective_start+extension));
 	  debug2a(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
 
 	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
-				      oligoindices_major[0]);
+				      Oligoindex_array_elt(oligoindices_major,0));
 	  if (poorp == true || repetitivep == true) {
 	    debug2(printf("Subsequence is poor or repetitive\n"));
 	  } else {
 	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
-				      /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
 				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
-	    debug2(printf("Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
-	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,
-					      querysubuc,usersegment,oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+	    debug2(printf("A.  Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
 	  }
 	  Diagnostic_free(&diagnostic);
 
@@ -2367,22 +2357,34 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
       if ((querysubseq = Sequence_subsequence(queryseq,effective_start,queryntlength)) != NULL) {
 	if ((querysubuc = Sequence_subsequence(queryuc,effective_start,queryntlength)) != NULL) {
 	  debug2(printf("Recomputing on original part.  "));
-	  debug2(printf("Beginning Stage1_compute on 5' margin (%d..%d)\n",effective_start,queryntlength));
+	  debug2(printf("Beginning Stage1_compute on 5' margin from effective_start %d (%d..%d)\n",
+			effective_start,effective_start,queryntlength));
 	  debug2a(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
 
 	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
-				      oligoindices_major[0]);
+				      Oligoindex_array_elt(oligoindices_major,0));
 	  if (poorp == true || repetitivep == true) {
 	    debug2(printf("Subsequence is poor or repetitive\n"));
 	  } else {
 	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
-				      /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
 				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
-	    debug2(printf("Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
-	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,
-					      querysubuc,usersegment,oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+	    debug2(printf("B.  Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
 	  }
 	  Diagnostic_free(&diagnostic);
 
@@ -2399,36 +2401,395 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
       debug2(printf("local: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
 		    npaths_sub1,npaths_sub2,List_length(nonjoinable)));
 
-      if (npaths_sub1 == 0 && npaths_sub2 == 0) {
-	List_free(&nonjoinable);
-	debug2(printf("Running chimera_separate_paths\n"));
-	nonjoinable = chimera_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
-					     stage3list);
-	debug2(printf("chimera: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
-		      npaths_sub1,npaths_sub2,List_length(nonjoinable)));
+    } else {
+      extension = CHIMERA_SLOP;
+      debug2(printf("Comparing extension %d with %d = (queryntlength %d - effective_end %d)/2\n",
+		    extension,(queryntlength-effective_end)/2,queryntlength,effective_end));
+      if (extension > (queryntlength - effective_end)/2) {
+	/* Extension occupies more than 1/3 of sequence */
+	debug2(printf("Proposed extension of %d is too long relative to queryntlength %d and effective_end %d\n",
+		      extension,queryntlength,effective_end));
+	extension = (queryntlength - effective_end)/3;
+      }
+      if ((querysubseq = Sequence_subsequence(queryseq,effective_end-extension,queryntlength)) != NULL) {
+	if ((querysubuc = Sequence_subsequence(queryuc,effective_end-extension,queryntlength)) != NULL) {
+	  debug2(printf("5 margin <= 3 margin.  "));
+	  debug2(printf("Beginning Stage1_compute on 3' margin from effective_end %d (%d..%d)\n",
+			effective_end,effective_end-extension,queryntlength));
+	  debug2(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
+
+	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
+				      Oligoindex_array_elt(oligoindices_major,0));
+	  if (poorp == true || repetitivep == true) {
+	    debug2(printf("Subsequence is poor or repetitive\n"));
+	  } else {
+	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
+				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
+	    debug2(printf("C.  Performing Stage 3 with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
+	  }
+	  Diagnostic_free(&diagnostic);
+
+	  /* Above function frees gregions */
+	  Sequence_free(&querysubuc);
+	}
+	Sequence_free(&querysubseq);
+      }
+
+      /* And recompute on original part, just in case stage 1 was led astray by the ends */
+      if ((querysubseq = Sequence_subsequence(queryseq,0,effective_end)) != NULL) {
+	if ((querysubuc = Sequence_subsequence(queryuc,0,effective_end)) != NULL) {
+	  debug2(printf("Recomputing on original part.  "));
+	  debug2(printf("Beginning Stage1_compute on 3' margin from effective_end %d (%d..%d)\n",
+			effective_end,0,effective_end));
+	  debug2(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
+
+	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
+				      Oligoindex_array_elt(oligoindices_major,0));
+	  if (poorp == true || repetitivep == true) {
+	    debug2(printf("Subsequence is poor or repetitive\n"));
+	  } else {
+	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
+				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
+	    debug2(printf("D.  Performing Stage 3 with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
+	  }
+	  Diagnostic_free(&diagnostic);
+
+	  /* Above function frees gregions */
+	  Sequence_free(&querysubuc);
+
+	}
+	Sequence_free(&querysubseq);
+      }
+
+      List_free(&nonjoinable);
+      debug2(printf("Running local_separate_paths\n"));
+      nonjoinable = local_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
+					 stage3list);
+      debug2(printf("local: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
+		    npaths_sub1,npaths_sub2,List_length(nonjoinable)));
+    }
+  }
+
+  *mergedp = false;
+  if (npaths_sub1 == 0 || npaths_sub2 == 0) {
+    /* Skip */
+
+  } else if (Chimera_bestpath(&five_score,&three_score,&chimerapos,&chimeraequivpos,&bestfrom,&bestto,
+			      stage3array_sub1,npaths_sub1,stage3array_sub2,npaths_sub2,queryntlength,
+			      CHIMERA_SLOP,/*localp*/true) == false) {
+    /* Skip */
+    debug2(printf("Chimera_bestpath returns false\n"));
+
+    FREE(stage3array_sub2);
+    FREE(stage3array_sub1);
+
+  } else {
+    from = stage3array_sub1[bestfrom];
+    to = stage3array_sub2[bestto];
+    debug2(printf("Chimera_bestpath returns bestfrom %d (%d..%d, %u..%u) to bestto %d (%d..%d, %u..%u)\n",
+		  bestfrom,Stage3_querystart(from),Stage3_queryend(from),Stage3_genomicstart(from),Stage3_genomicend(from),
+		  bestto,Stage3_querystart(to),Stage3_queryend(to),Stage3_genomicstart(to),Stage3_genomicend(to)));
+
+    breakpoint = find_breakpoint(&chimera_cdna_direction,&chimerapos,&chimeraequivpos,&exonexonpos,
+				 &donor1,&donor2,&acceptor2,&acceptor1,
+				 &donor_watsonp,&acceptor_watsonp,&donor_prob,&acceptor_prob,from,to,
+#ifdef PMAP
+				 queryntseq,
+#endif
+				 queryseq,queryuc,queryntlength,
+				 genomecomp,genomecomp_alt,chromosome_iit,pairpool);
+    debug2(printf("find_breakpoint returns %d\n",breakpoint));
+
+    /* Check to see if we can merge chimeric parts */
+    debug2(printf("Before Stage3_mergeable, bestfrom is %p, query %d..%d\n",
+		  from,Stage3_querystart(from),Stage3_queryend(from)));
+    debug2(printf("Before Stage3_mergeable, bestto is %p, query %d..%d\n",
+		  to,Stage3_querystart(to),Stage3_queryend(to)));
+
+    if (Stage3_mergeable(from,to,breakpoint,queryntlength,maxintronlen_bound) == true) {
+      debug2(printf("Mergeable! -- Merging left and right as a readthrough\n"));
+      List_free(&stage3list);
+      stage3list = merge_left_and_right_readthrough(&(*mergedp),stage3array_sub1,npaths_sub1,bestfrom,
+						    stage3array_sub2,npaths_sub2,bestto,
+						    nonjoinable,breakpoint,queryntlength,
+#ifdef PMAP
+						    /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
+						    queryntseq,
+						    /*queryseq_ptr*/Sequence_fullpointer(queryntseq),
+						    /*queryuc_ptr*/Sequence_fullpointer(queryntseq),
+#else
+						    queryseq,
+						    /*queryseq_ptr*/Sequence_fullpointer(queryseq),
+						    /*queryuc_ptr*/Sequence_fullpointer(queryuc),
+#endif
+						    pairpool,dynprogL,dynprogM,dynprogR,
+						    oligoindices_minor,diagpool,cellpool,ngap);
+    }
+
+    FREE(stage3array_sub2);
+    FREE(stage3array_sub1);
+  }
+
+  List_free(&nonjoinable);
+
+  debug2(printf("check_for_local returning list of length %d\n",List_length(stage3list)));
+
+  /* stage3list = stage3list_remove_empties(stage3list); */
+
+#if 0
+  /* Should be handled by apply_stage3 loop */
+  /* Needed after calls to stage3_from_gregions */
+  Stage3_recompute_goodness(stage3list);
+  stage3list = stage3list_remove_duplicates(stage3list);
+#endif
+
+  return stage3list;
+}
+
+
+static List_T
+check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int effective_start, int effective_end,
+		   Sequence_T queryseq, Sequence_T queryuc,
+#ifdef PMAP
+		   Sequence_T queryntseq,
+#endif
+		   int queryntlength, Sequence_T usersegment, 
+		   Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		   Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		   Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
+  List_T gregions = NULL, nonjoinable = NULL, p;
+  Stage3_T *stage3array_sub1 = NULL, *stage3array_sub2 = NULL, from, to, stage3;
+  Sequence_T querysubseq = NULL, querysubuc = NULL;
+  Diagnostic_T diagnostic;
+  int bestfrom, bestto;
+  int five_margin, three_margin, five_score = 0, three_score = 0;
+  int extension;
+  int npaths_sub1 = 0, npaths_sub2 = 0;
+  bool lowidentityp, poorp, repetitivep;
+
+  int max_single_goodness, chimeric_goodness, penalty, matches0, matches1;
+  int breakpoint, chimerapos, chimeraequivpos, exonexonpos;
+  int cdna_direction, chimera_cdna_direction;
+  char donor1, donor2, acceptor2, acceptor1;
+  bool donor_watsonp, acceptor_watsonp;
+  double donor_prob, acceptor_prob;
+  char comp;
+  
+
+#ifdef PMAP
+  five_margin = effective_start - 3*Sequence_trim_start(queryseq);
+  three_margin = 3*Sequence_trim_end(queryseq) - effective_end;
+  debug2(printf("Margins are %d = %d - %d on the 5' end and %d = %d - %d on the 3' end\n",
+		five_margin,effective_start,3*Sequence_trim_start(queryseq),
+		three_margin,3*Sequence_trim_end(queryseq),effective_end));
+#else
+  five_margin = effective_start - Sequence_trim_start(queryseq);
+  three_margin = Sequence_trim_end(queryseq) - effective_end;
+  debug2(printf("Margins are %d = %d - %d on the 5' end and %d = %d - %d on the 3' end\n",
+		five_margin,effective_start,Sequence_trim_start(queryseq),
+		three_margin,Sequence_trim_end(queryseq),effective_end));
+#endif
+
+#ifdef DEBUG2A
+  for (p = stage3list; p != NULL; p = List_next(p)) {
+    stage3 = (Stage3_T) List_head(p);
+    Pair_dump_array(Stage3_pairarray(stage3),Stage3_npairs(stage3),/*zerobasedp*/true);
+    printf("\n");
+  }
+#endif
+
+  Stage3_recompute_goodness(stage3list);
+  max_single_goodness = 0;
+  for (p = stage3list; p != NULL; p = List_next(p)) {
+    stage3 = (Stage3_T) List_head(p);
+    if (Stage3_goodness(stage3) > max_single_goodness) {
+      max_single_goodness = Stage3_goodness(stage3);
+    }
+  }
+  debug2(printf("max single goodness = %d\n",max_single_goodness));
+
+
+  /* List_free(&nonjoinable); */
+  debug2(printf("Running distant_separate_paths\n"));
+  nonjoinable = distant_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
+				       stage3list);
+  debug2(printf("chimera: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
+		npaths_sub1,npaths_sub2,List_length(nonjoinable)));
+
+  if (npaths_sub1 == 0 && npaths_sub2 == 0) {
+    /* Need to compute on margin explicitly */
+    if (five_margin < chimera_margin && three_margin < chimera_margin) {
+      debug2(printf("Insufficient margins\n"));
+    } else if (five_margin > three_margin) {
+      extension = CHIMERA_SLOP;
+      debug2(printf("Comparing extension %d with %d = (effective_start %d)/2\n",
+		    extension,effective_start/2,effective_start));
+      if (extension > effective_start/2) {
+	/* Extension occupies more than 1/3 of sequence */
+	debug2(printf("Proposed extension of %d is too long relative to effective_start %d\n",extension,effective_start));
+	extension = effective_start/3;
+      }
+      if ((querysubseq = Sequence_subsequence(queryseq,0,effective_start+extension)) != NULL) {
+	if ((querysubuc = Sequence_subsequence(queryuc,0,effective_start+extension)) != NULL) {
+	  debug2(printf("5 margin > 3 margin.  "));
+	  debug2(printf("Beginning Stage1_compute on 5' margin from effective_start %d (%d..%d)\n",
+			effective_start,0,effective_start+extension));
+	  debug2a(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
+
+	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
+				      Oligoindex_array_elt(oligoindices_major,0));
+	  if (poorp == true || repetitivep == true) {
+	    debug2(printf("Subsequence is poor or repetitive\n"));
+	  } else {
+	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
+				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
+	    debug2(printf("A.  Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
+	  }
+	  Diagnostic_free(&diagnostic);
+
+	  /* Above function frees gregions */
+	  Sequence_free(&querysubuc);
+	}
+	Sequence_free(&querysubseq);
       }
-      debug2(printf("Got %d and %d paths\n",npaths_sub1,npaths_sub2));
+
+      /* And recompute on original part, just in case stage 1 was led astray by the ends */
+      if ((querysubseq = Sequence_subsequence(queryseq,effective_start,queryntlength)) != NULL) {
+	if ((querysubuc = Sequence_subsequence(queryuc,effective_start,queryntlength)) != NULL) {
+	  debug2(printf("Recomputing on original part.  "));
+	  debug2(printf("Beginning Stage1_compute on 5' margin from effective_start %d (%d..%d)\n",
+			effective_start,effective_start,queryntlength));
+	  debug2a(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
+
+	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
+				      Oligoindex_array_elt(oligoindices_major,0));
+	  if (poorp == true || repetitivep == true) {
+	    debug2(printf("Subsequence is poor or repetitive\n"));
+	  } else {
+	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
+				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
+	    debug2(printf("B.  Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
+	  }
+	  Diagnostic_free(&diagnostic);
+
+	  /* Above function frees gregions */
+	  Sequence_free(&querysubuc);
+	}
+	Sequence_free(&querysubseq);
+      }
+
+      List_free(&nonjoinable);
+      debug2(printf("Running distant_separate_paths\n"));
+      nonjoinable = distant_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
+					   stage3list);
+      debug2(printf("chimera: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
+		    npaths_sub1,npaths_sub2,List_length(nonjoinable)));
 
     } else {
-      if ((querysubseq = Sequence_subsequence(queryseq,effective_end-CHIMERA_SLOP,queryntlength)) != NULL) {
-	if ((querysubuc = Sequence_subsequence(queryuc,effective_end-CHIMERA_SLOP,queryntlength)) != NULL) {
+      extension = CHIMERA_SLOP;
+      debug2(printf("Comparing extension %d with %d = (queryntlength %d - effective_end %d)/2\n",
+		    extension,(queryntlength-effective_end)/2,queryntlength,effective_end));
+      if (extension > (queryntlength - effective_end)/2) {
+	/* Extension occupies more than 1/3 of sequence */
+	debug2(printf("Proposed extension of %d is too long relative to queryntlength %d and effective_end %d\n",
+		      extension,queryntlength,effective_end));
+	extension = (queryntlength - effective_end)/3;
+      }
+      if ((querysubseq = Sequence_subsequence(queryseq,effective_end-extension,queryntlength)) != NULL) {
+	if ((querysubuc = Sequence_subsequence(queryuc,effective_end-extension,queryntlength)) != NULL) {
 	  debug2(printf("5 margin <= 3 margin.  "));
-	  debug2(printf("Beginning Stage1_compute on 3' margin (%d..%d)\n",effective_end-CHIMERA_SLOP,queryntlength));
+	  debug2(printf("Beginning Stage1_compute on 3' margin from effective_end %d (%d..%d)\n",
+			effective_end,effective_end-extension,queryntlength));
 	  debug2(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
 
 	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
-				      oligoindices_major[0]);
+				      Oligoindex_array_elt(oligoindices_major,0));
 	  if (poorp == true || repetitivep == true) {
 	    debug2(printf("Subsequence is poor or repetitive\n"));
 	  } else {
 	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
-				      /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
 				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
-	    debug2(printf("Performing Stage 3 with list length %d\n",List_length(stage3list)));
-	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,
-					      querysubuc,usersegment,oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+	    debug2(printf("C.  Performing Stage 3 with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
 	  }
 	  Diagnostic_free(&diagnostic);
 
@@ -2442,22 +2803,34 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
       if ((querysubseq = Sequence_subsequence(queryseq,0,effective_end)) != NULL) {
 	if ((querysubuc = Sequence_subsequence(queryuc,0,effective_end)) != NULL) {
 	  debug2(printf("Recomputing on original part.  "));
-	  debug2(printf("Beginning Stage1_compute on 3' margin (%d..%d)\n",0,effective_end));
+	  debug2(printf("Beginning Stage1_compute on 3' margin from effective_end %d (%d..%d)\n",
+			effective_end,0,effective_end));
 	  debug2(Sequence_print(stdout,querysubseq,/*uppercasep*/true,wraplength,/*trimmedp*/true));
 
 	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),Sequence_fulllength(querysubuc),
-				      oligoindices_major[0]);
+				      Oligoindex_array_elt(oligoindices_major,0));
 	  if (poorp == true || repetitivep == true) {
 	    debug2(printf("Subsequence is poor or repetitive\n"));
 	  } else {
 	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
-				      /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
 				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
-	    debug2(printf("Performing Stage 3 with list length %d\n",List_length(stage3list)));
-	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,
-					      querysubuc,usersegment,oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+	    debug2(printf("D.  Performing Stage 3 with list length %d\n",List_length(stage3list)));
+	    stage3list = stage3_from_gregions(stage3list,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+					      queryntseq,
+#endif
+					      usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 					      dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
+#ifdef DEBUG2
+	    for (p = stage3list; p != NULL; p = List_next(p)) {
+	      stage3 = (Stage3_T) List_head(p);
+	      printf("%d..%d, %u..%u\n",
+		     Stage3_querystart(stage3),Stage3_queryend(stage3),
+		     Stage3_genomicstart(stage3),Stage3_genomicend(stage3));
+	    }
+#endif
 	  }
 	  Diagnostic_free(&diagnostic);
 
@@ -2469,123 +2842,94 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
       }
 
       List_free(&nonjoinable);
-      debug2(printf("Running local_separate_paths\n"));
-      nonjoinable = local_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
-					 stage3list);
-      debug2(printf("local: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
+      debug2(printf("Running distant_separate_paths\n"));
+      nonjoinable = distant_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
+					   stage3list);
+      debug2(printf("chimera: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
 		    npaths_sub1,npaths_sub2,List_length(nonjoinable)));
-
-      if (npaths_sub1 == 0 && npaths_sub2 == 0) {
-	List_free(&nonjoinable);
-	debug2(printf("Running chimera_separate_paths\n"));
-	nonjoinable = chimera_separate_paths(&stage3array_sub1,&npaths_sub1,&stage3array_sub2,&npaths_sub2,
-					     stage3list);
-	debug2(printf("chimera: npaths_sub1 %d, npaths_sub2 %d, nonjoinable %d\n",
-		      npaths_sub1,npaths_sub2,List_length(nonjoinable)));
-      }
-      debug2(printf("Got %d and %d paths\n",npaths_sub1,npaths_sub2));
     }
   }
 
   *mergedp = false;
+  *chimera = (Chimera_T) NULL;
   if (npaths_sub1 == 0 || npaths_sub2 == 0) {
-    *chimera = (Chimera_T) NULL;
+    /* Skip */
 
-  } else {
-    Chimera_bestpath(&five_score,&three_score,&chimerapos,&chimeraequivpos,&bestfrom,&bestto,
-		     stage3array_sub1,npaths_sub1,stage3array_sub2,npaths_sub2,queryntlength);
+  } else if (Chimera_bestpath(&five_score,&three_score,&chimerapos,&chimeraequivpos,&bestfrom,&bestto,
+			      stage3array_sub1,npaths_sub1,stage3array_sub2,npaths_sub2,queryntlength,
+			      CHIMERA_SLOP,/*localp*/false) == false) {
+    /* Skip */
+    FREE(stage3array_sub2);
+    FREE(stage3array_sub1);
 
+  } else {
     from = stage3array_sub1[bestfrom];
     to = stage3array_sub2[bestto];
     debug2(printf("Chimera_bestpath returns bestfrom %d (%d..%d, %u..%u) to bestto %d (%d..%d, %u..%u)\n",
 		  bestfrom,Stage3_querystart(from),Stage3_queryend(from),Stage3_genomicstart(from),Stage3_genomicend(from),
 		  bestto,Stage3_querystart(to),Stage3_queryend(to),Stage3_genomicstart(to),Stage3_genomicend(to)));
 
-    /*
-      chimeric_goodness = Stage3_chimeric_goodness(&matches0,&matches1,from,to,chimerapos);
-    */
+    chimeric_goodness = Stage3_chimeric_goodness(&matches0,&matches1,from,to,chimerapos);
+    debug2(printf("chimeric goodness = %d\n",chimeric_goodness));
     
-    breakpoint = find_breakpoint(&chimera_cdna_direction,&chimerapos,&chimeraequivpos,&exonexonpos,
-				 &comp,&donor1,&donor2,&acceptor2,&acceptor1,
-				 &donor_prob,&acceptor_prob,from,to,
-#ifdef PMAP
-				 queryntseq,
-#endif
-				 queryseq,queryuc,queryntlength,
-				 genome,genomealt,chromosome_iit,pairpool);
-
-    /* Check to see if we can merge chimeric parts */
-    debug2(printf("Before Stage3_mergeable, bestfrom is %p, query %d..%d\n",
-		  from,Stage3_querystart(from),Stage3_queryend(from)));
-    debug2(printf("Before Stage3_mergeable, bestto is %p, query %d..%d\n",
-		  to,Stage3_querystart(to),Stage3_queryend(to)));
-
-    if (Stage3_mergeable(&singlep,&dualbreakp,&cdna_direction,&queryjump,&genomejump,from,to,
-			 breakpoint,queryntlength,donor_prob,acceptor_prob) == true) {
-      debug2(printf("Mergeable! -- Merging left and right as a readthrough.  cdna_direction = %d\n",cdna_direction));
-      List_free(&stage3list);
-      stage3list = merge_left_and_right_readthrough(&(*mergedp),stage3array_sub1,npaths_sub1,bestfrom,
-						    stage3array_sub2,npaths_sub2,bestto,
-						    singlep,dualbreakp,comp,cdna_direction,nonjoinable,
-						    breakpoint,queryjump,genomejump,queryntlength,
-#ifdef PMAP
-						    /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
-						    queryntseq,
-						    /*queryseq_ptr*/Sequence_fullpointer(queryntseq),
-						    /*queryuc_ptr*/Sequence_fullpointer(queryntseq),
-#else
-						    queryseq,
-						    /*queryseq_ptr*/Sequence_fullpointer(queryseq),
-						    /*queryuc_ptr*/Sequence_fullpointer(queryuc),
-#endif
-						    pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
-#ifndef PMAP
-      if (cdna_direction == 0) {
-	Stage3_guess_cdna_direction(from);
-      }
-#endif
-
-#if 0
-      best1 = stage3array[1];
-      Stage3_free(&best1);
-      for (j = 2; j < *npaths; j++) {
-	stage3array[j-1] = stage3array[j];
-      }
-      stage3array[(*npaths)-1] = (Stage3_T) NULL;
-      *npaths -= 1;
-      Chimera_free(&(*chimera));
-#endif
+    penalty = CHIMERA_PENALTY;
+    if (chimera_margin < penalty) {
+      /* User is looking for higher sensitivity */
+      penalty = chimera_margin;
+    }
 
-    } else if (Stage3_test_bounds(from,0,chimeraequivpos+chimera_overlap) == true &&
-	       Stage3_test_bounds(to,chimerapos+1-chimera_overlap,queryntlength) == true &&
-	       Stage3_merge_chimera(/*best0*/from,/*best1*/to,
-				    /*minpos1*/0,/*maxpos1*/breakpoint,
-				    /*minpos2*/breakpoint+1,/*maxpos2*/queryntlength,
+    if (chimeric_goodness < max_single_goodness + penalty) {
+      debug2(printf("chimeric goodness not good enough relative to max_single_goodness %d and penalty %d\n",
+		    max_single_goodness,penalty));
+    } else {
+      breakpoint = find_breakpoint(&chimera_cdna_direction,&chimerapos,&chimeraequivpos,&exonexonpos,
+				   &donor1,&donor2,&acceptor2,&acceptor1,
+				   &donor_watsonp,&acceptor_watsonp,&donor_prob,&acceptor_prob,from,to,
 #ifdef PMAP
-				    queryaaseq_ptr,
+				   queryntseq,
 #endif
-				    queryseq,queryuc,pairpool,dynprogL,dynprogR,
-				    maxpeelback,maxpeelback_distalmedial,nullgap,
-				    extramaterial_end,extraband_end,ngap) == true) {
-
-      *chimera = Chimera_new(chimerapos,chimeraequivpos,exonexonpos,chimera_cdna_direction,
-			     donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob);
-      debug2(printf("Not mergeable -- Merging left and right as a transloc\n"));
-      List_free(&stage3list);
+				   queryseq,queryuc,queryntlength,
+				   genomecomp,genomecomp_alt,chromosome_iit,pairpool);
+      debug2(printf("find_breakpoint returns %d\n",breakpoint));
 
-      debug2(printf("Before merge_left_and_right_transloc, bestfrom is %p, query %d..%d\n",
+      /* Check to see if we can merge chimeric parts */
+      debug2(printf("Before Stage3_mergeable, bestfrom is %p, query %d..%d\n",
 		    from,Stage3_querystart(from),Stage3_queryend(from)));
-      debug2(printf("Before merge_left_and_right_transloc, bestto is %p, query %d..%d\n",
+      debug2(printf("Before Stage3_mergeable, bestto is %p, query %d..%d\n",
 		    to,Stage3_querystart(to),Stage3_queryend(to)));
 
-
-      stage3list = merge_left_and_right_transloc(stage3array_sub1,npaths_sub1,bestfrom,
-						 stage3array_sub2,npaths_sub2,bestto,
-						 nonjoinable,breakpoint,queryntlength,
+      if (Stage3_mergeable(from,to,breakpoint,queryntlength,maxintronlen_bound) == false &&
+	  Stage3_test_bounds(from,0,chimeraequivpos+chimera_overlap) == true &&
+	  Stage3_test_bounds(to,chimerapos+1-chimera_overlap,queryntlength) == true &&
+	  Stage3_merge_chimera(/*best0*/from,/*best1*/to,
+			       /*minpos1*/0,/*maxpos1*/breakpoint,
+			       /*minpos2*/breakpoint+1,/*maxpos2*/queryntlength,
 #ifdef PMAP
-						 /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
+			       Sequence_fullpointer(queryntseq),Sequence_fullpointer(queryntseq),
+#else
+			       Sequence_fullpointer(queryseq),Sequence_fullpointer(queryuc),
 #endif
-						 queryseq,queryuc,pairpool,dynprogL,dynprogR,ngap);
+			       pairpool,dynprogL,dynprogR,maxpeelback,maxpeelback_distalmedial,nullgap,
+			       extramaterial_end,extraband_end,ngap) == true) {
+	
+	/* if maxpaths == 1, then don't want distant chimeras */
+	if (maxpaths != 1) {
+	  *chimera = Chimera_new(from,to,chimerapos,chimeraequivpos,exonexonpos,chimera_cdna_direction,
+				 donor1,donor2,acceptor2,acceptor1,donor_watsonp,acceptor_watsonp,
+				 donor_prob,acceptor_prob);
+	  debug2(printf("Not mergeable -- Merging left and right as a transloc\n"));
+	  List_free(&stage3list);
+
+	  debug2(printf("Before merge_left_and_right_transloc, bestfrom is %p, query %d..%d\n",
+			from,Stage3_querystart(from),Stage3_queryend(from)));
+	  debug2(printf("Before merge_left_and_right_transloc, bestto is %p, query %d..%d\n",
+			to,Stage3_querystart(to),Stage3_queryend(to)));
+	  
+	  stage3list = merge_left_and_right_transloc(stage3array_sub1,npaths_sub1,bestfrom,
+						     stage3array_sub2,npaths_sub2,bestto,
+						     nonjoinable);
+	}
+      }
     }
 
     FREE(stage3array_sub2);
@@ -2594,10 +2938,6 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
 
   List_free(&nonjoinable);
 
-#ifdef PMAP
-  Sequence_free(&queryntseq);
-#endif
-
   debug2(printf("check_for_chimera returning list of length %d\n",List_length(stage3list)));
 
 #if 0
@@ -2614,17 +2954,13 @@ check_for_chimera (bool *mergedp, Chimera_T *chimera, List_T stage3list, int eff
 static List_T
 merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
 		    List_T middlepieces, Stage3_T middle, bool mergeableAp, bool mergeableBp,
-		    bool singleAp, bool dualbreakAp, char compA, int cdna_direction_A,
-		    int breakpointA, int queryjumpA, int genomejumpA,
-		    bool singleBp, bool dualbreakBp, char compB, int cdna_direction_B,
-		    int breakpointB, int queryjumpB, int genomejumpB,
-		    Sequence_T queryseq,
+		    int breakpointA, int breakpointB, Sequence_T queryseq,
 #ifdef PMAP
 		    Sequence_T queryntseq,
 #endif
 		    Sequence_T queryuc, int queryntlength,
 		    Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-		    Genome_T genome, int ngap) {
+		    Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool, int ngap) {
   List_T newstage3list = NULL, merged;
   List_T nonjoinable, r;
   bool mergedAp, mergedBp;
@@ -2646,8 +2982,7 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
   if (mergeableAp == true && mergeableBp == true) {
     merged = merge_left_and_right_readthrough(&mergedAp,/*stage3array_sub1*/&from,/*npaths_sub1*/1,/*bestfrom*/0,
 					      /*stage3array_sub2*/&middle,/*npaths_sub2*/1,/*bestto*/0,
-					      singleAp,dualbreakAp,compA,cdna_direction_A,/*nonjoinable*/NULL,
-					      breakpointA,queryjumpA,genomejumpA,queryntlength,
+					      /*nonjoinable*/NULL,breakpointA,queryntlength,
 #ifdef PMAP
 					      /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 					      queryntseq,
@@ -2658,13 +2993,13 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
 					      /*queryseq_ptr*/Sequence_fullpointer(queryseq),
 					      /*queryuc_ptr*/Sequence_fullpointer(queryuc),
 #endif
-					      pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
+					      pairpool,dynprogL,dynprogM,dynprogR,
+					      oligoindices_minor,diagpool,cellpool,ngap);
     List_free(&merged);
 
     newstage3list = merge_left_and_right_readthrough(&mergedBp,/*stage3array_sub1*/&from,/*npaths_sub1*/1,/*bestfrom*/0,
 						     /*stage3array_sub2*/&to,/*npaths_sub2*/1,/*bestto*/0,
-						     singleBp,dualbreakBp,compB,cdna_direction_B,nonjoinable,
-						     breakpointB,queryjumpB,genomejumpB,queryntlength,
+						     nonjoinable,breakpointB,queryntlength,
 #ifdef PMAP
 						     /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 						     queryntseq,
@@ -2675,7 +3010,8 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
 						     /*queryseq_ptr*/Sequence_fullpointer(queryseq),
 						     /*queryuc_ptr*/Sequence_fullpointer(queryuc),
 #endif
-						     pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
+						     pairpool,dynprogL,dynprogM,dynprogR,
+						     oligoindices_minor,diagpool,cellpool,ngap);
 
 #ifndef PMAP
     Stage3_guess_cdna_direction(from);
@@ -2686,8 +3022,7 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
     nonjoinable = List_push(nonjoinable,(void *) from);
     newstage3list = merge_left_and_right_readthrough(&mergedBp,/*stage3array_sub1*/&middle,/*npaths_sub1*/1,/*bestfrom*/0,
 						     /*stage3array_sub2*/&to,/*npaths_sub2*/1,/*bestto*/0,
-						     singleBp,dualbreakBp,compB,cdna_direction_B,nonjoinable,
-						     breakpointB,queryjumpB,genomejumpB,queryntlength,
+						     nonjoinable,breakpointB,queryntlength,
 #ifdef PMAP
 						     /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 						     queryntseq,
@@ -2698,7 +3033,8 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
 						     /*queryseq_ptr*/Sequence_fullpointer(queryseq),
 						     /*queryuc_ptr*/Sequence_fullpointer(queryuc),
 #endif
-						     pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
+						     pairpool,dynprogL,dynprogM,dynprogR,
+						     oligoindices_minor,diagpool,cellpool,ngap);
 #ifndef PMAP
     Stage3_guess_cdna_direction(middle);
 #endif
@@ -2708,8 +3044,7 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
     nonjoinable = List_push(nonjoinable,(void *) to);
     newstage3list = merge_left_and_right_readthrough(&mergedAp,/*stage3array_sub1*/&from,/*npaths_sub1*/1,/*bestfrom*/0,
 						     /*stage3array_sub2*/&middle,/*npaths_sub2*/1,/*bestto*/0,
-						     singleAp,dualbreakAp,compA,cdna_direction_A,nonjoinable,
-						     breakpointA,queryjumpA,genomejumpA,queryntlength,
+						     nonjoinable,breakpointA,queryntlength,
 #ifdef PMAP
 						     /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 						     queryntseq,
@@ -2720,7 +3055,8 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
 						     /*queryseq_ptr*/Sequence_fullpointer(queryseq),
 						     /*queryuc_ptr*/Sequence_fullpointer(queryuc),
 #endif
-						     pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
+						     pairpool,dynprogL,dynprogM,dynprogR,
+						     oligoindices_minor,diagpool,cellpool,ngap);
 #ifndef PMAP
     Stage3_guess_cdna_direction(from);
 #endif
@@ -2750,12 +3086,14 @@ merge_middlepieces (List_T stage3list, Stage3_T from, Stage3_T to,
 
 /* Returns stage3list */
 static List_T
-check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
-			  Sequence_T queryuc, int queryntlength, Sequence_T usersegment, 
-			  Oligoindex_T *oligoindices_major, int noligoindices_major,
-			  Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			  Matchpool_T matchpool, Pairpool_T pairpool, 
-			  Diagpool_T diagpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
+check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq, Sequence_T queryuc,
+#ifdef PMAP
+			  Sequence_T queryntseq,
+#endif
+			  int queryntlength, Sequence_T usersegment, 
+			  Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			  Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+			  Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
   Sequence_T querysubseq = NULL, querysubuc = NULL;
   int npaths, i, j;
   Stage3_T from = NULL, to = NULL, middle = NULL;
@@ -2768,31 +3106,21 @@ check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
   Chrnum_T chrnum;
 
   int breakpointA = 0, chimeraposA, chimeraequivposA, exonexonposA;
-  int cdna_direction_A;
   char donorA1, donorA2, acceptorA2, acceptorA1;
+  bool donor_watsonp_A, acceptor_watsonp_A;
   double donor_prob_A, acceptor_prob_A;
-  char compA;
 
   int breakpointB = 0, chimeraposB, chimeraequivposB, exonexonposB;
-  int cdna_direction_B;
   char donorB1, donorB2, acceptorB2, acceptorB1;
+  bool donor_watsonp_B, acceptor_watsonp_B;
   double donor_prob_B, acceptor_prob_B;
-  char compB;
 
   int chimera_cdna_direction_A, chimera_cdna_direction_B;
   bool mergeableAp, mergeableBp;
-  bool singleAp, dualbreakAp, singleBp, dualbreakBp;
-  int queryjumpA, queryjumpB;
-  int genomejumpA, genomejumpB;
 
   List_T middlepieces;
 
 
-#ifdef PMAP
-  Sequence_T queryntseq;
-  queryntseq = Sequence_convert_to_nucleotides(queryseq);
-#endif
-
 #ifdef DEBUG2A
   for (p = stage3list; p != NULL; p = List_next(p)) {
     stage3 = (Stage3_T) List_head(p);
@@ -2840,8 +3168,7 @@ check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
 #ifdef PMAP
 						  queryntseq,
 #endif
-						  querysubuc,oligoindices_major,noligoindices_major,
-						  oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+						  querysubuc,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 						  /*straintype*/0,/*strain*/NULL,chrnum,
 						  chroffset,chrhigh,chrlength,chrstart,chrend,plusp,/*genestrand*/0,
 						  dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL)) != NULL) {
@@ -2852,37 +3179,34 @@ check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
 	      mergeableAp = mergeableBp = false;
 	      while (r != NULL && (mergeableAp == false || mergeableBp == false)) {
 		middle = (Stage3_T) List_head(r);
-		if (local_join_p(from,middle) == true && local_join_p(middle,to) == true) {
+		if (Chimera_local_join_p(from,middle,CHIMERA_SLOP) == true && Chimera_local_join_p(middle,to,CHIMERA_SLOP) == true) {
 		  breakpointA = find_breakpoint(&chimera_cdna_direction_A,&chimeraposA,&chimeraequivposA,&exonexonposA,
-						&compA,&donorA1,&donorA2,&acceptorA2,&acceptorA1,
-						&donor_prob_A,&acceptor_prob_A,from,/*to*/middle,
+						&donorA1,&donorA2,&acceptorA2,&acceptorA1,
+						&donor_watsonp_A,&acceptor_watsonp_A,&donor_prob_A,&acceptor_prob_A,
+						from,/*to*/middle,
 #ifdef PMAP
 						queryntseq,
 #endif
 						queryseq,queryuc,queryntlength,
-						genome,genomealt,chromosome_iit,pairpool);
+						genomecomp,genomecomp_alt,chromosome_iit,pairpool);
 		  breakpointB = find_breakpoint(&chimera_cdna_direction_B,&chimeraposB,&chimeraequivposB,&exonexonposB,
-						&compB,&donorB1,&donorB2,&acceptorB2,&acceptorB1,
-						&donor_prob_B,&acceptor_prob_B,/*from*/middle,to,
+						&donorB1,&donorB2,&acceptorB2,&acceptorB1,
+						&donor_watsonp_B,&acceptor_watsonp_B,&donor_prob_B,&acceptor_prob_B,
+						/*from*/middle,to,
 #ifdef PMAP
 						queryntseq,
 #endif
 						queryseq,queryuc,queryntlength,
-						genome,genomealt,chromosome_iit,pairpool);
-
-		  mergeableAp = Stage3_mergeable(&singleAp,&dualbreakAp,&cdna_direction_A,
-						 &queryjumpA,&genomejumpA,from,/*to*/middle,
-						 breakpointA,queryntlength,donor_prob_A,acceptor_prob_A);
-		  mergeableBp = Stage3_mergeable(&singleBp,&dualbreakBp,&cdna_direction_B,
-						 &queryjumpB,&genomejumpB,/*from*/middle,to,
-						 breakpointB,queryntlength,donor_prob_B,acceptor_prob_B);
+						genomecomp,genomecomp_alt,chromosome_iit,pairpool);
+
+		  mergeableAp = Stage3_mergeable(from,/*to*/middle,breakpointA,queryntlength,maxintronlen_bound);
+		  mergeableBp = Stage3_mergeable(/*from*/middle,to,breakpointB,queryntlength,maxintronlen_bound);
 		}
 		r = List_next(r);
 	      }	/* End of while loop looking for dual merge */
 
 	      if (mergeableAp == true && mergeableBp == true) {
-		debug2(printf("Middle segment found and mergeable locally with both! -- Merging three as a readthrough.  cdna_direction = %d and %d\n",
-			      cdna_direction_A,cdna_direction_B));
+		debug2(printf("Middle segment found and mergeable locally with both! -- Merging three as a readthrough.\n"));
 		*foundp = true;
 	      } else {
 		/* 2.  Look for middle piece that joins locally on one end */
@@ -2890,30 +3214,28 @@ check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
 		mergeableAp = mergeableBp = false;
 		while (r != NULL && mergeableAp == false && mergeableBp == false) {
 		  middle = (Stage3_T) List_head(r);
-		  if (local_join_p(from,middle) == true && local_join_p(middle,to) == true) {
+		  if (Chimera_local_join_p(from,middle,CHIMERA_SLOP) == true && Chimera_local_join_p(middle,to,CHIMERA_SLOP) == true) {
 		    breakpointA = find_breakpoint(&chimera_cdna_direction_A,&chimeraposA,&chimeraequivposA,&exonexonposA,
-						  &compA,&donorA1,&donorA2,&acceptorA2,&acceptorA1,
-						  &donor_prob_A,&acceptor_prob_A,from,/*to*/middle,
+						  &donorA1,&donorA2,&acceptorA2,&acceptorA1,
+						  &donor_watsonp_A,&acceptor_watsonp_A,&donor_prob_A,&acceptor_prob_A,
+						  from,/*to*/middle,
 #ifdef PMAP
 						  queryntseq,
 #endif
 						  queryseq,queryuc,queryntlength,
-						  genome,genomealt,chromosome_iit,pairpool);
+						  genomecomp,genomecomp_alt,chromosome_iit,pairpool);
 		    breakpointB = find_breakpoint(&chimera_cdna_direction_B,&chimeraposB,&chimeraequivposB,&exonexonposB,
-						  &compB,&donorB1,&donorB2,&acceptorB2,&acceptorB1,
-						  &donor_prob_B,&acceptor_prob_B,/*from*/middle,to,
+						  &donorB1,&donorB2,&acceptorB2,&acceptorB1,
+						  &donor_watsonp_B,&acceptor_watsonp_B,&donor_prob_B,&acceptor_prob_B,
+						  /*from*/middle,to,
 #ifdef PMAP
 						  queryntseq,
 #endif
 						  queryseq,queryuc,queryntlength,
-						  genome,genomealt,chromosome_iit,pairpool);
-
-		    mergeableAp = Stage3_mergeable(&singleAp,&dualbreakAp,&cdna_direction_A,
-						   &queryjumpA,&genomejumpA,from,/*to*/middle,
-						   breakpointA,queryntlength,donor_prob_A,acceptor_prob_A);
-		    mergeableBp = Stage3_mergeable(&singleBp,&dualbreakBp,&cdna_direction_B,
-						   &queryjumpB,&genomejumpB,/*from*/middle,to,
-						   breakpointB,queryntlength,donor_prob_B,acceptor_prob_B);
+						  genomecomp,genomecomp_alt,chromosome_iit,pairpool);
+
+		    mergeableAp = Stage3_mergeable(from,/*to*/middle,breakpointA,queryntlength,maxintronlen_bound);
+		    mergeableBp = Stage3_mergeable(/*from*/middle,to,breakpointB,queryntlength,maxintronlen_bound);
 		  }
 		  r = List_next(r);
 		} /* End of while loop looking for single merge */
@@ -2924,15 +3246,12 @@ check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
 	      }
 
 	      stage3list = merge_middlepieces(stage3list,from,to,middlepieces,middle,mergeableAp,mergeableBp,
-					      singleAp,dualbreakAp,compA,cdna_direction_A,
-					      breakpointA,queryjumpA,genomejumpA,
-					      singleBp,dualbreakBp,compB,cdna_direction_B,
-					      breakpointB,queryjumpB,genomejumpB,queryseq,
+					      breakpointA,breakpointB,queryseq,
 #ifdef PMAP
 					      queryntseq,
 #endif
 					      queryuc,queryntlength,pairpool,dynprogL,dynprogM,dynprogR,
-					      genome,ngap);
+					      oligoindices_minor,diagpool,cellpool,ngap);
 	      List_free(&middlepieces);
 	    }
 
@@ -2953,12 +3272,14 @@ check_middle_piece_local (bool *foundp, List_T stage3list, Sequence_T queryseq,
 
 /* Returns stage3list */
 static List_T
-check_middle_piece_chimera (bool *foundp, List_T stage3list,
-			    Sequence_T queryseq, Sequence_T queryuc, int queryntlength, Sequence_T usersegment, 
-			    Oligoindex_T *oligoindices_major, int noligoindices_major,
-			    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			    Matchpool_T matchpool, Pairpool_T pairpool, 
-			    Diagpool_T diagpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
+check_middle_piece_chimera (bool *foundp, List_T stage3list, Sequence_T queryseq, Sequence_T queryuc,
+#ifdef PMAP
+			    Sequence_T queryntseq,
+#endif
+			    int queryntlength, Sequence_T usersegment, 
+			    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			    Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+			    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR) {
   List_T newstage3list = NULL;
   Sequence_T querysubseq = NULL, querysubuc = NULL;
   int npaths, i, j;
@@ -2970,20 +3291,17 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
   int breakpointA, chimeraposA, chimeraequivposA, exonexonposA;
   int cdna_direction_A;
   char donorA1, donorA2, acceptorA2, acceptorA1;
+  bool donor_watsonp_A, acceptor_watsonp_A;
   double donor_prob_A, acceptor_prob_A;
-  char compA;
 
   int breakpointB, chimeraposB, chimeraequivposB, exonexonposB;
   int cdna_direction_B;
   char donorB1, donorB2, acceptorB2, acceptorB1;
+  bool donor_watsonp_B, acceptor_watsonp_B;
   double donor_prob_B, acceptor_prob_B;
-  char compB;
 
   int chimera_cdna_direction_A, chimera_cdna_direction_B;
   bool mergeableAp, mergeableBp, mergedAp, mergedBp;
-  bool singleAp, dualbreakAp, singleBp, dualbreakBp;
-  int queryjumpA, queryjumpB;
-  int genomejumpA, genomejumpB;
 
   List_T nonjoinable = NULL, middlepieces = NULL;
   Diagnostic_T diagnostic;
@@ -2991,11 +3309,6 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
   bool lowidentityp, poorp, repetitivep;
 
 
-#ifdef PMAP
-  Sequence_T queryntseq;
-  queryntseq = Sequence_convert_to_nucleotides(queryseq);
-#endif
-
 #ifdef DEBUG2A
   for (p = stage3list; p != NULL; p = List_next(p)) {
     stage3 = (Stage3_T) List_head(p);
@@ -3052,17 +3365,20 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
 	  debug2(printf("Performing Stage 3 on %d..%d\n",querystart,queryend));
 
 	  diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(querysubuc),
-				      Sequence_fulllength(querysubuc),oligoindices_major[0]);
+				      Sequence_fulllength(querysubuc),Oligoindex_array_elt(oligoindices_major,0));
 	  if (poorp == true || repetitivep == true) {
 	    debug2(printf("Subsequence is poor or repetitive\n"));
 	  } else {
 	    gregions = Stage1_compute(&lowidentityp,querysubuc,indexdb_fwd,indexdb_rev,
-				      /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+				      /*indexdb_size_threshold*/100,chromosome_iit,
+				      chrsubset_start,chrsubset_end,matchpool,
 				      stutterhits,diagnostic,/*worker_stopwatch*/NULL,/*nbest*/10);
 	    debug2(printf("Performing Stage 3 starting with list length %d\n",List_length(stage3list)));
-	    middlepieces = stage3_from_gregions(/*stage3list*/NULL,gregions,lowidentityp,querysubseq,
-						querysubuc,usersegment,oligoindices_major,noligoindices_major,
-						oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+	    middlepieces = stage3_from_gregions(/*stage3list*/NULL,gregions,lowidentityp,querysubseq,querysubuc,
+#ifdef PMAP
+						queryntseq,
+#endif
+						usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 						dynprogL,dynprogM,dynprogR,/*worker_stopwatch*/NULL);
 	  }
 	  Diagnostic_free(&diagnostic);
@@ -3082,31 +3398,29 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
       while (r != NULL && mergeableAp == false && mergeableBp == false) {
 	middle = (Stage3_T) List_head(r);
 	if (middle != bestfrom && middle != bestto) {
-	  if (local_join_p(bestfrom,middle) == true) {
+	  if (Chimera_local_join_p(bestfrom,middle,CHIMERA_SLOP) == true) {
 	    breakpointA = find_breakpoint(&chimera_cdna_direction_A,&chimeraposA,&chimeraequivposA,&exonexonposA,
-					  &compA,&donorA1,&donorA2,&acceptorA2,&acceptorA1,
-					  &donor_prob_A,&acceptor_prob_A,bestfrom,/*to*/middle,
+					  &donorA1,&donorA2,&acceptorA2,&acceptorA1,
+					  &donor_watsonp_A,&acceptor_watsonp_A,&donor_prob_A,&acceptor_prob_A,
+					  bestfrom,/*to*/middle,
 #ifdef PMAP
 					  queryntseq,
 #endif
 					  queryseq,queryuc,queryntlength,
-					  genome,genomealt,chromosome_iit,pairpool);
-	    mergeableAp = Stage3_mergeable(&singleAp,&dualbreakAp,&cdna_direction_A,
-					   &queryjumpA,&genomejumpA,bestfrom,/*to*/middle,
-					   breakpointA,queryntlength,donor_prob_A,acceptor_prob_A);
+					  genomecomp,genomecomp_alt,chromosome_iit,pairpool);
+	    mergeableAp = Stage3_mergeable(bestfrom,/*to*/middle,breakpointA,queryntlength,maxintronlen_bound);
 	  }
-	  if (local_join_p(middle,bestto) == true) {
+	  if (Chimera_local_join_p(middle,bestto,CHIMERA_SLOP) == true) {
 	    breakpointB = find_breakpoint(&chimera_cdna_direction_B,&chimeraposB,&chimeraequivposB,&exonexonposB,
-					  &compB,&donorB1,&donorB2,&acceptorB2,&acceptorB1,
-					  &donor_prob_B,&acceptor_prob_B,/*from*/middle,to,
+					  &donorB1,&donorB2,&acceptorB2,&acceptorB1,
+					  &donor_watsonp_B,&acceptor_watsonp_B,&donor_prob_B,&acceptor_prob_B,
+					  /*from*/middle,to,
 #ifdef PMAP
 					  queryntseq,
 #endif
 					  queryseq,queryuc,queryntlength,
-					  genome,genomealt,chromosome_iit,pairpool);
-	    mergeableBp = Stage3_mergeable(&singleBp,&dualbreakBp,&cdna_direction_B,
-					   &queryjumpB,&genomejumpB,/*from*/middle,bestto,
-					   breakpointB,queryntlength,donor_prob_B,acceptor_prob_B);
+					  genomecomp,genomecomp_alt,chromosome_iit,pairpool);
+	    mergeableBp = Stage3_mergeable(/*from*/middle,bestto,breakpointB,queryntlength,maxintronlen_bound);
 	  }
 	}
 	r = List_next(r);
@@ -3140,8 +3454,7 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
 	newstage3list =
 	  merge_left_and_right_readthrough(&mergedAp,/*stage3array_sub1*/&bestfrom,/*npaths_sub1*/1,/*bestfrom*/0,
 					   /*stage3array_sub2*/&middle,/*npaths_sub2*/1,/*bestto*/0,
-					   singleAp,dualbreakAp,compA,cdna_direction_A,nonjoinable,
-					   breakpointA,queryjumpA,genomejumpA,queryntlength,
+					   nonjoinable,breakpointA,queryntlength,
 #ifdef PMAP
 					   /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 					   queryntseq,
@@ -3152,7 +3465,8 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
 					   /*queryseq_ptr*/Sequence_fullpointer(queryseq),
 					   /*queryuc_ptr*/Sequence_fullpointer(queryuc),
 #endif
-					   pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
+					   pairpool,dynprogL,dynprogM,dynprogR,
+					   oligoindices_minor,diagpool,cellpool,ngap);
 #ifndef PMAP
 	if (cdna_direction_A == 0) {
 	  Stage3_guess_cdna_direction(from);
@@ -3192,8 +3506,7 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
 	newstage3list =
 	  merge_left_and_right_readthrough(&mergedBp,/*stage3array_sub1*/&middle,/*npaths_sub1*/1,/*bestfrom*/0,
 					   /*stage3array_sub2*/&bestto,/*npaths_sub2*/1,/*bestto*/0,
-					   singleBp,dualbreakBp,compB,cdna_direction_B,nonjoinable,
-					   breakpointB,queryjumpB,genomejumpB,queryntlength,
+					   nonjoinable,breakpointB,queryntlength,
 #ifdef PMAP
 					   /*queryaaseq_ptr*/Sequence_fullpointer(queryseq),
 					   queryntseq,
@@ -3204,7 +3517,8 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
 					   /*queryseq_ptr*/Sequence_fullpointer(queryseq),
 					   /*queryuc_ptr*/Sequence_fullpointer(queryuc),
 #endif
-					   pairpool,dynprogL,dynprogM,dynprogR,genome,ngap);
+					   pairpool,dynprogL,dynprogM,dynprogR,
+					   oligoindices_minor,diagpool,cellpool,ngap);
 
 #ifndef PMAP
 	if (cdna_direction_B == 0) {
@@ -3243,28 +3557,33 @@ check_middle_piece_chimera (bool *foundp, List_T stage3list,
 
 static List_T
 apply_stage3 (bool *mergedp, Chimera_T *chimera, List_T gregions, bool lowidentityp, Sequence_T queryseq, Sequence_T queryuc,
-	      Sequence_T usersegment, Oligoindex_T *oligoindices_major, int noligoindices_major,
-	      Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-	      Matchpool_T matchpool, Pairpool_T pairpool, 
-	      Diagpool_T diagpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-	      Stopwatch_T worker_stopwatch) {
+#ifdef PMAP
+	      Sequence_T queryntseq,
+#endif
+	      Sequence_T usersegment, Oligoindex_array_T oligoindices_major,
+	      Oligoindex_array_T oligoindices_minor,
+	      Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+	      Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR, Stopwatch_T worker_stopwatch) {
 #ifdef DEBUG2
   List_T p;
 #endif
   List_T stage3list;
-  Stage3_T nonchimericbest;
-  bool testchimerap, foundp;
+  Stage3_T nonchimericbest, chimera1, chimera2;
+  bool testlocalp, testchimerap, foundp;
   int effective_start, effective_end;
   int queryntlength;
   int iter;
+
   
   *mergedp = false;
   *chimera = NULL;
 
   debug(printf("Calling stage3_from_gregions\n"));
   stage3list = stage3_from_gregions(/*stage3list*/(List_T) NULL,gregions,lowidentityp,queryseq,queryuc,
-				    usersegment,oligoindices_major,noligoindices_major,
-				    oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+#ifdef PMAP
+				    queryntseq,
+#endif
+				    usersegment,oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 				    dynprogL,dynprogM,dynprogR,worker_stopwatch);
 
   debug2(printf("Initial search gives stage3list of length %d\n",List_length(stage3list)));
@@ -3278,9 +3597,84 @@ apply_stage3 (bool *mergedp, Chimera_T *chimera, List_T gregions, bool lowidenti
     return stage3list;		/* really diagonals */
   }
 
+  queryntlength = Sequence_ntlength(queryseq);
+
   if (stage3list != NULL) {
-    queryntlength = Sequence_ntlength(queryseq);
+    iter = 0;
+    testlocalp = true;
+    while (testlocalp == true && iter++ < MAX_CHIMERA_ITER) {
+      debug2(printf("\n\n*** Testing for local on %d Stage3_T objects, iter %d ***\n",
+		    List_length(stage3list),iter));
+
+      Stage3_recompute_goodness(stage3list);
+      stage3list = stage3list_remove_duplicates(stage3list);
+      stage3list = stage3list_sort(stage3list);
+
+#ifdef DEBUG2
+      for (p = stage3list; p != NULL; p = List_next(p)) {
+	Stage3_print_ends(List_head(p));
+      }
+      printf("\n");
+#endif
+      nonchimericbest = (Stage3_T) List_head(stage3list);
+      debug2(printf("nonchimericbest is %p\n",nonchimericbest));
+
+      if (Stage3_domain(nonchimericbest) < chimera_margin) {
+	debug2(printf("Existing alignment is too short, so won't look for chimera\n"));
+	testlocalp = false;
+
+#if 0
+      } else if (Stage3_fracidentity(nonchimericbest) < CHIMERA_IDENTITY &&
+		 Chimera_alignment_break(&effective_start,&effective_end,nonchimericbest,Sequence_ntlength(queryseq),CHIMERA_FVALUE) >= chimera_margin
+		 ) {
+	debug2(printf("Break in alignment quality at %d..%d detected, so will look for chimera\n",
+		      effective_start,effective_end));
+	testlocalp = true;
+#endif
+
+      } else if (Stage3_largemargin(&effective_start,&effective_end,nonchimericbest,Sequence_ntlength(queryseq)) >= chimera_margin) {
+	debug2(printf("Large margin at %d..%d detected (%d >= %d), so will look for chimera\n",
+		      effective_start,effective_end,Stage3_largemargin(&effective_start,&effective_end,nonchimericbest,Sequence_ntlength(queryseq)),chimera_margin));
+	testlocalp = true;
+	
+      } else {
+	debug2(printf("Good alignment already with identity %f, so won't look for chimera\n",
+		      Stage3_fracidentity(nonchimericbest)));
+	testlocalp = false;
+      }
+
+      if (testlocalp == true) {
+	testlocalp = false;
+	debug2(printf("Checking for local, starting with list length %d, effective_start %d, effective_end %d\n",
+		      List_length(stage3list),effective_start,effective_end));
+	stage3list = check_for_local(&(*mergedp),stage3list,effective_start,effective_end,
+				     queryseq,queryuc,
+#ifdef PMAP
+				     queryntseq,
+#endif
+				     queryntlength,usersegment,oligoindices_major,oligoindices_minor,
+				     matchpool,pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR);
+	
+	if (*mergedp == true) {
+	  testlocalp = true;	/* Local merge */
+	} else {
+	  debug2(printf("Checking for middle piece local, starting with list length %d\n",List_length(stage3list)));
+	  stage3list = check_middle_piece_local(&foundp,stage3list,queryseq,queryuc,
+#ifdef PMAP
+						queryntseq,
+#endif
+						queryntlength,usersegment,oligoindices_major,oligoindices_minor,
+						matchpool,pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR);
+	  if (foundp == true) {
+	    /* Iterate */
+	    testlocalp = true;
+	  }
+	}
+      }
+    }
+  }
 
+  if (stage3list != NULL) {
     iter = 0;
     testchimerap = true;
     while (testchimerap == true && iter++ < MAX_CHIMERA_ITER) {
@@ -3332,40 +3726,38 @@ apply_stage3 (bool *mergedp, Chimera_T *chimera, List_T gregions, bool lowidenti
       }
 
       if (testchimerap == true) {
+	testchimerap = false;
 	debug2(printf("Checking for chimera, starting with list length %d, effective_start %d, effective_end %d\n",
 		      List_length(stage3list),effective_start,effective_end));
 	stage3list = check_for_chimera(&(*mergedp),&(*chimera),stage3list,effective_start,effective_end,
-				       queryseq,queryuc,queryntlength,usersegment,
-				       oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-				       matchpool,pairpool,diagpool,dynprogL,dynprogM,dynprogR);
+				       queryseq,queryuc,
+#ifdef PMAP
+				       queryntseq,
+#endif
+				       queryntlength,usersegment,oligoindices_major,oligoindices_minor,
+				       matchpool,pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR);
 	if (*chimera != NULL) {
 	  testchimerap = false;
 	} else {
 	  if (*mergedp == true) {
 	    testchimerap = true;	/* Local merge */
 	  } else {
-	    debug2(printf("Checking for middle piece local, starting with list length %d\n",List_length(stage3list)));
-	    stage3list = check_middle_piece_local(&foundp,stage3list,queryseq,queryuc,queryntlength,usersegment,
-						  oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						  matchpool,pairpool,diagpool,dynprogL,dynprogM,dynprogR);
+	    debug2(printf("Checking for middle piece chimera, starting with list length %d\n",List_length(stage3list)));
+	    stage3list = check_middle_piece_chimera(&foundp,stage3list,queryseq,queryuc,
+#ifdef PMAP
+						    queryntseq,
+#endif
+						    queryntlength,usersegment,oligoindices_major,oligoindices_minor,
+						    matchpool,pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR);
 	    if (foundp == true) {
 	      /* Iterate */
 	      testchimerap = true;
 	    } else {
-	      debug2(printf("Checking for middle piece chimera, starting with list length %d\n",List_length(stage3list)));
-	      stage3list = check_middle_piece_chimera(&foundp,stage3list,queryseq,queryuc,queryntlength,usersegment,
-						      oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						      matchpool,pairpool,diagpool,dynprogL,dynprogM,dynprogR);
-	      if (foundp == true) {
-		/* Iterate */
-		testchimerap = true;
-	      } else {
-		testchimerap = false;
-	      }
+	      testchimerap = false;
 	    }
-	    debug2(printf("testchimerap is %d\n",testchimerap));
 	  }
 	}
+	debug2(printf("testchimerap is %d\n",testchimerap));
       }
     }
   }
@@ -3377,16 +3769,35 @@ apply_stage3 (bool *mergedp, Chimera_T *chimera, List_T gregions, bool lowidenti
 
   /* Final call, so do both filtering and sorting */
   Stage3_recompute_coverage(stage3list,queryseq);
-  stage3list = stage3list_filter_and_sort(stage3list);
+  stage3list = stage3list_filter_and_sort(&(*chimera),stage3list);
+
+  if (*chimera != NULL && List_length(stage3list) > 2) {
+    /* Compare chimera against non-chimeric alignments */
+    chimera1 = (Stage3_T) List_head(stage3list);
+    chimera2 = (Stage3_T) List_head(List_next(stage3list));
+    nonchimericbest = (Stage3_T) List_head(List_next(List_next(stage3list)));
+    debug2(printf("chimera1 %d, chimera2 %d\n",Stage3_goodness(chimera1),Stage3_goodness(chimera2)));
+    debug2(printf("%p non-chimeric %d %d..%d\n",
+		  nonchimericbest,Stage3_goodness(nonchimericbest),Stage3_querystart(nonchimericbest),Stage3_queryend(nonchimericbest)));
+
+    if (Stage3_queryend(nonchimericbest) > (Stage3_querystart(chimera2) + Stage3_queryend(chimera2))/2 &&
+	Stage3_querystart(nonchimericbest) < (Stage3_querystart(chimera1) + Stage3_queryend(chimera1))/2) {
+      stage3list = List_pop(stage3list,(void **) &chimera1);
+      stage3list = List_pop(stage3list,(void **) &chimera2);
+      Stage3_free(&chimera1);
+      Stage3_free(&chimera2);
+      Chimera_free(&(*chimera));
+      *chimera = (Chimera_T) NULL;
+    }
+  }
 
   return stage3list;
 }
 
 
 static Result_T
-process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, 
-		 Oligoindex_T *oligoindices_major, int noligoindices_major,
-		 Oligoindex_T *oligoindices_minor, int noligoindices_minor,
+process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		 Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
 		 Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		 Stopwatch_T worker_stopwatch) {
   Result_T result;
@@ -3400,12 +3811,16 @@ process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool,
   List_T gregions = NULL, stage3list;
   Stage3_T *stage3array;
   int npaths, first_absmq, second_absmq;
+#ifdef PMAP
+  Sequence_T queryntseq;
+#endif
 
   jobid = Request_id(request);
   queryseq = Request_queryseq(request);
   Matchpool_reset(matchpool);
   Pairpool_reset(pairpool);
   Diagpool_reset(diagpool);
+  Cellpool_reset(cellpool);
 
 
   if (Sequence_fulllength_given(queryseq) <= 0) {
@@ -3424,13 +3839,17 @@ process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool,
 
   } else {			/* Sequence_fulllength_given(queryseq) > 0 */
     queryuc = Sequence_uppercase(queryseq);
+#ifdef PMAP
+    queryntseq = Sequence_convert_to_nucleotides(queryseq);
+#endif
+
     if (maponlyp == true) {
       diagnostic = Diagnostic_new();
       diagnostic->query_trim_start = 0;
       diagnostic->query_trim_end = Sequence_fulllength(queryseq);
     } else {
       diagnostic = evaluate_query(&poorp,&repetitivep,Sequence_fullpointer(queryuc),
-				  Sequence_fulllength(queryuc),oligoindices_major[0]);
+				  Sequence_fulllength(queryuc),Oligoindex_array_elt(oligoindices_major,0));
     }
 
 #ifndef PMAP
@@ -3453,9 +3872,12 @@ process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool,
       Sequence_trim(queryuc,diagnostic->query_trim_start,diagnostic->query_trim_end);
 #endif
 #endif
-      stage3array = stage3_from_usersegment(&npaths,&first_absmq,&second_absmq,/*lowidentityp*/false,queryseq,queryuc,usersegment,
-					    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-					    pairpool,diagpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
+      stage3array = stage3_from_usersegment(&npaths,&first_absmq,&second_absmq,/*lowidentityp*/false,queryseq,queryuc,
+#ifdef PMAP
+					    queryntseq,
+#endif
+					    usersegment,oligoindices_major,oligoindices_minor,
+					    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
       result = Result_new(jobid,/*mergedp*/false,(Chimera_T) NULL,stage3array,npaths,first_absmq,second_absmq,diagnostic,NO_FAILURE);
 
     } else {		/* Not user segment and not maponly */
@@ -3470,21 +3892,27 @@ process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool,
       debug(printf("Calling stage 1\n"));
       if (mode == CMET_NONSTRANDED) {
 	gregions = Stage1_compute_nonstranded(&lowidentityp,queryuc,indexdb_fwd,indexdb_fwd,
-					      /*indexdb_size_threshold*/400,chromosome_iit,chrsubset,matchpool,
+					      /*indexdb_size_threshold*/400,chromosome_iit,
+					      chrsubset_start,chrsubset_end,matchpool,
 					      stutterhits,diagnostic,worker_stopwatch,/*nbest*/10);
       } else {
 	gregions = Stage1_compute(&lowidentityp,queryuc,indexdb_fwd,indexdb_rev,
-				  /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+				  /*indexdb_size_threshold*/100,chromosome_iit,
+				  chrsubset_start,chrsubset_end,matchpool,
 				  stutterhits,diagnostic,worker_stopwatch,/*nbest*/10);
       }
+      debug(printf("Got %d gregions\n",List_length(gregions)));
 
       if (stage1debug == true) {
 	result = Result_new_stage1debug(jobid,gregions,diagnostic,NO_FAILURE);
       } else {
 	debug(printf("Applying stage 3\n"));
-	stage3list = apply_stage3(&mergedp,&chimera,gregions,lowidentityp,queryseq,queryuc,usersegment,
-				  oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-				  matchpool,pairpool,diagpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
+	stage3list = apply_stage3(&mergedp,&chimera,gregions,lowidentityp,queryseq,queryuc,
+#ifdef PMAP
+				  queryntseq,
+#endif
+				  usersegment,oligoindices_major,oligoindices_minor,
+				  matchpool,pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
 	if (diag_debug == true) {
 	  result = Result_new_diag_debug(jobid,/*diagonals*/stage3list,diagnostic,NO_FAILURE);
 	} else if (stage3list == NULL) {
@@ -3503,10 +3931,14 @@ process_request (Request_T request, Matchpool_T matchpool, Pairpool_T pairpool,
 	}
       }
 
-      Oligoindex_clear_inquery(oligoindices_major[0]);
+      Oligoindex_clear_inquery(Oligoindex_array_elt(oligoindices_major,0),/*queryuc_ptr*/Sequence_fullpointer(queryuc),
+			       /*querylength*/Sequence_fulllength(queryuc));
 
     } /* Matches not user segment and not maponly */
 
+#ifdef PMAP
+    Sequence_free(&queryntseq);
+#endif
     Sequence_free(&queryuc);
   } /* Matches sequence length > 0 */
 
@@ -3546,12 +3978,12 @@ signal_handler (int sig) {
 
 static void
 single_thread () {
-  Oligoindex_T *oligoindices_major, *oligoindices_minor;
-  int noligoindices_major, noligoindices_minor;
+  Oligoindex_array_T oligoindices_major, oligoindices_minor;
   Dynprog_T dynprogL, dynprogM, dynprogR;
   Matchpool_T matchpool;
   Pairpool_T pairpool;
   Diagpool_T diagpool;
+  Cellpool_T cellpool;
   Stopwatch_T worker_stopwatch;
   Request_T request;
   Result_T result;
@@ -3559,37 +3991,45 @@ single_thread () {
   int noutput = 0;
   int jobid = 0;
 
-  oligoindices_major = Oligoindex_new_major(&noligoindices_major);
-  oligoindices_minor = Oligoindex_new_minor(&noligoindices_minor);
-  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
+  oligoindices_major = Oligoindex_array_new_major(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  oligoindices_minor = Oligoindex_array_new_minor(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
+  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/false);
+  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
   matchpool = Matchpool_new();
   pairpool = Pairpool_new();
   diagpool = Diagpool_new();
+  cellpool = Cellpool_new();
   worker_stopwatch = diagnosticp == true ? Stopwatch_new() : (Stopwatch_T) NULL;
 
   while ((request = Inbuffer_get_request(&usersegment,inbuffer,user_pairalign_p)) != NULL) {
     if (user_pairalign_p == true) {
-      genome_blocks = Genome_create_blocks(Sequence_fullpointer(usersegment),Sequence_fulllength(usersegment));
-      Genome_user_setup(genome_blocks);
-      Genome_hr_user_setup(genome_blocks,/*query_unk_mismatch_p*/false,
+      genomecomp_blocks = Compress_create_blocks_comp(Sequence_fullpointer(usersegment),Sequence_fulllength(usersegment));
+      genomebits_blocks = Compress_create_blocks_bits(genomecomp_blocks,Sequence_fulllength(usersegment));
+      Genome_user_setup(genomecomp_blocks);
+      Genome_hr_user_setup(genomebits_blocks,/*query_unk_mismatch_p*/false,
 			   /*genome_unk_mismatch_p*/true,/*mode*/STANDARD);
-      Maxent_hr_setup(genome_blocks,/*genomealt_blocks*/genome_blocks);
-#ifndef PMAP
-      Oligoindex_hr_setup(genome_blocks,mode);
+      Genome_sites_setup(genomecomp_blocks,/*snp_blocks*/NULL);
+      Maxent_hr_setup(genomecomp_blocks,/*genomealt_blocks*/genomecomp_blocks);
+#ifdef PMAP
+      Oligoindex_pmap_setup(genomecomp);
+#else
+      Oligoindex_hr_setup(genomecomp_blocks,mode);
 #endif
     }
 
     if (jobid % POOL_FREE_INTERVAL == 0) {
       Pairpool_free_memory(pairpool);
       Diagpool_free_memory(diagpool);
+      Cellpool_free_memory(cellpool);
       Matchpool_free_memory(matchpool);
     }
     TRY
-      result = process_request(request,matchpool,pairpool,diagpool,
-  			       oligoindices_major,noligoindices_major,
-			       oligoindices_minor,noligoindices_minor,
+      result = process_request(request,matchpool,pairpool,diagpool,cellpool,
+  			       oligoindices_major,oligoindices_minor,
 			       dynprogL,dynprogM,dynprogR,worker_stopwatch);
     ELSE
       queryseq = Request_queryseq(request);
@@ -3625,32 +4065,35 @@ single_thread () {
     noutput++;
 
     if (user_pairalign_p == true) {
-      FREE(genome_blocks);
+      FREE(genomebits_blocks);
+      FREE(genomecomp_blocks);
     }
   }
 
   Stopwatch_free(&worker_stopwatch);
+  Cellpool_free(&cellpool);
   Diagpool_free(&diagpool);
   Pairpool_free(&pairpool);
   Matchpool_free(&matchpool);
   Dynprog_free(&dynprogR);
   Dynprog_free(&dynprogM);
   Dynprog_free(&dynprogL);
-  Oligoindex_free_array(&oligoindices_minor,noligoindices_minor);
-  Oligoindex_free_array(&oligoindices_major,noligoindices_major);
+  Oligoindex_array_free(&oligoindices_minor);
+  Oligoindex_array_free(&oligoindices_major);
 
   return;
 }
 
 
+#ifdef HAVE_PTHREAD
 static void *
 worker_thread (void *data) {
-  Oligoindex_T *oligoindices_major, *oligoindices_minor;
-  int noligoindices_major, noligoindices_minor;
+  Oligoindex_array_T oligoindices_major, oligoindices_minor;
   Dynprog_T dynprogL, dynprogM, dynprogR;
   Matchpool_T matchpool;
   Pairpool_T pairpool;
   Diagpool_T diagpool;
+  Cellpool_T cellpool;
   Stopwatch_T worker_stopwatch;
   Request_T request;
   Result_T result;
@@ -3658,14 +4101,18 @@ worker_thread (void *data) {
   int jobid = 0;
 
   /* Thread-specific data and storage */
-  oligoindices_major = Oligoindex_new_major(&noligoindices_major);
-  oligoindices_minor = Oligoindex_new_minor(&noligoindices_minor);
-  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
+  oligoindices_major = Oligoindex_array_new_major(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  oligoindices_minor = Oligoindex_array_new_minor(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
+  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/false);
+  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
   matchpool = Matchpool_new();
   pairpool = Pairpool_new();
   diagpool = Diagpool_new();
+  cellpool = Cellpool_new();
   worker_stopwatch = diagnosticp == true ? Stopwatch_new() : (Stopwatch_T) NULL;
 
   Except_stack_create();
@@ -3674,13 +4121,13 @@ worker_thread (void *data) {
     if (jobid % POOL_FREE_INTERVAL == 0) {
       Pairpool_free_memory(pairpool);
       Diagpool_free_memory(diagpool);
+      Cellpool_free_memory(cellpool);
       Matchpool_free_memory(matchpool);
     }
 
     TRY
-      result = process_request(request,matchpool,pairpool,diagpool,
-			       oligoindices_major,noligoindices_major,
-			       oligoindices_minor,noligoindices_minor,
+      result = process_request(request,matchpool,pairpool,diagpool,cellpool,
+			       oligoindices_major,oligoindices_minor,
 			       dynprogL,dynprogM,dynprogR,worker_stopwatch);
     ELSE
       queryseq = Request_queryseq(request);
@@ -3707,17 +4154,19 @@ worker_thread (void *data) {
   Except_stack_destroy();
 
   Stopwatch_free(&worker_stopwatch);
+  Cellpool_free(&cellpool);
   Diagpool_free(&diagpool);
   Pairpool_free(&pairpool);
   Matchpool_free(&matchpool);
   Dynprog_free(&dynprogR);
   Dynprog_free(&dynprogM);
   Dynprog_free(&dynprogL);
-  Oligoindex_free_array(&oligoindices_minor,noligoindices_minor);
-  Oligoindex_free_array(&oligoindices_major,noligoindices_major);
+  Oligoindex_array_free(&oligoindices_minor);
+  Oligoindex_array_free(&oligoindices_major);
 
   return (void *) NULL;
 }
+#endif
 
 
 #if 0
@@ -3725,8 +4174,7 @@ worker_thread (void *data) {
 static void
 align_relative (FILE *input, char **files, int nfiles, int nextchar,
 		Sequence_T queryseq, Sequence_T referenceseq) {
-  Oligoindex_T *oligoindices_major, *oligoindices_minor;
-  int noligoindices_major, noligoindices_minor;
+  Oligoindex_array_T oligoindices_major, oligoindices_minor;
   Diagnostic_T diagnostic;
   bool lowidentityp;
 #ifndef PMAP
@@ -3736,6 +4184,7 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
   Matchpool_T matchpool;
   Pairpool_T pairpool;
   Diagpool_T diagpool;
+  Cellpool_T cellpool;
   Stopwatch_T stopwatch;
 
   Chrpos_T genomicstart, genomiclength;
@@ -3747,26 +4196,28 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
   Stage3_T *stage3array, stage3, stage3ref;
   int npaths, i;
 
-  oligoindices_major = Oligoindex_new_major(&noligoindices_major);
-  oligoindices_minor = Oligoindex_new_minor(&noligoindices_minor);
+  oligoindices_major = Oligoindex_array_new_major(&noligoindices_major);
+  oligoindices_minor = Oligoindex_array_new_minor(&noligoindices_minor);
   dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
   dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
   dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
   matchpool = Matchpool_new();
   pairpool = Pairpool_new();
   diagpool = Diagpool_new();
+  cellpool = Cellpool_new();
   stopwatch = diagnosticp == true ? Stopwatch_new() : (Stopwatch_T) NULL;
 
   Matchpool_reset(matchpool);
   Pairpool_reset(pairpool);
   Diagpool_reset(diagpool);
+  Cellpool_reset(cellpool);
 
   referenceuc = Sequence_uppercase(referenceseq);
 
   /* Do not trim the mutation refseq */
   diagnostic = Diagnostic_new();
   Oligoindex_set_inquery(&diagnostic->query_badoligos,&diagnostic->query_repoligos,&diagnostic->query_trimoligos,
-			 &diagnostic->query_trim_start,&diagnostic->query_trim_end,oligoindices_major[0],
+			 &diagnostic->query_trim_start,&diagnostic->query_trim_end,Oligoindex_array_elt(oligoindices_major,0),
 			 Sequence_fullpointer(referenceuc),Sequence_fulllength(referenceuc),/*trimp*/false);
 #ifndef PMAP
 #if 0
@@ -3775,11 +4226,12 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
 #endif
 #endif
   gregions = Stage1_compute(&lowidentityp,referenceuc,indexdb_fwd,indexdb_rev,
-			    /*indexdb_size_threshold*/100,chromosome_iit,chrsubset,matchpool,
+			    /*indexdb_size_threshold*/100,chromosome_iit,
+			    chrsubset_start,chrsubet_end,matchpool,
 			    stutterhits,diagnostic,/*stopwatch*/NULL);
   stage3list = apply_stage3(&chimera,gregions,lowidentityp,referenceseq,referenceuc,/*usersegment*/NULL,
-			    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			    matchpool,pairpool,diagpool,dynprogL,dynprogM,dynprogR,stopwatch);
+			    oligoindices_major,oligoindices_minor,
+			    matchpool,pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,stopwatch);
   if (stage3list == NULL) {
     npaths = 0;
     stage3array = (Stage3_T *) NULL;
@@ -3816,6 +4268,7 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
       Matchpool_reset(matchpool);
       Pairpool_reset(pairpool);
       Diagpool_reset(diagpool);
+      Cellpool_reset(cellpool);
 
       fprintf(fp,">");
       Sequence_print_header(stdout,queryseq,checksump);
@@ -3838,14 +4291,14 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
 #ifdef PMAP
 	Oligoindex_set_inquery(&diagnostic->query_badoligos,&diagnostic->query_repoligos,
 			       &diagnostic->query_trimoligos,&diagnostic->query_trim_start,
-			       &diagnostic->query_trim_end,oligoindices_major[0],Sequence_fullpointer(queryuc),
-			       Sequence_fulllength(queryuc),/*trimp*/false);
+			       &diagnostic->query_trim_end,Oligoindex_array_elt(oligoindices_major,0),
+			       Sequence_fullpointer(queryuc),Sequence_fulllength(queryuc),/*trimp*/false);
 #else
 	diagnostic->query_oligodepth = 
 	  Oligoindex_set_inquery(&diagnostic->query_badoligos,&diagnostic->query_repoligos,
 				 &diagnostic->query_trimoligos,&diagnostic->query_trim_start,
-				 &diagnostic->query_trim_end,oligoindices_major[0],Sequence_fullpointer(queryuc),
-				 Sequence_fulllength(queryuc),/*trimp*/true);
+				 &diagnostic->query_trim_end,Oligoindex_array_elt(oligoindices_major,0),
+				 Sequence_fullpointer(queryuc),Sequence_fulllength(queryuc),/*trimp*/true);
 
 	if (diagnostic->query_trimoligos == 0) {
 	  poorp = true;
@@ -3874,8 +4327,8 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
 	} else {
 #endif /* PMAP */
 	  stage3array = stage3_from_usersegment(&npaths,lowidentityp,queryseq,queryuc,genomicseg,
-						oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						pairpool,diagpool,dynprogL,dynprogM,dynprogR,stopwatch);
+						oligoindices_major,oligoindices_minor,
+						pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,stopwatch);
 	  
 	  if (npaths == 0) {
 	    print_npaths(fp,0,diagnostic,/*usersegment*/NULL,chrsubset,/*chimera*/NULL,NO_FAILURE);
@@ -3906,7 +4359,7 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
 	}
 #endif
 
-	Oligoindex_clear_inquery(oligoindices_major[0]);
+	Oligoindex_clear_inquery(Oligoindex_array_elt(oligoindices_major,0));
 
 	Sequence_free(&queryuc);
       }
@@ -3918,13 +4371,14 @@ align_relative (FILE *input, char **files, int nfiles, int nextchar,
   }
 
   Stopwatch_free(&stopwatch);
+  Cellpool_free(&cellpool);
   Diagpool_free(&diagpool);
   Pairpool_free(&pairpool);
   Dynprog_free(&dynprogR);
   Dynprog_free(&dynprogM);
   Dynprog_free(&dynprogL);
-  Oligoindex_free_array(&oligoindices_minor,noligoindices_minor);
-  Oligoindex_free_array(&oligoindices_major,noligoindices_major);
+  Oligoindex_array_free(&oligoindices_minor);
+  Oligoindex_array_free(&oligoindices_major);
 
   return;
 }
@@ -4005,7 +4459,7 @@ parse_part (int *part_modulus, int *part_interval, char *string) {
 }
 
 
-char *
+static char *
 check_valid_int (char *string) {
   char *p = string;
 
@@ -4045,8 +4499,9 @@ check_valid_int (char *string) {
 }
 
 
-char *
-check_valid_float (char *string) {
+static double
+check_valid_float (char *string, const char *option) {
+  double value;
   char *p = string;
 
   if (*p == '+' || *p == '-') {
@@ -4057,7 +4512,12 @@ check_valid_float (char *string) {
     p++;
   }
   if (*p == '\0') {
-    return string;
+    if ((value = atof(string)) > 1.0 || value < 0.0) {
+      fprintf(stderr,"Value for option %s should be between 0.0 and 1.0\n",option);
+      exit(9);
+    } else {
+      return value;
+    }
   }
 
   if (*p == '.') {
@@ -4065,9 +4525,9 @@ check_valid_float (char *string) {
   }
 
   if (!isdigit(*p)) {
-    fprintf(stderr,"value %s is not a valid float\n",string);
+    fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
     exit(9);
-    return NULL;
+    return 0.0;
   }
   while (*p != '\0' && isdigit(*p)) {
     p++;
@@ -4079,9 +4539,9 @@ check_valid_float (char *string) {
       p++;
     }
     if (!isdigit(*p)) {
-      fprintf(stderr,"value %s is not a valid float\n",string);
+      fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
       exit(9);
-      return NULL;
+      return 0.0;
     }
     while (*p != '\0' && isdigit(*p)) {
       p++;
@@ -4089,11 +4549,16 @@ check_valid_float (char *string) {
   }
 
   if (*p == '\0') {
-    return string;
+    if ((value = atof(string)) > 1.0 || value < 0.0) {
+      fprintf(stderr,"Value for option %s should be between 0.0 and 1.0\n",option);
+      exit(9);
+    } else {
+      return value;
+    }
   } else {
-    fprintf(stderr,"value %s is not a valid float\n",string);
+    fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
     exit(9);
-    return NULL;
+    return 0.0;
   }
 }
 
@@ -4105,6 +4570,9 @@ main (int argc, char *argv[]) {
   FILE *input = NULL;
   Request_T request;
 
+  int divno;
+  Univinterval_T interval;
+
   int user_ngap = -1;
   bool showcontigp = true, multiple_sequences_p = false;
   char **files;
@@ -4112,6 +4580,8 @@ main (int argc, char *argv[]) {
   unsigned int nread;
   double runtime;
 
+  Splicestringpool_T splicestringpool;
+
 #ifdef HAVE_PTHREAD
   int ret, i;
   pthread_attr_t thread_attr_join;
@@ -4142,9 +4612,9 @@ main (int argc, char *argv[]) {
 
   while ((opt = getopt_long(argc,argv,
 #ifdef PMAP
-			    "q:D:a:d:k:Gg:2C:B:K:w:L:x:1t:s:c:H:SA03468:9n:f:ZO5o:V:v:M:m:ebu:E:PQYNI:i:l:",
+			    "q:D:a:d:k:Gg:2B:K:w:L:x:1t:s:c:H:SA03468:9n:f:ZO5o:V:v:M:m:ebu:E:PQYNI:i:l:",
 #else
-			    "q:D:d:k:Gg:2C:B:K:w:L:x:1t:s:c:H:p:SA03468:9n:f:ZO5o:V:v:M:m:ebu:E:PQFa:Tz:j:YNI:i:l:",
+			    "q:D:d:k:Gg:2B:K:w:L:x:1t:s:c:H:p:SA03468:9n:f:ZO5o:V:v:M:m:ebu:E:PQFa:Tz:j:YNI:i:l:",
 #endif
 			    long_options, &long_option_index)) != -1) {
     switch (opt) {
@@ -4167,9 +4637,6 @@ main (int argc, char *argv[]) {
 	  exit(9);
 	}
 
-      } else if (!strcmp(long_name,"basesize")) {
-	required_basesize = atoi(check_valid_int(optarg));
-
       } else if (!strcmp(long_name,"sampling")) {
 	required_index1interval = atoi(check_valid_int(optarg));
 
@@ -4212,7 +4679,7 @@ main (int argc, char *argv[]) {
 	  exit(9);
 	}
       } else if (!strcmp(long_name,"microexon-spliceprob")) {
-	microexon_spliceprob = atof(check_valid_float(optarg));
+	microexon_spliceprob = check_valid_float(optarg,long_name);
       } else if (!strcmp(long_name,"stage2-start")) {
 	suboptimal_score_start = atoi(check_valid_int(optarg));
       } else if (!strcmp(long_name,"stage2-end")) {
@@ -4232,11 +4699,11 @@ main (int argc, char *argv[]) {
 	  exit(9);
 	}
 
-      } else if (!strcmp(long_name,"find-shifted-canonical")) {
-	use_shifted_canonical_p = true;
-
       } else if (!strcmp(long_name,"cross-species")) {
-	use_shifted_canonical_p = true;
+	cross_species_p = true;
+
+      } else if (!strcmp(long_name,"homopolymer")) {
+	homopolymerp = true;
 
       } else if (!strcmp(long_name,"cmetdir")) {
 	user_cmetdir = optarg;
@@ -4261,9 +4728,9 @@ main (int argc, char *argv[]) {
 	}
 
       } else if (!strcmp(long_name,"min-trimmed-coverage")) {
-	min_trimmed_coverage = atof(check_valid_float(optarg));
+	min_trimmed_coverage = check_valid_float(optarg,long_name);
       } else if (!strcmp(long_name,"min-identity")) {
-	min_identity = atof(check_valid_float(optarg));
+	min_identity = check_valid_float(optarg,long_name);
 
       } else if (!strcmp(long_name,"input-buffer-size")) {
 	inbuffer_nspaces = atoi(check_valid_int(optarg));
@@ -4278,10 +4745,12 @@ main (int argc, char *argv[]) {
 	} else {
 	  failsonlyp = true;
 	}
-      } else if (!strcmp(long_name,"fails-as-input")) {
-	fails_as_input_p = true;
+      } else if (!strcmp(long_name,"failed-input")) {
+	failedinput_root = optarg;
+#if 0
       } else if (!strcmp(long_name,"quiet-if-excessive")) {
 	quiet_if_excessive_p = true;
+#endif
       } else if (!strcmp(long_name,"nofails")) {
 	if (failsonlyp == true) {
 	  fprintf(stderr,"Cannot specify both --nofails and --failsonly\n");
@@ -4358,34 +4827,33 @@ main (int argc, char *argv[]) {
     case 'g': user_genomicseg = optarg; break;
     case '1': user_selfalign_p = true; break;  /* was maponlyp = true */
     case '2': user_pairalign_p = true; break;
-    case 'C': user_chrsubsetfile = optarg; break;
 
     case 'B': 
       if (!strcmp(optarg,"5")) {
 	fprintf(stderr,"Note: Batch mode 5 is now the same as batch mode 4.\n");
 	fprintf(stderr,"Expansion of offsets is now controlled separately by --expand-offsets (default=1).\n");
-	offsetscomp_access = USE_ALLOCATE; /* Doesn't matter */
+	offsetsstrm_access = USE_ALLOCATE; /* Doesn't matter */
 	positions_access = USE_ALLOCATE;
 	genome_access = USE_ALLOCATE;
       } else if (!strcmp(optarg,"4")) {
-	offsetscomp_access = USE_ALLOCATE;
+	offsetsstrm_access = USE_ALLOCATE;
 	positions_access = USE_ALLOCATE;
 	genome_access = USE_ALLOCATE;
 #ifdef HAVE_MMAP
       } else if (!strcmp(optarg,"3")) {
-	offsetscomp_access = USE_ALLOCATE;
+	offsetsstrm_access = USE_ALLOCATE;
 	positions_access = USE_ALLOCATE;
 	genome_access = USE_MMAP_PRELOAD; /* was batch_genome_p = true */
       } else if (!strcmp(optarg,"2")) {
-	offsetscomp_access = USE_ALLOCATE; /* was batch_offsets_p = true */
+	offsetsstrm_access = USE_ALLOCATE; /* was batch_offsets_p = true */
 	positions_access = USE_MMAP_PRELOAD; /* was batch_positions_p = true */
 	genome_access = USE_MMAP_PRELOAD; /* was batch_genome_p = true */
       } else if (!strcmp(optarg,"1")) {
-	offsetscomp_access = USE_ALLOCATE; /* was batch_offsets_p = true */
+	offsetsstrm_access = USE_ALLOCATE; /* was batch_offsets_p = true */
 	positions_access = USE_MMAP_PRELOAD; /* was batch_positions_p = true */
 	genome_access = USE_MMAP_ONLY; /* was batch_genome_p = false */
       } else if (!strcmp(optarg,"0")) {
-	offsetscomp_access = USE_ALLOCATE; /* was batch_offsets_p = true */
+	offsetsstrm_access = USE_ALLOCATE; /* was batch_offsets_p = true */
 	positions_access = USE_MMAP_ONLY; /* was batch_positions_p = false */
 	genome_access = USE_MMAP_ONLY; /* was batch_genome_p = false */
 #endif
@@ -4412,14 +4880,21 @@ main (int argc, char *argv[]) {
 #endif
       if (chimera_margin <= 0) {
 	/* Disable finding of chimeras */
+#if 0
       } else if (chimera_margin < CHIMERA_SLOP) {
+	/* Not sure why chimera_margin should be tied to CHIMERA_SLOP */
 	chimera_margin = CHIMERA_SLOP;
+#endif
       }
       break;
       /* case 'w': referencefile = optarg; break; */
+
 #ifdef HAVE_PTHREAD
     case 't': nworkers = atoi(check_valid_int(optarg)); break;
+#else
+    case 't': fprintf(stderr,"This version of GMAP has pthreads disabled, so ignoring the value of %s for -t\n",optarg); break;
 #endif
+
     case 's': splicing_file = optarg; knownsplicingp = true; break;
     case 'c': user_chrsubsetname = optarg; break;
     case 'H': minendexon = atoi(check_valid_int(optarg)); break;
@@ -4450,20 +4925,28 @@ main (int argc, char *argv[]) {
 	diag_debug = true;
       } else if (!strcmp(optarg,"stage2")) {
 	stage3debug = POST_STAGE2;
-      } else if (!strcmp(optarg,"smoothing")) {
-	stage3debug = POST_SMOOTHING;
       } else if (!strcmp(optarg,"singles")) {
 	stage3debug = POST_SINGLES;
       } else if (!strcmp(optarg,"introns")) {
 	stage3debug = POST_INTRONS;
       } else if (!strcmp(optarg,"hmm")) {
 	stage3debug = POST_HMM;
-      } else if (!strcmp(optarg,"dualbreaks")) {
-	stage3debug = POST_DUAL_BREAKS;
+      } else if (!strcmp(optarg,"smoothing")) {
+	stage3debug = POST_SMOOTHING;
+      } else if (!strcmp(optarg,"dualintrons")) {
+	stage3debug = POST_DUAL_INTRONS;
       } else if (!strcmp(optarg,"cycles")) {
 	stage3debug = POST_CYCLES;
+      } else if (!strcmp(optarg,"dualbreaks")) {
+	stage3debug = POST_DUAL_BREAKS;
+      } else if (!strcmp(optarg,"middle")) {
+	stage3debug = POST_MIDDLE;
+      } else if (!strcmp(optarg,"ends")) {
+	stage3debug = POST_ENDS;
       } else if (!strcmp(optarg,"canonical")) {
 	stage3debug = POST_CANONICAL;
+      } else if (!strcmp(optarg,"trim")) {
+	stage3debug = POST_CANONICAL;
       } else if (!strcmp(optarg,"changepoint")) {
 	stage3debug = POST_CHANGEPOINT;
       } else if (!strcmp(optarg,"distalmedial")) {
@@ -4474,7 +4957,12 @@ main (int argc, char *argv[]) {
       }
       break;
     case '9': checkp = true; diagnosticp = true; break;
-    case 'n': maxpaths = atoi(check_valid_int(optarg)); break;
+    case 'n':
+      maxpaths = atoi(check_valid_int(optarg));
+      if (maxpaths == 1) {
+	fprintf(stderr,"Note: -n 1 will not report chimeric alignments.  If you want a single alignment plus chimeras, use -n 0 instead.\n");
+      }
+      break;
     case 'f':
       if (!strcmp(optarg,"1") || !strcmp(optarg,"psl_nt")) {
 	printtype = PSL_NT;
@@ -4676,7 +5164,7 @@ main (int argc, char *argv[]) {
 #ifdef LARGE_GENOMES
     } else if (Univ_IIT_coord_values_8p(chromosome_iit) == false) {
       fprintf(stderr,"This program gmapl is designed for large genomes.\n");
-      fprintf(stderr,"For small genomes of less than 2^32 billion nt, please run gmap instead.\n");
+      fprintf(stderr,"For small genomes of less than 2^32 (4 billion) bp, please run gmap instead.\n");
       exit(9);
 #endif
     } else {
@@ -4841,6 +5329,7 @@ main (int argc, char *argv[]) {
       nfiles = 0;
       inbuffer_nspaces = 1;
     } else if (argc == 0) {
+      fprintf(stderr,"Reading from stdin\n");
       input = stdin;
       files = (char **) NULL;
       nfiles = 0;
@@ -4860,7 +5349,7 @@ main (int argc, char *argv[]) {
   if (nread > 1) {
     multiple_sequences_p = true;
 #ifdef HAVE_MMAP
-    if (offsetscomp_access != USE_ALLOCATE || genome_access != USE_ALLOCATE) {
+    if (offsetsstrm_access != USE_ALLOCATE || genome_access != USE_ALLOCATE) {
       fprintf(stderr,"Note: >1 sequence detected, so index files are being memory mapped.\n");
       fprintf(stderr,"  GMAP can run slowly at first while the computer starts to accumulate\n");
       fprintf(stderr,"  pages from the hard disk into its cache.  To copy index files into RAM\n");
@@ -4876,11 +5365,11 @@ main (int argc, char *argv[]) {
     /* fprintf(stderr,"Note: only 1 sequence detected.  Ignoring batch (-B) command\n"); */
     expand_offsets_p = false;
 #ifdef HAVE_MMAP
-    offsetscomp_access = USE_MMAP_ONLY;
+    offsetsstrm_access = USE_MMAP_ONLY;
     positions_access = USE_MMAP_ONLY;
     genome_access = USE_MMAP_ONLY;
 #else
-    offsetscomp_access = USE_ALLOCATE;
+    offsetsstrm_access = USE_ALLOCATE;
     positions_access = USE_ALLOCATE;
     genome_access = USE_ALLOCATE;
 #endif
@@ -4890,7 +5379,7 @@ main (int argc, char *argv[]) {
   /* Prepare genomic data */
 
   /* Complement_init(); */
-  Dynprog_init(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,mode);
+  Dynprog_init(mode);
 #ifdef PMAP
   Backtranslation_init();
 #endif
@@ -4899,8 +5388,10 @@ main (int argc, char *argv[]) {
     showcontigp = false;
     /* maxpaths = 1; -- no; could have different paths against the user segment. */
 
-    genome = (Genome_T) NULL;
-    genomealt = (Genome_T) NULL;
+    genomecomp = (Genome_T) NULL;
+    genomebits = (Genome_T) NULL;
+    genomecomp_alt = (Genome_T) NULL;
+    genomebits_alt = (Genome_T) NULL;
     dbversion = (char *) NULL;
     /* Do for each usersegment */
 
@@ -4909,10 +5400,13 @@ main (int argc, char *argv[]) {
     showcontigp = false;
     /* maxpaths = 1; -- no; could have different paths against the user segment. */
 
-    genome = (Genome_T) NULL;
-    genomealt = (Genome_T) NULL;
+    genomecomp = (Genome_T) NULL;
+    genomebits = (Genome_T) NULL;
+    genomecomp_alt = (Genome_T) NULL;
+    genomebits_alt = (Genome_T) NULL;
     dbversion = (char *) NULL;
-    genome_blocks = Genome_create_blocks(Sequence_fullpointer(usersegment),Sequence_fulllength(usersegment));
+    genomecomp_blocks = Compress_create_blocks_comp(Sequence_fullpointer(usersegment),Sequence_fulllength(usersegment));
+    genomebits_blocks = Compress_create_blocks_bits(genomecomp_blocks,Sequence_fulllength(usersegment));
 
     if (userstage1p == true) {
 #ifdef PMAP
@@ -4920,6 +5414,9 @@ main (int argc, char *argv[]) {
 					alphabet_size,index1part_aa,/*watsonp*/true,index1interval);
       indexdb_rev = Indexdb_new_segment(Sequence_fullpointer(usersegment),
 					alphabet_size,index1part_aa,/*watsonp*/false,index1interval);
+#elif defined(LARGE_GENOMES)
+      fprintf(stderr,"If you are providing a genomic segment, please use gmap instead of gmapl\n");
+      exit(9);
 #else
       indexdb_fwd = Indexdb_new_segment(Sequence_fullpointer(usersegment),index1part,index1interval);
       indexdb_rev = indexdb_fwd;
@@ -4935,9 +5432,6 @@ main (int argc, char *argv[]) {
 #ifdef PMAP
   } else {
     /* Map against genome */
-    chrsubset = Chrsubset_read(user_chrsubsetfile,genomesubdir,fileroot,user_chrsubsetname,
-			       chromosome_iit);
-
     if (showcontigp == true) {
       iitfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+
 				strlen(fileroot)+strlen(".contig.iit")+1,sizeof(char));
@@ -4949,25 +5443,29 @@ main (int argc, char *argv[]) {
       FREE(iitfile);
     }
   
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
-    genome_blocks = Genome_blocks(genome);
+    genomecomp = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,genome_access);
+    genomebits = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			    uncompressedp,genome_access);
     if (snps_root == NULL) {
-      snp_blocks = (UINT4 *) NULL;
+      genomecomp_alt = genomebits_alt = (Genome_T) NULL;
     } else {
-      genomealt = Genome_new(genomesubdir,fileroot,snps_root,uncompressedp,genome_access);
-      snp_blocks = Genome_blocks(genomealt);
+      genomecomp_alt = Genome_new(genomesubdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+				  uncompressedp,genome_access);
+      genomebits_alt = Genome_new(genomesubdir,fileroot,snps_root,/*genometype*/GENOME_BITS,
+				  uncompressedp,genome_access);
     }
 
-    indexdb_fwd = Indexdb_new_genome(&basesize,&index1part_aa,&index1interval,
+    indexdb_fwd = Indexdb_new_genome(&index1part_aa,&index1interval,
 				     genomesubdir,fileroot,FWD_FILESUFFIX,/*snps_root*/NULL,
 				     &alphabet,&alphabet_size,required_alphabet,
-				     required_basesize,required_index1part,required_index1interval,
-				     expand_offsets_p,offsetscomp_access,positions_access);
-    indexdb_rev = Indexdb_new_genome(&basesize,&index1part_aa,&index1interval,
+				     required_index1part,required_index1interval,
+				     expand_offsets_p,offsetsstrm_access,positions_access);
+    indexdb_rev = Indexdb_new_genome(&index1part_aa,&index1interval,
 				     genomesubdir,fileroot,REV_FILESUFFIX,/*snps_root*/NULL,
 				     &alphabet,&alphabet_size,required_alphabet,
-				     required_basesize,required_index1part,required_index1interval,
-				     expand_offsets_p,offsetscomp_access,positions_access);
+				     required_index1part,required_index1interval,
+				     expand_offsets_p,offsetsstrm_access,positions_access);
 
     if (indexdb_fwd == NULL || indexdb_rev == NULL) {
       fprintf(stderr,"Cannot find offsets file %s.%s*offsets or %s.%s*offsets.\n",
@@ -4975,7 +5473,15 @@ main (int argc, char *argv[]) {
       fprintf(stderr,"You may need to run 'pmapindex -d %s' to build the indices needed for PMAP.\n",
 	      fileroot);
       exit(9);
-    }      
+    } else if (user_chrsubsetname != NULL) {
+      if ((divno = Univ_IIT_find_one(chromosome_iit,user_chrsubsetname)) < 0) {
+	fprintf(stderr,"Cannot find chrsubset %s in chromosome IIT file.  Ignoring.\n",user_chrsubsetname);
+      } else {
+	interval = Univ_IIT_interval(chromosome_iit,divno);
+	chrsubset_start = Univinterval_low(interval);
+	chrsubset_end = Univinterval_high(interval);
+      }
+    }
 
     FREE(genomesubdir);
     FREE(fileroot);
@@ -4984,9 +5490,6 @@ main (int argc, char *argv[]) {
 #else
   } else if (snps_root == NULL) {
     /* Map against genome without SNPs */
-    chrsubset = Chrsubset_read(user_chrsubsetfile,genomesubdir,fileroot,user_chrsubsetname,
-			       chromosome_iit);
-
     if (showcontigp == true) {
       iitfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+
 				strlen(fileroot)+strlen(".contig.iit")+1,sizeof(char));
@@ -4998,10 +5501,17 @@ main (int argc, char *argv[]) {
       FREE(iitfile);
     }
   
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
-    genomealt = (Genome_T) NULL;
-    genome_blocks = Genome_blocks(genome);
-    snp_blocks = (Genomecomp_T *) NULL;
+    genomecomp = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,genome_access);
+    genomecomp_blocks = Genome_blocks(genomecomp);
+    if ((genomebits = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+				 uncompressedp,genome_access)) == NULL) {
+      genomebits_blocks = (Genomecomp_T *) NULL;
+    } else {
+      genomebits_blocks = Genome_blocks(genomebits);
+    }
+    genomecomp_alt = (Genome_T) NULL;
+    genomebits_alt = (Genome_T) NULL;
 
     if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
       if (user_cmetdir == NULL) {
@@ -5010,18 +5520,18 @@ main (int argc, char *argv[]) {
 	modedir = user_cmetdir;
       }
 
-      if ((indexdb_fwd = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_fwd = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"metct",/*snps_root*/NULL,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metct index file.  Need to run cmetindex first\n");
 	exit(9);
       }
 
-      if ((indexdb_rev = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_rev = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"metga",/*snps_root*/NULL,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metga index file.  Need to run cmetindex first\n");
 	exit(9);
       }
@@ -5033,34 +5543,44 @@ main (int argc, char *argv[]) {
 	modedir = user_atoidir;
       }
 
-      if ((indexdb_fwd = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_fwd = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"a2iag",/*snps_root*/NULL,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2iag index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
-      if ((indexdb_rev = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_rev = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"a2itc",/*snps_root*/NULL,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2itc index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
     } else {
       /* Standard behavior */
-      if ((indexdb_fwd = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_fwd = Indexdb_new_genome(&index1part,&index1interval,
 					    genomesubdir,fileroot,IDX_FILESUFFIX,/*snps_root*/NULL,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find offsets file %s.%s*offsets, needed for GSNAP\n",fileroot,IDX_FILESUFFIX);
 	exit(9);
       }
       indexdb_rev = indexdb_fwd;
     }
 
+    if (user_chrsubsetname != NULL) {
+      if ((divno = Univ_IIT_find_one(chromosome_iit,user_chrsubsetname)) < 0) {
+	fprintf(stderr,"Cannot find chrsubset %s in chromosome IIT file.  Ignoring.\n",user_chrsubsetname);
+      } else {
+	interval = Univ_IIT_interval(chromosome_iit,divno);
+	chrsubset_start = Univinterval_low(interval);
+	chrsubset_end = Univinterval_high(interval);
+      }
+    }
+
     FREE(genomesubdir);
     FREE(fileroot);
     FREE(dbroot);
@@ -5073,9 +5593,6 @@ main (int argc, char *argv[]) {
       snpsdir = user_snpsdir;
     }
 
-    chrsubset = Chrsubset_read(user_chrsubsetfile,genomesubdir,fileroot,user_chrsubsetname,
-			       chromosome_iit);
-
     if (showcontigp == true) {
       iitfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+
 				strlen(fileroot)+strlen(".contig.iit")+1,sizeof(char));
@@ -5087,10 +5604,19 @@ main (int argc, char *argv[]) {
       FREE(iitfile);
     }
 
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
-    genomealt = Genome_new(genomesubdir,fileroot,snps_root,uncompressedp,genome_access);
-    genome_blocks = Genome_blocks(genome);
-    snp_blocks = Genome_blocks(genomealt);
+    genomecomp = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,genome_access);
+    genomecomp_blocks = Genome_blocks(genomecomp);
+    if ((genomebits = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+				 uncompressedp,genome_access)) == NULL) {
+      genomebits_blocks = (Genomecomp_T *) NULL;
+    } else {
+      genomebits_blocks = Genome_blocks(genomebits);
+    }
+    genomecomp_alt = Genome_new(genomesubdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+				uncompressedp,genome_access);
+    genomebits_alt = Genome_new(genomesubdir,fileroot,snps_root,/*genometype*/GENOME_BITS,
+				uncompressedp,genome_access);
 
     if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
       if (user_cmetdir == NULL) {
@@ -5099,17 +5625,17 @@ main (int argc, char *argv[]) {
 	modedir = user_cmetdir;
       }
 
-      if ((indexdb_fwd = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_fwd = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"metct",snps_root,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metct index file.  Need to run cmetindex first\n");
 	exit(9);
       }
-      if ((indexdb_rev = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_rev = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"metga",snps_root,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metga index file.  Need to run cmetindex first\n");
 	exit(9);
       }
@@ -5121,26 +5647,26 @@ main (int argc, char *argv[]) {
 	modedir = user_atoidir;
       }
 
-      if ((indexdb_fwd = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_fwd = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"a2iag",snps_root,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2iag index file.  Need to run atoiindex first\n");
 	exit(9);
       }
-      if ((indexdb_rev = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb_rev = Indexdb_new_genome(&index1part,&index1interval,
 					    modedir,fileroot,/*idx_filesuffix*/"a2itc",snps_root,
-					    required_basesize,required_index1part,required_index1interval,
-					    expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					    required_index1part,required_index1interval,
+					    expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2itc index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
     } else {
-      indexdb_fwd = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      indexdb_fwd = Indexdb_new_genome(&index1part,&index1interval,
 				       snpsdir,fileroot,/*idx_filesuffix*/"ref",snps_root,
-				       required_basesize,required_index1part,required_index1interval,
-				       expand_offsets_p,offsetscomp_access,positions_access);
+				       required_index1part,required_index1interval,
+				       expand_offsets_p,offsetsstrm_access,positions_access);
       if (indexdb_fwd == NULL) {
 	fprintf(stderr,"Cannot find snps index file for %s in directory %s\n",snps_root,snpsdir);
 	exit(9);
@@ -5148,14 +5674,24 @@ main (int argc, char *argv[]) {
       indexdb_rev = indexdb_fwd;
     }
 
+    if (user_chrsubsetname != NULL) {
+      if ((divno = Univ_IIT_find_one(chromosome_iit,user_chrsubsetname)) < 0) {
+	fprintf(stderr,"Cannot find chrsubset %s in chromosome IIT file.  Ignoring.\n",user_chrsubsetname);
+      } else {
+	interval = Univ_IIT_interval(chromosome_iit,divno);
+	chrsubset_start = Univinterval_low(interval);
+	chrsubset_end = Univinterval_high(interval);
+      }
+    }
+
     FREE(genomesubdir);
     FREE(fileroot);
     FREE(dbroot);
 #endif
   }
 
-  if (splicing_file != NULL && genome != NULL) {
-    if (Genome_blocks(genome) == NULL) {
+  if (splicing_file != NULL && genomecomp != NULL) {
+    if (Genome_blocks(genomecomp) == NULL) {
       fprintf(stderr,"known splicing can be used only with compressed genome\n");
     } else {
       /* TODO: Handle case for observed distances */
@@ -5166,11 +5702,13 @@ main (int argc, char *argv[]) {
       if ((donor_typeint = IIT_typeint(splicing_iit,"donor")) >= 0 && 
 	  (acceptor_typeint = IIT_typeint(splicing_iit,"acceptor")) >= 0) {
 	fprintf(stderr,"found donor and acceptor tags, so treating as splicesites file\n");
+	splicestringpool = Splicestringpool_new();
 	splicesites = Splicetrie_retrieve_via_splicesites(&distances_observed_p,&splicetypes,&splicedists,
 							  &splicestrings,&splicefrags_ref,&splicefrags_alt,
 							  &nsplicesites,splicing_iit,splicing_divint_crosstable,
 							  donor_typeint,acceptor_typeint,chromosome_iit,
-							  genome,genomealt/*can be NULL*/,shortsplicedist);
+							  genomecomp,genomecomp_alt/*can be NULL*/,shortsplicedist,
+							  splicestringpool);
 	if (nsplicesites == 0) {
 	  fprintf(stderr,"\nWarning: No splicesites observed for genome %s.  Are you sure this splicesite file was built for this genome?  Please compare chromosomes below:\n",
 		  dbroot);
@@ -5183,27 +5721,25 @@ main (int argc, char *argv[]) {
 	} else {
 	  Splicetrie_npartners(&nsplicepartners_skip,&nsplicepartners_obs,&nsplicepartners_max,splicesites,splicetypes,splicedists,
 			       splicestrings,nsplicesites,chromosome_iit,shortsplicedist,distances_observed_p);
-#if 0
-	  if (multiple_sequences_p == true && splicetrie_precompute_p == true) {
-#endif
-	    Splicetrie_build_via_splicesites(&triecontents_obs,&trieoffsets_obs,&triecontents_max,&trieoffsets_max,
-					     nsplicepartners_skip,nsplicepartners_obs,nsplicepartners_max,splicetypes,
-					     splicestrings,nsplicesites);
-	    FREE(nsplicepartners_max);
-	    FREE(nsplicepartners_obs);
-	    FREE(nsplicepartners_skip);
-	    Splicestring_gc(splicestrings,nsplicesites);
-#if 0
-	  }
-#endif
+	  Splicetrie_build_via_splicesites(&triecontents_obs,&trieoffsets_obs,&triecontents_max,&trieoffsets_max,
+					   nsplicepartners_skip,nsplicepartners_obs,nsplicepartners_max,splicetypes,
+					   splicestrings,nsplicesites);
+	  FREE(nsplicepartners_max);
+	  FREE(nsplicepartners_obs);
+	  FREE(nsplicepartners_skip);
+	  /* Splicestring_gc(splicestrings,nsplicesites); */
+	  FREE(splicestrings);
 	}
+	Splicestringpool_free(&splicestringpool);
 
       } else {
 	fprintf(stderr,"no donor or acceptor tags found, so treating as introns file\n");
+	splicestringpool = Splicestringpool_new();
 	splicesites = Splicetrie_retrieve_via_introns(&splicetypes,&splicedists,
 						      &splicestrings,&splicefrags_ref,&splicefrags_alt,
 						      &nsplicesites,splicing_iit,splicing_divint_crosstable,
-						      chromosome_iit,genome,genomealt/*can be NULL*/);
+						      chromosome_iit,genomecomp,genomecomp_alt/*can be NULL*/,
+						      splicestringpool);
 	if (nsplicesites == 0) {
 	  fprintf(stderr,"\nWarning: No splicesites observed for genome %s.  Are you sure this splicesite file was built for this genome?  Please compare chromosomes below:\n",
 		  dbroot);
@@ -5213,18 +5749,15 @@ main (int argc, char *argv[]) {
 	  IIT_dump_divstrings(stderr,splicing_iit);
 	  exit(9);
 	} else {
-#if 0
-	  if (multiple_sequences_p == true && splicetrie_precompute_p == true) {
-#endif
-	    Splicetrie_build_via_introns(&triecontents_obs,&trieoffsets_obs,splicesites,splicetypes,
-					 splicestrings,nsplicesites,chromosome_iit,splicing_iit,splicing_divint_crosstable);
-	    triecontents_max = (Triecontent_T *) NULL;
-	    trieoffsets_max =  (Trieoffset_T *) NULL;
-	    Splicestring_gc(splicestrings,nsplicesites);
-#if 0
-	  }
-#endif
+	  Splicetrie_build_via_introns(&triecontents_obs,&trieoffsets_obs,splicesites,splicetypes,
+				       splicestrings,nsplicesites,chromosome_iit,splicing_iit,splicing_divint_crosstable);
+	  triecontents_max = (Triecontent_T *) NULL;
+	  trieoffsets_max =  (Trieoffset_T *) NULL;
+	  /* Splicestring_gc(splicestrings,nsplicesites); */
+	  FREE(splicestrings);
 	}
+	Splicestringpool_free(&splicestringpool);
+
       }
     }
 
@@ -5233,49 +5766,62 @@ main (int argc, char *argv[]) {
 
 
   if (user_pairalign_p == true) {
-    /* Do for each usersegment */
+    /* Creation of genomebits/genomecomp and initialization done within single_thread() for each input sequence */
 
   } else if (usersegment != NULL) {
-    Genome_user_setup(genome_blocks);
-    Genome_hr_user_setup(genome_blocks,/*query_unk_mismatch_p*/false,
+    Genome_user_setup(genomecomp_blocks);
+    Genome_hr_user_setup(genomebits_blocks,/*query_unk_mismatch_p*/false,
 			 /*genome_unk_mismatch_p*/true,/*mode*/STANDARD);
-    Maxent_hr_setup(genome_blocks,/*genomealt_blocks*/genome_blocks);
-#ifndef PMAP
-    Oligoindex_hr_setup(genome_blocks,mode);
+    Genome_sites_setup(genomecomp_blocks,/*snp_blocks*/NULL);
+    Maxent_hr_setup(genomecomp_blocks,/*genomealt_blocks*/genomecomp_blocks);
+#ifdef PMAP
+    Oligoindex_pmap_setup(genomecomp);
+#else
+    Oligoindex_hr_setup(genomecomp_blocks,mode);
 #endif
 
-  } else if (genome != NULL) {
-    Genome_setup(genome,genomealt/*can be NULL*/,mode,circular_typeint);
-    Genome_hr_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL,
-		    /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/true,/*mode*/STANDARD);
-    Maxent_hr_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL);
+  } else if (genomecomp != NULL) {
+    Genome_setup(genomecomp,genomecomp_alt/*can be NULL*/,mode,circular_typeint);
+    if (genomebits_blocks == NULL) {
+      fprintf(stderr,"This version of GMAP requires the genomebits128 file\n");
+      exit(9);
+    } else {
+      Genome_hr_setup(genomebits_blocks,/*snp_blocks*/genomebits_alt ? Genome_blocks(genomebits_alt) : NULL,
+		      /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/true,/*mode*/STANDARD);
+    }
+    Genome_sites_setup(Genome_blocks(genomecomp),/*snp_blocks*/genomecomp_alt ? Genome_blocks(genomecomp_alt) : NULL);
+    Maxent_hr_setup(Genome_blocks(genomecomp),/*snp_blocks*/genomecomp_alt ? Genome_blocks(genomecomp_alt) : NULL);
 #ifdef PMAP
     Alphabet_setup(alphabet,alphabet_size,index1part_aa);
+    Oligoindex_pmap_setup(genomecomp);
     Oligop_setup(alphabet,alphabet_size,index1part_aa);
     Indexdb_setup(index1part_aa);
     Stage1_setup(index1part_aa,maxextension,maxtotallen_bound,min_extra_end,circular_typeint);
 #else
-    Oligoindex_hr_setup(Genome_blocks(genome),mode);
+    Oligoindex_hr_setup(Genome_blocks(genomecomp),mode);
     Oligo_setup(index1part);
     Indexdb_setup(index1part);
     Stage1_setup(index1part,maxextension,maxtotallen_bound,min_extra_end,circular_typeint);
 #endif
   }
 
-  Stage2_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,
-	       suboptimal_score_start,suboptimal_score_end,mode,/*snps_p*/snp_blocks ? true : false);
-  Dynprog_setup(novelsplicingp,splicing_iit,splicing_divint_crosstable,
-		donor_typeint,acceptor_typeint,
-		splicesites,splicetypes,splicedists,nsplicesites,
-		trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max);
+  Stage2_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,cross_species_p,
+	       suboptimal_score_start,suboptimal_score_end,mode,
+	       /*snps_p*/genomecomp_alt ? true : false);
+  Dynprog_single_setup(homopolymerp);
+  Dynprog_genome_setup(novelsplicingp,splicing_iit,splicing_divint_crosstable,
+		       donor_typeint,acceptor_typeint);
+  Dynprog_end_setup(splicesites,splicetypes,splicedists,nsplicesites,
+		    trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max);
   Pair_setup(trim_mismatch_score,trim_indel_score,sam_insert_0M_p,
 	     force_xs_direction_p,md_lowercase_variant_p,
-	     /*snps_p*/snp_blocks ? true : false);
+	     /*snps_p*/genomecomp_alt ? true : false);
   Stage3_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,novelsplicingp,
 	       require_splicedir_p,splicing_iit,splicing_divint_crosstable,
 	       donor_typeint,acceptor_typeint,
-	       splicesites,min_intronlength,max_deletionlength,
-	       /*output_sam_p*/printtype == SAM ? true : false);
+	       splicesites,min_intronlength,max_deletionlength,/*min_indel_end_matches*/6,
+	       /*output_sam_p*/printtype == SAM ? true : false,
+	       homopolymerp,stage3debug);
   Splicetrie_setup(splicesites,splicefrags_ref,splicefrags_alt,
 		   trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max,
 		   /*snpp*/false,amb_closest_p,/*amb_clip_p*/true,/*min_shortend*/2);
@@ -5291,17 +5837,18 @@ main (int argc, char *argv[]) {
   }
 #endif
 
-  outbuffer = Outbuffer_new(output_buffer_size,nread,sevenway_root,appendp,
+  outbuffer = Outbuffer_new(output_buffer_size,nread,sevenway_root,failedinput_root,appendp,
 			    /*chimeras_allowed_p*/chimera_margin > 0 ? true : false,
-			    user_genomicseg,usersegment,dbversion,genome,chromosome_iit,
-			    chrsubset,contig_iit,altstrain_iit,map_iit,
+			    user_genomicseg,usersegment,dbversion,genomecomp,chromosome_iit,
+			    user_chrsubsetname,contig_iit,altstrain_iit,map_iit,
 			    map_divint_crosstable,printtype,checksump,chimera_margin,
 #ifndef PMAP
 			    sam_headers_p,quality_shift,sam_paired_p,
 			    sam_read_group_id,sam_read_group_name,
 			    sam_read_group_library,sam_read_group_platform,
+			    nworkers,orderedp,
 #endif
-			    nofailsp,failsonlyp,fails_as_input_p,maxpaths,quiet_if_excessive_p,
+			    nofailsp,failsonlyp,maxpaths,quiet_if_excessive_p,
 			    map_exons_p,map_bothstrands_p,print_comment_p,nflanking,
 			    proteinmode,invertmode,nointronlenp,wraplength,
 			    ngap,cds_startpos,fulllengthp,truncatep,strictp,diagnosticp,maponlyp,
@@ -5405,7 +5952,8 @@ main (int argc, char *argv[]) {
       FREE(nsplicepartners_max);
       FREE(nsplicepartners_obs);
       FREE(nsplicepartners_skip);
-      Splicestring_gc(splicestrings,nsplicesites);
+      /* Splicestring_gc(splicestrings,nsplicesites); */
+      FREE(splicestrings);
     }
     FREE(splicefrags_ref);
     FREE(splicedists);
@@ -5440,16 +5988,21 @@ main (int argc, char *argv[]) {
   if (altstrain_iit != NULL) {
     IIT_free(&altstrain_iit);
   }
-  if (genomealt != NULL) {
-    Genome_free(&genomealt);
+  if (genomecomp_alt != NULL) {
+    Genome_free(&genomecomp_alt);
   }
   if (user_pairalign_p == true) {
-    /* genome_blocks freed within single_thread */
+    /* genomecomp_blocks freed within single_thread */
   } else if (usersegment != NULL) {
-    FREE(genome_blocks);
-  } else if (genome != NULL) {
-    Genome_free(&genome);
+    FREE(genomecomp_blocks);
+    FREE(genomebits_blocks);
+  } else if (genomecomp != NULL) {
+    Genome_free(&genomecomp);
+  }
+  if (genomebits != NULL) {
+    Genome_free(&genomebits);
   }
+
   if (map_iit != NULL) {
     IIT_free(&map_iit);
   }
@@ -5462,9 +6015,6 @@ main (int argc, char *argv[]) {
   if (chromosome_iit != NULL) {
     Univ_IIT_free(&chromosome_iit);
   }
-  if (chrsubset != NULL) {
-    Chrsubset_free(&chrsubset);
-  }
 
   if (user_selfalign_p == true) {
     /* Do not free usersegment */
@@ -5510,12 +6060,9 @@ Input options (must include -d or -g)\n\
   -k, --kmer=INT                 kmer size to use in genome database (allowed values: 16 or less).\n\
                                    If not specified, the program will find the highest available\n\
                                    kmer size in the genome database\n\
-  --basesize=INT                 Base size to use in genome database.  If not specified, the program\n\
-                                   will find the highest available base size in the genome database\n\
-                                   within selected k-mer size\n\
   --sampling=INT                 Sampling to use in genome database.  If not specified, the program\n\
                                    will find the smallest available sampling value in the genome database\n\
-                                   within selected basesize and k-mer size\n\
+                                   within selected k-mer size\n\
   -G, --genomefull               Use full genome (all ASCII chars allowed;\n\
                                    built explicitly during setup), not\n\
                                    compressed version\n\
@@ -5573,10 +6120,10 @@ Input options (must include -d or -g)\n\
                                    a genomic gap will be considered a deletion rather than an intron.\n\
   -K, --intronlength=INT         Max length for one internal intron (default 1000000)\n\
   -w, --localsplicedist=INT      Max length for known splice sites at ends of sequence\n\
-                                   (default 200000)\n\
+                                   (default 2,000,000)\n\
   -L, --totallength=INT          Max total intron length (default 2400000)\n\
   -x, --chimera-margin=INT       Amount of unaligned sequence that triggers\n\
-                                   search for the remaining sequence (default 40).\n\
+                                   search for the remaining sequence (default 30).\n\
                                    Enables alignment of chimeric reads, and may help\n\
                                    with some non-chimeric reads.  To turn off, set to\n\
                                    zero.\n\
@@ -5593,26 +6140,35 @@ Input options (must include -d or -g)\n\
     fprintf(stdout,"\
   -t, --nthreads=INT             Number of worker threads\n\
 ");
+#else
+  fprintf(stdout,"\
+  -t, --nthreads=INT             Number of worker threads.  Flag is ignored in this version of GMAP, which has pthreads disabled\n\
+");
 #endif
     fprintf(stdout,"\
-  -C, --chrsubsetfile=filename   User-supplied chromosome subset file\n\
-  -c, --chrsubset=string         Chromosome subset to search\n\
+  -c, --chrsubset=string         Limit search to given chromosome\n\
   -z, --direction=STRING         cDNA direction (sense_force, antisense_force,\n\
                                    sense_filter, antisense_filter,or auto (default))\n\
   -H, --trimendexons=INT         Trim end exons with fewer than given number of matches\n\
                                    (in nt, default 12)\n\
-  --find-shifted-canonical       Use a more sensitive search for canonical splicing\n\
-  --cross-species                Synonym for --find-shifted-canonical, which helps especially\n\
-                                   for cross-species alignments and other difficult cases\n\
   --canonical-mode=INT           Reward for canonical and semi-canonical introns\n\
                                    0=low reward, 1=high reward (default), 2=low reward for\n\
                                    high-identity sequences and high reward otherwise\n\
+  --cross-species                Use a more sensitive search for canonical splicing, which helps especially\n\
+                                   for cross-species alignments and other difficult cases\n\
   --allow-close-indels=INT       Allow an insertion and deletion close to each other\n\
                                    (0=no, 1=yes (default), 2=only for high-quality alignments)\n\
   --microexon-spliceprob=FLOAT   Allow microexons only if one of the splice site probabilities is\n\
                                    greater than this value (default 0.90)\n\
 ");
 
+#if 0
+    fprintf(stdout,"\
+  --homopolymer                  In dynamic programming, favor indels in regions of homopolymers,\n\
+                                   e.g., AAAAAA.  Useful for some platforms, such as Pacific Biosciences\n\
+");
+#endif
+
 #ifndef PMAP
     fprintf(stdout,"\
   --cmetdir=STRING               Directory for methylcytosine index files (created using cmetindex)\n\
@@ -5697,10 +6253,10 @@ Output types\n\
 
     fprintf(stdout,"\
 Output options\n\
-  -n, --npaths=INT               Maximum number of paths to show.  If set to 0,\n \
-                                 prints two paths if chimera detected, else one.\n\
-  --quiet-if-excessive           If more than maximum number of paths are found,\n\
-                                   then nothing is printed.\n\
+  -n, --npaths=INT               Maximum number of paths to show (default 5).  If set to 1, GMAP\n\
+                                   will not report chimeric alignments, since those imply\n\
+                                   two paths.  If you want a single alignment plus chimeric\n\
+                                   alignments, then set this to be 0.\n\
   --suboptimal-score=INT         Report only paths whose score is within this value of the\n\
                                    best path.  By default, if this option is not provided,\n\
                                    the program prints all paths found.\n\
@@ -5710,7 +6266,6 @@ Output options\n\
   -o, --chimera-overlap          Overlap to show, if any, at chimera breakpoint\n\
   --failsonly                    Print only failed alignments, those with no results\n\
   --nofails                      Exclude printing of failed alignments\n\
-  --fails-as-input               Print completely failed alignments as input FASTA or FASTQ format\n\
 \n\
   -V, --snpsdir=STRING           Directory for SNPs index files (created using snpindex) (default is\n\
                                    location of genome index files specified using -D and -d)\n \
@@ -5721,8 +6276,11 @@ Output options\n\
   fprintf(stdout,"\
   --split-output=STRING          Basename for multiple-file output, separately for nomapping,\n\
                                    uniq, mult, (and chimera, if --chimera-margin is selected)\n\
-  --append-output                When --split-output is given, this flag will append output to the\n\
-                                   existing files.  Otherwise, the default is to create new files.\n\
+  --failed-input=STRING          Print completely failed alignments as input FASTA or FASTQ format\n\
+                                   to the given file.  If the --split-output flag is also given, this file\n\
+                                   is generated in addition to the output in the .nomapping file.\n\
+  --append-output                When --split-output or --failedinput is given, this flag will append output\n\
+                                   to the existing files.  Otherwise, the default is to create new files.\n\
   --output-buffer-size=INT       Buffer size, in queries, for output thread (default 1000).  When the number\n\
                                    of results to be printed exceeds this size, the worker threads are halted\n\
                                    until the backlog is cleared\n\
diff --git a/src/gmapindex.c b/src/gmapindex.c
index 7974524..74f27a3 100644
--- a/src/gmapindex.c
+++ b/src/gmapindex.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: gmapindex.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: gmapindex.c 138522 2014-06-09 17:08:44Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -14,6 +14,7 @@ static char rcsid[] = "$Id: gmapindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include <ctype.h>
 #include <string.h>
 #include <strings.h>		/* For rindex */
+#include <sys/mman.h>		/* For munmap */
 #include "types.h"
 #include "bool.h"
 #include "assert.h"
@@ -25,18 +26,32 @@ static char rcsid[] = "$Id: gmapindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "tableuint8.h"
 typedef Tableuint8_T Table_chrpos_T;
 #else
-#include "tableuint.h"
 typedef Tableuint_T Table_chrpos_T;
 #endif
+#include "tableuint.h"
 #include "compress.h"
 #include "chrom.h"
 #include "segmentpos.h"
 #include "univinterval.h"
 #include "iit-write-univ.h"
 #include "iit-read-univ.h"
+#include "genome.h"
+#include "genome128_hr.h"
 #include "genome-write.h"
 #include "indexdb-write.h"
+#include "compress-write.h"
 #include "intlist.h"
+#include "indexdbdef.h"		/* For compression types */
+#include "indexdb.h"		/* For Filenames_T */
+#include "sarray-write.h"
+#include "bytecoding.h"
+#include "bitpack64-write.h"
+
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"
+#else
+#include "littleendian.h"
+#endif
 
 #define BUFFERSIZE 8192
 
@@ -48,12 +63,14 @@ typedef Tableuint_T Table_chrpos_T;
 
 
 /* Program variables */
-typedef enum {NONE, AUXFILES, GENOME, COMPRESS, UNCOMPRESS, OFFSETS, POSITIONS} Action_T;
+typedef enum {NONE, AUXFILES, GENOME, UNSHUFFLE, COUNT, OFFSETS, POSITIONS, SUFFIX_ARRAY, LCP_CHILD,
+	      ARRAY_UNCOMPRESS, CHILD_UNCOMPRESS} Action_T;
 static Action_T action = NONE;
 static char *sourcedir = ".";
 static char *destdir = ".";
 static char *fileroot = NULL;
-static int offsetscomp_basesize = 12;
+static int compression_types = BITPACK64_COMPRESSION;
+static int compression_type;
 static int index1part = 15;
 static int index1interval = 3;	/* Interval for storing 12-mers */
 static bool genome_lc_p = false;
@@ -66,6 +83,8 @@ static int nmessages = 50;
 
 static char *mitochondrial_string = NULL;
 static Sorttype_T divsort = CHROM_SORT;
+static char *sortfilename = NULL;
+static bool huge_offsets_p = false;
 
 
 #if 0
@@ -190,14 +209,20 @@ chrlength_update (Table_chrpos_T chrlength_table, Chrom_T chrom, Univcoord_T seg
 }
 
 static void
-store_accession (Table_T accsegmentpos_table, Table_chrpos_T chrlength_table,
+store_accession (Table_T accsegmentpos_table, Table_chrpos_T chrlength_table, Tableuint_T chrorder_table,
 		 char *accession, char *chr_string, Chrpos_T chrpos1, 
 		 Chrpos_T chrpos2, bool revcompp, Chrpos_T seglength, 
 		 int contigtype, unsigned int universal_coord, bool circularp) {
   Chrom_T chrom;
   Segmentpos_T segmentpos;
+  unsigned int order;
 
-  chrom = Chrom_from_string(chr_string,mitochondrial_string,/*order*/universal_coord,circularp);
+  if (chrorder_table != NULL) {
+    order = Tableuint_get(chrorder_table,chr_string);
+    chrom = Chrom_from_string(chr_string,mitochondrial_string,order,circularp);
+  } else {
+    chrom = Chrom_from_string(chr_string,mitochondrial_string,/*order*/universal_coord,circularp);
+  }
 
   segmentpos = Segmentpos_new(chrom,chrpos1,chrpos2,revcompp,seglength,contigtype);
   Table_put(accsegmentpos_table,(void *) accession,(void *) segmentpos);
@@ -281,7 +306,7 @@ skip_sequence (Chrpos_T seglength) {
 
 static bool
 process_sequence_aux (Chrpos_T *seglength, Table_T accsegmentpos_table, Table_chrpos_T chrlength_table,
-		      char *fileroot, int ncontigs) {
+		      Tableuint_T chrorder_table, char *fileroot, int ncontigs) {
   char Buffer[BUFFERSIZE], accession_p[BUFFERSIZE], *accession, 
     chrpos_string[BUFFERSIZE], *chr_string, *coords, *ptr, *p;
   Chrpos_T chrpos1, chrpos2, lower, upper;
@@ -409,7 +434,7 @@ process_sequence_aux (Chrpos_T *seglength, Table_T accsegmentpos_table, Table_ch
     universal_coord = 0U;
   }
 
-  store_accession(accsegmentpos_table,chrlength_table,
+  store_accession(accsegmentpos_table,chrlength_table,chrorder_table,
 		  accession,chr_string,lower,upper,revcompp,
 		  *seglength,/*contigtype*/0,universal_coord,circularp);
 
@@ -447,6 +472,7 @@ write_chromosome_file (char *genomesubdir, char *fileroot, Table_chrpos_T chrlen
     chroms = (Chrom_T *) Tableuint_keys_by_timeindex(chrlength_table,0U);
     n = Tableuint_length(chrlength_table);
 #endif
+
   } else {
     /* Get chromosomes in order */
 #ifdef HAVE_64_BIT
@@ -460,6 +486,7 @@ write_chromosome_file (char *genomesubdir, char *fileroot, Table_chrpos_T chrlen
     case ALPHA_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_alpha); break;
     case NUMERIC_ALPHA_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_numeric_alpha); break;
     case CHROM_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_chrom); break;
+    case FILENAME_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_order); break;
     default: abort();
     }
   }
@@ -612,6 +639,8 @@ bysegmentpos_compare (const void *x, const void *y) {
     return Segmentpos_compare_numeric_alpha(&a,&b);
   } else if (divsort == CHROM_SORT) {
     return Segmentpos_compare_chrom(&a,&b);
+  } else if (divsort == FILENAME_SORT) {
+    return Segmentpos_compare_order(&a,&b);
   } else {
     abort();
   }
@@ -874,6 +903,31 @@ remove_slashes (char *buffer) {
 #endif
 
 
+static int
+add_compression_type (char *string) {
+  if (!strcmp(string,"none")) {
+    compression_types = NO_COMPRESSION;
+    return 0;
+  } else if (!strcmp(string,"all")) {
+    compression_types = BITPACK64_COMPRESSION;
+    return 1;
+  } else {
+    if (!strcmp(string,"bitpack64")) {
+      compression_types |= BITPACK64_COMPRESSION;
+    } else {
+      fprintf(stderr,"Don't recognize compression type %s\n",string);
+      fprintf(stderr,"Allowed values are: none, all, bitpack64\n");
+      exit(9);
+    }
+    return 1;
+  }
+}
+
+static char CHARTABLE[4] = {'A','C','G','T'};
+static char *mode_prefix = ".";
+/* static char *mode_prefix = ".metct."; */
+
+
 #ifdef __STRICT_ANSI__
 int getopt (int argc, char *const argv[], const char *optstring);
 #endif
@@ -882,27 +936,72 @@ int
 main (int argc, char *argv[]) {
   int ncontigs;
   Table_T accsegmentpos_table;
+
+  FILE *fp;
+  char *key, **keys, chrname[1024], chrname_alt[1024], Buffer[1024];
+  Tableuint_T chrorder_table = NULL;
+  unsigned int order;
+  int i;
+
   Table_chrpos_T chrlength_table;
   List_T contigtypelist = NULL, p;
+  Genome_T genomecomp, genomebits;
   Univ_IIT_T chromosome_iit, contig_iit;
   char *typestring;
-  Univcoord_T genomelength, totalnts;
-  char *chromosomefile, *iitfile, *positionsfile, *gammaptrsfile, *offsetsfile, interval_char;
+  Univcoord_T n, genomelength, totalnts;
+  char *chromosomefile, *iitfile, *positionsfile_high, *positionsfile_low, interval_char;
+  char *sarrayfile, *lcpexcfile, *lcpguidefile;
+  char *childbytesfile, *childexcfile, *childguidefile;
+  char *lcpchilddcfile;
+#ifdef USE_SEPARATE_BUCKETS
+  char *indexiptrsfile, *indexicompfile, *indexjptrsfile, *indexjcompfile;
+#else
+  char *indexijptrsfile, *indexijcompfile;
+#endif
+  UINT4 start, end;
+  UINT4 *SA, *lcp, *child;
+  UINT4 nbytes;
+  Filenames_T filenames;
   Chrpos_T seglength;
-  FILE *fp;
   bool coord_values_8p;
 
+  unsigned char *discrim_chars;
+  unsigned char *lcp_bytes;
+  UINT4 *lcp_guide, *lcp_exceptions;
+  int n_lcp_exceptions;
+
+  unsigned char *lcpchilddc;
+  UINT4 *child_guide, *child_exceptions;
+  int n_child_exceptions;
+
+  int sa_fd, lcpchilddc_fd;
+  size_t sa_len, lcpchilddc_len, lcpguide_len, lcpexc_len, childguide_len, childexc_len;
+  double seconds;
+
+#ifdef HAVE_64_BIT
+  UINT8 noffsets;
+#endif
+
   int c;
   extern int optind;
   extern char *optarg;
+  char *string;
 
-  while ((c = getopt(argc,argv,"F:D:d:b:k:q:ArlGCUOPWw:e:Ss:m")) != -1) {
+  while ((c = getopt(argc,argv,"F:D:d:z:k:q:ArlGUNHOPSLXYWw:e:Ss:n:m")) != -1) {
     switch (c) {
     case 'F': sourcedir = optarg; break;
     case 'D': destdir = optarg; break;
     case 'd': fileroot = optarg; break;
 
-    case 'b': offsetscomp_basesize = atoi(optarg); break;
+    case 'z':
+      compression_types = NO_COMPRESSION; /* Initialize */
+      string = strtok(optarg,",");
+      if (add_compression_type(string) != 0) {
+	while ((string = strtok(NULL,",")) != NULL && add_compression_type(string) != 0) {
+	}
+      }
+      break;
+
     case 'k': index1part = atoi(optarg);
       if (index1part > MAXIMUM_KMER) {
 	fprintf(stderr,"The choice of k-mer size must be %d or less\n",MAXIMUM_KMER);
@@ -915,20 +1014,19 @@ main (int argc, char *argv[]) {
     case 'r': rawp = true; break;
     case 'l': genome_lc_p = true; break;
     case 'G': action = GENOME; break;
-    case 'C': action = COMPRESS; break;
-    case 'U': action = UNCOMPRESS; break;
+    case 'U': action = UNSHUFFLE; break;
+    case 'N': action = COUNT; break;
+    case 'H': huge_offsets_p = true; break;
     case 'O': action = OFFSETS; break;
     case 'P': action = POSITIONS; break;
+    case 'S': action = SUFFIX_ARRAY; break;
+    case 'L': action = LCP_CHILD; break;
+    case 'X': action = ARRAY_UNCOMPRESS; break;
+    case 'Y': action = CHILD_UNCOMPRESS; break;
     case 'W': writefilep = true; break;
     case 'w': wraplength = atoi(optarg); break;
     case 'e': nmessages = atoi(optarg); break;
 
-    case 'S':
-      fprintf(stderr,"Note: -S flag no longer has any effect.  To sort, use the -s flag.\n");
-      fprintf(stderr,"Default is to sort chromosomes according chrom order\n");
-      divsort = NO_SORT;
-      break;
-
     case 's': 
       if (!strcmp(optarg,"none")) {
 	divsort = NO_SORT;
@@ -938,12 +1036,16 @@ main (int argc, char *argv[]) {
 	divsort = NUMERIC_ALPHA_SORT;
       } else if (!strcmp(optarg,"chrom")) {
 	divsort = CHROM_SORT;
+      } else if (!strcmp(optarg,"names")) {
+	divsort = FILENAME_SORT;
       } else {
 	fprintf(stderr,"Don't recognize sort type %s.  Allowed values are none, alpha, or chrom.",optarg);
 	exit(9);
       }
       break;
 
+    case 'n': sortfilename = optarg; break;
+
     case 'm': mask_lowercase_p = true; break;
     }
   }
@@ -961,13 +1063,7 @@ main (int argc, char *argv[]) {
     exit(9);
   }
 
-  if (index1part < offsetscomp_basesize) {
-    fprintf(stderr,"k-mer size %d must be equal to or greater than base size %d\n",
-	    index1part,offsetscomp_basesize);
-    exit(9);
-  }
-
-  if (action != COMPRESS && action != UNCOMPRESS) {
+  if (action != UNSHUFFLE) {
     if (fileroot == NULL) {
       fprintf(stderr,"Missing name of genome database.  Must specify with -d flag.\n");
       exit(9);
@@ -980,6 +1076,34 @@ main (int argc, char *argv[]) {
        Writes <destdir>/<dbname>.chromosome and <destdir>/<dbname>.contig files 
        and corresponding .iit files */
 
+    if (divsort == FILENAME_SORT) {
+      if (sortfilename == NULL) {
+	fprintf(stderr,"For sorting by names file, need to provide file to -n flag");
+	exit(9);
+      } else if ((fp = fopen(sortfilename,"r")) == NULL) {
+	fprintf(stderr,"Unable to open file %s provided to -n flag",sortfilename);
+	exit(9);
+      } else {
+	chrorder_table = Tableuint_new(65522,Table_string_compare,Table_string_hash);
+	order = 1;
+	while (fgets(Buffer,1024,fp) != NULL) {
+   	  if (sscanf(Buffer,"%s %s",chrname,chrname_alt) == 2) {	  
+	    key = (char *) CALLOC(strlen(chrname_alt)+1,sizeof(char));
+	    strcpy(key,chrname_alt);
+	    Tableuint_put(chrorder_table,(void *) key,order);
+          } else if (sscanf(Buffer,"%s",chrname) == 1) {
+	    key = (char *) CALLOC(strlen(chrname)+1,sizeof(char));
+	    strcpy(key,chrname);
+	    Tableuint_put(chrorder_table,(void *) key,order);
+          } else {
+	    fprintf(stderr,"Unable to parse line %s\n",Buffer);
+	  }
+          order += 1;
+	}
+	fclose(fp);
+      }
+    }
+
     if (getc(stdin) != '>') {
       fprintf(stderr,"Expected file to start with '>'\n");
       exit(9);
@@ -1010,7 +1134,7 @@ main (int argc, char *argv[]) {
 
     ncontigs = 0;
     totalnts = 0U;
-    while (process_sequence_aux(&seglength,accsegmentpos_table,chrlength_table,fileroot,ncontigs) == true) {
+    while (process_sequence_aux(&seglength,accsegmentpos_table,chrlength_table,chrorder_table,fileroot,ncontigs) == true) {
       if (totalnts + seglength < totalnts) {
 	/* Exceeds 32 bits */
 	fprintf(stderr,"The total length of genomic sequence exceeds 2^32 = 4,294,967,296 bp, which the GMAP index format cannot handle\n");
@@ -1049,11 +1173,20 @@ main (int argc, char *argv[]) {
     chrlength_table_gc(&chrlength_table);
     accsegmentpos_table_gc(&accsegmentpos_table);
 
+    if (chrorder_table != NULL) {
+      keys = (char **) Tableuint_keys(chrorder_table,NULL);
+      for (i = 0; i < Tableuint_length(chrorder_table); i++) {
+	FREE(keys[i]);
+      }
+      FREE(keys);
+      Tableuint_free(&chrorder_table);
+    }
+
   } else if (action == GENOME) {
     /* Usage: cat <fastafile> | gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -G
        Requires <fastafile> in appropriate format and <sourcedir>/<dbname>.chromosome.iit 
        and <sourcedir>/<dbname>.contig.iit files.
-       Creates <destdir>/<dbname>.genome */
+       Creates <destdir>/<dbname>.genomecomp (in blocks of 32) */
 
     chromosomefile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+
 				     strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char));
@@ -1076,9 +1209,9 @@ main (int argc, char *argv[]) {
     
     if (Univ_IIT_ntypes(contig_iit) == 1) {
       /* index1part needed only if writing an uncompressed genome using a file */
-      Genome_write(destdir,fileroot,stdin,contig_iit,/*altstrain_iit*/NULL,
-		   chromosome_iit,genome_lc_p,rawp,writefilep,genomelength,
-		   index1part,nmessages);
+      Genome_write_comp32(destdir,fileroot,stdin,contig_iit,/*altstrain_iit*/NULL,
+			  chromosome_iit,genome_lc_p,rawp,writefilep,
+			  genomelength,index1part,nmessages);
     } else if (Univ_IIT_ntypes(contig_iit) > 1) {
       fprintf(stderr,"GMAPINDEX no longer supports alternate strains\n");
       abort();
@@ -1087,29 +1220,35 @@ main (int argc, char *argv[]) {
     Univ_IIT_free(&chromosome_iit);
     Univ_IIT_free(&contig_iit);
 
-  } else if (action == COMPRESS) {
-    /* Usage: cat <genomefile> | gmapindex -C > <genomecompfile>, or
-              gmapindex -C <genomefile> > <genomecompfile> */
+  } else if (action == UNSHUFFLE) {
+    /* Usage: cat <fastafile> | gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -G
+       Requires <fastafile> in appropriate format and <sourcedir>/<dbname>.chromosome.iit 
+       and <sourcedir>/<dbname>.contig.iit files.
+       Creates <destdir>/<dbname>.genomebits128 (in blocks of 128) */
 
-    if (argc > 1) {
-      fp = FOPEN_READ_BINARY(argv[1]);
-      Compress_compress(fp);
-      fclose(fp);
-    } else {
-      Compress_compress(stdin);
-    }
+    Compress_unshuffle_bits128(stdout,stdin);
 
-  } else if (action == UNCOMPRESS) {
-    /* Usage: cat <genomecompfile> | gmapindex -U [-w <wraplength>] > <genomefile>, or
-              gmapindex -U [-w <wraplength>] <genomecompfile> > <genomefile> */
-    
-    if (argc > 1) {
-      fp = FOPEN_READ_BINARY(argv[1]);
-      Compress_uncompress(fp,wraplength);
-      fclose(fp);
-    } else {
-      Compress_uncompress(stdin,wraplength);
+  } else if (action == COUNT) {
+    /* Usage: cat <genomefile> | gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -C */
+
+#ifndef HAVE_64_BIT
+    printf("0\n");
+#else
+    chromosomefile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+
+				     strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char));
+    sprintf(chromosomefile,"%s/%s.chromosome.iit",sourcedir,fileroot);
+    if ((chromosome_iit = Univ_IIT_read(chromosomefile,/*readonlyp*/true,/*add_iit_p*/false)) == NULL) {
+      fprintf(stderr,"IIT file %s is not valid\n",chromosomefile);
+      exit(9);
     }
+    FREE(chromosomefile);
+
+    noffsets = Indexdb_count_offsets(stdin,chromosome_iit,index1part,index1interval,
+				     genome_lc_p,fileroot,mask_lowercase_p);
+    printf("%lu\n",noffsets);
+
+    Univ_IIT_free(&chromosome_iit);
+#endif
 
   } else if (action == OFFSETS) {
     /* Usage: cat <genomefile> | gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -O
@@ -1124,45 +1263,28 @@ main (int argc, char *argv[]) {
     }
     FREE(chromosomefile);
 
-
-    /* Reference strain */
-    if (mask_lowercase_p == true) {
-      gammaptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				      strlen(".")+strlen(IDX_FILESUFFIX)+
-				      /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				      strlen("gammaptrs.masked")+1,sizeof(char));
-      sprintf(gammaptrsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"gammaptrs.masked");
-
-      offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				   strlen(".")+strlen(IDX_FILESUFFIX)+
-				    /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				   strlen("offsetscomp.masked")+1,sizeof(char));
-      sprintf(offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"offsetscomp.masked");
-
+    if (huge_offsets_p == false) {
+      fprintf(stderr,"Offset compression types:");
+      if ((compression_types & BITPACK64_COMPRESSION) != 0) {
+	fprintf(stderr," bitpack64");
+      }
+      fprintf(stderr,"\n");
+      
+      Indexdb_write_offsets(destdir,interval_char,stdin,chromosome_iit,
+			    index1part,index1interval,
+			    genome_lc_p,fileroot,mask_lowercase_p,compression_types);
     } else {
-      gammaptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				      strlen(".")+strlen(IDX_FILESUFFIX)+
-				      /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				      strlen("gammaptrs")+1,sizeof(char));
-      sprintf(gammaptrsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"gammaptrs");
-
-      offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				    strlen(".")+strlen(IDX_FILESUFFIX)+
-				    /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				    strlen("offsetscomp")+1,sizeof(char));
-      sprintf(offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"offsetscomp");
+      fprintf(stderr,"Offset compression types:");
+      if ((compression_types & BITPACK64_COMPRESSION) != 0) {
+	fprintf(stderr," bitpack64");
+      }
+      fprintf(stderr,"\n");
+      
+      Indexdb_write_offsets_huge(destdir,interval_char,stdin,chromosome_iit,
+				 index1part,index1interval,
+				 genome_lc_p,fileroot,mask_lowercase_p,compression_types);
     }
 
-    Indexdb_write_offsets(gammaptrsfile,offsetsfile,stdin,chromosome_iit,
-			  offsetscomp_basesize,index1part,index1interval,
-			  genome_lc_p,fileroot,mask_lowercase_p);
-
-    FREE(offsetsfile);
-    FREE(gammaptrsfile);
     Univ_IIT_free(&chromosome_iit);
 
   } else if (action == POSITIONS) {
@@ -1179,171 +1301,304 @@ main (int argc, char *argv[]) {
     }
     FREE(chromosomefile);
 
+    filenames = Indexdb_get_filenames(&compression_type,&index1part,&index1interval,
+				      sourcedir,fileroot,IDX_FILESUFFIX,/*snps_root*/NULL,
+				      /*required_index1part*/index1part,
+				      /*required_interval*/index1interval,/*offsets_only_p*/true);
 
-    if (mask_lowercase_p == true) {
-      gammaptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				      strlen(".")+strlen(IDX_FILESUFFIX)+
-				      /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				      strlen("gammaptrs.masked")+1,sizeof(char));
-      sprintf(gammaptrsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"gammaptrs.masked");
+    if (Univ_IIT_coord_values_8p(chromosome_iit) == true) {
+      coord_values_8p = true;
 
-      offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				   strlen(".")+strlen(IDX_FILESUFFIX)+
-				    /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				   strlen("offsetscomp.masked")+1,sizeof(char));
-      sprintf(offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"offsetscomp.masked");
+      positionsfile_high = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					   strlen(".")+strlen(IDX_FILESUFFIX)+
+					   /*for kmer*/2+/*for interval char*/1+
+					   strlen(POSITIONS_HIGH_FILESUFFIX)+1,sizeof(char));
+      sprintf(positionsfile_high,"%s/%s.%s%02d%c%s",
+	    destdir,fileroot,IDX_FILESUFFIX,index1part,interval_char,POSITIONS_HIGH_FILESUFFIX);
 
-    } else {
-      gammaptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				      strlen(".")+strlen(IDX_FILESUFFIX)+
-				      /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				      strlen("gammaptrs")+1,sizeof(char));
-      sprintf(gammaptrsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"gammaptrs");
-
-      offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				   strlen(".")+strlen(IDX_FILESUFFIX)+
-				    /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				   strlen("offsetscomp")+1,sizeof(char));
-      sprintf(offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"offsetscomp");
-    }
+      positionsfile_low = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					   strlen(".")+strlen(IDX_FILESUFFIX)+
+					   /*for kmer*/2+/*for interval char*/1+
+					   strlen(POSITIONS_LOW_FILESUFFIX)+1,sizeof(char));
+      sprintf(positionsfile_low,"%s/%s.%s%02d%c%s",
+	    destdir,fileroot,IDX_FILESUFFIX,index1part,interval_char,POSITIONS_LOW_FILESUFFIX);
 
-    if (mask_lowercase_p == true) {
-      positionsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				      strlen(".")+strlen(IDX_FILESUFFIX)+
-				      /*for kmer*/2+/*for interval char*/1+
-				      strlen(POSITIONS_FILESUFFIX)+strlen(".masked")+1,sizeof(char));
-      sprintf(positionsfile,"%s/%s.%s%02d%c%s.masked",
-	      destdir,fileroot,IDX_FILESUFFIX,index1part,interval_char,POSITIONS_FILESUFFIX);
     } else {
-      positionsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				      strlen(".")+strlen(IDX_FILESUFFIX)+
-				      /*for kmer*/2+/*for interval char*/1+
-				      strlen(POSITIONS_FILESUFFIX)+1,sizeof(char));
-      sprintf(positionsfile,"%s/%s.%s%02d%c%s",
-	      destdir,fileroot,IDX_FILESUFFIX,index1part,interval_char,POSITIONS_FILESUFFIX);
+      coord_values_8p = false;
+      
+      positionsfile_high = (char *) NULL;
+
+      positionsfile_low = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+					   strlen(".")+strlen(IDX_FILESUFFIX)+
+					   /*for kmer*/2+/*for interval char*/1+
+					   strlen(POSITIONS_LOW_FILESUFFIX)+1,sizeof(char));
+      sprintf(positionsfile_low,"%s/%s.%s%02d%c%s",
+	    destdir,fileroot,IDX_FILESUFFIX,index1part,interval_char,POSITIONS_LOW_FILESUFFIX);
     }
-    
-    if (Univ_IIT_coord_values_8p(chromosome_iit) == true) {
-      coord_values_8p = true;
+
+    if (huge_offsets_p == false) {
+      Indexdb_write_positions(positionsfile_high,positionsfile_low,filenames->pointers_filename,
+			      filenames->offsets_filename,stdin,chromosome_iit,
+			      index1part,index1interval,
+			      genome_lc_p,writefilep,fileroot,mask_lowercase_p,
+			      compression_type,coord_values_8p);
     } else {
-      coord_values_8p = false;
+      Indexdb_write_positions_huge(positionsfile_high,positionsfile_low,filenames->pages_filename,filenames->pointers_filename,
+				   filenames->offsets_filename,stdin,chromosome_iit,
+				   index1part,index1interval,
+				   genome_lc_p,writefilep,fileroot,mask_lowercase_p,
+				   compression_type,coord_values_8p);
     }
 
-    Indexdb_write_positions(positionsfile,gammaptrsfile,offsetsfile,stdin,chromosome_iit,
-			    offsetscomp_basesize,index1part,index1interval,
-			    genome_lc_p,writefilep,fileroot,mask_lowercase_p,coord_values_8p);
+    Filenames_free(&filenames);
 
-    FREE(positionsfile);
-    FREE(offsetsfile);
-    FREE(gammaptrsfile);
+    FREE(positionsfile_high);
+    FREE(positionsfile_low);
     Univ_IIT_free(&chromosome_iit);
 
+  } else if (action == SUFFIX_ARRAY) {
+    /* Usage: gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -S
+       Creates <destdir>/<dbname>.sarray, .lcp, and .saindex */
+    chromosomefile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+
+				     strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char));
+    sprintf(chromosomefile,"%s/%s.chromosome.iit",sourcedir,fileroot);
+    if ((chromosome_iit = Univ_IIT_read(chromosomefile,/*readonlyp*/true,/*add_iit_p*/false)) == NULL) {
+      fprintf(stderr,"IIT file %s is not valid\n",chromosomefile);
+      exit(9);
+    }
+    FREE(chromosomefile);
 
-#if 0
-  } else if (action == GAMMAS) {
-    /* Usage: gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -Z
-       Requires <sourcedir>/<dbname>.idxoffsets.
-       Creates <destdir>/<dbname>.idxpositions */
+    /* Suffix array */
+    genomelength = Univ_IIT_genomelength(chromosome_iit,/*with_circular_alias_p*/true);
+    Univ_IIT_free(&chromosome_iit);
+
+    if (genomelength > 4294967295) {
+      fprintf(stderr,"Suffix arrays not yet supported for large genomes with more than 2^32 bp.  Will use hash table only.\n");
 
-    /* Reference strain */
-    if (mask_lowercase_p == true) {
-      old_offsetsfile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+strlen(fileroot)+
-					strlen(".")+strlen(IDX_FILESUFFIX)+
-					/*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-					strlen(OFFSETS_FILESUFFIX)+strlen(".masked")+1,sizeof(char));
-      sprintf(old_offsetsfile,"%s/%s.%s%02d%02d%c%s.masked",
-	      sourcedir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,OFFSETS_FILESUFFIX);
     } else {
-      old_offsetsfile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+strlen(fileroot)+
-					strlen(".")+strlen(IDX_FILESUFFIX)+
-					/*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-					strlen(OFFSETS_FILESUFFIX)+1,sizeof(char));
-      sprintf(old_offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	      sourcedir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,OFFSETS_FILESUFFIX);
+      fprintf(stderr,"Building suffix array\n");
+      sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".sarray")+1,sizeof(char));
+      sprintf(sarrayfile,"%s/%s.sarray",destdir,fileroot);
+
+      genomecomp = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			      /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+      Sarray_write_array(sarrayfile,genomecomp,genomelength);
+      
+      /* Bucket array */
+#ifdef USE_SEPARATE_BUCKETS
+      indexiptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".saindexi64meta")+1,sizeof(char));
+      sprintf(indexiptrsfile,"%s/%s.saindexi64meta",destdir,fileroot);
+      indexicompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".saindexi64strm")+1,sizeof(char));
+      sprintf(indexicompfile,"%s/%s.saindexi64strm",destdir,fileroot);
+      indexjptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".saindexj64meta")+1,sizeof(char));
+      sprintf(indexjptrsfile,"%s/%s.saindexj64meta",destdir,fileroot);
+      indexjcompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".saindexj64strm")+1,sizeof(char));
+      sprintf(indexjcompfile,"%s/%s.saindexj64strm",destdir,fileroot);
+      
+      Sarray_write_index_separate(indexiptrsfile,indexicompfile,indexjptrsfile,indexjcompfile,
+				  sarrayfile,genomecomp,genomelength,/*compressp*/true);
+      FREE(indexjcompfile);
+      FREE(indexjptrsfile);
+      FREE(indexicompfile);
+      FREE(indexiptrsfile);
+#else
+      indexijptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".saindex64meta")+1,sizeof(char));
+      sprintf(indexijptrsfile,"%s/%s.saindex64meta",destdir,fileroot);
+      indexijcompfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".saindex64strm")+1,sizeof(char));
+      sprintf(indexijcompfile,"%s/%s.saindex64strm",destdir,fileroot);
+      Sarray_write_index_interleaved(indexijptrsfile,indexijcompfile,
+				     sarrayfile,genomecomp,genomelength,/*compressp*/true,
+				     CHARTABLE);
+      FREE(indexijcompfile);
+      FREE(indexijptrsfile);
+#endif
+
+      Genome_free(&genomecomp);
+      FREE(sarrayfile);
     }
-    if ((old_offsets_fp = FOPEN_READ_BINARY(old_offsetsfile)) == NULL) {
-      fprintf(stderr,"Can't open file %s\n",old_offsetsfile);
+
+  } else if (action == LCP_CHILD) {
+    /* Usage: gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -L
+       Creates <destdir>/<dbname>.lcp and .saindex */
+
+    chromosomefile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+
+				     strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char));
+    sprintf(chromosomefile,"%s/%s.chromosome.iit",sourcedir,fileroot);
+    if ((chromosome_iit = Univ_IIT_read(chromosomefile,/*readonlyp*/true,/*add_iit_p*/false)) == NULL) {
+      fprintf(stderr,"IIT file %s is not valid\n",chromosomefile);
       exit(9);
     }
+    FREE(chromosomefile);
 
-    gammaptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				    strlen(".")+strlen(IDX_FILESUFFIX)+
-				    /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				    strlen("gammaptrs")+1,sizeof(char));
-    sprintf(gammaptrsfile,"%s/%s.%s%02d%02d%c%s",
-	    destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"gammaptrs");
-
-    offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				 strlen(".")+strlen(IDX_FILESUFFIX)+
-				  /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				 strlen("offsetscomp")+1,sizeof(char));
-    sprintf(offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	    destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"offsetscomp");
-    
-    Indexdb_convert_gammas(gammaptrsfile,offsetsfile,old_offsets_fp,index1part);
+    genomelength = Univ_IIT_genomelength(chromosome_iit,/*with_circular_alias_p*/true);
+    Univ_IIT_free(&chromosome_iit);
 
-    fclose(old_offsets_fp);
-    FREE(offsetsfile);
-    FREE(gammaptrsfile);
-    FREE(old_offsetsfile);
-#endif
+    if (genomelength > 4294967295) {
+      /* Warning message already printed for SUFFIX_ARRAY */
+      /* fprintf(stderr,"Suffix arrays not yet supported for large genomes with more than 2^32 bp.  Will use hash table only.\n"); */
+    } else {
+      fprintf(stderr,"Building LCP array\n");
+
+      n = genomelength;
+
+      sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".sarray")+1,sizeof(char));
+      sprintf(sarrayfile,"%s/%s.sarray",destdir,fileroot);
+      SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/false);
+      FREE(sarrayfile);
+
+      /* Required for computing LCP, but uses non-SIMD instructions */
+      genomebits = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			      /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+      Genome_hr_setup(Genome_blocks(genomebits),/*snp_blocks*/NULL,
+		      /*query_unk_mismatch_p*/false,/*genome_unk_mismatch_p*/false,
+		      /*mode*/STANDARD);
+
+      lcp = Sarray_compute_lcp(SA,n);
+      Genome_free(&genomebits);
+
+      /* Write lcp exceptions/guide, but return lcp_bytes */
+      lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".salcpexc")+1,sizeof(char));
+      sprintf(lcpexcfile,"%s/%s.salcpexc",destdir,fileroot);
+      lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".salcpguide1024")+1,sizeof(char));
+      sprintf(lcpguidefile,"%s/%s.salcpguide1024",destdir,fileroot);
+
+      lcp_bytes = Bytecoding_write_exceptions_only(lcpexcfile,lcpguidefile,lcp,genomelength,/*guide_interval*/1024);
+
+      FREE(lcpguidefile);
+      FREE(lcpexcfile);
+
+      FREE(lcp);			/* Use lcp_bytes, which are more memory-efficient than lcp */
+
+
+      fprintf(stderr,"Building DC array\n");
+
+      /* Assume we have lcp_bytes already in memory.  Don't need to use guide for speed. */
+      lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".salcpguide1024")+1,sizeof(char));
+      sprintf(lcpguidefile,"%s/%s.salcpguide1024",destdir,fileroot);
+      lcp_guide = (UINT4 *) Access_allocated(&lcpguide_len,&seconds,lcpguidefile,sizeof(UINT4));
+      FREE(lcpguidefile);
+
+      lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".salcpexc")+1,sizeof(char));
+      sprintf(lcpexcfile,"%s/%s.salcpexc",destdir,fileroot);
+      lcp_exceptions = (UINT4 *) Access_allocated(&lcpexc_len,&seconds,lcpexcfile,sizeof(UINT4));
+      n_lcp_exceptions = lcpexc_len/(sizeof(UINT4) + sizeof(UINT4));
+      FREE(lcpexcfile);
+
+      /* SA and genome needed for creating discrim_chars */
+      genomecomp = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			      /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
+
+      /* Compute discriminating chars (DC) array */
+      discrim_chars = Sarray_discriminating_chars(&nbytes,SA,genomecomp,lcp_bytes,lcp_guide,
+						  lcp_exceptions,/*guide_interval*/1024,n,CHARTABLE);
+      Genome_free(&genomecomp);
+      munmap((void *) SA,sa_len);
+      close(sa_fd);
+
+
+      fprintf(stderr,"Building child array\n");
+
+      /* Compute child array (relative values) */
+      child = Sarray_compute_child(lcp_bytes,lcp_guide,lcp_exceptions,n);
+      FREE(lcp_exceptions);
+      FREE(lcp_guide);
+
+      /* Write combined lcpchilddc file */
+      lcpchilddcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".salcpchilddc")+1,sizeof(char));
+      sprintf(lcpchilddcfile,"%s/%s.salcpchilddc",destdir,fileroot);
+      childexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".sachildexc")+1,sizeof(char));
+      sprintf(childexcfile,"%s/%s.sachildexc",destdir,fileroot);
+      childguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(".sachildguide1024")+1,sizeof(char));
+      sprintf(childguidefile,"%s/%s.sachildguide1024",destdir,fileroot);
+      Bytecoding_write_lcpchilddc(lcpchilddcfile,childexcfile,childguidefile,child,
+				  discrim_chars,lcp_bytes,genomelength,/*guide_interval*/1024);
+      FREE(childguidefile);
+      FREE(childexcfile);
+      FREE(lcpchilddcfile);
+
+      FREE(child);
+      FREE(discrim_chars);
+      FREE(lcp_bytes);
+    }
 
-#if 0
-  } else if (action == CHECK_GAMMAS) {
-    /* Usage: gmapindex [-F <sourcedir>] [-D <destdir>] -d <dbname> -9
-       Requires <sourcedir>/<dbname>.idxoffsets.
-       Creates <destdir>/<dbname>.idxpositions */
 
-    /* Reference strain */
-    if (mask_lowercase_p == true) {
-      old_offsetsfile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+strlen(fileroot)+
-					strlen(".")+strlen(IDX_FILESUFFIX)+
-					/*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-					strlen(OFFSETS_FILESUFFIX)+strlen(".masked")+1,sizeof(char));
-      sprintf(old_offsetsfile,"%s/%s.%s%02d%02d%c%s.masked",
-	      sourcedir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,OFFSETS_FILESUFFIX);
+
+  } else if (action == ARRAY_UNCOMPRESS) {
+    if (argc <= 2) {
+      start = end = 0;
     } else {
-      old_offsetsfile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+strlen(fileroot)+
-					strlen(".")+strlen(IDX_FILESUFFIX)+
-					/*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-					strlen(OFFSETS_FILESUFFIX)+1,sizeof(char));
-      sprintf(old_offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	      sourcedir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,OFFSETS_FILESUFFIX);
+      start = strtoul(argv[1],NULL,10);
+      end = strtoul(argv[2],NULL,10);
     }
-    if ((old_offsets_fp = FOPEN_READ_BINARY(old_offsetsfile)) == NULL) {
-      fprintf(stderr,"Can't open file %s\n",old_offsetsfile);
+
+
+  } else if (action == CHILD_UNCOMPRESS) {
+    if (argc <= 2) {
+      start = end = 0;
+    } else {
+      start = strtoul(argv[1],NULL,10);
+      end = strtoul(argv[2],NULL,10);
+    }
+
+    chromosomefile = (char *) CALLOC(strlen(sourcedir)+strlen("/")+
+				     strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char));
+    sprintf(chromosomefile,"%s/%s.chromosome.iit",sourcedir,fileroot);
+    if ((chromosome_iit = Univ_IIT_read(chromosomefile,/*readonlyp*/true,/*add_iit_p*/false)) == NULL) {
+      fprintf(stderr,"IIT file %s is not valid\n",chromosomefile);
       exit(9);
     }
+    FREE(chromosomefile);
 
-    gammaptrsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				    strlen(".")+strlen(IDX_FILESUFFIX)+
-				    /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				    strlen("gammaptrs")+1,sizeof(char));
-    sprintf(gammaptrsfile,"%s/%s.%s%02d%02d%c%s",
-	    destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"gammaptrs");
-
-    offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
-				 strlen(".")+strlen(IDX_FILESUFFIX)+
-				  /*for basesize*/2+/*for kmer*/2+/*for interval char*/1+
-				 strlen("offsetscomp")+1,sizeof(char));
-    sprintf(offsetsfile,"%s/%s.%s%02d%02d%c%s",
-	    destdir,fileroot,IDX_FILESUFFIX,offsetscomp_basesize,index1part,interval_char,"offsetscomp");
-    
-    Indexdb_check_gammas(gammaptrsfile,offsetsfile,old_offsets_fp,index1part);
+    genomelength = Univ_IIT_genomelength(chromosome_iit,/*with_circular_alias_p*/true);
+    Univ_IIT_free(&chromosome_iit);
 
-    fclose(old_offsets_fp);
-    FREE(offsetsfile);
-    FREE(gammaptrsfile);
-    FREE(old_offsetsfile);
-#endif
+    genomecomp = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
 
+    sarrayfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("sarray")+1,sizeof(char));
+    sprintf(sarrayfile,"%s/%s%ssarray",destdir,fileroot,mode_prefix);
+    SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/true);
+    FREE(sarrayfile);
 
-  }
+    lcpchilddcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("salcpchilddc")+1,sizeof(char));
+    sprintf(lcpchilddcfile,"%s/%s%ssalcpchilddc",destdir,fileroot,mode_prefix);
+    lcpchilddc = (unsigned char *) Access_mmap(&lcpchilddc_fd,&lcpchilddc_len,lcpchilddcfile,
+					       sizeof(unsigned char),/*randomp*/true);
+    FREE(lcpchilddcfile);
+
+    lcpguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("salcpguide1024")+1,sizeof(char));
+    sprintf(lcpguidefile,"%s/%s%ssalcpguide1024",destdir,fileroot,mode_prefix);
+    lcp_guide = (UINT4 *) Access_allocated(&lcpguide_len,&seconds,lcpguidefile,sizeof(UINT4));
+    FREE(lcpguidefile);
+
+    lcpexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("salcpexc")+1,sizeof(char));
+    sprintf(lcpexcfile,"%s/%s%ssalcpexc",destdir,fileroot,mode_prefix);
+    lcp_exceptions = (UINT4 *) Access_allocated(&lcpexc_len,&seconds,lcpexcfile,sizeof(UINT4));
+    n_lcp_exceptions = lcpexc_len/(sizeof(UINT4) + sizeof(UINT4));
+    FREE(lcpexcfile);
+
+    childguidefile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("sachildguide1024")+1,sizeof(char));
+    sprintf(childguidefile,"%s/%s%ssachildguide1024",destdir,fileroot,mode_prefix);
+    child_guide = (UINT4 *) Access_allocated(&childguide_len,&seconds,childguidefile,sizeof(UINT4));
+    FREE(childguidefile);
+
+    childexcfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("sachildexc")+1,sizeof(char));
+    sprintf(childexcfile,"%s/%s%ssachildexc",destdir,fileroot,mode_prefix);
+    child_exceptions = (UINT4 *) Access_allocated(&childexc_len,&seconds,childexcfile,sizeof(UINT4));
+    n_child_exceptions = childexc_len/(sizeof(UINT4) + sizeof(UINT4));
+    FREE(childexcfile);
 
+    Sarray_child_uncompress(genomecomp,lcpchilddc,lcp_guide,lcp_exceptions,n_lcp_exceptions,
+			    child_guide,child_exceptions,n_child_exceptions,SA,genomelength,start,end);
+
+    Genome_free(&genomecomp);
+
+    munmap((void *) lcpchilddc,lcpchilddc_len);
+    close(lcpchilddc_fd);
+
+    munmap((void *) SA,sa_len);
+    close(sa_fd);
+  }
 
   return 0;
 }
diff --git a/src/goby.c b/src/goby.c
index 0613218..438c2c8 100644
--- a/src/goby.c
+++ b/src/goby.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: goby.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: goby.c 101822 2013-07-17 18:43:45Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -130,7 +130,7 @@ Goby_reader_free (Gobyreader_T *old) {
 
 Shortread_T
 Goby_read (Shortread_T *queryseq2, Gobyreader_T reader, int barcode_length,
-	   bool invert_first_p, bool invert_second_p) {
+	   bool invert_first_p, bool invert_second_p, bool skipp) {
 #ifdef HAVE_GOBY
   unsigned long goby_read_index;
   char *acc, *read_identifier = NULL, *description = NULL;
@@ -184,11 +184,11 @@ Goby_read (Shortread_T *queryseq2, Gobyreader_T reader, int barcode_length,
 
   *queryseq2 = Shortread_new(/*acc*/NULL,/*description*/NULL,/*filterp*/false,
 			     sequence2,sequence2_length,quality2,quality2_length,
-			     barcode_length,invert_second_p, /*copy_acc*/false);
+			     barcode_length,invert_second_p,/*copy_acc*/false,skipp);
 
   return Shortread_new(acc,description,/*filterp*/false,
 		       sequence1,sequence1_length,quality1,quality1_length,
-		       barcode_length,invert_first_p,/*copy_acc*/false);
+		       barcode_length,invert_first_p,/*copy_acc*/false,skipp);
 #else
   return (Shortread_T) NULL;
 #endif
diff --git a/src/goby.h b/src/goby.h
index 4532a8f..43cee62 100644
--- a/src/goby.h
+++ b/src/goby.h
@@ -1,4 +1,4 @@
-/* $Id: goby.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: goby.h 101822 2013-07-17 18:43:45Z twu $ */
 #ifndef GOBY_INCLUDED
 #define GOBY_INCLUDED
 
@@ -24,7 +24,7 @@ extern void
 Goby_reader_free (Gobyreader_T *old);
 extern Shortread_T
 Goby_read (Shortread_T *queryseq2, Gobyreader_T reader, int barcode_length,
-	   bool invert_first_p, bool invert_second_p);
+	   bool invert_first_p, bool invert_second_p, bool skipp);
 
 extern Gobywriter_T
 Goby_writer_new (char *output_root, char *aligner_name, char *aligner_version);
diff --git a/src/gregion.c b/src/gregion.c
index 063ebf3..a9962ca 100644
--- a/src/gregion.c
+++ b/src/gregion.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: gregion.c 101730 2013-07-16 23:57:35Z twu $";
+static char rcsid[] = "$Id: gregion.c 112656 2013-10-25 16:33:21Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -101,7 +101,7 @@ struct T {
 void
 Gregion_print (T this) {
 
-#if 0
+#if 1
   /* Off for debugging */
   printf(" %d..%d ",this->querystart,this->queryend);
 #endif
@@ -246,6 +246,7 @@ Gregion_new (int nexons, Univcoord_T genomicstart, Univcoord_T genomicend,
 
   new->nexons = nexons;
   if (chromosome_iit == NULL) {
+    /* Should not reach here, since user_genomicseg does not call stage 1 */
     new->chrnum = 0;
     new->chroffset = 0U;
     new->chrlength = 0U;
@@ -406,15 +407,88 @@ weight_cmp (const void *x, const void *y) {
 /* Not intended for qsort.  Returns 0 when not comparable. */
 static bool
 gregion_overlap_p (T x, T y) {
+  Univcoord_T x_genomicstart, x_genomicend, y_genomicstart, y_genomicend;
+  Univcoord_T overlap;
+  double fraction;
 
   if (x->plusp != y->plusp) {
     return false;			/* Different strands */
 
-  } else if (y->extentstart > x->extentend || x->extentstart > y->extentend) {
-    return false;		/* No overlap */
-
   } else {
-    return true;
+    x_genomicstart = x->chroffset + x->chrstart;
+    x_genomicend = x->chroffset + x->chrend;
+    y_genomicstart = y->chroffset + y->chrstart;
+    y_genomicend = y->chroffset + y->chrend;
+
+    if (y_genomicstart > x_genomicend || x_genomicstart > y_genomicend) {
+      /*
+      /-- x --/ /-- y --/ or /-- y --/ /-- x --/
+      */
+      return false;		/* No overlap */
+
+    } else if (y_genomicstart < x_genomicstart) {
+      debug(printf("x %u..%u, y %u..%u",x_genomicstart,x_genomicend,y_genomicstart,y_genomicend));
+      if (y_genomicend < x_genomicend) {
+	/*
+	    /-- x --/
+	/-- y --/
+	*/
+	overlap = y_genomicend - x_genomicstart;
+	if (y_genomicend - y_genomicstart < x_genomicend - x_genomicstart) {
+	  fraction = (double) overlap/(double) (y_genomicend - y_genomicstart);
+	} else {
+	  fraction = (double) overlap/(double) (x_genomicend - x_genomicstart);
+	}
+	debug(printf(" => fraction %f",fraction));
+	if (fraction > 0.5) {
+	  debug(printf(" => overlap\n",fraction));
+	  return true;
+	} else {
+	  debug(printf(" => no overlap\n",fraction));
+	  return false;
+	}
+
+      } else {
+	/*
+	    /-- x --/
+	/----- y -----/
+	*/
+	debug(printf(" => subsumption\n"));
+	return true;
+      }
+
+    } else {
+      debug(printf("x %u..%u, y %u..%u\n",x_genomicstart,x_genomicend,y_genomicstart,y_genomicend));
+      if (y_genomicend < x_genomicend) {
+	/*
+	/----- x -----/
+	  /-- y --/
+	*/
+	debug(printf(" => subsumption\n"));
+	return true;
+
+      } else {
+	/*
+	/-- x --/
+	  /-- y --/
+	*/
+	overlap = x_genomicend - y_genomicstart;
+	if (y_genomicend - y_genomicstart < x_genomicend - x_genomicstart) {
+	  fraction = (double) overlap/(double) (y_genomicend - y_genomicstart);
+	} else {
+	  fraction = (double) overlap/(double) (x_genomicend - x_genomicstart);
+	}
+	debug(printf(" => fraction %f",fraction));
+	if (fraction > 0.5) {
+	  debug(printf(" => overlap\n",fraction));
+	  return true;
+	} else {
+	  debug(printf(" => no overlap\n",fraction));
+	  return false;
+	}
+
+      }
+    }
   }
 }
 
@@ -460,6 +534,14 @@ Gregion_filter_unique (List_T gregionlist) {
     for (j = i+1; j < n; j++) {
       y = array[j];
       if (gregion_overlap_p(x,y) == true) {
+#ifdef DEBUG
+	printf("Found overlap between these regions:\n");
+	printf("   ");
+	Gregion_print(x);
+	printf("   ");
+	Gregion_print(y);
+	printf("\n");
+#endif
 	eliminate[j] = true;
       }
     }
@@ -620,10 +702,10 @@ Gregion_extend (T this, Chrpos_T extension5, Chrpos_T extension3, int querylengt
     this->chrstart -= left;
   }
 
-  /* printf("genomicend %u + right %u vs chrhigh %u\n",this->genomicend,right,this->chrhigh); */
+  /* printf("chroffset %u + chrend %u + right %u vs chrhigh %u\n",this->chroffset,this->chrend,right,this->chrhigh); */
   if (this->chroffset + this->chrend + right >= this->chrhigh) {
     /* At end of chromosome */
-    this->chrend = this->chrlength;
+    this->chrend = this->chrlength - 1;
   } else {
     this->chrend += right;
   }
diff --git a/src/gsnap.c b/src/gsnap.c
index 7311da6..e77f0ba 100644
--- a/src/gsnap.c
+++ b/src/gsnap.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: gsnap.c 102170 2013-07-20 00:47:28Z twu $";
+static char rcsid[] = "$Id: gsnap.c 138738 2014-06-11 18:55:04Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -47,7 +47,8 @@ static char rcsid[] = "$Id: gsnap.c 102170 2013-07-20 00:47:28Z twu $";
 #include "shortread.h"		/* For Shortread_setup */
 #include "stopwatch.h"
 #include "genome.h"
-#include "genome_hr.h"		/* For Genome_hr_setup */
+#include "genome128_hr.h"	/* For Genome_hr_setup */
+#include "genome_sites.h"	/* For Genome_sites_setup */
 #include "maxent_hr.h"		/* For Maxent_hr_setup */
 #include "indexdb_hr.h"
 #include "mapq.h"
@@ -55,10 +56,23 @@ static char rcsid[] = "$Id: gsnap.c 102170 2013-07-20 00:47:28Z twu $";
 #include "stage3hr.h"
 #include "goby.h"
 #include "spanningelt.h"
+#include "splicestringpool.h"
 #include "splicetrie_build.h"
+#include "splice.h"		/* For Splice_setup */
 #include "oligo.h"		/* For Oligo_setup */
 #include "oligoindex_hr.h"	/* For Oligoindex_hr_setup */
+#include "pairpool.h"
+#include "diagpool.h"
+#include "cellpool.h"
 #include "stage2.h"		/* For Stage2_setup */
+#ifndef LARGE_GENOMES
+#include "sarray-read.h"
+#endif
+#include "indel.h"		/* For Indel_setup */
+#include "dynprog.h"
+#include "dynprog_single.h"
+#include "dynprog_genome.h"
+#include "dynprog_end.h"
 #include "stage1hr.h"
 #include "indexdb.h"
 #include "resulthr.h"
@@ -79,6 +93,9 @@ static char rcsid[] = "$Id: gsnap.c 102170 2013-07-20 00:47:28Z twu $";
 
 #define MIN_INDEXDB_SIZE_THRESHOLD 100
 
+#define MAX_QUERYLENGTH_FOR_ALLOC    100000
+#define MAX_GENOMICLENGTH_FOR_ALLOC 1000000
+
 
 #ifdef DEBUG
 #define debug(x) x
@@ -93,7 +110,7 @@ static char rcsid[] = "$Id: gsnap.c 102170 2013-07-20 00:47:28Z twu $";
 static int gmap_mode = GMAP_PAIRSEARCH | GMAP_INDEL_KNOWNSPLICE | GMAP_TERMINAL | GMAP_IMPROVEMENT;
 static int gmap_min_nconsecutive = 20;
 static int nullgap = 600;
-static int maxpeelback = 20;
+static int maxpeelback = 20;	/* Now controlled by defect_rate */
 static int maxpeelback_distalmedial = 24;
 static int extramaterial_end = 10;
 static int extramaterial_paired = 8;
@@ -106,6 +123,7 @@ static int suboptimal_score_start = -1; /* Determined by simulations to have min
 static int suboptimal_score_end = 3; /* Determined by simulations to have diminishing returns above 3 */
 
 static int trigger_score_for_gmap = 5;
+static int gmap_allowance = 3;
 /* static int trigger_score_for_terminals = 5; -- obsolete */
 
 static int min_intronlength = 9;
@@ -122,9 +140,25 @@ static int nchromosomes = 0;
 static bool *circularp = NULL;
 static Indexdb_T indexdb = NULL;
 static Indexdb_T indexdb2 = NULL; /* For cmet or atoi */
-static Genome_T genome = NULL;
-static Genome_T genomealt = NULL;
-static Genomecomp_T *genome_blocks = NULL;
+static Genome_T genomecomp = NULL;
+static Genome_T genomecomp_alt = NULL;
+static Genome_T genomebits = NULL;
+static Genome_T genomebits_alt = NULL;
+
+static bool use_sarray_p = true; /* if present */
+#ifndef LARGE_GENOMES
+static Sarray_T sarray_fwd = NULL;
+static Sarray_T sarray_rev = NULL;
+#endif
+
+#if 0
+static char STANDARD_CHARTABLE[4] = {'A','C','G','T'};
+static char CMET_FWD_CHARTABLE[4] = {'A','T','G','T'}; /* CT */
+static char CMET_REV_CHARTABLE[4] = {'A','C','A','T'}; /* GA */
+static char ATOI_FWD_CHARTABLE[4] = {'G','C','G','T'};     /* AG */
+static char ATOI_REV_CHARTABLE[4] = {'A','C','G','C'};     /* TC */
+#endif
+
 
 static bool fastq_format_p = false;
 static bool creads_format_p = false;
@@ -159,18 +193,23 @@ static bool genome_unk_mismatch_p = true;
 static bool novelsplicingp = false;
 
 static int trim_mismatch_score = -3;
-static int trim_indel_score = -4;
+static int trim_indel_score = -2; /* was -4 */
 
 
-static Access_mode_T offsetscomp_access = USE_ALLOCATE;
+static Access_mode_T offsetsstrm_access = USE_ALLOCATE;
 static bool expand_offsets_p = false;
 
+/* Note: sarray aux files (like lcpchilddc) are always allocated */
 #ifdef HAVE_MMAP
 static Access_mode_T positions_access = USE_MMAP_PRELOAD;
 static Access_mode_T genome_access = USE_MMAP_PRELOAD;
+static Access_mode_T sarray_access = USE_MMAP_PRELOAD;
+static Access_mode_T aux_access = USE_MMAP_PRELOAD;
 #else
 static Access_mode_T positions_access = USE_ALLOCATE;
 static Access_mode_T genome_access = USE_ALLOCATE;
+static Access_mode_T sarray_access = USE_ALLOCATE;
+static Access_mode_T aux_access = USE_ALLOCATE;
 #endif
 
 static int pairmax;
@@ -183,6 +222,8 @@ static int pairlength_deviation = 100;
 static pthread_t output_thread_id, *worker_thread_ids;
 static pthread_key_t global_request_key;
 static int nworkers = 1;	/* (int) sysconf(_SC_NPROCESSORS_ONLN) */
+#else
+static int nworkers = 0;	/* (int) sysconf(_SC_NPROCESSORS_ONLN) */
 #endif
 
 /* static Masktype_T masktype = MASK_REPETITIVE; */
@@ -194,7 +235,8 @@ static int subopt_levels = 0;
 static double user_maxlevel_float = -1.0;
 
 static int terminal_threshold = 2;
-static bool user_terminal_threshold_p = false;
+static int terminal_output_minlength = 25;
+static bool user_terminal_output_minlength_p = false;
 
 /* Really have only one indel penalty */
 static int indel_penalty_middle = 2;
@@ -217,8 +259,6 @@ static int min_shortend = 2;
 /* static bool find_novel_doublesplices_p = true; */
 static int antistranded_penalty = 0; /* Most RNA-Seq is non-stranded */
 
-static Width_T basesize;
-static Width_T required_basesize = 0;
 static Width_T index1part;
 static Width_T required_index1part = 0;
 static Width_T index1interval;
@@ -313,7 +353,6 @@ static int maxpaths_report = 100;
 static bool orderedp = false;
 static bool failsonlyp = false;
 static bool nofailsp = false;
-static bool fails_as_input_p = false;
 
 static bool print_ncolordiffs_p = false;
 static bool print_nsnpdiffs_p = false;
@@ -334,6 +373,7 @@ static char *sam_read_group_library = NULL;
 static char *sam_read_group_platform = NULL;
 static bool force_xs_direction_p = false;
 static bool md_lowercase_variant_p = false;
+static bool hide_soft_clips_p = false;
 
 
 /* Goby */
@@ -346,6 +386,7 @@ static Gobywriter_T gobywriter = NULL;
 
 /* Input/output */
 static char *sevenway_root = NULL;
+static char *failedinput_root = NULL;
 static bool appendp = false;
 static Outbuffer_T outbuffer;
 static Inbuffer_T inbuffer;
@@ -364,7 +405,7 @@ static struct option long_options[] = {
   /* Input options */
   {"dir", required_argument, 0, 'D'},	/* user_genomedir */
   {"db", required_argument, 0, 'd'}, /* dbroot */
-  {"basesize", required_argument, 0, 0}, /* required_basesize, basesize */
+  {"use-sarray", required_argument, 0, 0}, /* use_sarray_p */
   {"kmer", required_argument, 0, 'k'}, /* required_index1part, index1part */
   {"sampling", required_argument, 0, 0}, /* required_index1interval, index1interval */
   {"genomefull", no_argument, 0, 'G'}, /* uncompressedp */
@@ -388,7 +429,7 @@ static struct option long_options[] = {
 
   /* Compute options */
 #ifdef HAVE_MMAP
-  {"batch", required_argument, 0, 'B'}, /* offsetscomp_access, positions_access, genome_access */
+  {"batch", required_argument, 0, 'B'}, /* offsetsstrm_access, positions_access, genome_access */
 #endif
   {"expand-offsets", required_argument, 0, 0}, /* expand_offsets_p */
   {"pairmax-dna", required_argument, 0, 0}, /* pairmax_dna */
@@ -396,9 +437,7 @@ static struct option long_options[] = {
   {"pairexpect", required_argument, 0, 0},  /* expected_pairlength */
   {"pairdev", required_argument, 0, 0},  /* pairlength_deviation */
 
-#ifdef HAVE_PTHREAD
   {"nthreads", required_argument, 0, 't'}, /* nworkers */
-#endif
   {"adapter-strip", required_argument, 0, 'a'},	/* chop_primers_p */
 
   {"query-unk-mismatch", required_argument, 0, 0}, /* query_unk_mismatch_p */
@@ -409,7 +448,8 @@ static struct option long_options[] = {
   {"novelsplicing", required_argument, 0, 'N'}, /* novelsplicingp */
 
   {"max-mismatches", required_argument, 0, 'm'}, /* user_maxlevel_float */
-  {"terminal-threshold", required_argument, 0, 0}, /* terminal_threshold, user_terminal_threshold_p */
+  {"terminal-threshold", required_argument, 0, 0}, /* terminal_threshold */
+  {"terminal-output-minlength", required_argument, 0, 0}, /* terminal_output_minlength, user_terminal_output_minlength_p */
 
 #if 0
   {"indel-penalty-middle", required_argument, 0, 'i'}, /* indel_penalty_middle */
@@ -458,6 +498,7 @@ static struct option long_options[] = {
   {"gmap-mode", required_argument, 0, 0}, /* gmap_mode */
   {"trigger-score-for-gmap", required_argument, 0, 0}, /* trigger_score_for_gmap */
   {"gmap-min-match-length", required_argument, 0, 0},      /* gmap_min_nconsecutive */
+  {"gmap-allowance", required_argument, 0, 0}, /* gmap_allowance */
   {"max-gmap-pairsearch", required_argument, 0, 0}, /* max_gmap_pairsearch */
   {"max-gmap-terminal", required_argument, 0, 0}, /* max_gmap_terminal */
   {"max-gmap-improvement", required_argument, 0, 0}, /* max_gmap_improvement */
@@ -482,6 +523,7 @@ static struct option long_options[] = {
   {"read-group-platform", required_argument, 0, 0},	/* sam_read_group_platform */
   {"force-xs-dir", no_argument, 0, 0},			/* force_xs_direction_p */
   {"md-lowercase-snp", no_argument, 0, 0},		/* md_lowercase_variant_p */
+  {"hide-soft-clips", no_argument, 0, 0},		/* hide_soft_clips_p */
 
   {"noexceptions", no_argument, 0, '0'}, /* exception_raise_p */
   {"maxsearch", required_argument, 0, 0}, /* maxpaths_search */
@@ -493,8 +535,8 @@ static struct option long_options[] = {
   {"print-snps", no_argument, 0, 0}, /* print_snplabels_p */
   {"failsonly", no_argument, 0, 0}, /* failsonlyp */
   {"nofails", no_argument, 0, 0}, /* nofailsp */
-  {"fails-as-input", no_argument, 0, 0}, /* fails_as_input_p */
   {"split-output", required_argument, 0, 0}, /* sevenway_root */
+  {"failed-input", required_argument, 0, 0}, /* failed_input_root */
   {"append-output", no_argument, 0, 0},	     /* appendp */
 
 #ifdef HAVE_GOBY
@@ -630,7 +672,11 @@ check_compiler_assumptions () {
 #ifdef HAVE_SSE2
   int z;
   __m128i a;
+#ifdef HAVE_SSE4_1
+  char negx, negy;
 #endif
+#endif
+
 
   fprintf(stderr,"Checking compiler assumptions for popcnt: ");
   fprintf(stderr,"%08X ",x);
@@ -651,14 +697,36 @@ check_compiler_assumptions () {
   a = _mm_xor_si128(_mm_set1_epi32(x),_mm_set1_epi32(y));
   z = _mm_cvtsi128_si32(a);
   fprintf(stderr," xor=%08X\n",z);
-#endif
 
 #ifdef HAVE_SSE4_1
+  if ((negx = (char) x) > 0) {
+    negx = -negx;
+  }
+  if ((negy = (char) y) > 0) {
+    negy = -negy;
+  }
+
   fprintf(stderr,"Checking compiler assumptions for SSE4.1: ");
-  fprintf(stderr,"%d %d",(char) x,(char) y);
-  a = _mm_max_epi8(_mm_set1_epi8((char) x),_mm_set1_epi8((char) y));
+  fprintf(stderr,"%d %d",negx,negy);
+  a = _mm_max_epi8(_mm_set1_epi8(negx),_mm_set1_epi8(negy));
   z = _mm_extract_epi8(a,0);
-  fprintf(stderr," max=%d\n",z);
+  fprintf(stderr," max=%d => ",z);
+  if (negx > negy) {
+    if (z == (int) negx) {
+      fprintf(stderr,"compiler sign extends\n"); /* technically incorrect, but SIMD procedures behave properly */
+    } else {
+      fprintf(stderr,"compiler zero extends\n");
+    }
+  } else {
+    if (z == (int) negy) {
+      fprintf(stderr,"compiler sign extends\n"); /* technically incorrect, but SIMD procedures behave properly */
+    } else {
+      fprintf(stderr,"compiler zero extends\n");
+    }
+  }
+
+#endif
+
 #endif
 
   return;
@@ -670,9 +738,8 @@ check_compiler_assumptions () {
 
 static Result_T
 process_request (Request_T request, Floors_T *floors_array,
-		 Oligoindex_T *oligoindices_major, int noligoindices_major,
-		 Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		 Pairpool_T pairpool, Diagpool_T diagpool,
+		 Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		 Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		 Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		 Stopwatch_T worker_stopwatch) {
   int jobid;
@@ -689,6 +756,10 @@ process_request (Request_T request, Floors_T *floors_array,
   queryseq1 = Request_queryseq1(request);
   queryseq2 = Request_queryseq2(request);
 
+  Pairpool_reset(pairpool);
+  Diagpool_reset(diagpool);
+  Cellpool_reset(cellpool);
+
   /* printf("%s\n",Shortread_accession(queryseq1)); */
 
   if (worker_stopwatch != NULL) {
@@ -698,15 +769,12 @@ process_request (Request_T request, Floors_T *floors_array,
   if (queryseq2 == NULL) {
     stage3array = Stage1_single_read(&npaths,&first_absmq,&second_absmq,
 				     queryseq1,indexdb,indexdb2,indexdb_size_threshold,
-				     genome,floors_array,user_maxlevel_float,subopt_levels,
+				     genomecomp,floors_array,user_maxlevel_float,subopt_levels,
 				     indel_penalty_middle,indel_penalty_end,
-				     max_middle_insertions,max_middle_deletions,
 				     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-				     shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-				     oligoindices_major,noligoindices_major,
-				     oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-				     dynprogL,dynprogM,dynprogR,
-				     /*keep_floors_p*/true);
+				     localsplicing_penalty,distantsplicing_penalty,min_shortend,
+				     oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+				     dynprogL,dynprogM,dynprogR,/*keep_floors_p*/true);
 
     worker_runtime = worker_stopwatch == NULL ? 0.00 : Stopwatch_stop(worker_stopwatch);
     return Result_single_read_new(jobid,(void **) stage3array,npaths,first_absmq,second_absmq,worker_runtime);
@@ -715,15 +783,12 @@ process_request (Request_T request, Floors_T *floors_array,
 						   &stage3array5,&npaths5,&first_absmq5,&second_absmq5,
 						   &stage3array3,&npaths3,&first_absmq3,&second_absmq3,
 						   queryseq1,queryseq2,indexdb,indexdb2,indexdb_size_threshold,
-						   genome,floors_array,user_maxlevel_float,subopt_levels,
+						   genomecomp,floors_array,user_maxlevel_float,subopt_levels,
 						   indel_penalty_middle,indel_penalty_end,
-						   max_middle_insertions,max_middle_deletions,
 						   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-						   shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-						   oligoindices_major,noligoindices_major,
-						   oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-						   dynprogL,dynprogM,dynprogR,
-						   pairmax,/*keep_floors_p*/true)) != NULL) {
+						   localsplicing_penalty,distantsplicing_penalty,min_shortend,
+						   oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+						   dynprogL,dynprogM,dynprogR,pairmax,/*keep_floors_p*/true)) != NULL) {
     /* Paired or concordant hits found */
     worker_runtime = worker_stopwatch == NULL ? 0.00 : Stopwatch_stop(worker_stopwatch);
     return Result_paired_read_new(jobid,(void **) stage3pairarray,npaths,first_absmq,second_absmq,
@@ -752,15 +817,12 @@ process_request (Request_T request, Floors_T *floors_array,
 					      &stage3array5,&npaths5,&first_absmq5,&second_absmq5,
 					      &stage3array3,&npaths3,&first_absmq3,&second_absmq3,
 					      queryseq1,queryseq2,indexdb,indexdb2,indexdb_size_threshold,
-					      genome,floors_array,user_maxlevel_float,subopt_levels,
+					      genomecomp,floors_array,user_maxlevel_float,subopt_levels,
 					      indel_penalty_middle,indel_penalty_end,
-					      max_middle_insertions,max_middle_deletions,
 					      allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-					      shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-					      oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-					      dynprogL,dynprogM,dynprogR,
-					      pairmax,/*keep_floors_p*/false)) != NULL) {
+					      localsplicing_penalty,distantsplicing_penalty,min_shortend,
+					      oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					      dynprogL,dynprogM,dynprogR,pairmax,/*keep_floors_p*/false)) != NULL) {
       /* Paired or concordant hits found, after chopping adapters */
       worker_runtime = worker_stopwatch == NULL ? 0.00 : Stopwatch_stop(worker_stopwatch);
       return Result_paired_read_new(jobid,(void **) stage3pairarray,npaths,first_absmq,second_absmq,
@@ -835,7 +897,7 @@ signal_handler (int sig) {
 	fprintf(stderr,"Problem sequence: ");
 	fprintf(stderr,"%s (%d bp)\n",Shortread_accession(queryseq1),Shortread_fulllength(queryseq1));
 	if (queryseq2 == NULL) {
-	  Shortread_print_query_singleend_fasta(stderr,queryseq1);
+	  Shortread_print_query_singleend_fasta(stderr,queryseq1,/*headerseq*/queryseq1);
 	} else {
 	  Shortread_print_query_pairedend_fasta(stderr,queryseq1,queryseq2,
 						invert_first_p,invert_second_p);
@@ -851,7 +913,9 @@ signal_handler (int sig) {
 #endif
 
 
-#define POOL_FREE_INTERVAL 200
+/* #define POOL_FREE_INTERVAL 200 */
+#define POOL_FREE_INTERVAL 1
+
 
 static void
 single_thread () {
@@ -864,41 +928,46 @@ single_thread () {
   Stopwatch_T worker_stopwatch;
 
   /* For GMAP */
-  Oligoindex_T *oligoindices_major, *oligoindices_minor;
-  int noligoindices_major, noligoindices_minor;
+  Oligoindex_array_T oligoindices_major, oligoindices_minor;
   Dynprog_T dynprogL, dynprogM, dynprogR;
   Pairpool_T pairpool;
   Diagpool_T diagpool;
+  Cellpool_T cellpool;
   int jobid = 0;
 
 #ifdef MEMUSAGE
   long int memusage_constant = 0;
+  char *comma1, *comma2, *comma3, *comma4, *comma5;
 #endif
 
-  oligoindices_major = Oligoindex_new_major(&noligoindices_major);
-  oligoindices_minor = Oligoindex_new_minor(&noligoindices_minor);
-  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
+  oligoindices_major = Oligoindex_array_new_major(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  oligoindices_minor = Oligoindex_array_new_minor(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
+  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/false);
+  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
   pairpool = Pairpool_new();
   diagpool = Diagpool_new();
+  cellpool = Cellpool_new();
   worker_stopwatch = (timingp == true) ? Stopwatch_new() : (Stopwatch_T) NULL;
 
   floors_array = (Floors_T *) CALLOC(MAX_READLENGTH+1,sizeof(Floors_T));
   /* Except_stack_create(); -- requires pthreads */
 
 #ifdef MEMUSAGE
-  memusage_constant += Mem_usage_report();
+  memusage_constant += Mem_usage_report_std();
   Mem_usage_reset(0);
+  printf("Initial memusage of single thread: %ld\n",Mem_usage_report_std());
 #endif
 
   while ((request = Inbuffer_get_request(inbuffer)) != NULL) {
     debug(printf("single_thread got request %d\n",Request_id(request)));
 
     TRY
-      result = process_request(request,floors_array,oligoindices_major,noligoindices_major,
-			       oligoindices_minor,noligoindices_minor,
-			       pairpool,diagpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
+      result = process_request(request,floors_array,oligoindices_major,oligoindices_minor,
+			       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
     ELSE
       queryseq1 = Request_queryseq1(request);
       if (queryseq1 == NULL) {
@@ -911,7 +980,7 @@ single_thread () {
       }
       fprintf(stderr,"\n");
       if (Request_queryseq2(request) == NULL) {
-	Shortread_print_query_singleend_fasta(stderr,queryseq1);
+	Shortread_print_query_singleend_fasta(stderr,queryseq1,/*headerseq*/queryseq1);
       } else {
 	Shortread_print_query_pairedend_fasta(stderr,queryseq1,Request_queryseq2(request),
 					      invert_first_p,invert_second_p);
@@ -926,13 +995,37 @@ single_thread () {
 
 #ifdef MEMUSAGE
     Outbuffer_print_result(outbuffer,result,request,noutput+1);
-    printf("***%s\n",Shortread_accession(Request_queryseq1(request)));
 #else
     Outbuffer_print_result(outbuffer,result,request);
 #endif
 
     Result_free(&result);
 
+#ifdef MEMUSAGE
+    /* Run with a single thread (-t 0), which should bring usage back down to 0 after each read */
+#if 0
+    printf("Memusage of single thread: standard %ld, keep %ld\n",Mem_usage_report_std(),Mem_usage_report_keep());
+    printf("Memusage of OUT: %ld\n",Mem_usage_report_out());
+    assert(Mem_usage_report_std() == 0);
+    assert(Mem_usage_report_out() == 0);
+#endif
+
+    queryseq1 = Request_queryseq1(request);
+    comma1 = Genomicpos_commafmt(Mem_max_usage_report_std());
+    comma2 = Genomicpos_commafmt(Mem_usage_report_std());
+    comma3 = Genomicpos_commafmt(Mem_usage_report_keep());
+    comma4 = Genomicpos_commafmt(Mem_usage_report_in());
+    comma5 = Genomicpos_commafmt(Mem_usage_report_out());
+
+    fprintf(stderr,"Acc %s: max %s  std %s  keep %s  in %s  out %s\n",
+	    Shortread_accession(queryseq1),comma1,comma2,comma3,comma4,comma5);
+    FREE(comma5);
+    FREE(comma4);
+    FREE(comma3);
+    FREE(comma2);
+    FREE(comma1);
+#endif
+
     /* Allocated by fill_buffer in Inbuffer_get_request */
     Request_free(&request);
     noutput++;
@@ -940,15 +1033,9 @@ single_thread () {
     if (jobid % POOL_FREE_INTERVAL == 0) {
       Pairpool_free_memory(pairpool);
       Diagpool_free_memory(diagpool);
+      Cellpool_free_memory(cellpool);
     }
 
-#ifdef MEMUSAGE
-    printf("Memusage of single thread: %ld\n",Mem_usage_report());
-    printf("Memusage of OUT: %ld\n",Mem_usage_out_report());
-    assert(Mem_usage_report() == 0);
-    assert(Mem_usage_out_report() == 0);
-#endif
-
   }
 
   /* Except_stack_destroy(); -- requires pthreads */
@@ -967,19 +1054,20 @@ single_thread () {
   if (worker_stopwatch != NULL) {
     Stopwatch_free(&worker_stopwatch);
   }
+  Cellpool_free(&cellpool);
   Diagpool_free(&diagpool);
   Pairpool_free(&pairpool);
   Dynprog_free(&dynprogR);
   Dynprog_free(&dynprogM);
   Dynprog_free(&dynprogL);
-  Oligoindex_free_array(&oligoindices_minor,noligoindices_minor);
-  Oligoindex_free_array(&oligoindices_major,noligoindices_major);
+  Oligoindex_array_free(&oligoindices_minor);
+  Oligoindex_array_free(&oligoindices_major);
 
   return;
 }
 
 
-
+#ifdef HAVE_PTHREAD
 static void *
 worker_thread (void *data) {
   long int worker_id = (long int) data;
@@ -991,60 +1079,71 @@ worker_thread (void *data) {
   Stopwatch_T worker_stopwatch;
 
   /* For GMAP */
-  Oligoindex_T *oligoindices_major, *oligoindices_minor;
-  int noligoindices_major, noligoindices_minor;
+  Oligoindex_array_T oligoindices_major, oligoindices_minor;
   Dynprog_T dynprogL, dynprogM, dynprogR;
   Pairpool_T pairpool;
   Diagpool_T diagpool;
+  Cellpool_T cellpool;
   int worker_jobid = 0;
 
 #ifdef MEMUSAGE
-  long int memusage_constant = 0, memusage;
+  long int memusage_constant = 0, memusage, max_memusage;
   char threadname[12];
+  char *comma1, *comma2, *comma3, *comma4, *comma5;
   sprintf(threadname,"thread-%ld",worker_id);
   Mem_usage_set_threadname(threadname);
 #endif
 
   /* Thread-specific data and storage */
-  oligoindices_major = Oligoindex_new_major(&noligoindices_major);
-  oligoindices_minor = Oligoindex_new_minor(&noligoindices_minor);
-  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
+  oligoindices_major = Oligoindex_array_new_major(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  oligoindices_minor = Oligoindex_array_new_minor(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
+  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/false);
+  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
   pairpool = Pairpool_new();
   diagpool = Diagpool_new();
+  cellpool = Cellpool_new();
   worker_stopwatch = (timingp == true) ? Stopwatch_new() : (Stopwatch_T) NULL;
 
   floors_array = (Floors_T *) CALLOC(MAX_READLENGTH+1,sizeof(Floors_T));
   Except_stack_create();
 
 #ifdef MEMUSAGE
-  memusage_constant += Mem_usage_report();
+  memusage_constant += Mem_usage_report_std();
   Mem_usage_reset(0);
 #endif
 
   while ((request = Inbuffer_get_request(inbuffer)) != NULL) {
     debug(printf("worker_thread %ld got request %d\n",worker_id,Request_id(request)));
     pthread_setspecific(global_request_key,(void *) request);
+
     if (worker_jobid % POOL_FREE_INTERVAL == 0) {
       Pairpool_free_memory(pairpool);
       Diagpool_free_memory(diagpool);
+      Cellpool_free_memory(cellpool);
     }
 
 #ifdef MEMUSAGE
-    memusage = Mem_usage_report();
-    /* printf("Memusage of worker thread %ld: %ld\n",worker_id,memusage); */
+    memusage = Mem_usage_report_std();
+    printf("Memusage of worker thread %ld: %ld\n",worker_id,memusage);
     if (memusage != 0) {
       fprintf(stderr,"Memusage of worker thread %ld: %ld\n",worker_id,memusage);
       fflush(stdout);
       exit(9);
     }
+    Mem_usage_reset_max();
 #endif
 
     TRY
-      result = process_request(request,floors_array,oligoindices_major,noligoindices_major,
-			       oligoindices_minor,noligoindices_minor,
-			       pairpool,diagpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
+#ifdef MEMUSAGE
+      queryseq1 = Request_queryseq1(request);
+      fprintf(stderr,"Thread %d starting %s\n",worker_id,Shortread_accession(queryseq1));
+#endif
+      result = process_request(request,floors_array,oligoindices_major,oligoindices_minor,
+			       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,worker_stopwatch);
     ELSE
       queryseq1 = Request_queryseq1(request);
       if (queryseq1 == NULL) {
@@ -1057,7 +1156,7 @@ worker_thread (void *data) {
       }
       fprintf(stderr,"\n");
       if (Request_queryseq2(request) == NULL) {
-	Shortread_print_query_singleend_fasta(stderr,queryseq1);
+	Shortread_print_query_singleend_fasta(stderr,queryseq1,/*headerseq*/queryseq1);
       } else {
 	Shortread_print_query_pairedend_fasta(stderr,queryseq1,Request_queryseq2(request),
 					      invert_first_p,invert_second_p);
@@ -1070,6 +1169,23 @@ worker_thread (void *data) {
     RERAISE;
     END_TRY;
 
+#ifdef MEMUSAGE
+    queryseq1 = Request_queryseq1(request);
+    comma1 = Genomicpos_commafmt(Mem_max_usage_report_std());
+    comma2 = Genomicpos_commafmt(Mem_usage_report_std());
+    comma3 = Genomicpos_commafmt(Mem_usage_report_keep());
+    comma4 = Genomicpos_commafmt(Mem_usage_report_in());
+    comma5 = Genomicpos_commafmt(Mem_usage_report_out());
+
+    fprintf(stderr,"Acc %s, thread %d: max %s  std %s  keep %s  in %s  out %s\n",
+	    Shortread_accession(queryseq1),worker_id,comma1,comma2,comma3,comma4,comma5);
+    FREE(comma5);
+    FREE(comma4);
+    FREE(comma3);
+    FREE(comma2);
+    FREE(comma1);
+#endif
+
     debug(printf("worker_thread putting result %d\n",Result_id(result)));
 
     Outbuffer_put_result(outbuffer,result,request);
@@ -1093,16 +1209,18 @@ worker_thread (void *data) {
   if (worker_stopwatch != NULL) {
     Stopwatch_free(&worker_stopwatch);
   }
+  Cellpool_free(&cellpool);
   Diagpool_free(&diagpool);
   Pairpool_free(&pairpool);
   Dynprog_free(&dynprogR);
   Dynprog_free(&dynprogM);
   Dynprog_free(&dynprogL);
-  Oligoindex_free_array(&oligoindices_minor,noligoindices_minor);
-  Oligoindex_free_array(&oligoindices_major,noligoindices_major);
+  Oligoindex_array_free(&oligoindices_minor);
+  Oligoindex_array_free(&oligoindices_major);
 
   return (void *) NULL;
 }
+#endif
 
 
 static void
@@ -1165,7 +1283,7 @@ add_gmap_mode (char *string) {
 }
 
 
-char *
+static char *
 check_valid_int (char *string) {
   char *p = string;
 
@@ -1205,8 +1323,71 @@ check_valid_int (char *string) {
 }
 
 
-char *
-check_valid_float (char *string) {
+static double
+check_valid_float (char *string, const char *option) {
+  double value;
+  char *p = string;
+
+  if (*p == '+' || *p == '-') {
+    p++;
+  }
+
+  while (*p != '\0' && isdigit(*p)) {
+    p++;
+  }
+  if (*p == '\0') {
+    if ((value = atof(string)) > 1.0 || value < 0.0) {
+      fprintf(stderr,"Value for option %s should be between 0.0 and 1.0\n",option);
+      exit(9);
+    } else {
+      return value;
+    }
+  }
+
+  if (*p == '.') {
+    p++;
+  }
+
+  if (!isdigit(*p)) {
+    fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
+    exit(9);
+    return 0.0;
+  }
+  while (*p != '\0' && isdigit(*p)) {
+    p++;
+  }
+
+  if (*p == 'e') {
+    p++;
+    if (*p == '+' || *p == '-') {
+      p++;
+    }
+    if (!isdigit(*p)) {
+      fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
+      exit(9);
+      return 0.0;
+    }
+    while (*p != '\0' && isdigit(*p)) {
+      p++;
+    }
+  }
+
+  if (*p == '\0') {
+    if ((value = atof(string)) > 1.0 || value < 0.0) {
+      fprintf(stderr,"Value for option %s should be between 0.0 and 1.0\n",option);
+      exit(9);
+    } else {
+      return value;
+    }
+  } else {
+    fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
+    exit(9);
+    return 0.0;
+  }
+}
+
+static char *
+check_valid_float_or_int (char *string) {
   char *p = string;
 
   if (*p == '+' || *p == '-') {
@@ -1258,7 +1439,6 @@ check_valid_float (char *string) {
 }
 
 
-
 int
 main (int argc, char *argv[]) {
   char *genomesubdir = NULL, *snpsdir = NULL, *modedir = NULL, *mapdir = NULL, *iitfile = NULL, *fileroot = NULL;
@@ -1279,6 +1459,8 @@ main (int argc, char *argv[]) {
   unsigned int nread;
   double runtime;
 
+  Splicestringpool_T splicestringpool;
+
 #ifdef HAVE_PTHREAD
   int ret;
   pthread_attr_t thread_attr_join;
@@ -1326,6 +1508,16 @@ main (int argc, char *argv[]) {
 	print_program_usage();
 	exit(0);
 	
+      } else if (!strcmp(long_name,"use-sarray")) {
+	if (!strcmp(optarg,"1")) {
+	  use_sarray_p = true;
+	} else if (!strcmp(optarg,"0")) {
+	  use_sarray_p = false;
+	} else {
+	  fprintf(stderr,"--use-sarray flag must be 0 or 1\n");
+	  exit(9);
+	}
+
       } else if (!strcmp(long_name,"expand-offsets")) {
 	if (!strcmp(optarg,"1")) {
 	  expand_offsets_p = true;
@@ -1336,9 +1528,6 @@ main (int argc, char *argv[]) {
 	  exit(9);
 	}
 
-      } else if (!strcmp(long_name,"basesize")) {
-	required_basesize = atoi(check_valid_int(optarg));
-
       } else if (!strcmp(long_name,"sampling")) {
 	required_index1interval = atoi(check_valid_int(optarg));
 
@@ -1400,9 +1589,10 @@ main (int argc, char *argv[]) {
 
       } else if (!strcmp(long_name,"trigger-score-for-gmap")) {
 	trigger_score_for_gmap = atoi(check_valid_int(optarg));
-
       } else if (!strcmp(long_name,"gmap-min-match-length")) {
 	gmap_min_nconsecutive = atoi(check_valid_int(optarg));
+      } else if (!strcmp(long_name,"gmap-allowance")) {
+	gmap_allowance = atoi(check_valid_int(optarg));
 
       } else if (!strcmp(long_name,"max-gmap-pairsearch")) {
 	max_gmap_pairsearch = atoi(check_valid_int(optarg));
@@ -1411,7 +1601,7 @@ main (int argc, char *argv[]) {
       } else if (!strcmp(long_name,"max-gmap-improvement")) {
 	max_gmap_improvement = atoi(check_valid_int(optarg));
       } else if (!strcmp(long_name,"microexon-spliceprob")) {
-	microexon_spliceprob = atof(check_valid_float(optarg));
+	microexon_spliceprob = check_valid_float(optarg,long_name);
       } else if (!strcmp(long_name,"stage2-start")) {
 	suboptimal_score_start = atoi(check_valid_int(optarg));
       } else if (!strcmp(long_name,"stage2-end")) {
@@ -1464,10 +1654,10 @@ main (int argc, char *argv[]) {
 #endif
       } else if (!strcmp(long_name,"split-output")) {
 	sevenway_root = optarg;
+      } else if (!strcmp(long_name,"failed-input")) {
+	failedinput_root = optarg;
       } else if (!strcmp(long_name,"append-output")) {
 	appendp = true;
-      } else if (!strcmp(long_name,"fails-as-input")) {
-	fails_as_input_p = true;
       } else if (!strcmp(long_name,"pairmax-dna")) {
 	pairmax_dna = atoi(check_valid_int(optarg));
       } else if (!strcmp(long_name,"pairmax-rna")) {
@@ -1485,7 +1675,10 @@ main (int argc, char *argv[]) {
 
       } else if (!strcmp(long_name,"terminal-threshold")) {
 	terminal_threshold = atoi(check_valid_int(optarg));
-	user_terminal_threshold_p = true;
+
+      } else if (!strcmp(long_name,"terminal-output-minlength")) {
+	terminal_output_minlength = atoi(check_valid_int(optarg));
+	user_terminal_output_minlength_p = true;
 
       } else if (!strcmp(long_name,"antistranded-penalty")) {
 	antistranded_penalty = atoi(check_valid_int(optarg));
@@ -1560,6 +1753,8 @@ main (int argc, char *argv[]) {
 	force_xs_direction_p = true;
       } else if (!strcmp(long_name,"md-lowercase-snp")) {
 	md_lowercase_variant_p = true;
+      } else if (!strcmp(long_name,"hide-soft-clips")) {
+	hide_soft_clips_p = true;
       } else if (!strcmp(long_name,"read-group-id")) {
 	sam_read_group_id = optarg;
       } else if (!strcmp(long_name,"read-group-name")) {
@@ -1571,7 +1766,7 @@ main (int argc, char *argv[]) {
       } else if (!strcmp(long_name,"goby-output")) {
 	goby_output_root = optarg;
       } else if (!strcmp(long_name,"distant-splice-identity")) {
-	min_distantsplicing_identity = atof(check_valid_float(optarg));
+	min_distantsplicing_identity = check_valid_float(optarg,long_name);
       } else if (!strcmp(long_name,"print-snps")) {
 	print_snplabels_p = true;
       } else if (!strcmp(long_name,"failsonly")) {
@@ -1680,7 +1875,7 @@ main (int argc, char *argv[]) {
 
     case 'M': subopt_levels = atoi(check_valid_int(optarg)); break;
     case 'm':
-      user_maxlevel_float = atof(check_valid_float(optarg));
+      user_maxlevel_float = atof(check_valid_float_or_int(optarg));
       if (user_maxlevel_float > 1.0 && user_maxlevel_float != rint(user_maxlevel_float)) {
 	fprintf(stderr,"Cannot specify fractional value %f for --max-mismatches except between 0.0 and 1.0\n",user_maxlevel_float);
 	exit(9);
@@ -1716,30 +1911,42 @@ main (int argc, char *argv[]) {
       if (!strcmp(optarg,"5")) {
 	fprintf(stderr,"Note: Batch mode 5 is now the same as batch mode 4.\n");
 	fprintf(stderr,"Expansion of offsets is now controlled separately by --expand-offsets (default=1).\n");
-	offsetscomp_access = USE_ALLOCATE; /* Doesn't matter */
+	offsetsstrm_access = USE_ALLOCATE; /* Doesn't matter */
 	positions_access = USE_ALLOCATE;
 	genome_access = USE_ALLOCATE;
+	sarray_access = USE_ALLOCATE;
+	aux_access = USE_ALLOCATE;
       } else if (!strcmp(optarg,"4")) {
-	offsetscomp_access = USE_ALLOCATE;
+	offsetsstrm_access = USE_ALLOCATE;
 	positions_access = USE_ALLOCATE;
 	genome_access = USE_ALLOCATE;
+	sarray_access = USE_MMAP_PRELOAD;
+	aux_access = USE_ALLOCATE;
 #ifdef HAVE_MMAP
       } else if (!strcmp(optarg,"3")) {
-	offsetscomp_access = USE_ALLOCATE;
+	offsetsstrm_access = USE_ALLOCATE;
 	positions_access = USE_ALLOCATE;
 	genome_access = USE_MMAP_PRELOAD; /* was batch_genome_p = true */
+	sarray_access = USE_MMAP_ONLY;
+	aux_access = USE_MMAP_PRELOAD;
       } else if (!strcmp(optarg,"2")) {
-	offsetscomp_access = USE_ALLOCATE; /* was batch_offsets_p = true */
+	offsetsstrm_access = USE_ALLOCATE; /* was batch_offsets_p = true */
 	positions_access = USE_MMAP_PRELOAD; /* was batch_positions_p = true */
 	genome_access = USE_MMAP_PRELOAD; /* was batch_genome_p = true */
+	sarray_access = USE_MMAP_ONLY;
+	aux_access = USE_MMAP_ONLY;
       } else if (!strcmp(optarg,"1")) {
-	offsetscomp_access = USE_ALLOCATE; /* was batch_offsets_p = true */
+	offsetsstrm_access = USE_ALLOCATE; /* was batch_offsets_p = true */
 	positions_access = USE_MMAP_PRELOAD; /* was batch_positions_p = true */
 	genome_access = USE_MMAP_ONLY; /* was batch_genome_p = false */
+	sarray_access = USE_MMAP_ONLY;
+	aux_access = USE_MMAP_ONLY;
       } else if (!strcmp(optarg,"0")) {
-	offsetscomp_access = USE_ALLOCATE; /* was batch_offsets_p = true */
+	offsetsstrm_access = USE_ALLOCATE; /* was batch_offsets_p = true */
 	positions_access = USE_MMAP_ONLY; /* was batch_positions_p = false */
 	genome_access = USE_MMAP_ONLY; /* was batch_genome_p = false */
+	sarray_access = USE_MMAP_ONLY;
+	aux_access = USE_MMAP_ONLY;
 #endif
       } else {
 #ifdef HAVE_MMAP
@@ -1753,6 +1960,8 @@ main (int argc, char *argv[]) {
 
 #ifdef HAVE_PTHREAD
     case 't': nworkers = atoi(check_valid_int(optarg)); break;
+#else
+    case 't': fprintf(stderr,"This version of GSNAP has pthreads disabled, so ignoring the value of %s for -t\n",optarg); break;
 #endif
 
     case 'A':
@@ -1838,31 +2047,37 @@ main (int argc, char *argv[]) {
     fprintf(stderr,"Novel splicing (-N) and known splicing (-s) both turned on => assume reads are RNA-Seq\n");
     pairmax = pairmax_rna;
     shortsplicedist_known = shortsplicedist;
-    if ((mode == CMET_STRANDED || mode == CMET_NONSTRANDED) && user_terminal_threshold_p == false) {
+#if 0
+    if ((mode == CMET_STRANDED || mode == CMET_NONSTRANDED) && user_terminal_output_minlength_p == false) {
       /* terminal alignments don't work well with bisulfite reads */
-      fprintf(stderr,"--terminal-threshold not specified, so turning off terminal alignments for RNA-Seq bisulfite reads\n");
-      terminal_threshold = 1000;
+      fprintf(stderr,"--terminal-output-minlength not specified, so setting to MAX_READLENGTH (%d) (meaning off) for RNA-Seq bisulfite reads\n",MAX_READLENGTH);
+      terminal_output_minlength = MAX_READLENGTH;
     }
+#endif
 
   } else if (knownsplicingp == true) {
     fprintf(stderr,"Known splicing (-s) turned on => assume reads are RNA-Seq\n");
     pairmax = pairmax_rna;
     shortsplicedist_known = shortsplicedist;
-    if ((mode == CMET_STRANDED || mode == CMET_NONSTRANDED) && user_terminal_threshold_p == false) {
+#if 0
+    if ((mode == CMET_STRANDED || mode == CMET_NONSTRANDED) && user_terminal_output_minlength_p == false) {
       /* terminal alignments don't work well with bisulfite reads */
-      fprintf(stderr,"--terminal-threshold not specified, so turning off terminal alignments for RNA-Seq bisulfite reads\n");
-      terminal_threshold = 1000;
+      fprintf(stderr,"--terminal-output-minlength not specified, so setting to MAX_READLENGTH (%d) (meaning off) for RNA-Seq bisulfite reads\n",MAX_READLENGTH);
+      terminal_output_minlength = MAX_READLENGTH;
     }
+#endif
 
   } else if (novelsplicingp == true) {
     fprintf(stderr,"Novel splicing (-N) turned on => assume reads are RNA-Seq\n");
     pairmax = pairmax_rna;
     shortsplicedist_known = 0;
-    if ((mode == CMET_STRANDED || mode == CMET_NONSTRANDED) && user_terminal_threshold_p == false) {
+#if 0
+    if ((mode == CMET_STRANDED || mode == CMET_NONSTRANDED) && user_terminal_output_minlength_p == false) {
       /* terminal alignments don't work well with bisulfite reads */
-      fprintf(stderr,"--terminal-threshold not specified, so turning off terminal alignments for RNA-Seq bisulfite reads\n");
-      terminal_threshold = 1000;
+      fprintf(stderr,"--terminal-output-minlength not specified, so setting to MAX_READLENGTH (%d) (meaning off) for RNA-Seq bisulfite reads\n",MAX_READLENGTH);
+      terminal_output_minlength = MAX_READLENGTH;
     }
+#endif
 
   } else {
     /* Appears to be DNA-Seq */
@@ -1870,11 +2085,12 @@ main (int argc, char *argv[]) {
     pairmax = pairmax_dna;
     shortsplicedist = shortsplicedist_known = 0U;
     shortsplicedist_novelend = 0U;
+    /* terminal alignments still needed for GMAP alignments, so don't touch terminal_threshold, but do set output minlength */
 #if 0
-    if (user_terminal_threshold_p == false) {
-      /* terminal_threshold still useful for finding GMAP alignments */
-      fprintf(stderr,"--terminal-threshold not specified, so turning off terminal alignments for DNA-Seq reads\n");
-      terminal_threshold = 1000;
+    if (user_terminal_output_minlength_p == false) {
+      fprintf(stderr,"--terminal-output-minlength not specified, so setting to MAX_READLENGTH (%d) (meaning off) for DNA-Seq reads\n",
+	      MAX_READLENGTH);
+      terminal_output_minlength = MAX_READLENGTH;
     }
 #endif
   }
@@ -1891,11 +2107,6 @@ main (int argc, char *argv[]) {
     exit(9);
   }
 
-  if (fails_as_input_p == true && (sevenway_root == NULL && failsonlyp == false)) {
-    fprintf(stderr,"The --fails-as-input option makes sense only with the --split-output or --failsonly option.  Turning it off.\n");
-    fails_as_input_p = false;
-  }
-
   if (sam_headers_batch >= 0) {
     if (part_modulus == sam_headers_batch) {
       sam_headers_p = true;
@@ -1922,6 +2133,7 @@ main (int argc, char *argv[]) {
 
   /* Open input stream and peek at first char */
   if (argc == 0) {
+    fprintf(stderr,"Reading from stdin\n");
     input = stdin;
     files = (char **) NULL;
     nfiles = 0;
@@ -2076,7 +2288,8 @@ main (int argc, char *argv[]) {
 
   if (nread > 1) {
     multiple_sequences_p = true;
-    if (offsetscomp_access != USE_ALLOCATE || genome_access != USE_ALLOCATE) {
+    if (offsetsstrm_access != USE_ALLOCATE || genome_access != USE_ALLOCATE ||
+	sarray_access != USE_ALLOCATE || aux_access != USE_ALLOCATE) {
       fprintf(stderr,"Note: >1 sequence detected, so index files are being memory mapped.\n");
       fprintf(stderr,"  GSNAP can run slowly at first while the computer starts to accumulate\n");
       fprintf(stderr,"  pages from the hard disk into its cache.  To copy index files into RAM\n");
@@ -2091,13 +2304,17 @@ main (int argc, char *argv[]) {
     /* fprintf(stderr,"Note: only 1 sequence detected.  Ignoring batch (-B) command\n"); */
     expand_offsets_p = false;
 #ifdef HAVE_MMAP
-    offsetscomp_access = USE_MMAP_ONLY;
+    offsetsstrm_access = USE_MMAP_ONLY;
     positions_access = USE_MMAP_ONLY;
     genome_access = USE_MMAP_ONLY;
+    sarray_access = USE_MMAP_ONLY;
+    aux_access = USE_MMAP_ONLY;
 #else
-    offsetscomp_access = USE_ALLOCATE;
+    offsetsstrm_access = USE_ALLOCATE;
     positions_access = USE_ALLOCATE;
     genome_access = USE_ALLOCATE;
+    sarray_access = USE_ALLOCATE;
+    aux_access = USE_ALLOCATE;
 #endif
   }
 
@@ -2115,7 +2332,7 @@ main (int argc, char *argv[]) {
 #ifdef LARGE_GENOMES
   } else if (Univ_IIT_coord_values_8p(chromosome_iit) == false) {
     fprintf(stderr,"This program gsnapl is designed for large genomes.\n");
-    fprintf(stderr,"For small genomes of less than 2^32 billion nt, please run gsnap instead.\n");
+    fprintf(stderr,"For small genomes of less than 2^32 (4 billion) bp, please run gsnap instead.\n");
     exit(9);
 #endif
   } else {
@@ -2127,14 +2344,37 @@ main (int argc, char *argv[]) {
 
 
   if (snps_root == NULL) {
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
+    genomecomp = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,genome_access);
+    genomebits = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			    uncompressedp,genome_access);
+#ifndef LARGE_GENOMES
+    if (use_sarray_p == true) {
+      if (mode == STANDARD) {
+	if ((sarray_fwd = Sarray_new(genomesubdir,fileroot,/*snps_root*/NULL,sarray_access,aux_access,
+				     mode,/*fwdp*/true)) == NULL) {
+	  use_sarray_p = false;
+	} else {
+	  sarray_rev = sarray_fwd;
+	}
+      } else {
+	if ((sarray_fwd = Sarray_new(genomesubdir,fileroot,/*snps_root*/NULL,sarray_access,aux_access,
+				     mode,/*fwdp*/true)) == NULL ||
+	    (sarray_rev = Sarray_new(genomesubdir,fileroot,/*snps_root*/NULL,sarray_access,aux_access,
+				     mode,/*fwdp*/false)) == NULL) {
+	  use_sarray_p = false;
+	}
+      }
+    }
+#endif
+
     if (dibasep == true) {
       fprintf(stderr,"No longer supporting 2-base encoding\n");
       exit(9);
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					genomesubdir,fileroot,/*idx_filesuffix*/"dibase",/*snps_root*/NULL,
-					required_basesize,required_index1part,required_index1interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_index1interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find offsets file %s.%s*offsets, needed for GSNAP color mode\n",fileroot,"dibase");
 	exit(9);
       }
@@ -2148,18 +2388,18 @@ main (int argc, char *argv[]) {
 	modedir = user_cmetdir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"metct",/*snps_root*/NULL,
-					required_basesize,required_index1part,required_index1interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_index1interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metct index file.  Need to run cmetindex first\n");
 	exit(9);
       }
 
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"metga",/*snps_root*/NULL,
-					 required_basesize,required_index1part,required_index1interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_index1interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metga index file.  Need to run cmetindex first\n");
 	exit(9);
       }
@@ -2171,18 +2411,18 @@ main (int argc, char *argv[]) {
 	modedir = user_atoidir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"a2iag",/*snps_root*/NULL,
-					required_basesize,required_index1part,required_index1interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_index1interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2iag index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"a2itc",/*snps_root*/NULL,
-					 required_basesize,required_index1part,required_index1interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_index1interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2itc index file.  Need to run atoiindex first\n");
 	exit(9);
       }
@@ -2190,10 +2430,10 @@ main (int argc, char *argv[]) {
 
     } else {
       /* Standard behavior */
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					genomesubdir,fileroot,IDX_FILESUFFIX,/*snps_root*/NULL,
-					required_basesize,required_index1part,required_index1interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_index1interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find offsets file %s.%s*offsets, needed for GSNAP\n",fileroot,IDX_FILESUFFIX);
 	exit(9);
       }
@@ -2210,8 +2450,35 @@ main (int argc, char *argv[]) {
     }
 
     /* SNPs */
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
-    genomealt = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,genome_access);
+    genomecomp = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			    uncompressedp,genome_access);
+    genomecomp_alt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			       uncompressedp,genome_access);
+    genomebits = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_BITS,
+			   uncompressedp,genome_access);
+    genomebits_alt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_BITS,
+			       uncompressedp,genome_access);
+
+#ifndef LARGE_GENOMES
+    if (use_sarray_p == true) {
+      fprintf(stderr,"Note: Suffix arrays will bias against SNP-tolerant alignment.  For bias-free alignment, set --use-sarray=0\n");
+      if (mode == STANDARD) {
+	if ((sarray_fwd = Sarray_new(genomesubdir,fileroot,/*snps_root*/NULL,sarray_access,aux_access,
+				     mode,/*fwdp*/true)) == NULL) {
+	  use_sarray_p = false;
+	} else {
+	  sarray_rev = sarray_fwd;
+	}
+      } else {
+	if ((sarray_fwd = Sarray_new(genomesubdir,fileroot,/*snps_root*/NULL,sarray_access,aux_access,
+				     mode,/*fwdp*/true)) == NULL ||
+	    (sarray_rev = Sarray_new(genomesubdir,fileroot,/*snps_root*/NULL,sarray_access,aux_access,
+				     mode,/*fwdp*/false)) == NULL) {
+	  use_sarray_p = false;
+	}
+      }
+    }
+#endif
 
     if (dibasep == true) {
       fprintf(stderr,"Currently cannot combine SNPs with 2-base encoding\n");
@@ -2225,17 +2492,17 @@ main (int argc, char *argv[]) {
 	modedir = user_cmetdir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"metct",snps_root,
-					required_basesize,required_index1part,required_index1interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_index1interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metct index file.  Need to run cmetindex first\n");
 	exit(9);
       }
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"metga",snps_root,
-					 required_basesize,required_index1part,required_index1interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_index1interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metga index file.  Need to run cmetindex first\n");
 	exit(9);
       }
@@ -2247,26 +2514,26 @@ main (int argc, char *argv[]) {
 	modedir = user_atoidir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"a2iag",snps_root,
-					required_basesize,required_index1part,required_index1interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_index1interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2iag index file.  Need to run atoiindex first\n");
 	exit(9);
       }
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"a2itc",snps_root,
-					 required_basesize,required_index1part,required_index1interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_index1interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2itc index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
     } else {
-      indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      indexdb = Indexdb_new_genome(&index1part,&index1interval,
 				   snpsdir,fileroot,/*idx_filesuffix*/"ref",snps_root,
-				   required_basesize,required_index1part,required_index1interval,
-				   expand_offsets_p,offsetscomp_access,positions_access);
+				   required_index1part,required_index1interval,
+				   expand_offsets_p,offsetsstrm_access,positions_access);
       if (indexdb == NULL) {
 	fprintf(stderr,"Cannot find snps index file for %s in directory %s\n",snps_root,snpsdir);
 	exit(9);
@@ -2299,14 +2566,13 @@ main (int argc, char *argv[]) {
       FREE(mapdir);
     }
   }
-  genome_blocks = Genome_blocks(genome);
 
   if (min_distantsplicing_end_matches < index1part) {
     fprintf(stderr,"Minimum value for distant-splice-endlength is the value for -k (kmer size) %d\n",index1part);
     exit(9);
   }
 
-  Dynprog_init(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,mode);
+  Dynprog_init(mode);
   Compoundpos_init_positions_free(Indexdb_positions_fileio_p(indexdb));
   Spanningelt_init_positions_free(Indexdb_positions_fileio_p(indexdb));
   Stage1_init_positions_free(Indexdb_positions_fileio_p(indexdb));
@@ -2380,11 +2646,12 @@ main (int argc, char *argv[]) {
     if ((donor_typeint = IIT_typeint(splicing_iit,"donor")) >= 0 && 
 	(acceptor_typeint = IIT_typeint(splicing_iit,"acceptor")) >= 0) {
       fprintf(stderr,"found donor and acceptor tags, so treating as splicesites file\n");
+      splicestringpool = Splicestringpool_new();
       splicesites = Splicetrie_retrieve_via_splicesites(&distances_observed_p,&splicecomp,&splicetypes,&splicedists,
 							&splicestrings,&splicefrags_ref,&splicefrags_alt,
 							&nsplicesites,splicing_iit,splicing_divint_crosstable,
 							donor_typeint,acceptor_typeint,chromosome_iit,
-							genome,genomealt,shortsplicedist);
+							genomecomp,genomecomp_alt,shortsplicedist,splicestringpool);
       if (nsplicesites == 0) {
 	fprintf(stderr,"\nWarning: No splicesites observed for genome %s.  Are you sure this splicesite file was built for this genome?  Please compare chromosomes below:\n",
 		dbroot);
@@ -2397,27 +2664,24 @@ main (int argc, char *argv[]) {
       } else {
 	Splicetrie_npartners(&nsplicepartners_skip,&nsplicepartners_obs,&nsplicepartners_max,splicesites,splicetypes,splicedists,
 			     splicestrings,nsplicesites,chromosome_iit,shortsplicedist,distances_observed_p);
-#if 0
-	if (multiple_sequences_p == true && splicetrie_precompute_p == true) {
-#endif
-	  Splicetrie_build_via_splicesites(&triecontents_obs,&trieoffsets_obs,&triecontents_max,&trieoffsets_max,
-					   nsplicepartners_skip,nsplicepartners_obs,nsplicepartners_max,splicetypes,
-					   splicestrings,nsplicesites);
-	  FREE(nsplicepartners_max);
-	  FREE(nsplicepartners_obs);
-	  FREE(nsplicepartners_skip);
-	  Splicestring_gc(splicestrings,nsplicesites);
-#if 0
-	}
-#endif
+	Splicetrie_build_via_splicesites(&triecontents_obs,&trieoffsets_obs,&triecontents_max,&trieoffsets_max,
+					 nsplicepartners_skip,nsplicepartners_obs,nsplicepartners_max,splicetypes,
+					 splicestrings,nsplicesites);
+	FREE(nsplicepartners_max);
+	FREE(nsplicepartners_obs);
+	FREE(nsplicepartners_skip);
+	/* Splicestring_gc(splicestrings,nsplicesites); */
+	FREE(splicestrings);
       }
+      Splicestringpool_free(&splicestringpool);
 
     } else {
       fprintf(stderr,"no donor or acceptor tags found, so treating as introns file\n");
+      splicestringpool = Splicestringpool_new();
       splicesites = Splicetrie_retrieve_via_introns(&splicecomp,&splicetypes,&splicedists,
 						    &splicestrings,&splicefrags_ref,&splicefrags_alt,
 						    &nsplicesites,splicing_iit,splicing_divint_crosstable,
-						    chromosome_iit,genome,genomealt);
+						    chromosome_iit,genomecomp,genomecomp_alt,splicestringpool);
       if (nsplicesites == 0) {
 	fprintf(stderr,"\nWarning: No splicesites observed for genome %s.  Are you sure this splicesite file was built for this genome?  Please compare chromosomes below:\n",
 		dbroot);
@@ -2427,19 +2691,15 @@ main (int argc, char *argv[]) {
 	IIT_dump_divstrings(stderr,splicing_iit);
 	exit(9);
       } else {
-#if 0
-	if (multiple_sequences_p == true && splicetrie_precompute_p == true) {
-#endif
-	  Splicetrie_build_via_introns(&triecontents_obs,&trieoffsets_obs,splicesites,splicetypes,
-				       splicestrings,nsplicesites,chromosome_iit,splicing_iit,splicing_divint_crosstable);
-	  triecontents_max = (Triecontent_T *) NULL;
-	  trieoffsets_max =  (Trieoffset_T *) NULL;
-	  Splicestring_gc(splicestrings,nsplicesites);
-#if 0
-	}
-#endif
+	Splicetrie_build_via_introns(&triecontents_obs,&trieoffsets_obs,splicesites,splicetypes,
+				     splicestrings,nsplicesites,chromosome_iit,splicing_iit,splicing_divint_crosstable);
+	triecontents_max = (Triecontent_T *) NULL;
+	trieoffsets_max =  (Trieoffset_T *) NULL;
+	/* Splicestring_gc(splicestrings,nsplicesites); */
+	FREE(splicestrings);
       }
-
+      Splicestringpool_free(&splicestringpool);
+      
     }
 
     /* For benchmarking purposes.  Can spend time/memory to load
@@ -2457,7 +2717,8 @@ main (int argc, char *argv[]) {
 	  FREE(nsplicepartners_max);
 	  FREE(nsplicepartners_obs);
 	  FREE(nsplicepartners_skip);
-	  Splicestring_gc(splicestrings,nsplicesites);
+	  /* Splicestring_gc(splicestrings,nsplicesites); */
+	  FREE(splicestrings);
 	}
 	FREE(splicefrags_ref);
 	FREE(splicedists);
@@ -2558,26 +2819,75 @@ main (int argc, char *argv[]) {
   FREE(dbroot);
 
 
-  Genome_setup(genome,genomealt,mode,circular_typeint);
-  Genome_hr_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL,
-		  query_unk_mismatch_p,genome_unk_mismatch_p,mode);
-  Maxent_hr_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL);
+#ifdef HAVE_GOBY
+  Goby_setup(show_refdiff_p);
+
+  /* Setup outbuffer */
+  if (output_goby_p == true) {
+    if (goby_output_root == NULL) {
+      fprintf(stderr,"--goby-output must be specified for Goby output.  For usage, run 'gsnap --help'\n");
+      /* print_program_usage(); */
+      exit(9);
+    } else if (creads_format_p == false) {
+      fprintf(stderr,"Currently can only write Goby if you read from compact reads files\n");
+      exit(9);
+    } else {
+      gobywriter = Goby_writer_new(goby_output_root,"gsnap",PACKAGE_VERSION);
+      Goby_writer_add_chromosomes(gobywriter,chromosome_iit);
+    }
+  }
+
+  if (gobywriter && failedinput_root != NULL) {
+      fprintf(stderr,"Goby output doesn't support the --failed-input option.  Turning it off.\n");
+      failedinput_root = NULL;
+  }
+  if (gobywriter && sevenway_root != NULL) {
+      fprintf(stderr,"Goby output doesn't support the --split-output option.  Turning it off.\n");
+      sevenway_root = NULL;
+  }
+#endif
+
+
+
+  Genome_setup(genomecomp,genomecomp_alt,mode,circular_typeint);
+#ifndef LARGE_GENOMES
+  if (sarray_fwd != NULL && sarray_rev != NULL) {
+    Sarray_setup(sarray_fwd,sarray_rev,genomecomp,mode,chromosome_iit,circular_typeint,
+		 shortsplicedist,localsplicing_penalty,
+		 max_deletionlength,max_end_deletions,max_middle_insertions,max_end_insertions,
+		 splicesites,splicetypes,splicedists,nsplicesites);
+  }
+#endif
+
+  if (genomebits == NULL) {
+    fprintf(stderr,"This version of GSNAP requires the genomebits128 file\n");
+    exit(9);
+  } else {
+    Genome_hr_setup(Genome_blocks(genomebits),/*snp_blocks*/genomebits_alt ? Genome_blocks(genomebits_alt) : NULL,
+		    query_unk_mismatch_p,genome_unk_mismatch_p,mode);
+  }
+  Genome_sites_setup(Genome_blocks(genomecomp),/*snp_blocks*/genomecomp_alt ? Genome_blocks(genomecomp_alt) : NULL);
+  Maxent_hr_setup(Genome_blocks(genomecomp),/*snp_blocks*/genomecomp_alt ? Genome_blocks(genomecomp_alt) : NULL);
   Indexdb_setup(index1part);
   Indexdb_hr_setup(index1part);
   Oligo_setup(index1part);
   Splicetrie_setup(splicecomp,splicesites,splicefrags_ref,splicefrags_alt,
 		   trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max,
 		   /*snpp*/snps_iit ? true : false,amb_closest_p,amb_clip_p,min_shortend);
+  Splice_setup(min_shortend);
+
   spansize = Spanningelt_setup(index1part,index1interval);
-  Stage1hr_setup(index1part,index1interval,spansize,chromosome_iit,nchromosomes,
-		 genomealt,mode,maxpaths_search,terminal_threshold,
+  Indel_setup(min_indel_end_matches,indel_penalty_middle);
+  Stage1hr_setup(use_sarray_p,index1part,index1interval,spansize,chromosome_iit,nchromosomes,
+		 genomecomp_alt,mode,maxpaths_search,terminal_threshold,terminal_output_minlength,
 		 splicesites,splicetypes,splicedists,nsplicesites,
 		 novelsplicingp,knownsplicingp,distances_observed_p,
-		 shortsplicedist_known,shortsplicedist_novelend,min_intronlength,
+		 max_middle_insertions,max_middle_deletions,
+		 shortsplicedist,shortsplicedist_known,shortsplicedist_novelend,min_intronlength,
 		 min_distantsplicing_end_matches,min_distantsplicing_identity,
 		 nullgap,maxpeelback,maxpeelback_distalmedial,
 		 extramaterial_end,extramaterial_paired,gmap_mode,
-		 trigger_score_for_gmap,max_gmap_pairsearch,
+		 trigger_score_for_gmap,gmap_allowance,max_gmap_pairsearch,
 		 max_gmap_terminal,max_gmap_improvement,antistranded_penalty);
   Substring_setup(print_nsnpdiffs_p,print_snplabels_p,
 		  show_refdiff_p,snps_iit,snps_divint_crosstable,
@@ -2585,68 +2895,41 @@ main (int argc, char *argv[]) {
 		  splicing_iit,splicing_divint_crosstable,
 		  donor_typeint,acceptor_typeint,trim_mismatch_score,
 		  novelsplicingp,knownsplicingp,output_sam_p,mode);
-  Dynprog_setup(novelsplicingp,splicing_iit,splicing_divint_crosstable,
-		donor_typeint,acceptor_typeint,
-		splicesites,splicetypes,splicedists,nsplicesites,
-		trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max);
-  Oligoindex_hr_setup(Genome_blocks(genome),mode);
-  Stage2_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,
-	       suboptimal_score_start,suboptimal_score_end,mode,/*snps_p*/snps_iit ? true : false);
+  Dynprog_single_setup(/*homopolymerp*/false);
+  Dynprog_genome_setup(novelsplicingp,splicing_iit,splicing_divint_crosstable,
+		       donor_typeint,acceptor_typeint);
+  Dynprog_end_setup(splicesites,splicetypes,splicedists,nsplicesites,
+		    trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max);
+  Oligoindex_hr_setup(Genome_blocks(genomecomp),mode);
+  Stage2_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,/*cross_species_p*/false,
+	       suboptimal_score_start,suboptimal_score_end,
+	       mode,/*snps_p*/snps_iit ? true : false);
   Pair_setup(trim_mismatch_score,trim_indel_score,sam_insert_0M_p,
 	     force_xs_direction_p,md_lowercase_variant_p,
 	     /*snps_p*/snps_iit ? true : false);
   Stage3_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,novelsplicingp,
 	       /*require_splicedir_p*/true,splicing_iit,splicing_divint_crosstable,
 	       donor_typeint,acceptor_typeint,
-	       splicesites,min_intronlength,max_deletionlength,output_sam_p);
+	       splicesites,min_intronlength,max_deletionlength,min_indel_end_matches,
+	       output_sam_p,/*homopolymerp*/false,/*stage3debug*/NO_STAGE3DEBUG);
   Stage3hr_setup(invert_first_p,invert_second_p,genes_iit,genes_divint_crosstable,
 		 tally_iit,tally_divint_crosstable,runlength_iit,runlength_divint_crosstable,
-		 distances_observed_p,pairmax,expected_pairlength,pairlength_deviation,
+		 terminal_output_minlength,distances_observed_p,pairmax,
+		 expected_pairlength,pairlength_deviation,
 		 localsplicing_penalty,indel_penalty_middle,antistranded_penalty,
 		 favor_multiexon_p,gmap_min_nconsecutive,index1part,index1interval,novelsplicingp,
-		 circularp);
-  SAM_setup(quiet_if_excessive_p,maxpaths_report,sam_multiple_primaries_p,
-	    force_xs_direction_p,md_lowercase_variant_p,snps_iit);
-  Goby_setup(show_refdiff_p);
-
-
-  /* Setup outbuffer */
-  if (output_goby_p == true) {
-    if (goby_output_root == NULL) {
-      fprintf(stderr,"--goby-output must be specified for Goby output.  For usage, run 'gsnap --help'\n");
-      /* print_program_usage(); */
-      exit(9);
-    } else if (creads_format_p == false) {
-      fprintf(stderr,"Currently can only write Goby if you read from compact reads files\n");
-      exit(9);
-    } else {
-      gobywriter = Goby_writer_new(goby_output_root,"gsnap",PACKAGE_VERSION);
-      Goby_writer_add_chromosomes(gobywriter,chromosome_iit);
-    }
-  }
+		 merge_samechr_p,circularp,failedinput_root,fastq_format_p);
+  SAM_setup(quiet_if_excessive_p,maxpaths_report,failedinput_root,fastq_format_p,hide_soft_clips_p,
+	    sam_multiple_primaries_p,force_xs_direction_p,md_lowercase_variant_p,snps_iit);
 
-#ifdef HAVE_GOBY
-  if (gobywriter && fails_as_input_p) {
-      fprintf(stderr,"Goby output doesn't support the --fails-as-input option.  Turning it off.\n");
-      fails_as_input_p = false;
-  }
-  if (gobywriter && sevenway_root != NULL) {
-      fprintf(stderr,"Goby output doesn't support the --split-output option.  Turning it off.\n");
-      sevenway_root = NULL;
-  }
-#endif
-
-  outbuffer = Outbuffer_new(output_buffer_size,nread,sevenway_root,appendp,
-#ifdef USE_OLD_MAXENT
-			    genome,
-#endif
+  outbuffer = Outbuffer_new(output_buffer_size,nread,sevenway_root,failedinput_root,appendp,
 			    chromosome_iit,timingp,
 			    output_sam_p,sam_headers_p,sam_read_group_id,sam_read_group_name,
 			    sam_read_group_library,sam_read_group_platform,
-			    gobywriter,nofailsp,failsonlyp,fails_as_input_p,
+			    nworkers,orderedp,gobywriter,nofailsp,failsonlyp,
 			    fastq_format_p,clip_overlap_p,merge_samechr_p,
 			    maxpaths_report,quiet_if_excessive_p,quality_shift,
-			    invert_first_p,invert_second_p,pairmax);
+			    invert_first_p,invert_second_p,pairmax,argc,argv,optind);
 
   Inbuffer_set_outbuffer(inbuffer,outbuffer);
 
@@ -2747,12 +3030,26 @@ main (int argc, char *argv[]) {
   if (dbversion != NULL) {
     FREE(dbversion);
   }
-  if (genomealt != NULL) {
-    Genome_free(&genomealt);
+#ifndef LARGE_GENOMES
+  if (sarray_fwd != NULL && sarray_rev != NULL) {
+    if (mode == STANDARD) {
+      Sarray_free(&sarray_fwd);
+    } else {
+      Sarray_free(&sarray_rev);
+      Sarray_free(&sarray_fwd);
+    }
+  }
+#endif
+  if (genomecomp_alt != NULL) {
+    Genome_free(&genomecomp_alt);
+    Genome_free(&genomebits_alt);
     FREE(splicefrags_alt);	/* If genomealt == NULL, then splicefrags_alt == splicefrags_ref */
   }
-  if (genome != NULL) {
-    Genome_free(&genome);
+  if (genomebits != NULL) {
+    Genome_free(&genomebits);
+  }
+  if (genomecomp != NULL) {
+    Genome_free(&genomecomp);
   }
 
   if (nsplicesites > 0) {
@@ -2765,7 +3062,8 @@ main (int argc, char *argv[]) {
       FREE(nsplicepartners_max);
       FREE(nsplicepartners_obs);
       FREE(nsplicepartners_skip);
-      Splicestring_gc(splicestrings,nsplicesites);
+      /* Splicestring_gc(splicestrings,nsplicesites); */
+      FREE(splicestrings);
     }
     FREE(splicefrags_ref);
     FREE(splicedists);
@@ -2824,15 +3122,16 @@ Usage: gsnap [OPTIONS...] <FASTA file>, or\n\
   fprintf(stdout,"\
   -D, --dir=directory            Genome directory\n\
   -d, --db=STRING                Genome database\n\
+  --use-sarray=INT               Whether to use a suffix array, which will give increased speed.\n\
+                                   Allowed values: 0 (no) or 1 (yes, if available, default).\n\
+                                   Note that suffix arrays will bias against SNP alleles in\n\
+                                   SNP-tolerant alignment.\n\
   -k, --kmer=INT                 kmer size to use in genome database (allowed values: 16 or less)\n\
                                    If not specified, the program will find the highest available\n\
                                    kmer size in the genome database\n\
-  --basesize=INT                 Base size to use in genome database.  If not specified, the program\n\
-                                   will find the highest available base size in the genome database\n\
-                                   within selected k-mer size\n\
   --sampling=INT                 Sampling to use in genome database.  If not specified, the program\n\
                                    will find the smallest available sampling value in the genome database\n\
-                                   within selected basesize and k-mer size\n\
+                                   within selected k-mer size\n\
   -q, --part=INT/INT             Process only the i-th out of every n sequences\n\
                                    e.g., 0/100 or 99/100 (useful for distributing jobs\n\
                                    to a computer farm).\n\
@@ -2853,7 +3152,7 @@ Usage: gsnap [OPTIONS...] <FASTA file>, or\n\
                                       start=2, end=2  => identifier is 071112_SLXA-EAS1_s_7:5:1:817:345\n\
                                       start=1, end=2  => identifier is SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345\n\
   --force-single-end             When multiple FASTQ files are provided on the command line, GSNAP assumes\n\
-                                    they are match paired-end files.  This flag treats each file as single-end.\n\
+                                    they are matching paired-end files.  This flag treats each file as single-end.\n\
   --filter-chastity=STRING       Skips reads marked by the Illumina chastity program.  Expecting a string\n\
                                    after the accession having a 'Y' after the first colon, like this:\n\
                                          @accession 1:Y:0:CTTGTA\n\
@@ -2889,28 +3188,27 @@ is still designed to be fast.\n\
 #ifdef HAVE_MMAP
   fprintf(stdout,"\
   -B, --batch=INT                Batch mode (default = 2)\n\
-                                 Mode     Offsets       Positions       Genome\n\
-                                   0      see note      mmap            mmap\n\
-                                   1      see note      mmap & preload  mmap\n\
-                      (default)    2      see note      mmap & preload  mmap & preload\n\
-                                   3      see note      allocate        mmap & preload\n\
-                                   4      see note      allocate        allocate\n\
-                                   5      expand        allocate        allocate\n\
+                                 Mode     Offsets       Positions       Genome          Suffix array\n\
+                                   0      see note      mmap            mmap            mmap\n\
+                                   1      see note      mmap & preload  mmap            mmap\n\
+                      (default)    2      see note      mmap & preload  mmap & preload  mmap & preload\n\
+                                   3      see note      allocate        mmap & preload  mmap & preload\n\
+                                   4      see note      allocate        allocate        mmap & preload\n\
+                                   5      see note      allocate        allocate        allocate\n\
                            Note: For a single sequence, all data structures use mmap\n\
                            If mmap not available and allocate not chosen, then will use fileio (very slow)\n\
 ");
 #else
   fprintf(stdout,"\
-  -B, --batch=INT                Batch mode (default = 4, modes 0-3 disallowed because program configured without mmap)\n\
-                                 Mode     Offsets       Positions       Genome\n\
-                      (default)    4      see note      allocate        allocate\n\
-                                   5      expand        allocate        allocate\n \
+  -B, --batch=INT                Batch mode (default = 5, modes 0-4 disallowed because program configured without mmap)\n\
+                                 Mode     Offsets       Positions       Genome         Suffix array\n\
+                      (default)    5      see note      allocate        allocate       allocate\n \
 ");
 #endif
   fprintf(stdout,"\
-                       Note about --batch and offsets: Expansion of offsets can be controlled\n\
-                       independently by the --expand-offsets flag.  The --batch=5 option is equivalent\n\
-                       to --batch=4 plus --expand-offsets=1\n\
+                       Note about offsets: Expansion of offsets can be controlled\n\
+                       independently by the --expand-offsets flag.  However, offsets\n\
+                       are accessed relatively fast in this version of GSNAP.\n\
 \n\
   --expand-offsets=INT           Whether to expand the genomic offsets index\n\
                                    Values: 0 (no, default), or 1 (yes).\n\
@@ -2949,18 +3247,24 @@ is still designed to be fast.\n\
 ");
 #else
   fprintf(stdout,"\
-  --terminal-threshold=INT       Threshold for searching for a terminal alignment (from one end of the\n\
+  --terminal-threshold=INT       Threshold for computing a terminal alignment (from one end of the\n\
                                    read to the best possible position at the other end) (default 2\n\
                                    for standard, atoi-stranded, and atoi-nonstranded mode;\n\
                                    default 1000 for cmet-stranded and cmet-nonstranded mode).\n\
                                    For example, if this value is 2, then if GSNAP finds an exact or\n\
                                    1-mismatch alignment, it will not try to find a terminal alignment.\n\
-                                   Note that this default value may not be low enough if you want to\n\
-                                   obtain terminal alignments for very short reads, although such reads\n\
-                                   probably do not have enough specificity for terminal alignments anyway.\n\
-                                   Note also that terminal alignments are needed to help the GMAP algorithm\n\
-                                   find some alignments.  To turn off terminal alignments, set this to a\n\
-                                   high value, greater than the value for --max-mismatches.\n\
+                                   To turn off the computation of terminal alignments, set this to a\n\
+                                   high value, greater than the value for --max-mismatches.  However,\n\
+                                   note hat terminal alignments are needed to help the GMAP algorithm\n\
+                                   find some alignments.  Therefore, to avoid getting terminal alignments\n\
+                                   in the output, you should generally set --terminal-output-minlength\n\
+                                   instead of this parameter.\n\
+  --terminal-output-minlength=INT\n\
+                                 Threshold alignment length in bp for a terminal alignment result to be printed\n\
+                                   (in bp) (default 25 for RNA-Seq standard, atoi-stranded, and atoi-nonstranded modes;\n\
+                                   default MAX_READLENGTH for other RNA-Seq modes and for DNA-Seq in all modes).\n\
+                                   Setting this parameter to a value of MAX_READLENGTH or more will prevent\n\
+                                   all terminal alignments from being printed.\n\
   -i, --indel-penalty=INT        Penalty for an indel (default 2).\n\
                                    Counts against mismatches allowed.  To find indels, make\n\
                                    indel-penalty less than or equal to max-mismatches.\n\
@@ -3033,6 +3337,10 @@ is still designed to be fast.\n\
   fprintf(stdout,"\
   -t, --nthreads=INT             Number of worker threads\n\
 ");
+#else
+  fprintf(stdout,"\
+  -t, --nthreads=INT             Number of worker threads.  Flag is ignored in this version of GSNAP, which has pthreads disabled\n\
+");
 #endif
 
   fprintf(stdout,"\n");
@@ -3045,6 +3353,7 @@ is still designed to be fast.\n\
   --trigger-score-for-gmap=INT   Try GMAP pairsearch on nearby genomic regions if best score (the total\n\
                                    of both ends if paired-end) exceeds this value (default 5)\n\
   --gmap-min-match-length=INT    Keep GMAP hit only if it has this many consecutive matches (default 20)\n\
+  --gmap-allowance=INT           Extra mismatch/indel score allowed for GMAP alignments (default 3)\n\
   --max-gmap-pairsearch=INT      Perform GMAP pairsearch on nearby genomic regions up to this many\n\
                                    many candidate ends (default 10).  Requires pairsearch in --gmap-mode\n\
   --max-gmap-terminal=INT        Perform GMAP terminal on nearby genomic regions up to this many\n\
@@ -3161,7 +3470,6 @@ is still designed to be fast.\n\
                                    (not fully implemented yet)\n\
   --failsonly                    Print only failed alignments, those with no results\n\
   --nofails                      Exclude printing of failed alignments\n\
-  --fails-as-input               Print completely failed alignments as input FASTA or FASTQ format\n\
 ");
 
 #ifdef HAVE_GOBY
@@ -3181,10 +3489,13 @@ is still designed to be fast.\n\
   fprintf(stdout,"\
   --split-output=STRING          Basename for multiple-file output, separately for nomapping,\n\
                                    halfmapping_uniq, halfmapping_mult, unpaired_uniq, unpaired_mult,\n\
-                                   paired_uniq, paired_mult, concordant_uniq, and concordant_mult results (up to 9 files,\n\
-                                   or 10 if --fails-as-input is selected, or 3 for single-end reads)\n\
-  --append-output                When --split-output is given, this flag will append output to the\n\
-                                   existing files.  Otherwise, the default is to create new files.\n\
+                                   paired_uniq, paired_mult, concordant_uniq, and concordant_mult results\n\
+  --failed-input=STRING          Print completely failed alignments as input FASTA or FASTQ format,\n\
+                                    to the given file, appending .1 or .2, for paired-end data.\n\
+                                    If the --split-output flag is also given, this file is generated\n\
+                                    in addition to the output in the .nomapping file.\n\
+  --append-output                When --split-output or --failed-input is given, this flag will append output\n\
+                                    to the existing files.  Otherwise, the default is to create new files.\n\
   --output-buffer-size=INT       Buffer size, in queries, for output thread (default 1000).  When the number\n\
                                    of results to be printed exceeds this size, the worker threads are halted\n\
                                    until the backlog is cleared\n\
diff --git a/src/iit-read-univ.c b/src/iit-read-univ.c
index 0cb7d3b..a709fb3 100644
--- a/src/iit-read-univ.c
+++ b/src/iit-read-univ.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: iit-read-univ.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: iit-read-univ.c 137099 2014-05-23 21:15:00Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -90,9 +90,11 @@ static char rcsid[] = "$Id: iit-read-univ.c 99737 2013-06-27 19:33:03Z twu $";
 #endif
 
 
-
-typedef struct FNode_T *FNode_T;
-struct FNode_T {
+/* Cannot use version in iitdef.h, because that uses Chrpos_T for the
+   value, and utility functions need to have Univcoord_T (or UINT8 if
+   available). */
+typedef struct Univ_FNode_T *Univ_FNode_T;
+struct Univ_FNode_T {
   Univcoord_T value;
   int a;
   int b;
@@ -119,7 +121,7 @@ struct T {
   int *sigmas;			/* Ordering for IIT */
   int *omegas;			/* Ordering for IIT */
 
-  struct FNode_T *nodes;
+  struct Univ_FNode_T *nodes;
   struct Univinterval_T *intervals;
 
   UINT4 *typepointers;
@@ -541,7 +543,11 @@ Univ_IIT_dump_table (T this, bool zerobasedp) {
     startpos = Univinterval_low(interval);
     endpos = startpos + Univinterval_length(interval) - 1U;
 
-    printf("%lu..%lu\t",startpos,endpos);
+    if (zerobasedp) {
+      printf("%lu..%lu\t",startpos,endpos);
+    } else {
+      printf("%lu..%lu\t",startpos+1,endpos+1);
+    }
 
     printf("%u",Univinterval_length(interval));
     if (Univinterval_type(interval) > 0) {
@@ -584,9 +590,12 @@ Univ_IIT_dump_sam (FILE *fp, T this, char *sam_read_group_id, char *sam_read_gro
   Univinterval_T interval;
   char *label;
   bool allocp;
+  int circular_typeint;
 
   if (this == NULL) {
     return;
+  } else {
+    circular_typeint = Univ_IIT_typeint(this,"circular");
   }
 
   for (i = 0; i < this->total_nintervals; i++) {
@@ -600,6 +609,9 @@ Univ_IIT_dump_sam (FILE *fp, T this, char *sam_read_group_id, char *sam_read_gro
     /* endpos = startpos + Univinterval_length(interval) - 1U; */
 
     fprintf(fp,"\tLN:%u",Univinterval_length(interval));
+    if (Univinterval_type(interval) == circular_typeint) {
+      fprintf(fp,"\ttp:circular");
+    }
     fprintf(fp,"\n");
 
     index++;
@@ -829,9 +841,9 @@ read_tree_univ (off_t offset, off_t filesize, FILE *fp, char *filename, T new) {
 
   debug(printf("nnodes: %d\n",new->nnodes));
   if (new->nnodes == 0) {
-    new->nodes = (struct FNode_T *) NULL;
+    new->nodes = (struct Univ_FNode_T *) NULL;
   } else {
-    new->nodes = (struct FNode_T *) CALLOC(new->nnodes,sizeof(struct FNode_T));
+    new->nodes = (struct Univ_FNode_T *) CALLOC(new->nnodes,sizeof(struct Univ_FNode_T));
 #ifdef WORDS_BIGENDIAN
     if (new->coord_values_8p == true) {
       for (i = 0; i < new->nnodes; i++) {
@@ -856,7 +868,7 @@ read_tree_univ (off_t offset, off_t filesize, FILE *fp, char *filename, T new) {
 #else
     if (new->coord_values_8p == true) {
 #if 1
-      offset += sizeof(struct FNode_T)*fread(new->nodes,sizeof(struct FNode_T),new->nnodes,fp);
+      offset += sizeof(struct Univ_FNode_T)*fread(new->nodes,sizeof(struct Univ_FNode_T),new->nnodes,fp);
 #else
       for (i = 0; i < new->nnodes; i++) {
 	FREAD_UINT8(&(new->nodes[i].value),fp);
@@ -1252,7 +1264,7 @@ Univ_IIT_read (char *filename, bool readonlyp, bool add_iit_p) {
       return NULL;
     }
   } else if ((fp = FOPEN_READ_BINARY(filename)) == NULL) {
-    /* fprintf(stderr,"Cannot open IIT file %s\n",filename); */
+    fprintf(stderr,"Cannot open IIT file %s\n",filename);
     return NULL;
   }
 
@@ -1277,7 +1289,7 @@ Univ_IIT_read (char *filename, bool readonlyp, bool add_iit_p) {
     new->coord_values_8p = true;
     new->total_nintervals = -new->total_nintervals;
 #else
-    fprintf(stderr,"This is a large genome of more than 2^32 billion bp.\n");
+    fprintf(stderr,"This is a large genome of more than 2^32 (4 billion) bp.\n");
 #ifdef GSNAP
     fprintf(stderr,"You should run gsnapl instead.\n");
 #else
@@ -1486,7 +1498,7 @@ Univ_IIT_debug (char *filename) {
 static void 
 fnode_query_aux (int *min, int *max, T this, int nodeindex, Univcoord_T x) {
   int lambda;
-  FNode_T node;
+  Univ_FNode_T node;
 
   if (nodeindex == -1) {
     return;
diff --git a/src/iit-read.c b/src/iit-read.c
index bc5019f..cd3746c 100644
--- a/src/iit-read.c
+++ b/src/iit-read.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: iit-read.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: iit-read.c 126795 2014-02-12 00:59:39Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -150,6 +150,12 @@ IIT_universalp (char *filename, bool add_iit_p) {
 }
 
 
+bool
+IIT_valuep (T this) {
+  return this->valuep;
+}
+
+
 char *
 IIT_name (T this) {
   return this->name;
@@ -660,6 +666,11 @@ IIT_fieldvalue (T this, int index, int fieldint) {
   allocp = false;
 
   p = annotation;
+
+  /* Starting with version 5, annotation should have '\n' from the header line.  */
+  while (*p != '\0' && *p != '\n') p++;
+  if (*p == '\n') p++;
+
   while (*p != '\0' && fieldno < fieldint) {
     if (*p == '\n') {
       fieldno++;
@@ -1366,6 +1377,10 @@ IIT_free (T *old) {
       munmap((void *) (*old)->label_mmap,(*old)->label_length);
       munmap((void *) (*old)->labelpointers_mmap,(*old)->labelpointers_length);
       munmap((void *) (*old)->labelorder_mmap,(*old)->labelorder_length);
+      if ((*old)->valuep == true) {
+	munmap((void *) (*old)->value_mmap,(*old)->value_length);
+	munmap((void *) (*old)->valueorder_mmap,(*old)->valueorder_length);
+      }
 #endif
       close((*old)->fd);
 
@@ -1393,6 +1408,11 @@ IIT_free (T *old) {
       FREE((*old)->labelorder);
       /* close((*old)->fd); -- closed in read_annotations */
 
+      if ((*old)->valuep == true) {
+	FREE((*old)->values);
+	FREE((*old)->valueorder);
+      }
+
     } else if ((*old)->access == ALLOCATED) {
       /* Nothing to close.  IIT must have been created by IIT_new. */
 
@@ -1769,6 +1789,22 @@ read_words (off_t offset, off_t filesize, FILE *fp, T new) {
 	printf("\n");
 	);
 
+  if (new->valuep == true) {
+    debug1(printf("Starting read of valueorder offset/length\n"));
+    new->valueorder_offset = offset;
+    new->valueorder_length = (size_t) (new->total_nintervals*sizeof(int));
+    /* fprintf(stderr,"Doing a move_relative for valueorder_length %lu\n",new->valueorder_length); */
+    move_relative(fp,new->valueorder_length);
+    offset += new->valueorder_length;
+
+    debug1(printf("Starting read of value offset/length\n"));
+    new->value_offset = offset;
+    new->value_length = (size_t) (new->total_nintervals*sizeof(double));
+    /* fprintf(stderr,"Doing a move_relative for value_length %lu\n",new->value_length); */
+    move_relative(fp,new->value_length);
+    offset += new->value_length;
+  }
+
   debug1(printf("Starting read of labelorder offset/length\n"));
   new->labelorder_offset = offset;
   new->labelorder_length = (size_t) (new->total_nintervals*sizeof(int));
@@ -1898,6 +1934,22 @@ read_words_debug (off_t offset, off_t filesize, FILE *fp, T new) {
   }
   printf("\n");
 
+  if (new->valuep == true) {
+    debug1(printf("Starting read of valueorder offset/length\n"));
+    new->valueorder_offset = offset;
+    new->valueorder_length = (size_t) (new->total_nintervals*sizeof(int));
+    /* fprintf(stderr,"Doing a move_relative for valueorder_length %lu\n",new->valueorder_length); */
+    move_relative(fp,new->valueorder_length);
+    offset += new->valueorder_length;
+
+    debug1(printf("Starting read of value offset/length\n"));
+    new->value_offset = offset;
+    new->value_length = (size_t) (new->total_nintervals*sizeof(double));
+    /* fprintf(stderr,"Doing a move_relative for value_length %lu\n",new->value_length); */
+    move_relative(fp,new->value_length);
+    offset += new->value_length;
+  }
+
   debug1(printf("Starting read of labelorder offset/length\n"));
   new->labelorder_offset = offset;
   new->labelorder_length = (size_t) (new->total_nintervals*sizeof(int));
@@ -1986,6 +2038,20 @@ mmap_annotations (char *filename, T new, bool readonlyp) {
       exit(9);
     }
 
+    if (new->valuep == true) {
+      new->valueorder_mmap = Access_mmap_offset(&remainder,new->fd,new->valueorder_offset,new->valueorder_length,
+						sizeof(char),/*randomp*/true);
+      debug(fprintf(stderr,"valueorder_mmap is %p\n",new->valueorder_mmap));
+      new->valueorder = (int *) &(new->valueorder_mmap[remainder]);
+      new->valueorder_length += (size_t) remainder;
+      
+      new->value_mmap = Access_mmap_offset(&remainder,new->fd,new->value_offset,new->value_length,
+					   sizeof(char),/*randomp*/true);
+      debug(fprintf(stderr,"values_mmap is %p\n",new->value_mmap));
+      new->values = (double *) &(new->value_mmap[remainder]);
+      new->value_length += (size_t) remainder;
+    }
+
     new->labelorder_mmap = Access_mmap_offset(&remainder,new->fd,new->labelorder_offset,new->labelorder_length,
 					      sizeof(char),/*randomp*/true);
     debug(fprintf(stderr,"labelorder_mmap is %p\n",new->labelorder_mmap));
@@ -2136,6 +2202,16 @@ mmap_annotations (char *filename, T new, bool readonlyp) {
 static void
 read_annotations (T new) {
 
+  if (new->valuep == true) {
+    file_move_absolute(new->fd,new->valueorder_offset,sizeof(int),/*n*/0);
+    new->valueorder = (int *) CALLOC(new->total_nintervals,sizeof(int));
+    read(new->fd,new->valueorder,new->total_nintervals*sizeof(int));
+
+    file_move_absolute(new->fd,new->value_offset,sizeof(char),/*n*/0);
+    new->values = (double *) CALLOC(new->value_length,sizeof(char));
+    read(new->fd,new->values,new->value_length*sizeof(char));
+  }
+
   file_move_absolute(new->fd,new->labelorder_offset,sizeof(int),/*n*/0);
   new->labelorder = (int *) CALLOC(new->total_nintervals,sizeof(int));
   read(new->fd,new->labelorder,new->total_nintervals*sizeof(int));
@@ -2235,9 +2311,9 @@ IIT_read_divint (char *filename, char *divstring, bool add_iit_p) {
   } else {
     /* New format to indicate version > 1 */
     FREAD_INT(&version,fp);
-    if (version > IIT_LATEST_VERSION) {
-      fprintf(stderr,"This file is version %d, but this software can only read up to version %d\n",
-	      version,IIT_LATEST_VERSION);
+    if (version > IIT_LATEST_VERSION_NOVALUES && version > IIT_LATEST_VERSION_VALUES) {
+      fprintf(stderr,"This file is version %d, but this software can only read up to versions %d and %d\n",
+	      version,IIT_LATEST_VERSION_NOVALUES,IIT_LATEST_VERSION_VALUES);
       return -1;
     } else if ((offset += sizeof(int)) > filesize) {
       fprintf(stderr,"IIT file %s has an invalid binary format -- offset is too large (offset after version %lu, filesize %lu).  Did you generate it using iit_store?\n",
@@ -2493,9 +2569,9 @@ IIT_read (char *filename, char *name, bool readonlyp, Divread_T divread, char *d
   } else {
     /* New format to indicate version > 1 */
     FREAD_INT(&new->version,fp);
-    if (new->version > IIT_LATEST_VERSION) {
-      fprintf(stderr,"This file is version %d, but this software can only read up to version %d\n",
-	      new->version,IIT_LATEST_VERSION);
+    if (new->version > IIT_LATEST_VERSION_NOVALUES && new->version > IIT_LATEST_VERSION_VALUES) {
+      fprintf(stderr,"This file is version %d, but this software can only read up to versions %d and %d\n",
+	      new->version,IIT_LATEST_VERSION_NOVALUES,IIT_LATEST_VERSION_VALUES);
       return NULL;
     } else if ((offset += sizeof(int)) > filesize) {
       fprintf(stderr,"IIT file %s has an invalid binary format -- offset is too large (offset after version %lu, filesize %lu).  Did you generate it using iit_store?\n",
@@ -2503,6 +2579,13 @@ IIT_read (char *filename, char *name, bool readonlyp, Divread_T divread, char *d
       return NULL;
     }
 
+    if (new->version == IIT_LATEST_VERSION_VALUES) {
+      /* If IIT_LATEST_VERSION_VALUES increases, need to revise this code to handle version 6 */
+      new->valuep = true;
+    } else {
+      new->valuep = false;
+    }
+
     if (new->version <= 3) {
       new->label_pointers_8p = false;
       new->annot_pointers_8p = false;
@@ -2892,13 +2975,14 @@ IIT_debug (char *filename) {
 
   if (new->total_nintervals > 0) {
     new->version = 1;
+    new->valuep = false;
     
   } else {
     /* New format to indicate version > 1 */
     FREAD_INT(&new->version,fp);
-    if (new->version > IIT_LATEST_VERSION) {
-      fprintf(stderr,"This file is version %d, but this software can only read up to version %d\n",
-	      new->version,IIT_LATEST_VERSION);
+    if (new->version > IIT_LATEST_VERSION_NOVALUES && new->version > IIT_LATEST_VERSION_VALUES) {
+      fprintf(stderr,"This file is version %d, but this software can only read up to versions %d and %d\n",
+	      new->version,IIT_LATEST_VERSION_NOVALUES,IIT_LATEST_VERSION_VALUES);
       return;
     } else if ((offset += sizeof(int)) > filesize) {
       fprintf(stderr,"IIT file %s has an invalid binary format -- offset is too large (offset after version %lu, filesize %lu).  Did you generate it using iit_store?\n",
@@ -2906,6 +2990,13 @@ IIT_debug (char *filename) {
       return;
     }
 
+    if (new->version == IIT_LATEST_VERSION_VALUES) {
+      /* If IIT_LATEST_VERSION_VALUES increases, need to revise this code to handle version 6 */
+      new->valuep = true;
+    } else {
+      new->valuep = false;
+    }
+
     if (new->version <= 3) {
       new->label_pointers_8p = false;
       new->annot_pointers_8p = false;
@@ -3736,14 +3827,14 @@ IIT_low_exists_signed_p (T this, int divno, Chrpos_T x, int sign) {
       match = this->sigmas[divno][lambda];
       /* Have to subtract 1 because intervals array is zero-based */
       interval = this->intervals[divno][match - 1];
-      if (interval.low == x && interval.sign == sign) {
+      if (interval.low == x && (sign == 0 || interval.sign == sign)) {
 	return true;
       }
 
       match = this->omegas[divno][lambda];
       /* Have to subtract 1 because intervals array is zero-based */
       interval = this->intervals[divno][match - 1];
-      if (interval.low == x && interval.sign == sign) {
+      if (interval.low == x && (sign == 0 || interval.sign == sign)) {
 	return true;
       }
     }
@@ -3774,14 +3865,14 @@ IIT_high_exists_signed_p (T this, int divno, Chrpos_T x, int sign) {
       match = this->sigmas[divno][lambda];
       /* Have to subtract 1 because intervals array is zero-based */
       interval = this->intervals[divno][match - 1];
-      if (interval.high == x && interval.sign == sign) {
+      if (interval.high == x && (sign == 0 || interval.sign == sign)) {
 	return true;
       }
 
       match = this->omegas[divno][lambda];
       /* Have to subtract 1 because intervals array is zero-based */
       interval = this->intervals[divno][match - 1];
-      if (interval.high == x && interval.sign == sign) {
+      if (interval.high == x && (sign == 0 || interval.sign == sign)) {
 	return true;
       }
     }
@@ -3792,6 +3883,151 @@ IIT_high_exists_signed_p (T this, int divno, Chrpos_T x, int sign) {
 
 
 int *
+IIT_get_lows_signed (int *nmatches, T this, int divno, Chrpos_T x, Chrpos_T y, int sign) {
+  int *uniq = NULL, *matches, matchstart, neval, nfound, i;
+  int match, lambda, prev;
+  int min1, max1 = 0, min2, max2 = 0;
+  struct Interval_T interval;
+
+  if (divno < 0) {
+    /* fprintf(stderr,"No div %s found in iit file\n",divstring); */
+    *nmatches = 0;
+    return (int *) NULL;
+  } else {
+    min1 = min2 = this->nintervals[divno] + 1;
+  }
+
+  debug(printf("Entering IIT_low_signed_p with divno %d and query %u..%u\n",divno,x,y));
+  fnode_query_aux(&min1,&max1,this,divno,0,x);
+  fnode_query_aux(&min2,&max2,this,divno,0,y);
+  debug(printf("min1=%d max1=%d  min2=%d max2=%d\n",min1,max1,min2,max2));
+
+  *nmatches = 0;
+  if (max2 >= min1) {
+    neval = (max2 - min1 + 1) + (max2 - min1 + 1);
+    matches = (int *) CALLOC(neval,sizeof(int));
+
+    nfound = 0;
+    for (lambda = min1; lambda <= max2; lambda++) {
+      match = this->sigmas[divno][lambda];
+      /* Have to subtract 1 because intervals array is zero-based */
+      interval = this->intervals[divno][match - 1];
+      if (interval.low >= x && interval.low <= y && (sign == 0 || interval.sign == sign)) {
+	matches[nfound++] = match;
+      }
+
+      match = this->omegas[divno][lambda];
+      /* Have to subtract 1 because intervals array is zero-based */
+      interval = this->intervals[divno][match - 1];
+      if (interval.low >= x && interval.low <= y && (sign == 0 || interval.sign == sign)) {
+	matches[nfound++] = match;
+      }
+    }
+
+    if (nfound == 0) {
+      return (int *) NULL;
+    } else {
+      /* Eliminate duplicates */
+      uniq = (int *) CALLOC(nfound,sizeof(int));
+      qsort(matches,nfound,sizeof(int),int_compare);
+      prev = 0;
+      debug(printf("unique segments in lambda %d to %d:",min1,max2));
+      for (i = 0; i < nfound; i++) {
+	if (matches[i] != prev) {
+	  debug(printf(" %d",matches[i]));
+	  uniq[(*nmatches)++] = matches[i];
+	  prev = matches[i];
+	}
+      }
+      debug(printf("\n"));
+
+      /* No need to check for interval overlap */
+    }
+  }
+
+  matchstart = this->cum_nintervals[divno];
+  for (i = 0; i < *nmatches; i++) {
+    uniq[i] += matchstart;
+  }
+
+  return uniq;
+}
+
+
+int *
+IIT_get_highs_signed (int *nmatches, T this, int divno, Chrpos_T x, Chrpos_T y, int sign) {
+  int *uniq = NULL, *matches, matchstart, neval, nfound, i;
+  int match, lambda, prev;
+  int min1, max1 = 0, min2, max2 = 0;
+  struct Interval_T interval;
+
+  if (divno < 0) {
+    /* fprintf(stderr,"No div %s found in iit file\n",divstring); */
+    *nmatches = 0;
+    return (int *) NULL;
+  } else {
+    min1 = min2 = this->nintervals[divno] + 1;
+  }
+
+  debug(printf("Entering IIT_low_signed_p with divno %d and query %u..%u\n",divno,x,y));
+  fnode_query_aux(&min1,&max1,this,divno,0,x);
+  fnode_query_aux(&min2,&max2,this,divno,0,y);
+  debug(printf("min1=%d max1=%d  min2=%d max2=%d\n",min1,max1,min2,max2));
+
+  *nmatches = 0;
+  if (max2 >= min1) {
+    neval = (max2 - min1 + 1) + (max2 - min1 + 1);
+    matches = (int *) CALLOC(neval,sizeof(int));
+
+    nfound = 0;
+    for (lambda = min1; lambda <= max2; lambda++) {
+      match = this->sigmas[divno][lambda];
+      /* Have to subtract 1 because intervals array is zero-based */
+      interval = this->intervals[divno][match - 1];
+      if (interval.high >= x && interval.high <= y && (sign == 0 || interval.sign == sign)) {
+	matches[nfound++] = match;
+      }
+
+      match = this->omegas[divno][lambda];
+      /* Have to subtract 1 because intervals array is zero-based */
+      interval = this->intervals[divno][match - 1];
+      if (interval.high >= x && interval.high <= y && (sign == 0 || interval.sign == sign)) {
+	matches[nfound++] = match;
+      }
+    }
+
+    if (nfound == 0) {
+      return (int *) NULL;
+    } else {
+      /* Eliminate duplicates */
+      uniq = (int *) CALLOC(nfound,sizeof(int));
+      qsort(matches,nfound,sizeof(int),int_compare);
+      prev = 0;
+      debug(printf("unique segments in lambda %d to %d:",min1,max2));
+      for (i = 0; i < nfound; i++) {
+	if (matches[i] != prev) {
+	  debug(printf(" %d",matches[i]));
+	  uniq[(*nmatches)++] = matches[i];
+	  prev = matches[i];
+	}
+      }
+      debug(printf("\n"));
+
+      /* No need to check for interval overlap */
+    }
+  }
+
+  matchstart = this->cum_nintervals[divno];
+  for (i = 0; i < *nmatches; i++) {
+    uniq[i] += matchstart;
+  }
+
+  return uniq;
+}
+
+
+
+int *
 IIT_get (int *nmatches, T this, char *divstring, Chrpos_T x, Chrpos_T y, bool sortp) {
   int *sorted, *matches = NULL, matchstart, *uniq, neval, nuniq, i;
   int lambda, prev;
@@ -4040,14 +4276,14 @@ IIT_exists_with_divno_signed (T this, int divno, Chrpos_T x, Chrpos_T y, int sig
     match = this->sigmas[divno][lambda];
     interval = &(this->intervals[divno][match - 1]);
     if (Interval_low(interval) == x && Interval_high(interval) == y &&
-	Interval_sign(interval) == sign) {
+	(sign == 0 || Interval_sign(interval) == sign)) {
       return true;
     }
 
     match = this->omegas[divno][lambda];
     interval = &(this->intervals[divno][match - 1]);
     if (Interval_low(interval) == x && Interval_high(interval) == y &&
-	Interval_sign(interval) == sign) {
+	(sign == 0 || Interval_sign(interval) == sign)) {
       return true;
     }
   }
@@ -4078,14 +4314,14 @@ IIT_exists_with_divno_typed_signed (T this, int divno, Chrpos_T x, Chrpos_T y, i
     match = this->sigmas[divno][lambda];
     interval = &(this->intervals[divno][match - 1]);
     if (Interval_low(interval) == x && Interval_high(interval) == y &&
-	Interval_type(interval) == type && Interval_sign(interval) == sign) {
+	Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
       return true;
     }
 
     match = this->omegas[divno][lambda];
     interval = &(this->intervals[divno][match - 1]);
     if (Interval_low(interval) == x && Interval_high(interval) == y &&
-	Interval_type(interval) == type && Interval_sign(interval) == sign) {
+	Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
       return true;
     }
   }
@@ -4117,13 +4353,13 @@ IIT_exists_with_divno_typed_signed (T this, int divno, Chrpos_T x, Chrpos_T y, i
     match = this->sigmas[divno][lambda];
     interval = &(this->intervals[divno][match - 1]);
     if (Interval_overlap_p(x,y,this->intervals[divno],match) == true &&
-	Interval_type(interval) == type && Interval_sign(interval) == sign) {
+	Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
       return true;
     }
     match = this->omegas[divno][lambda];
     interval = &(this->intervals[divno][match - 1]);
     if (Interval_overlap_p(x,y,this->intervals[divno],match) == true &&
-	Interval_type(interval) == type && Interval_sign(interval) == sign) {
+	Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
       return true;
     }
   }
@@ -4906,7 +5142,7 @@ IIT_get_typed_signed (int *ntypematches, T this, char *divstring, Chrpos_T x, Ch
   for (i = 0; i < nmatches; i++) {
     index = matches[i];
     interval = &(this->intervals[0][index-1]);
-    if (Interval_type(interval) == type && Interval_sign(interval) == sign) {
+    if (Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
       (*ntypematches)++;
     }
   }
@@ -4917,7 +5153,7 @@ IIT_get_typed_signed (int *ntypematches, T this, char *divstring, Chrpos_T x, Ch
     for (i = 0; i < nmatches; i++) {
       index = matches[i];
       interval = &(this->intervals[0][index-1]);
-      if (Interval_type(interval) == type && Interval_sign(interval) == sign) {
+      if (Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
 	typematches[j++] = index;
       }
     }
@@ -4963,7 +5199,7 @@ IIT_get_typed_signed_with_divno (int *ntypematches, T this, int divno, Chrpos_T
   for (i = 0; i < nmatches; i++) {
     index = matches[i];
     interval = &(this->intervals[0][index-1]);
-    if (Interval_type(interval) == type && Interval_sign(interval) == sign) {
+    if (Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
       (*ntypematches)++;
     }
   }
@@ -4974,7 +5210,7 @@ IIT_get_typed_signed_with_divno (int *ntypematches, T this, int divno, Chrpos_T
     for (i = 0; i < nmatches; i++) {
       index = matches[i];
       interval = &(this->intervals[0][index-1]);
-      if (Interval_type(interval) == type && Interval_sign(interval) == sign) {
+      if (Interval_type(interval) == type && (sign == 0 || Interval_sign(interval) == sign)) {
 	typematches[j++] = index;
       }
     }
@@ -5204,6 +5440,408 @@ IIT_get_exact_multiple_with_divno (int *nexactmatches, T this, int divno, Chrpos
 
 /************************************************************************/
 
+/* Modified from IIT_find */
+int *
+IIT_get_values_between (int *nmatches, T this, double lowval, double highval, bool sortp) {
+  int *matches = NULL, j;
+  double val;
+  int start, end;
+  int low, middle, high, recno;
+  bool foundp;
+
+  debug(printf("Entering IIT_get_values_between with %f to %f\n",lowval,highval));
+
+  /* Find start */
+  foundp = false;
+  low = 0;
+  high = this->total_nintervals;
+
+#ifdef DEBUG
+#ifndef WORDS_BIGENDIAN
+  for (middle = low; middle < high; middle++) {
+    printf("%d:%d:%f\n",middle,this->valueorder[middle],
+	   this->values[this->valueorder[middle]]);
+  }
+  printf("\n");
+#endif
+#endif
+
+  while (!foundp && low < high) {
+    middle = (low+high)/2;
+
+#ifdef DEBUG
+#ifndef WORDS_BIGENDIAN
+    printf("low %d middle %d:%d:%f high %d\n",
+	   low,middle,this->valueorder[middle],
+	   this->values[this->valueorder[middle]],high);
+#endif
+#endif
+
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[middle])]);
+#else
+    val = this->values[this->valueorder[middle]];
+#endif
+
+    if (val > lowval) {
+      high = middle;
+      debug(printf("Decreasing high to %d\n",high));
+    } else if (val < lowval) {
+      low = middle + 1;
+      debug(printf("Increasing low to %d\n",low));
+    } else {
+      foundp = true;
+    }
+  }
+
+  if (foundp == true) {
+    start = middle;
+    debug(printf("start is middle = %d\n\n",start));
+
+#ifdef WORDS_BIGENDIAN
+    while (start-1 >= 0 && 
+	   lowval == Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[start-1])])) {
+      start--;
+    }
+#else
+    while (start-1 >= 0 && 
+	   lowval == this->values[this->valueorder[start-1]]) {
+      start--;
+      debug(printf("Regressing start to %d\n",start));
+    }
+#endif
+
+  } else if ((start = low) >= this->total_nintervals) {
+    *nmatches = 0;
+    return (int *) NULL;
+
+  } else {
+    debug(printf("start is low = %d\n\n",start));
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[start])]);
+#else
+    val = this->values[this->valueorder[start]];
+#endif
+    debug(printf("Final value for low bound = %f\n",val));
+    if (val < lowval) {
+      *nmatches = 0;
+      return (int *) NULL;
+    }
+  }
+    
+
+  /* Find end */
+  foundp = false;
+  low = 0;
+  high = this->total_nintervals;
+  while (!foundp && low < high) {
+    middle = (low+high)/2;
+
+#ifdef DEBUG
+#ifndef WORDS_BIGENDIAN
+    printf("low %d middle %d:%d:%f high %d\n",
+	   low,middle,this->valueorder[middle],
+	   this->values[this->valueorder[middle]],high);
+#endif
+#endif
+
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[middle])]);
+#else
+    val = this->values[this->valueorder[middle]];
+#endif
+
+    if (val > highval) {
+      high = middle;
+      debug(printf("Decreasing high to %d\n",high));
+    } else if (val < highval) {
+      low = middle + 1;
+      debug(printf("Increasing low to %d\n",low));
+    } else {
+      foundp = true;
+    }
+  }
+
+  if (foundp == true) {
+    end = middle;
+    debug(printf("end is middle = %d\n\n",end));
+
+#ifdef WORDS_BIGENDIAN
+    while (end+1 < this->total_nintervals && 
+	   highval == Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[end+1])])) {
+      end++;
+    }
+#else
+    while (end+1 < this->total_nintervals && 
+	   highval == this->values[this->valueorder[end+1]]) {
+      end++;
+      debug(printf("Advancing end to %d\n",end));
+    }
+#endif
+
+  } else if ((end = high - 1) < 0) {
+    *nmatches = 0;
+    return (int *) NULL;
+
+  } else {
+    debug(printf("end is high - 1 = %d\n\n",end));
+
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[end])]);
+#else
+    val = this->values[this->valueorder[end]];
+#endif
+    debug(printf("Final value for high bound = %f\n",val));
+  
+    if (val > highval) {
+      *nmatches = 0;
+      return (int *) NULL;
+    }
+  }
+    
+  *nmatches = end - start + 1;
+  if (*nmatches <= 0) {
+    *nmatches = 0;
+    return (int *) NULL;
+  } else {
+    matches = (int *) CALLOC(*nmatches,sizeof(int));
+    j = 0;
+    for (recno = start; recno <= end; recno++) {
+#ifdef WORDS_BIGENDIAN
+#ifdef DEBUG
+      printf("Pushing %d:%d\n",recno,Bigendian_convert_int(this->valueorder[recno]));
+#endif
+      matches[j++] = Bigendian_convert_int(this->valueorder[recno])+1;
+	
+#else
+#ifdef DEBUG
+      printf("Pushing %d:%d\n",recno,this->valueorder[recno]);
+#endif
+      matches[j++] = this->valueorder[recno]+1;
+#endif
+    }
+    
+    return matches;
+  }
+}
+
+
+int *
+IIT_get_values_below (int *nmatches, T this, double highval, bool sortp) {
+  int *matches = NULL, j;
+  double val;
+  int start = 0, end;
+  int low, middle, high, recno;
+  bool foundp;
+
+  debug(printf("Entering IIT_get_values_below with %f\n",highval));
+
+  /* Find end */
+  foundp = false;
+  low = 0;
+  high = this->total_nintervals;
+  while (!foundp && low < high) {
+    middle = (low+high)/2;
+
+#ifdef DEBUG
+#ifndef WORDS_BIGENDIAN
+    printf("low %d middle %d:%d:%f high %d\n",
+	   low,middle,this->valueorder[middle],
+	   this->values[this->valueorder[middle]],high);
+#endif
+#endif
+
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[middle])]);
+#else
+    val = this->values[this->valueorder[middle]];
+#endif
+
+    if (val > highval) {
+      high = middle;
+      debug(printf("Decreasing high to %d\n",high));
+    } else if (val < highval) {
+      low = middle + 1;
+      debug(printf("Increasing low to %d\n",low));
+    } else {
+      foundp = true;
+    }
+  }
+
+  if (foundp == true) {
+    end = middle;
+    debug(printf("end is middle = %d\n\n",end));
+
+#ifdef WORDS_BIGENDIAN
+    while (end+1 < this->total_nintervals && 
+	   highval == Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[end+1])])) {
+      end++;
+    }
+#else
+    while (end+1 < this->total_nintervals && 
+	   highval == this->values[this->valueorder[end+1]]) {
+      end++;
+      debug(printf("Advancing end to %d\n",end));
+    }
+#endif
+
+  } else if ((end = high - 1) < 0) {
+    *nmatches = 0;
+    return (int *) NULL;
+
+  } else {
+    debug(printf("end is high - 1 = %d\n\n",end));
+
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[end])]);
+#else
+    val = this->values[this->valueorder[end]];
+#endif
+    debug(printf("Final value for high bound = %f\n",val));
+  
+    if (val > highval) {
+      *nmatches = 0;
+      return (int *) NULL;
+    }
+  }
+
+    
+  *nmatches = end - start + 1;
+  if (*nmatches <= 0) {
+    *matches = 0;
+    return (int *) NULL;
+  } else {
+    matches = (int *) CALLOC(*nmatches,sizeof(int));
+    j = 0;
+    for (recno = start; recno <= end; recno++) {
+#ifdef WORDS_BIGENDIAN
+#ifdef DEBUG
+      printf("Pushing %d:%d\n",recno,Bigendian_convert_int(this->valueorder[recno]));
+#endif
+      matches[j++] = Bigendian_convert_int(this->valueorder[recno])+1;
+	
+#else
+#ifdef DEBUG
+      printf("Pushing %d:%d\n",recno,this->valueorder[recno]);
+#endif
+      matches[j++] = this->valueorder[recno]+1;
+#endif
+    }
+    
+    return matches;
+  }
+}
+
+
+int *
+IIT_get_values_above (int *nmatches, T this, double lowval, bool sortp) {
+  int *matches = NULL, j;
+  double val;
+  int start, end = this->total_nintervals - 1;
+  int low, middle, high, recno;
+  bool foundp;
+
+  debug(printf("Entering IIT_get_values_above with %f\n",lowval));
+
+  /* Find start */
+  foundp = false;
+  low = 0;
+  high = this->total_nintervals;
+
+  while (!foundp && low < high) {
+    middle = (low+high)/2;
+
+#ifdef DEBUG
+#ifndef WORDS_BIGENDIAN
+    printf("low %d middle %d:%d:%f high %d\n",
+	   low,middle,this->valueorder[middle],
+	   this->values[this->valueorder[middle]],high);
+#endif
+#endif
+
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[middle])]);
+#else
+    val = this->values[this->valueorder[middle]];
+#endif
+
+    if (val > lowval) {
+      high = middle;
+      debug(printf("Decreasing high to %d\n",high));
+    } else if (val < lowval) {
+      low = middle + 1;
+      debug(printf("Increasing low to %d\n",low));
+    } else {
+      foundp = true;
+    }
+  }
+
+  if (foundp == true) {
+    start = middle;
+    debug(printf("start is middle = %d\n\n",start));
+
+#ifdef WORDS_BIGENDIAN
+    while (start-1 >= 0 && 
+	   lowval == Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[start-1])])) {
+      start--;
+    }
+#else
+    while (start-1 >= 0 && 
+	   lowval == this->values[this->valueorder[start-1]]) {
+      start--;
+      debug(printf("Regressing start to %d\n",start));
+    }
+#endif
+
+  } else if ((start = low) >= this->total_nintervals) {
+    *nmatches = 0;
+    return (int *) NULL;
+
+  } else {
+    debug(printf("start is low = %d\n\n",start));
+#ifdef WORDS_BIGENDIAN
+    val = Bigendian_convert_double(this->values[Bigendian_convert_int(this->valueorder[start])]);
+#else
+    val = this->values[this->valueorder[start]];
+#endif
+    debug(printf("Final value for low bound = %f\n",val));
+    if (val < lowval) {
+      *nmatches = 0;
+      return (int *) NULL;
+    }
+  }
+    
+
+  *nmatches = end - start + 1;
+  if (*nmatches <= 0) {
+    *matches = 0;
+    return (int *) NULL;
+  } else {
+    matches = (int *) CALLOC(*nmatches,sizeof(int));
+    j = 0;
+    for (recno = start; recno <= end; recno++) {
+#ifdef WORDS_BIGENDIAN
+#ifdef DEBUG
+      printf("Pushing %d:%d\n",recno,Bigendian_convert_int(this->valueorder[recno]));
+#endif
+      matches[j++] = Bigendian_convert_int(this->valueorder[recno])+1;
+	
+#else
+#ifdef DEBUG
+      printf("Pushing %d:%d\n",recno,this->valueorder[recno]);
+#endif
+      matches[j++] = this->valueorder[recno]+1;
+#endif
+    }
+    
+    return matches;
+  }
+}
+
+
+
+/************************************************************************/
+
 #if 0
 /* Need to work on */
 /* Retrieves intervals from an IIT where type > 0.  Used by gmapindex to 
diff --git a/src/iit-read.h b/src/iit-read.h
index 3d6a7a3..da00fe7 100644
--- a/src/iit-read.h
+++ b/src/iit-read.h
@@ -1,4 +1,4 @@
-/* $Id: iit-read.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: iit-read.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef IIT_READ_INCLUDED
 #define IIT_READ_INCLUDED
 #include <stdio.h>
@@ -7,6 +7,8 @@
 #include "list.h"
 #include "interval.h"
 #include "types.h"
+#include "iitdef.h"
+
 
 typedef enum {READ_ALL, READ_ONE, READ_NONE} Divread_T;
 /* READ_NONE is useful if we want to obtain an interval by name,
@@ -14,15 +16,12 @@ typedef enum {READ_ALL, READ_ONE, READ_NONE} Divread_T;
 
 typedef enum {NO_KNOWN_GENE, KNOWN_GENE, KNOWN_GENE_MULTIEXON} Overlap_T;
 
-
 #define T IIT_T
-#ifndef IIT_TYPEDEF
-#define IIT_TYPEDEF
-typedef struct T *T;
-#endif
 
 extern bool
 IIT_universalp (char *filename, bool add_iit_p);
+extern bool
+IIT_valuep (T this);
 extern char *
 IIT_name (T this);
 extern int
@@ -139,7 +138,10 @@ extern bool
 IIT_low_exists_signed_p (T this, int divno, Chrpos_T x, int sign);
 extern bool
 IIT_high_exists_signed_p (T this, int divno, Chrpos_T x, int sign);
-
+extern int *
+IIT_get_lows_signed (int *nmatches, T this, int divno, Chrpos_T x, Chrpos_T y, int sign);
+extern int *
+IIT_get_highs_signed (int *nmatches, T this, int divno, Chrpos_T x, Chrpos_T y, int sign);
 
 extern int *
 IIT_get (int *nmatches, T this, char *divstring, Chrpos_T x, Chrpos_T y, bool sortp);
@@ -193,6 +195,13 @@ IIT_get_exact_multiple (int *nmatches, T this, char *divstring, Chrpos_T x, Chrp
 extern int *
 IIT_get_exact_multiple_with_divno (int *nmatches, T this, int divno, Chrpos_T x, Chrpos_T y, int type);
 
+extern int *
+IIT_get_values_between (int *nmatches, T this, double lowval, double highval, bool sortp);
+extern int *
+IIT_get_values_below (int *nmatches, T this, double highval, bool sortp);
+extern int *
+IIT_get_values_above (int *nmatches, T this, double lowval, bool sortp);
+
 extern List_T
 IIT_intervallist_typed (List_T *labellist, Uintlist_T *seglength_list, T this);
 extern List_T
diff --git a/src/iit-write-univ.c b/src/iit-write-univ.c
index e2852c6..6e81939 100644
--- a/src/iit-write-univ.c
+++ b/src/iit-write-univ.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: iit-write-univ.c 102171 2013-07-20 00:47:41Z twu $";
+static char rcsid[] = "$Id: iit-write-univ.c 102176 2013-07-20 00:51:14Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
diff --git a/src/iit-write-univ.h b/src/iit-write-univ.h
index 737c097..ae5fb1f 100644
--- a/src/iit-write-univ.h
+++ b/src/iit-write-univ.h
@@ -1,4 +1,4 @@
-/* $Id: iit-write-univ.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: iit-write-univ.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef IIT_WRITE_UNIV_INCLUDED
 #define IIT_WRITE_UNIV_INCLUDED
 #include "bool.h"
@@ -7,12 +7,6 @@
 #include "table.h"
 #include "iitdef.h"
 
-#define T IIT_T
-#ifndef IIT_TYPEDEF
-#define IIT_TYPEDEF
-typedef struct T *T;
-#endif
-
 extern void
 IIT_write_univ (char *iitfile, List_T divlist, List_T typelist, Table_T intervaltable,
 		Table_T labeltable, Table_T annottable,
diff --git a/src/iit-write.c b/src/iit-write.c
index 71faf8d..7fd1dd0 100644
--- a/src/iit-write.c
+++ b/src/iit-write.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: iit-write.c 102134 2013-07-19 23:04:31Z twu $";
+static char rcsid[] = "$Id: iit-write.c 115892 2013-11-20 22:52:31Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -26,6 +26,7 @@ static char rcsid[] = "$Id: iit-write.c 102134 2013-07-19 23:04:31Z twu $";
 #include "fopen.h"
 #include "interval.h"
 #include "types.h"		/* For HAVE_64_BIT and UINT8 */
+#include "doublelist.h"
 
 
 #ifdef DEBUG
@@ -388,6 +389,9 @@ IIT_build_one_div (Node_T *root, struct Interval_T **intervals, int **alphas, in
  *   fieldpointers: (nfields+1)*sizeof(UINT4)  [in version >= 2]
  *   fields: nfields*(variable length strings, including '\0')  [in version >= 2]
  *
+ *   valueorder: total_nintervals*sizeof(int)  [if version == 6]
+ *   values: total_nintervals*sizeof(double)   [if version == 6]
+ *
  *   labelorder: total_nintervals*sizeof(int);
  *   labelpointers: (total_nintervals+1)*sizeof(UINT4)  [changes to long unsigned int in v4 or if label_pointer_size = 8 in v5]
  *   labels: total_nintervals*(variable length strings, including '\0')
@@ -400,6 +404,63 @@ IIT_build_one_div (Node_T *root, struct Interval_T **intervals, int **alphas, in
  *   This is because alphas/betas/sigmas/omegas run from 1 to nintervals[div]
  ************************************************************************/
 
+/* For making valueorder */
+struct Valueitem_T {
+  int divno;
+  int recno;
+  double value;
+};
+
+static int
+Valueitem_cmp (const void *x, const void *y) {
+  struct Valueitem_T *a = (struct Valueitem_T *) x;
+  struct Valueitem_T *b = (struct Valueitem_T *) y;
+  
+  if (a->value < b->value) {
+    return -1;
+  } else if (b->value < a->value) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+static int *
+get_valueorder (List_T divlist, Table_T valuetable, int *cum_nintervals, int total_nintervals) {
+  int *valueorder, divno, recno, i, k = 0;
+  struct Valueitem_T *valueitems;
+  char *divstring;
+  List_T d;
+  Doublelist_T valuelist, v;
+
+  valueorder = (int *) CALLOC(total_nintervals,sizeof(int));
+  valueitems = (struct Valueitem_T *) CALLOC(total_nintervals,sizeof(struct Valueitem_T));
+  divno = 0;
+
+  for (d = divlist; d != NULL; d = List_next(d)) {
+    divstring = (char *) List_head(d);
+    valuelist = (Doublelist_T) Table_get(valuetable,(void *) divstring);
+    recno = 0;
+    for (v = valuelist; v != NULL; v = Doublelist_next(v)) {
+      valueitems[k].divno = divno;
+      valueitems[k].recno = recno;
+      valueitems[k].value = Doublelist_head(v);
+      k++;
+      recno++;
+    }
+    divno++;
+  }
+
+  qsort(valueitems,total_nintervals,sizeof(struct Valueitem_T),Valueitem_cmp);
+  for (i = 0; i < total_nintervals; i++) {
+    valueorder[i] = cum_nintervals[valueitems[i].divno] + valueitems[i].recno;
+  }
+  FREE(valueitems);
+  return valueorder;
+}
+
+
 
 /* For making labelorder */
 struct Sortitem_T {
@@ -776,16 +837,18 @@ IIT_create_one_div (T new, int divno, Node_T root, int *alphas, int *betas, int
 
 static void
 IIT_write_div_footer (FILE *fp, List_T divlist, List_T typelist, List_T fieldlist,
-		      Table_T intervaltable, Table_T labeltable, Table_T annottable, 
+		      Table_T intervaltable, Table_T valuetable, Table_T labeltable, Table_T annottable,
 		      int *cum_nintervals, int total_nintervals, int version,
 		      bool label_pointers_8p, bool annot_pointers_8p) {
   List_T intervallist, labellist, annotlist, d, p;
+  Doublelist_T valuelist, v;
   Interval_T interval;
 #ifdef HAVE_64_BIT
   UINT8 pointer8 = 0LU;
 #endif
   UINT4 pointer = 0U;
-  int *labelorder;
+  int *labelorder, *valueorder;
+  double value;
   char *divstring, *typestring, *fieldstring, *label, *annot;
 
 #ifndef HAVE_64_BIT
@@ -820,7 +883,7 @@ IIT_write_div_footer (FILE *fp, List_T divlist, List_T typelist, List_T fieldlis
       FWRITE_UINT(pointer,fp);
     }
   }
-
+  
   /* Write types */
   for (p = typelist; p != NULL; p = List_next(p)) {
     typestring = (char *) List_head(p);
@@ -842,6 +905,23 @@ IIT_write_div_footer (FILE *fp, List_T divlist, List_T typelist, List_T fieldlis
     FWRITE_CHARS(fieldstring,strlen(fieldstring)+1,fp); /* Write '\0' */
   }
 
+  /* Write valueorder (if values present) */
+  if (valuetable != NULL) {
+    valueorder = get_valueorder(divlist,valuetable,cum_nintervals,total_nintervals);
+    FWRITE_INTS(valueorder,total_nintervals,fp);
+    FREE(valueorder);
+
+    /* Write values */
+    for (d = divlist; d != NULL; d = List_next(d)) {
+      divstring = (char *) List_head(d);
+      valuelist = (Doublelist_T) Table_get(valuetable,(void *) divstring);
+      for (v = valuelist; v != NULL; v = Doublelist_next(v)) {
+	value = Doublelist_head(v);
+	FWRITE_DOUBLE(value,fp);
+      }
+    }
+  }
+
   /* Write labelorder */
   labelorder = get_labelorder(divlist,labeltable,cum_nintervals,total_nintervals);
   FWRITE_INTS(labelorder,total_nintervals,fp);
@@ -1204,9 +1284,9 @@ IIT_output_direct (char *iitfile, T this, int version) {
 
 /* If annotlist is NULL, X's are written */
 void
-IIT_write (char *iitfile, List_T divlist, List_T typelist, List_T fieldlist, Table_T intervaltable,
-	   Table_T labeltable, Table_T annottable, Sorttype_T divsort, int version,
-	   bool label_pointers_8p, bool annot_pointers_8p) {
+IIT_write (char *iitfile, List_T divlist, List_T typelist, List_T fieldlist,
+	   Table_T intervaltable, Table_T valuetable, Table_T labeltable, Table_T annottable,
+	   Sorttype_T divsort, int version, bool label_pointers_8p, bool annot_pointers_8p) {
   Node_T root;
   FILE *fp;
   List_T intervallist, d;
@@ -1282,7 +1362,7 @@ IIT_write (char *iitfile, List_T divlist, List_T typelist, List_T fieldlist, Tab
 
     fprintf(stderr,"Writing IIT file footer information...");
     IIT_write_div_footer(fp,divlist,typelist,fieldlist,intervaltable,
-			 labeltable,annottable,cum_nintervals,total_nintervals,version,
+			 valuetable,labeltable,annottable,cum_nintervals,total_nintervals,version,
 			 label_pointers_8p,annot_pointers_8p);
     fprintf(stderr,"done\n");
     FREE(cum_nnodes);
diff --git a/src/iit-write.h b/src/iit-write.h
index 3b93876..486245d 100644
--- a/src/iit-write.h
+++ b/src/iit-write.h
@@ -1,4 +1,4 @@
-/* $Id: iit-write.h 48925 2011-10-03 21:59:27Z twu $ */
+/* $Id: iit-write.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef IIT_WRITE_INCLUDED
 #define IIT_WRITE_INCLUDED
 #include "bool.h"
@@ -8,16 +8,12 @@
 #include "iitdef.h"
 
 #define T IIT_T
-#ifndef IIT_TYPEDEF
-#define IIT_TYPEDEF
-typedef struct T *T;
-#endif
 
 extern void
 IIT_output_direct (char *iitfile, T this, int version);
 extern void
 IIT_write (char *iitfile, List_T divlist, List_T typelist, List_T fieldlist, Table_T intervaltable,
-	   Table_T labeltable, Table_T annottable, Sorttype_T divsort, int version,
+	   Table_T valuetable, Table_T labeltable, Table_T annottable, Sorttype_T divsort, int version,
 	   bool label_pointers_8p, bool annot_pointers_8p);
 extern T
 IIT_create (List_T divlist, List_T typelist, List_T fieldlist, Table_T intervaltable,
diff --git a/src/iit_get.c b/src/iit_get.c
index 38ffb83..1f4905d 100644
--- a/src/iit_get.c
+++ b/src/iit_get.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: iit_get.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: iit_get.c 115892 2013-11-20 22:52:31Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -38,7 +38,14 @@ static char rcsid[] = "$Id: iit_get.c 99737 2013-06-27 19:33:03Z twu $";
  *   Program options
  ************************************************************************/
 
+static bool value_matches_p = false;
+static bool user_lowvalue_p = false;
+static bool user_highvalue_p = false;
+static double lowval;
+static double highval;
+
 static char *fieldstring = NULL;
+static int fieldint = -1;
 static bool annotationonlyp = false;
 static bool exactp = false;
 static bool sortp = false;
@@ -57,6 +64,8 @@ static bool overall_total_p = false;
 
 static struct option long_options[] = {
   /* Input options */
+  {"lowval", required_argument, 0, 'a'}, /* value_matches_p, user_lowvalue_p, lowval */
+  {"highval", required_argument, 0, 'b'},  /* value_matches_p, user_highvalue_p, highval */
   {"field", required_argument, 0, 'f'},	/* fieldstring */
   {"annotonly", no_argument, 0, 'A'},	/* annotationonlyp */
   {"exact", no_argument, 0, 0},		/* exactp */
@@ -115,6 +124,8 @@ Options\n\
   -u, --flanking=INT      Show flanking segments on left and right\n\
 \n\
 Options for specific IIT formats\n\
+  -a, --lowval=DOUBLE     Low bound on a values IIT (default -Inf)\n\
+  -b, --highval=DOUBLE    High bound on a values IIT (default +Inf)\n\
   -c, --center=INT        Align reads so given position is centered at given column\n\
   -H, --centeruc          Report only reads with upper-case letter at given position\n\
   -R, --runlength         Report runlength IIT file in tally format\n\
@@ -576,6 +587,7 @@ print_interval (Chrpos_T *lastcoord, long int total,
 #endif
   }
 
+
   if (fieldint < 0) {
     annotation = IIT_annotation(&restofheader,iit,index,&allocp);
     printf("%s\n",restofheader);
@@ -584,8 +596,13 @@ print_interval (Chrpos_T *lastcoord, long int total,
       FREE(restofheader);
     }
   } else {
+    annotation = IIT_annotation(&restofheader,iit,index,&allocp);
+    printf("%s\n",restofheader);
+    if (allocp == true) {
+      FREE(restofheader);
+    }
     annotation = IIT_fieldvalue(iit,index,fieldint);
-    printf("%s",annotation);
+    printf("%s\n",annotation);
     FREE(annotation);
   }
 
@@ -657,6 +674,12 @@ get_matches (int *nmatches, char **divstring, Univcoord_T *coordstart, Univcoord
 	  fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
 	}
 	exit(9);
+
+      } else if (fieldstring != NULL) {
+	if ((fieldint = IIT_fieldint(*iit,fieldstring)) < 0) {
+	  fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
+	  exit(9);
+	}
       }
     }
     *nleftflanks = *nrightflanks = 0;
@@ -672,6 +695,12 @@ get_matches (int *nmatches, char **divstring, Univcoord_T *coordstart, Univcoord
 	  fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
 	}
 	exit(9);
+
+      } else if (fieldstring != NULL) {
+	if ((fieldint = IIT_fieldint(*iit,fieldstring)) < 0) {
+	  fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
+	  exit(9);
+	}
       }
     }
 
@@ -816,6 +845,12 @@ get_matches_multiple_typed (int *nmatches, char **divstring, Univcoord_T *coords
       fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
     }
     exit(9);
+
+  } else if (fieldstring != NULL) {
+    if ((fieldint = IIT_fieldint(*iit,fieldstring)) < 0) {
+      fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
+      exit(9);
+    }
   }
 
   matches = IIT_get_multiple_typed(&(*nmatches),*iit,*divstring,*coordstart,*coordend,types,ntypes,sortp);
@@ -828,17 +863,82 @@ get_matches_multiple_typed (int *nmatches, char **divstring, Univcoord_T *coords
 }
 
 
+static int
+int_cmp (const void *x, const void *y) {
+  int a = * (int *) x;
+  int b = * (int *) y;
+
+  if (a < b) {
+    return -1;
+  } else if (b < a) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+static int *
+match_intersection (int *nmatches, int *matches1, int nmatches1, int *matches2, int nmatches2) {
+  int *intersection;
+  int i, j, k;
+
+  qsort(matches1,nmatches1,sizeof(int),int_cmp);
+  qsort(matches2,nmatches2,sizeof(int),int_cmp);
+  
+  i = j = 0;
+  k = 0;
+  while (i < nmatches1 && j < nmatches2) {
+    if (matches1[i] < matches2[j]) {
+      i++;
+    } else if (matches1[i] > matches2[j]) {
+      j++;
+    } else {
+      i++;
+      j++;
+      k++;
+    }
+  }
+
+  if ((*nmatches = k) == 0) {
+    FREE(matches1);
+    return (int *) NULL;
+
+  } else {
+    intersection = (int *) CALLOC(*nmatches,sizeof(int));
+
+    i = j = 0;
+    k = 0;
+    while (i < nmatches1 && j < nmatches2) {
+      if (matches1[i] < matches2[j]) {
+	i++;
+      } else if (matches1[i] > matches2[j]) {
+	j++;
+      } else {
+	i++;
+	j++;
+	intersection[k++] = matches1[i];
+      }
+    }
+
+    FREE(matches1);
+    return intersection;
+  }
+}
+
+
 int 
 main (int argc, char *argv[]) {
   char *filename;
-  char *divstring, *lasttypestring, *ptr;
+  char *divstring = NULL, *lasttypestring, *ptr;
   Univcoord_T univ_coordstart, univ_coordend;
   Chrpos_T coordstart, coordend, lastcoord = 0U;
   char Buffer[BUFLEN], nocomment[BUFLEN], query[BUFLEN], typestring[BUFLEN];
   int typeint, *types, c;
-  int fieldint = -1;
   int nargs, ntypes, ndivs;
-  int *matches, nmatches, i, *leftflanks, *rightflanks, nleftflanks = 0, nrightflanks = 0;
+  int *value_matches = NULL, *matches = NULL;
+  int n_value_matches = 0, nmatches = 0, i;
+  int *leftflanks, *rightflanks, nleftflanks = 0, nrightflanks = 0;
   long int total;
   int n;
   IIT_T iit = NULL;
@@ -851,7 +951,7 @@ main (int argc, char *argv[]) {
   const char *long_name;
   int long_option_index = 0;
 
-  while ((opt = getopt_long(argc,argv,"f:LCASUu:c:HRTZN",long_options,&long_option_index)) != -1) {
+  while ((opt = getopt_long(argc,argv,"a:b:f:LCASUu:c:HRTZN",long_options,&long_option_index)) != -1) {
     switch (opt) {
     case 0:
       long_name = long_options[long_option_index].name;
@@ -870,6 +970,9 @@ main (int argc, char *argv[]) {
       }
       break;
 
+    case 'a': lowval = atof(optarg); user_lowvalue_p = true; value_matches_p = true; break;
+    case 'b': highval = atof(optarg); user_highvalue_p = true; value_matches_p = true; break;
+
     case 'f': fieldstring = optarg; break;
     case 'L': force_label_p = true; break;
     case 'C': force_coords_p = true; break;
@@ -901,6 +1004,43 @@ main (int argc, char *argv[]) {
     filename = argv[1];
   }
 
+  if (value_matches_p == true) {
+    if ((iit = IIT_read(filename,/*name*/NULL,true,/*divread*/READ_ALL,/*divstring*/NULL,
+			/*add_iit_p*/true,/*labels_read_p*/true)) == NULL) {
+      if (Access_file_exists_p(filename) == false) {
+	fprintf(stderr,"Cannot read file %s\n",filename);
+      } else {
+	fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
+      }
+      exit(9);
+
+    } else if (fieldstring != NULL) {
+      if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) {
+	fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
+	exit(9);
+      }
+    }
+
+    if (IIT_valuep(iit) == false) {
+      fprintf(stderr,"Error: This IIT file does not have values stored\n");
+      exit(9);
+    }
+
+    if (user_lowvalue_p == true && user_highvalue_p == true) {
+      if (lowval > highval) {
+	fprintf(stderr,"Cannot have lowval %f > highval %f\n",lowval,highval);
+	exit(9);
+      } else {
+	value_matches = IIT_get_values_between(&n_value_matches,iit,lowval,highval,/*sortp*/false);
+      }
+    } else if (user_lowvalue_p == true) {
+      value_matches = IIT_get_values_above(&n_value_matches,iit,lowval,/*sortp*/false);
+      
+    } else { /* user_highvalue_p == true */
+      value_matches = IIT_get_values_below(&n_value_matches,iit,highval,/*sortp*/false);
+    }
+  }
+
   if (0 && statsp == true && argc == 2) {
     /* Want total over entire IIT */
     if ((iit = IIT_read(filename,NULL,true,/*divread*/READ_ALL,/*divstring*/NULL,/*add_iit_p*/true,
@@ -911,7 +1051,13 @@ main (int argc, char *argv[]) {
 	fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
       }
       exit(9);
-    }
+
+    } else if (fieldstring != NULL) {
+      if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) {
+	fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
+	exit(9);
+      }
+    } 
 
     total = 0;
     n = 0;
@@ -941,188 +1087,80 @@ main (int argc, char *argv[]) {
       }
     }
 
+    if (divstring != NULL) {
+      FREE(divstring);
+    }
     Univ_IIT_free(&chromosome_iit);
+    return 0;
 
-  } else {
-    if (argc == 2) {
-      debug(printf("Running under argc 2\n"));
-      /* Expecting input from stdin */
-      
-      if ((iit = IIT_read(filename,NULL,true,/*divread*/READ_ALL,/*divstring*/NULL,/*add_iit_p*/true,
-			  /*labels_read_p*/true)) == NULL) {
-	if (Access_file_exists_p(filename) == false) {
-	  fprintf(stderr,"Cannot read file %s\n",filename);
-	} else {
-	  fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
-	}
-	exit(9);
+  } else if (argc == 2 && value_matches_p == true) {
+    /* Note: Could potentially handle input from stdin, but currently just deal with value_matches */
 
-	if (fieldstring != NULL) {
-	  if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) {
-	    fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
-	    exit(9);
-	  }
-	}
-	
-	while (fgets(Buffer,BUFLEN,stdin) != NULL) {
-	  if ((ptr = rindex(Buffer,'\n')) != NULL) {
-	    *ptr = '\0';
-	  }
-	  strcpy(nocomment,Buffer);
-	  if ((ptr = rindex(nocomment,'#')) != NULL) {
-	    *ptr = '\0';
-	  }
+    ndivs = IIT_ndivs(iit);
+    for (i = 0; i < n_value_matches; i++) {
+      debug(printf("\nindex = %d\n",matches[i]));
+      print_interval(&lastcoord,/*total*/0,/*divstring*/NULL,/*coordstart*/0,/*coordend*/0,
+		     value_matches[i],iit,ndivs,fieldint);
+    }
+    
+    FREE(value_matches);
+    IIT_free(&iit);
+    return 0;
 
-	  skipp = false;
-
-	  if ((nargs = sscanf(nocomment,"%s %s",query,typestring)) == 2) {
-	    debug(printf("typestring is %s\n",typestring));
-	    matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
-				  &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-				  query,typestring,&iit,filename);
-	    coordstart = (Chrpos_T) univ_coordstart;
-	    coordend = (Chrpos_T) univ_coordend;
-
-	  } else if (nargs == 1) {
-	    debug(printf("typestring is NULL\n"));
-	    matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
-				  &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-				  query,/*typestring*/NULL,&iit,filename);
-	    coordstart = (Chrpos_T) univ_coordstart;
-	    coordend = (Chrpos_T) univ_coordend;
-
-	  } else {
-	    fprintf(stderr,"Can't parse line %s.  Ignoring.\n",nocomment);
-	    skipp = true;
-	  }
+  } else if (argc == 2) {
+    debug(printf("Running under argc 2\n"));
+    /* Expecting input from stdin */
+      
+    if ((iit = IIT_read(filename,NULL,true,/*divread*/READ_ALL,/*divstring*/NULL,/*add_iit_p*/true,
+			/*labels_read_p*/true)) == NULL) {
+      if (Access_file_exists_p(filename) == false) {
+	fprintf(stderr,"Cannot read file %s\n",filename);
+      } else {
+	fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename);
+      }
+      exit(9);
+    } else if (fieldstring != NULL) {
+      if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) {
+	fprintf(stderr,"No field %s defined in iit file.\n",fieldstring);
+	exit(9);
+      }
+    }
 	
-	  total = 0;
-	  if (skipp == false) {
-	    fprintf(stdout,"# Query: %s\n",Buffer);
-	    ndivs = IIT_ndivs(iit);
-	    if (nflanking > 0) {
-	      for (i = nleftflanks-1; i >= 0; i--) {
-		debug(printf("\nleft index = %d\n",leftflanks[i]));
-		print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,leftflanks[i],iit,ndivs,fieldint);
-	      }
-	      printf("====================\n");
-	      FREE(leftflanks);
-	    }
-
-	    lastcoord = coordstart;
-	    for (i = 0; i < nmatches; i++) {
-	      debug(printf("\nindex = %d\n",matches[i]));
-	      total = print_interval(&lastcoord,total,divstring,coordstart,coordend,matches[i],iit,ndivs,fieldint);
-	    }
-
-	    if (nflanking > 0) {
-	      printf("====================\n");
-	      for (i = 0; i < nrightflanks; i++) {
-		debug(printf("\nright index = %d\n",rightflanks[i]));
-		print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,rightflanks[i],iit,ndivs,fieldint);
-	      }
-	      FREE(rightflanks);
-	    }
-
-	    if (zeroesp == true) {
-	      while (lastcoord <= coordend) {
-		printf("%s\t%u\t%d\n",divstring,lastcoord,0);
-		lastcoord++;
-	      }
-	    }
-	  }
-
-	  FREE(matches);
-	  printf("%ld\n",total);
-	  fprintf(stdout,"# End\n");
-	  fflush(stdout);
-	}
+    while (fgets(Buffer,BUFLEN,stdin) != NULL) {
+      if ((ptr = rindex(Buffer,'\n')) != NULL) {
+	*ptr = '\0';
+      }
+      strcpy(nocomment,Buffer);
+      if ((ptr = rindex(nocomment,'#')) != NULL) {
+	*ptr = '\0';
       }
 
-    } else {
-      if (argc == 3) {
-	/* Try as 0:<iitfile> 1:<query> */
+      skipp = false;
+
+      if ((nargs = sscanf(nocomment,"%s %s",query,typestring)) == 2) {
+	debug(printf("typestring is %s\n",typestring));
 	matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
 			      &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-			      argv[2],/*typestring*/NULL,&iit,filename);
+			      query,typestring,&iit,filename);
 	coordstart = (Chrpos_T) univ_coordstart;
 	coordend = (Chrpos_T) univ_coordend;
 
-      } else if (argc == 4) {
-	/* Try as 0:<iitfile> 1:<query> 2:<type> */
-	debug(printf("Running under argc 4\n"));
+      } else if (nargs == 1) {
+	debug(printf("typestring is NULL\n"));
 	matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
 			      &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-			      argv[2],argv[3],&iit,filename);
+			      query,/*typestring*/NULL,&iit,filename);
 	coordstart = (Chrpos_T) univ_coordstart;
 	coordend = (Chrpos_T) univ_coordend;
 
       } else {
-	types = (int *) CALLOC(argc-3,sizeof(int));
-	for (c = 3, ntypes = 0; c < argc; c++) {
-	  if ((typeint = IIT_typeint(iit,argv[c])) < 0) {
-	    fprintf(stderr,"No such type as %s.  Ignoring the type.\n",argv[c]);
-	  } else {
-	    types[ntypes++] = typeint;
-	    lasttypestring = argv[c];
-	  }
-	}
-	if (ntypes == 0) {
-	  matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
-				&leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-				argv[2],/*typestring*/NULL,&iit,filename);
-	  coordstart = (Chrpos_T) univ_coordstart;
-	  coordend = (Chrpos_T) univ_coordend;
-
-	} else if (ntypes == 1) {
-	  matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
-				&leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-				argv[2],lasttypestring,&iit,filename);
-	  coordstart = (Chrpos_T) univ_coordstart;
-	  coordend = (Chrpos_T) univ_coordend;
-
-	} else {
-	  matches = get_matches_multiple_typed(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
-					       &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
-					       argv[2],types,ntypes,&iit,filename);
-	  coordstart = (Chrpos_T) univ_coordstart;
-	  coordend = (Chrpos_T) univ_coordend;
-	}
+	fprintf(stderr,"Can't parse line %s.  Ignoring.\n",nocomment);
+	skipp = true;
       }
-
-#if 0
-      if (centerp == true) {
-	print_spaces(centerlength);
-	printf("*");
-	print_spaces(centerlength-1);
-	printf("\n");
-      }
-#endif
-
-      if (statsp == true) {
-	total = 0;
-	n = 0;
-	for (i = 0; i < nmatches; i++) {
-	  debug(printf("index = %d\n",matches[i]));
-	  compute_totals_tally(&total,&n,coordstart,coordend,matches[i],iit);
-	}
-	n = coordend - coordstart + 1;
-	printf("counts:%ld width:%u mean:%.3f\n",total,n,(double)total/(double) n);
-
-#if 0
-      } else if (geomeanp == true) {
-	logtotal = 0.0;
-	total = 0;
-	n = 0;
-	for (i = 0; i < nmatches; i++) {
-	  debug(printf("index = %d\n",matches[i]));
-	  logtotal = compute_logtotal_tally(&total,&n,coordstart,coordend,matches[i],iit);
-	}
-	printf("geomean:%f totalcounts:%ld posrange:%d\n",
-	       exp(logtotal/(double) (coordend - coordstart + 1)) - 1.0,total,n);
-#endif
-
-      } else {
+	
+      total = 0;
+      if (skipp == false) {
+	fprintf(stdout,"# Query: %s\n",Buffer);
 	ndivs = IIT_ndivs(iit);
 	if (nflanking > 0) {
 	  for (i = nleftflanks-1; i >= 0; i--) {
@@ -1136,9 +1174,9 @@ main (int argc, char *argv[]) {
 	lastcoord = coordstart;
 	for (i = 0; i < nmatches; i++) {
 	  debug(printf("\nindex = %d\n",matches[i]));
-	  print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,matches[i],iit,ndivs,fieldint);
+	  total = print_interval(&lastcoord,total,divstring,coordstart,coordend,matches[i],iit,ndivs,fieldint);
 	}
-      
+
 	if (nflanking > 0) {
 	  printf("====================\n");
 	  for (i = 0; i < nrightflanks; i++) {
@@ -1147,22 +1185,150 @@ main (int argc, char *argv[]) {
 	  }
 	  FREE(rightflanks);
 	}
-      
-	FREE(matches);
+
+	if (zeroesp == true) {
+	  while (lastcoord <= coordend) {
+	    printf("%s\t%u\t%d\n",divstring,lastcoord,0);
+	    lastcoord++;
+	  }
+	}
       }
 
+      if (divstring != NULL) {
+	FREE(divstring);
+      }
       FREE(matches);
-      /* printf("%ld\n",total); */
+      printf("%ld\n",total);
       fprintf(stdout,"# End\n");
       fflush(stdout);
     }
 
+    IIT_free(&iit);
+    return 0;
+
+  } else {
+    /* Get coordinates/type from command line */
+    if (argc == 3) {
+      /* Try as 0:<iitfile> 1:<query> */
+      matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
+			    &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
+			    argv[2],/*typestring*/NULL,&iit,filename);
+      coordstart = (Chrpos_T) univ_coordstart;
+      coordend = (Chrpos_T) univ_coordend;
+    
+    } else if (argc == 4) {
+      /* Try as 0:<iitfile> 1:<query> 2:<type> */
+      debug(printf("Running under argc 4\n"));
+      matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
+			    &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
+			    argv[2],argv[3],&iit,filename);
+      coordstart = (Chrpos_T) univ_coordstart;
+      coordend = (Chrpos_T) univ_coordend;
+
+    } else {
+      types = (int *) CALLOC(argc-3,sizeof(int));
+      for (c = 3, ntypes = 0; c < argc; c++) {
+	if ((typeint = IIT_typeint(iit,argv[c])) < 0) {
+	  fprintf(stderr,"No such type as %s.  Ignoring the type.\n",argv[c]);
+	} else {
+	  types[ntypes++] = typeint;
+	  lasttypestring = argv[c];
+	}
+      }
+      if (ntypes == 0) {
+	matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
+			      &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
+			      argv[2],/*typestring*/NULL,&iit,filename);
+	coordstart = (Chrpos_T) univ_coordstart;
+	coordend = (Chrpos_T) univ_coordend;
+
+      } else if (ntypes == 1) {
+	matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
+			      &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
+			      argv[2],lasttypestring,&iit,filename);
+	coordstart = (Chrpos_T) univ_coordstart;
+	coordend = (Chrpos_T) univ_coordend;
+
+      } else {
+	matches = get_matches_multiple_typed(&nmatches,&divstring,&univ_coordstart,&univ_coordend,
+					     &leftflanks,&nleftflanks,&rightflanks,&nrightflanks,
+					     argv[2],types,ntypes,&iit,filename);
+	coordstart = (Chrpos_T) univ_coordstart;
+	coordend = (Chrpos_T) univ_coordend;
+      }
+    }
+
+    if (value_matches_p == true) {
+      matches = match_intersection(&nmatches,/*matches1*/matches,/*nmatches1*/nmatches,
+				   /*matches2*/value_matches,/*nmatches2*/n_value_matches);
+      FREE(value_matches);
+    }
+
+#if 0
+    if (centerp == true) {
+      print_spaces(centerlength);
+      printf("*");
+      print_spaces(centerlength-1);
+      printf("\n");
+    }
+#endif
+
+    if (statsp == true) {
+      total = 0;
+      n = 0;
+      for (i = 0; i < nmatches; i++) {
+	debug(printf("index = %d\n",matches[i]));
+	compute_totals_tally(&total,&n,coordstart,coordend,matches[i],iit);
+      }
+      n = coordend - coordstart + 1;
+      printf("counts:%ld width:%u mean:%.3f\n",total,n,(double)total/(double) n);
+
+#if 0
+    } else if (geomeanp == true) {
+      logtotal = 0.0;
+      total = 0;
+      n = 0;
+      for (i = 0; i < nmatches; i++) {
+	debug(printf("index = %d\n",matches[i]));
+	logtotal = compute_logtotal_tally(&total,&n,coordstart,coordend,matches[i],iit);
+      }
+      printf("geomean:%f totalcounts:%ld posrange:%d\n",
+	     exp(logtotal/(double) (coordend - coordstart + 1)) - 1.0,total,n);
+#endif
+
+    } else {
+      ndivs = IIT_ndivs(iit);
+      if (nflanking > 0) {
+	for (i = nleftflanks-1; i >= 0; i--) {
+	  debug(printf("\nleft index = %d\n",leftflanks[i]));
+	  print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,leftflanks[i],iit,ndivs,fieldint);
+	}
+	printf("====================\n");
+	FREE(leftflanks);
+      }
+
+      lastcoord = coordstart;
+      for (i = 0; i < nmatches; i++) {
+	debug(printf("\nindex = %d\n",matches[i]));
+	print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,matches[i],iit,ndivs,fieldint);
+      }
+      
+      if (nflanking > 0) {
+	printf("====================\n");
+	for (i = 0; i < nrightflanks; i++) {
+	  debug(printf("\nright index = %d\n",rightflanks[i]));
+	  print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,rightflanks[i],iit,ndivs,fieldint);
+	}
+	FREE(rightflanks);
+      }
+    }
+
     if (divstring != NULL) {
       FREE(divstring);
     }
-
+    FREE(matches);
     IIT_free(&iit);
+    return 0;
   }
-
-  return 0;
 }
+
diff --git a/src/iit_store.c b/src/iit_store.c
index 02c6710..1859818 100644
--- a/src/iit_store.c
+++ b/src/iit_store.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: iit_store.c 101491 2013-07-15 17:07:13Z twu $";
+static char rcsid[] = "$Id: iit_store.c 118464 2013-11-27 20:12:59Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -14,7 +14,7 @@ static char rcsid[] = "$Id: iit_store.c 101491 2013-07-15 17:07:13Z twu $";
 #include <string.h>		/* For strlen */
 #include <strings.h>		/* For rindex */
 #include <ctype.h>
-#include <math.h>		/* For qsort */
+#include <math.h>		/* For qsort and NAN */
 #include "bool.h"
 #include "types.h"
 #include "assert.h"
@@ -22,6 +22,7 @@ static char rcsid[] = "$Id: iit_store.c 101491 2013-07-15 17:07:13Z twu $";
 #include "fopen.h"
 
 #include "list.h"
+#include "doublelist.h"
 #include "univinterval.h"
 #include "interval.h"
 #include "table.h"
@@ -31,6 +32,15 @@ static char rcsid[] = "$Id: iit_store.c 101491 2013-07-15 17:07:13Z twu $";
 #include "iit-write.h"
 #include "getopt.h"
 
+#ifndef NAN
+#define NAN nan("")
+#endif
+
+#ifndef NAN
+static double NAN = nan("")
+#endif
+
+
 #ifdef DEBUG
 #define debug(x) x
 #else
@@ -118,7 +128,7 @@ Description of input format:\n\
 \n\
 The FASTA format for input files should be\n\
 \n\
-    >label interval optional_type\n\
+    >label interval [type] [/value=value]\n\
     optional_annotation (which may be zero, one, or multiple lines)\n\
 \n\
 where intervals have one of the following forms:\n\
@@ -126,6 +136,8 @@ where intervals have one of the following forms:\n\
    div:start\n\
    start..end\n\
    start\n\
+and a given type, numeric value, or both is optional.  A numeric value\n\
+allows intervals to be searched by a range of values using iit_get.\n\
 \n\
 Intervals may have directions.  To indicate a forward direction,\n\
 the start coordinate should be less than the end coordinate.\n\
@@ -258,8 +270,10 @@ isrange (Univcoord_T *start, Univcoord_T *end, char *string) {
 /* Other variants: >A 1..10 red, or >A 1..10 */
 static char *
 scan_header_div (int *labellength, bool *seenp, List_T *divlist, List_T *typelist, Tableint_T div_seenp, Tableint_T typetable, 
-		 char **label, Univcoord_T *start, Univcoord_T *end, int *type, char **restofheader, char *header) {
+		 bool *valuep, double *value, char **label, Univcoord_T *start, Univcoord_T *end, int *type,
+		 char **restofheader, char *header) {
   char *divstring = NULL, *coords, *copy, Buffer[1024], query[1024], tag[1024], *typestring, *p;
+  char *valueptr;
 
   *seenp = false;
   if (sscanf(header,">%s %s\n",Buffer,query) < 2) {
@@ -318,9 +332,37 @@ scan_header_div (int *labellength, bool *seenp, List_T *divlist, List_T *typelis
     exit(9);
   }
 
+  if ((valueptr = strstr(header,"/value=")) == NULL) {
+    *value = NAN;
+  } else {
+    /* Note: Not checking for any errors */
+    *valuep = true;
+    valueptr += strlen("/value=");
+    *value = atof(valueptr);
+  }
+
   if (sscanf(header,">%s %s %s",Buffer,query,tag) < 3) {
     *type = 0;
     *restofheader = (char *) NULL;
+
+  } else if (!strncmp(tag,"/value=",strlen("/value="))) {
+    *type = 0;
+
+    /* Get rest of header */
+    p = header;
+    while (!isspace(*p)) p++;	/* accession */
+    while (isspace(*p)) p++;
+
+    while (!isspace(*p)) p++;	/* coords */
+    while (isspace(*p)) p++;
+
+    if (*p == '\0') {
+      *restofheader = (char *) NULL;
+    } else {
+      *restofheader = (char *) CALLOC(strlen(p)+1,sizeof(char));
+      strcpy(*restofheader,p);
+    }
+
   } else {
     if ((*type = Tableint_get(typetable,(void *) tag)) == 0) {
       /* Store types as 1-based */
@@ -359,8 +401,9 @@ scan_header_div (int *labellength, bool *seenp, List_T *divlist, List_T *typelis
 /* Example: >A 1 10 X red.  Here, A is a label, 1 and 10 are start and end, X is a div, and red is a type. */
 static char *
 scan_header_spaces (int *labellength, bool *seenp, List_T *divlist, List_T *typelist, Tableint_T div_seenp, Tableint_T typetable, 
-		    char **label, Univcoord_T *start, Univcoord_T *end, int *type, char *header) {
+		    bool *valuep, double *value, char **label, Univcoord_T *start, Univcoord_T *end, int *type, char *header) {
   char *divstring, *copy, Buffer[1024], *typestring, *p, *ptr, *divstart;
+  char *valueptr;
   int divlength;
   int nscanned;
 
@@ -376,6 +419,15 @@ scan_header_spaces (int *labellength, bool *seenp, List_T *divlist, List_T *type
     fprintf(stderr,"Error parsing %s.  Expecting a FASTA type header with a label, two coordinates, and optional tag.\n",header);
     exit(9);
   } else {
+    if ((valueptr = strstr(header,"/value=")) == NULL) {
+      *value = NAN;
+    } else {
+      /* Note: Not checking for any errors */
+      *valuep = true;
+      valueptr += strlen("/value=");
+      *value = atof(valueptr);
+    }
+
     *labellength = strlen(Buffer);
     *label = (char *) CALLOC(*labellength+1,sizeof(char));
     strcpy(*label,Buffer);
@@ -413,6 +465,8 @@ scan_header_spaces (int *labellength, bool *seenp, List_T *divlist, List_T *type
       while (*p != '\0' && isspace((int) *p)) { p++; } /* Fourth space */
       if (*p == '\0') {
 	*type = 0;
+      } else if (!strncmp(p,"/value=",strlen("/value="))) {
+	*type = 0;
       } else {
 	if ((ptr = rindex(p,'\n')) != NULL) {
 	  while (isspace((int) *ptr)) { ptr--; } /* Erase empty space */
@@ -462,10 +516,11 @@ parse_fieldlist (char *firstchar, FILE *fp) {
 
 
 static void
-parse_fasta (Univcoord_T *max_coordinate, Univcoord_T *label_totallength, Univcoord_T *annot_totallength,
-	     List_T *divlist, List_T *typelist, Table_T intervaltable, Table_T labeltable, Table_T annottable,
+parse_fasta (bool *valuep, Univcoord_T *max_coordinate, Univcoord_T *label_totallength, Univcoord_T *annot_totallength,
+	     List_T *divlist, List_T *typelist, Table_T intervaltable, Table_T valuetable, Table_T labeltable, Table_T annottable,
 	     FILE *fp, Tableint_T div_seenp, Tableint_T typetable, char firstchar) {
   char Buffer[LINELENGTH], *divstring, *label, *restofheader = NULL, *tempstring;
+  double value;
   Univcoord_T start, end;
   List_T lines, d;
   int labellength, content_size, type, nentries;
@@ -485,16 +540,21 @@ parse_fasta (Univcoord_T *max_coordinate, Univcoord_T *label_totallength, Univco
     fgets(&(Buffer[1]),LINELENGTH-1,fp);
   }
   if (old_format_p == true) {
-    divstring = scan_header_spaces(&labellength,&seenp,&(*divlist),&(*typelist),div_seenp,typetable,&label,&start,&end,&type,Buffer);
+    divstring = scan_header_spaces(&labellength,&seenp,&(*divlist),&(*typelist),
+				   div_seenp,typetable,&(*valuep),&value,&label,&start,&end,&type,Buffer);
     restofheader = (char *) NULL;
   } else {
-    divstring = scan_header_div(&labellength,&seenp,&(*divlist),&(*typelist),div_seenp,typetable,&label,&start,&end,&type,
-				&restofheader,Buffer);
+    divstring = scan_header_div(&labellength,&seenp,&(*divlist),&(*typelist),
+				div_seenp,typetable,&(*valuep),&value,&label,&start,&end,&type,&restofheader,Buffer);
   }
   *max_coordinate = start;
   if (end > *max_coordinate) {
     *max_coordinate = end;
   }
+  
+  Table_put(valuetable,(void *) divstring,
+	    Doublelist_push(Table_get(valuetable,(void *) divstring),value));
+
   *label_totallength = labellength;
   Table_put(labeltable,(void *) divstring,
 	    List_push(Table_get(labeltable,(void *) divstring),label));
@@ -537,11 +597,12 @@ parse_fasta (Univcoord_T *max_coordinate, Univcoord_T *label_totallength, Univco
 	FREE(divstring);
       }
       if (old_format_p == true) {
-	divstring = scan_header_spaces(&labellength,&seenp,&(*divlist),&(*typelist),div_seenp,typetable,&label,&start,&end,&type,Buffer);
+	divstring = scan_header_spaces(&labellength,&seenp,&(*divlist),&(*typelist),div_seenp,typetable,
+				       &(*valuep),&value,&label,&start,&end,&type,Buffer);
 	restofheader = (char *) NULL;
       } else {
-	divstring = scan_header_div(&labellength,&seenp,&(*divlist),&(*typelist),div_seenp,typetable,&label,&start,&end,&type,
-				    &restofheader,Buffer);
+	divstring = scan_header_div(&labellength,&seenp,&(*divlist),&(*typelist),div_seenp,typetable,
+				    &(*valuep),&value,&label,&start,&end,&type,&restofheader,Buffer);
       }
       if (start > *max_coordinate) {
 	*max_coordinate = start;
@@ -549,6 +610,10 @@ parse_fasta (Univcoord_T *max_coordinate, Univcoord_T *label_totallength, Univco
       if (end > *max_coordinate) {
 	*max_coordinate = end;
       }
+
+      Table_put(valuetable,(void *) divstring,
+		Doublelist_push(Table_get(valuetable,(void *) divstring),value));
+
       *label_totallength += labellength;
       Table_put(labeltable,(void *) divstring,
 		List_push(Table_get(labeltable,(void *) divstring),label));
@@ -615,6 +680,8 @@ parse_fasta (Univcoord_T *max_coordinate, Univcoord_T *label_totallength, Univco
     divstring = (char *) List_head(d);
     Table_put(intervaltable,(void *) divstring,
 	      List_reverse((List_T) Table_get(intervaltable,(void *) divstring)));
+    Table_put(valuetable,(void *) divstring,
+	      Doublelist_reverse((Doublelist_T) Table_get(valuetable,(void *) divstring)));
     Table_put(labeltable,(void *) divstring,
 	      List_reverse((List_T) Table_get(labeltable,(void *) divstring)));
     Table_put(annottable,(void *) divstring,
@@ -818,15 +885,16 @@ main (int argc, char *argv[]) {
   char *inputfile = NULL, *iitfile, *tempstring, *divstring, *typestring, *p;
   char firstchar;
   List_T d, l, templist = NULL, divlist = NULL, typelist = NULL, fieldlist = NULL;
+  Doublelist_T valuelist;
   List_T newlist;
   FILE *fp;
   Univinterval_T univinterval;
   Interval_T interval;
   Tableint_T div_seenp, typetable;
-  Table_T intervaltable, labeltable, annottable;
+  Table_T intervaltable, labeltable, valuetable, annottable;
   Chrom_T *chroms = NULL;
   int n_proper_divs = 0, i;
-  bool coord_values_8p, label_pointers_8p, annot_pointers_8p;
+  bool coord_values_8p, label_pointers_8p, annot_pointers_8p, valuep = false;
   Univcoord_T order;
   Univcoord_T max_coordinate, label_totallength, annot_totallength;
 
@@ -869,9 +937,9 @@ main (int argc, char *argv[]) {
   if (outputfile == NULL) {
     fprintf(stderr,"Need to specify an output file with the -o flag\n");
     exit(9);
-  } else if (iit_version > IIT_LATEST_VERSION) {
-    fprintf(stderr,"version %d requested, but this program can write only up to version %d\n",
-	    iit_version,IIT_LATEST_VERSION);
+  } else if (iit_version > IIT_LATEST_VERSION_NOVALUES && iit_version > IIT_LATEST_VERSION_VALUES) {
+    fprintf(stderr,"version %d requested, but this program can write only up to version %d or %d\n",
+	    iit_version,IIT_LATEST_VERSION_NOVALUES,IIT_LATEST_VERSION_VALUES);
     exit(9);
   }
 
@@ -889,6 +957,7 @@ main (int argc, char *argv[]) {
   div_seenp = Tableint_new(100,Table_string_compare,Table_string_hash);
   typetable = Tableint_new(100,Table_string_compare,Table_string_hash);
   intervaltable = Table_new(100,Table_string_compare,Table_string_hash);
+  valuetable = Table_new(100,Table_string_compare,Table_string_hash);
   labeltable = Table_new(100,Table_string_compare,Table_string_hash);
   annottable = Table_new(100,Table_string_compare,Table_string_hash);
   
@@ -906,8 +975,9 @@ main (int argc, char *argv[]) {
     parse_gff3(&divlist,intervaltable,labeltable,annottable,fp,div_seenp);
   } else {
     fieldlist = parse_fieldlist(&firstchar,fp);
-    parse_fasta(&max_coordinate,&label_totallength,&annot_totallength,
-		&divlist,&typelist,intervaltable,labeltable,annottable,fp,div_seenp,typetable,firstchar);
+    parse_fasta(&valuep,&max_coordinate,&label_totallength,&annot_totallength,
+		&divlist,&typelist,intervaltable,valuetable,labeltable,annottable,
+		fp,div_seenp,typetable,firstchar);
   }
 
   if (inputfile != NULL) {
@@ -935,7 +1005,11 @@ main (int argc, char *argv[]) {
     if (annot_totallength > 4294967295U) {
       annot_pointers_8p = true;
     }
-    iit_version = IIT_LATEST_VERSION;
+    if (valuep == true) {
+      iit_version = IIT_LATEST_VERSION_VALUES;
+    } else {
+      iit_version = IIT_LATEST_VERSION_NOVALUES;
+    }
 
   } else if (iit_version == 4) {
     if (label_totallength > 4294967295U || annot_totallength > 4294967295U) {
@@ -952,7 +1026,11 @@ main (int argc, char *argv[]) {
   }
 #else
   if (iit_version == 0) {
-    iit_version = IIT_LATEST_VERSION;
+    if (valuep == true) {
+      iit_version = IIT_LATEST_VERSION_VALUES;
+    } else {
+      iit_version = IIT_LATEST_VERSION_NOVALUES;
+    }
   }
 #endif
 
@@ -1019,6 +1097,7 @@ main (int argc, char *argv[]) {
   }
 
   List_free(&divlist);
+
   switch (divsort) {
   case NO_SORT: qsort(chroms,n_proper_divs,sizeof(Chrom_T),Chrom_compare_order); break;
   case ALPHA_SORT: qsort(chroms,n_proper_divs,sizeof(Chrom_T),Chrom_compare_alpha); break;
@@ -1050,13 +1129,15 @@ main (int argc, char *argv[]) {
   if (iit_version == 1) {
     IIT_write_univ(iitfile,divlist,typelist,intervaltable,labeltable,annottable,
 		   coord_values_8p,label_pointers_8p,annot_pointers_8p);
+  } else if (valuep == false) {
+    IIT_write(iitfile,divlist,typelist,fieldlist,intervaltable,/*valuetable*/NULL,labeltable,annottable,
+	      divsort,iit_version,label_pointers_8p,annot_pointers_8p);
   } else {
-    IIT_write(iitfile,divlist,typelist,fieldlist,intervaltable,labeltable,annottable,
+    IIT_write(iitfile,divlist,typelist,fieldlist,intervaltable,valuetable,labeltable,annottable,
 	      divsort,iit_version,label_pointers_8p,annot_pointers_8p);
   }
   FREE(iitfile);
 
-
   for (d = divlist; d != NULL; d = List_next(d)) {
     divstring = (char *) List_head(d);
 
@@ -1067,6 +1148,9 @@ main (int argc, char *argv[]) {
     }
     List_free(&templist);
       
+    valuelist = (Doublelist_T) Table_get(valuetable,(void *) divstring);
+    Doublelist_free(&valuelist);
+
     templist = (List_T) Table_get(labeltable,(void *) divstring);
     for (l = templist; l != NULL; l = List_next(l)) {
       tempstring = (char *) List_head(l);
@@ -1092,6 +1176,7 @@ main (int argc, char *argv[]) {
 
 
   Table_free(&intervaltable);
+  Table_free(&valuetable);
   Table_free(&labeltable);
   Table_free(&annottable);
 
diff --git a/src/iitdef.h b/src/iitdef.h
index f48d40c..1a2bc67 100644
--- a/src/iitdef.h
+++ b/src/iitdef.h
@@ -1,4 +1,4 @@
-/* $Id: iitdef.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: iitdef.h 138717 2014-06-11 17:06:45Z twu $ */
 #ifndef IITDEF_INCLUDED
 #define IITDEF_INCLUDED
 #ifdef HAVE_CONFIG_H
@@ -17,7 +17,8 @@
 #include "types.h"
 
 
-#define IIT_LATEST_VERSION 5
+#define IIT_LATEST_VERSION_NOVALUES 5
+#define IIT_LATEST_VERSION_VALUES 6
 
 
 /* version 1 starts with nintervals (now handled separately as a Univ_IIT_T) */
@@ -30,8 +31,11 @@
    stores rest of header line with annotation, so NULL => print '\n',
    otherwise print annotation. */
 
+/* version 6 is like version 5, except it sorts intervals by a value
+   field.  The intent is to have both versions 5 and 6 in current use. */
 
-typedef enum {NO_SORT, ALPHA_SORT, NUMERIC_ALPHA_SORT, CHROM_SORT} Sorttype_T;
+
+typedef enum {NO_SORT, ALPHA_SORT, NUMERIC_ALPHA_SORT, CHROM_SORT, FILENAME_SORT} Sorttype_T;
 
 typedef struct FNode_T *FNode_T;
 struct FNode_T {
@@ -42,7 +46,9 @@ struct FNode_T {
   int rightindex;
 };
 
+
 #define T IIT_T
+typedef struct T *T;
 struct T {
   char *name;			/* Name of IIT (optional) */
   int version;			
@@ -84,6 +90,14 @@ struct T {
   UINT4 *fieldpointers;
   char *fieldstrings;
 
+  off_t valueorder_offset;
+  size_t valueorder_length; /* mmap length (mmap uses size_t, not off_t) */
+  char *valueorder_mmap;
+
+  off_t value_offset;
+  size_t value_length;		/* mmap length (mmap uses size_t, not off_t) */
+  char *value_mmap;
+
   off_t labelorder_offset;
   size_t labelorder_length; /* mmap length (mmap uses size_t, not off_t) */
   char *labelorder_mmap;
@@ -111,6 +125,10 @@ struct T {
 #endif
   char *labels;
 
+  bool valuep;
+  int *valueorder;		/* For version 6 IITs */
+  double *values;		/* For version 6 IITs */
+
   UINT4 *annotpointers;
 #ifdef HAVE_64_BIT
   UINT8 *annotpointers8;
diff --git a/src/inbuffer.c b/src/inbuffer.c
index a909486..f3a09e5 100644
--- a/src/inbuffer.c
+++ b/src/inbuffer.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: inbuffer.c 90425 2013-03-27 16:27:35Z twu $";
+static char rcsid[] = "$Id: inbuffer.c 101822 2013-07-17 18:43:45Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -246,6 +246,7 @@ fill_buffer (T this) {
   unsigned int nread = 0;
   unsigned int nchars = 0U;
   Shortread_T queryseq1, queryseq2;
+  bool skipp;
 
   if (this->fastq_format_p == true) {
     if (this->gzipped != NULL) {
@@ -256,13 +257,16 @@ fill_buffer (T this) {
 	     nchars < this->maxchars &&
 #endif
 	     (queryseq1 = Shortread_read_fastq_shortreads_gzip(&this->nextchar,&queryseq2,&this->gzipped,&this->gzipped2,
-							       &this->files,&this->nfiles,
+							       &this->files,&this->nfiles,skipp = (this->inputid % this->part_interval != this->part_modulus),
 							       this->barcode_length,this->invert_first_p,this->invert_second_p)) != NULL) {
-	if (this->inputid % this->part_interval != this->part_modulus) {
+	if (skipp) {
+#if 0
+	  /* Shortread procedures won't allocate in this situation */
 	  Shortread_free(&queryseq1);
 	  if (queryseq2 != NULL) {
 	    Shortread_free(&queryseq2);
 	  }
+#endif
 
 	} else if (this->filter_if_both_p == true &&
 		   Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
@@ -297,13 +301,16 @@ fill_buffer (T this) {
 	     nchars < this->maxchars &&
 #endif
 	     (queryseq1 = Shortread_read_fastq_shortreads_bzip2(&this->nextchar,&queryseq2,&this->bzipped,&this->bzipped2,
-								&this->files,&this->nfiles,
+								&this->files,&this->nfiles,skipp = (this->inputid % this->part_interval != this->part_modulus),
 								this->barcode_length,this->invert_first_p,this->invert_second_p)) != NULL) {
-	if (this->inputid % this->part_interval != this->part_modulus) {
+	if (skipp) {
+#if 0
+	  /* Shortread procedures won't allocate in this situation */
 	  Shortread_free(&queryseq1);
 	  if (queryseq2 != NULL) {
 	    Shortread_free(&queryseq2);
 	  }
+#endif
 
 	} else if (this->filter_if_both_p == true &&
 		   Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
@@ -337,13 +344,16 @@ fill_buffer (T this) {
 	     nchars < this->maxchars &&
 #endif
 	     (queryseq1 = Shortread_read_fastq_shortreads(&this->nextchar,&queryseq2,&this->input,&this->input2,
-							  &this->files,&this->nfiles,
+							  &this->files,&this->nfiles,skipp = (this->inputid % this->part_interval != this->part_modulus),
 							  this->barcode_length,this->invert_first_p,this->invert_second_p)) != NULL) {
-	if (this->inputid % this->part_interval != this->part_modulus) {
+	if (skipp) {
+#if 0
+	  /* Shortread procedures won't allocate in this situation */
 	  Shortread_free(&queryseq1);
 	  if (queryseq2 != NULL) {
 	    Shortread_free(&queryseq2);
 	  }
+#endif
 
 	} else if (this->filter_if_both_p == true &&
 		   Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
@@ -378,12 +388,16 @@ fill_buffer (T this) {
 	   nchars < this->maxchars &&
 #endif
 	   (queryseq1 = Goby_read(&queryseq2,this->gobyreader,this->barcode_length,
-				  this->invert_first_p,this->invert_second_p)) != NULL) {
-      if (this->inputid % this->part_interval != this->part_modulus) {
+				  this->invert_first_p,this->invert_second_p,
+				  skipp = (this->inputid % this->part_interval != this->part_modulus))) != NULL) {
+      if (skipp) {
+#if 0
+	/* Shortread procedures won't allocate in this situation */
 	Shortread_free(&queryseq1);
 	if (queryseq2 != NULL) {
 	  Shortread_free(&queryseq2);
 	}
+#endif
 
       } else if (this->filter_if_both_p == true &&
 		 Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
@@ -419,13 +433,16 @@ fill_buffer (T this) {
 	     nchars < this->maxchars &&
 #endif
 	     (queryseq1 = Shortread_read_fasta_shortreads_gzip(&this->nextchar,&queryseq2,&this->gzipped,&this->gzipped2,
-							       &this->files,&this->nfiles,
+							       &this->files,&this->nfiles,skipp = (this->inputid % this->part_interval != this->part_modulus),
 							       this->barcode_length,this->invert_first_p,this->invert_second_p)) != NULL) {
-	if (this->inputid % this->part_interval != this->part_modulus) {
+	if (skipp) {
+#if 0
+	  /* Shortread procedures won't allocate in this situation */
 	  Shortread_free(&queryseq1);
 	  if (queryseq2 != NULL) {
 	    Shortread_free(&queryseq2);
 	  }
+#endif
 
 	} else if (this->filter_if_both_p == true &&
 		   Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
@@ -460,13 +477,16 @@ fill_buffer (T this) {
 	     nchars < this->maxchars &&
 #endif
 	     (queryseq1 = Shortread_read_fasta_shortreads_bzip2(&this->nextchar,&queryseq2,&this->bzipped,&this->bzipped2,
-								&this->files,&this->nfiles,
+								&this->files,&this->nfiles,skipp = (this->inputid % this->part_interval != this->part_modulus),
 								this->barcode_length,this->invert_first_p,this->invert_second_p)) != NULL) {
-	if (this->inputid % this->part_interval != this->part_modulus) {
+	if (skipp) {
+#if 0
+	  /* Shortread procedures won't allocate in this situation */
 	  Shortread_free(&queryseq1);
 	  if (queryseq2 != NULL) {
 	    Shortread_free(&queryseq2);
 	  }
+#endif
 
 	} else if (this->filter_if_both_p == true &&
 		   Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
@@ -500,13 +520,16 @@ fill_buffer (T this) {
 	     nchars < this->maxchars &&
 #endif
 	     (queryseq1 = Shortread_read_fasta_shortreads(&this->nextchar,&queryseq2,&this->input,&this->input2,
-							  &this->files,&this->nfiles,
+							  &this->files,&this->nfiles,skipp = (this->inputid % this->part_interval != this->part_modulus),
 							  this->barcode_length,this->invert_first_p,this->invert_second_p)) != NULL) {
-	if (this->inputid % this->part_interval != this->part_modulus) {
+	if (skipp) {
+#if 0
+	  /* Shortread procedures won't allocate in this situation */
 	  Shortread_free(&queryseq1);
 	  if (queryseq2 != NULL) {
 	    Shortread_free(&queryseq2);
 	  }
+#endif
 
 	} else if (this->filter_if_both_p == true &&
 		   Shortread_filterp(queryseq1) == true && (queryseq2 == NULL || Shortread_filterp(queryseq2) == true)) {
diff --git a/src/indel.c b/src/indel.c
new file mode 100644
index 0000000..04558be
--- /dev/null
+++ b/src/indel.c
@@ -0,0 +1,340 @@
+static char rcsid[] = "$Id: indel.c 133760 2014-04-20 05:16:56Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "indel.h"
+
+#include "assert.h"
+#include "mem.h"
+#include "genome128_hr.h"
+#include "stage3hr.h"
+
+
+/* Indels */ 
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+
+static int min_indel_end_matches;
+static int indel_penalty_middle;
+
+
+void
+Indel_setup (int min_indel_end_matches_in, int indel_penalty_middle_in) {
+  min_indel_end_matches = min_indel_end_matches_in;
+  indel_penalty_middle = indel_penalty_middle_in;
+  return;
+}
+
+
+/* indels is positive here */
+List_T
+Indel_solve_middle_insertion (bool *foundp, int *found_score, int *nhits, List_T hits,
+			      Univcoord_T left, Chrnum_T chrnum, Univcoord_T chroffset,
+			      Univcoord_T chrhigh, Chrpos_T chrlength,
+			      int indels, Compress_T query_compress,
+			      int querylength, int max_mismatches_allowed,
+			      bool plusp, int genestrand, bool first_read_p, bool sarrayp) {
+#ifdef DEBUG2
+  int i;
+  char gbuffer[MAX_READLENGTH+1];
+#endif
+  Stage3end_T hit;
+  int best_indel_pos, query_indel_pos, indel_pos;
+  int mismatch_positions_left[MAX_READLENGTH], mismatch_positions_right[MAX_READLENGTH];
+  int nmismatches_left, nmismatches_right;
+  int best_sum, sum, nmismatches_lefti, nmismatches_righti, lefti, righti;
+  int nmismatches1, nmismatches2;
+
+
+  *foundp = false;
+
+  /* query has insertion.  Get |indels| less from genome; trim from left. */
+  /* left = ptr->diagonal - querylength; */
+
+  assert(indels > 0);
+  debug2(Genome_fill_buffer_blocks(left+indels,querylength-indels,gbuffer));
+  debug2(printf("solve_middle_indel, plus, insertion: Getting genome at diagonal - querylength %d + indels %d = %lu\n",
+		querylength,indels,left+indels));
+  debug2(printf("g1: %s\n",gbuffer));
+  debug2(printf("g2: %s\n",&(gbuffer[indels])));
+
+  /* No need to check chromosome bounds */
+  nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
+					    query_compress,left+indels,/*pos5*/0,/*pos3*/querylength,
+					    plusp,genestrand,first_read_p);
+  debug2(
+	 printf("%d mismatches on left at:",nmismatches_left);
+	 for (i = 0; i <= nmismatches_left; i++) {
+	   printf(" %d",mismatch_positions_left[i]);
+	 }
+	 printf("\n");
+	 );
+
+
+  /* No need to check chromosome bounds */
+  nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
+					      query_compress,left,/*pos5*/0,/*pos3*/querylength,
+					      plusp,genestrand,first_read_p);
+  debug2(
+	 printf("%d mismatches on right at:",nmismatches_right);
+	 for (i = 0; i <= nmismatches_right; i++) {
+	   printf(" %d",mismatch_positions_right[i]);
+	 }
+	 printf("\n");
+	 );
+
+  best_sum = querylength;
+
+  /* Modeled after end D to get lowest possible coordinate */
+  righti = 0;
+  lefti = nmismatches_left - 1;
+
+  while (righti < nmismatches_right) {
+    while (lefti >= 0 && mismatch_positions_left[lefti] > mismatch_positions_right[righti] - indels) {
+      lefti--;
+    }
+    sum = righti + lefti + 1;
+    debug2(printf("(Case D) sum %d=%d+%d at indel_pos %d.  ",
+		  sum,righti,lefti+1,mismatch_positions_right[righti]-indels+1));
+    if (sum <= best_sum) {
+      indel_pos = mismatch_positions_right[righti] - indels + 1;
+      if (indel_pos >= min_indel_end_matches && indel_pos + indels <= querylength - min_indel_end_matches) {
+	best_indel_pos = indel_pos;
+	nmismatches_righti = righti;
+	nmismatches_lefti = lefti + 1;
+	debug2(printf("**"));
+	best_sum = sum;
+      }
+    }
+    righti++;
+  }
+  debug2(printf("\n"));
+
+
+  /* Try from other side to see if we missed anything */
+  lefti = 0;
+  righti = nmismatches_right - 1;
+
+  while (lefti < nmismatches_left) {
+    while (righti >= 0 && mismatch_positions_right[righti] < mismatch_positions_left[lefti] + indels) {
+      righti--;
+    }
+    sum = lefti + righti + 1;
+    debug2(printf("(Case D2) sum %d=%d+%d at indel_pos %d.  ",
+		  sum,lefti,righti+1,mismatch_positions_left[lefti]));
+    if (sum < best_sum) {
+      indel_pos = mismatch_positions_left[lefti];
+      if (indel_pos >= min_indel_end_matches && indel_pos + indels <= querylength - min_indel_end_matches) {
+	best_indel_pos = indel_pos;
+	nmismatches_righti = righti + 1;
+	nmismatches_lefti = lefti;
+	debug2(printf("**"));
+	best_sum = sum;
+      }
+    } else if (sum == best_sum) {
+      indel_pos = mismatch_positions_left[lefti];
+      if (indel_pos < best_indel_pos) {
+	if (indel_pos >= min_indel_end_matches && indel_pos + indels <= querylength - min_indel_end_matches) {
+	  best_indel_pos = indel_pos;
+	  nmismatches_righti = righti + 1;
+	  nmismatches_lefti = lefti;
+	  debug2(printf("**"));
+	  /* best_sum = sum; */
+	}
+      }
+    }
+    lefti++;
+  }
+  debug2(printf("\n"));
+
+
+  if (best_sum <= max_mismatches_allowed) {
+    if (plusp == true) {
+      query_indel_pos = best_indel_pos;
+      nmismatches1 = nmismatches_lefti;
+      nmismatches2 = nmismatches_righti;
+    } else {
+      query_indel_pos = querylength - best_indel_pos - indels;
+      nmismatches1 = nmismatches_righti;
+      nmismatches2 = nmismatches_lefti;
+    }
+
+    if ((hit = Stage3end_new_insertion(&(*found_score),indels,query_indel_pos,
+				       nmismatches1,nmismatches2,
+				       /*left*/left+indels,/*genomiclength*/querylength-indels,
+				       query_compress,querylength,plusp,genestrand,first_read_p,
+				       chrnum,chroffset,chrhigh,chrlength,
+				       indel_penalty_middle,sarrayp)) != NULL) {
+      debug2(printf("successful insertion with %d=%d+%d mismatches and indel_pos at %d\n",
+		    sum,nmismatches_lefti,nmismatches_righti,best_indel_pos));
+      /* ptr->usedp = ptr2->usedp = true; */
+      *foundp = true;
+      *nhits += 1;
+      hits = List_push(hits,(void *) hit);
+    }
+  }
+
+  return hits;
+}
+
+
+
+/* indels is negative here */
+List_T
+Indel_solve_middle_deletion (bool *foundp, int *found_score, int *nhits, List_T hits,
+			     Univcoord_T left, Chrnum_T chrnum, Univcoord_T chroffset,
+			     Univcoord_T chrhigh, Chrpos_T chrlength,
+			     int indels, Compress_T query_compress,
+			     int querylength, int max_mismatches_allowed,
+			     bool plusp, int genestrand, bool first_read_p, bool sarrayp) {
+#ifdef DEBUG2
+  int i;
+  char *gbuffer;
+#endif
+  Stage3end_T hit;
+  int best_indel_pos, query_indel_pos, indel_pos;
+  int mismatch_positions_left[MAX_READLENGTH], mismatch_positions_right[MAX_READLENGTH];
+  int nmismatches_left, nmismatches_right;
+  int best_sum, sum, nmismatches_lefti, nmismatches_righti, lefti, righti;
+  int nmismatches1, nmismatches2;
+
+
+  *foundp = false;
+
+  /* query has deletion.  Get |indels| more from genome; add to right. */
+  /* left = ptr->diagonal - querylength; */
+
+  assert(indels < 0);
+  debug2(gbuffer = (char *) CALLOC(querylength-indels+1,sizeof(char)));
+  debug2(Genome_fill_buffer_blocks(left,querylength-indels,gbuffer));
+  debug2(printf("solve_middle_indel, plus, deletion (indels %d): Getting genome at diagonal - querylength %d = %lu\n",
+		indels,querylength,left));
+  debug2(printf("g1: %s\n",gbuffer));
+  debug2(printf("g2: %s\n",&(gbuffer[-indels])));
+  debug2(FREE(gbuffer));
+
+  /* No need to check chromosome bounds */
+  nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
+					    query_compress,left,/*pos5*/0,/*pos3*/querylength,
+					    plusp,genestrand,first_read_p);
+
+  debug2(
+	 printf("%d mismatches on left at:",nmismatches_left);
+	 for (i = 0; i <= nmismatches_left; i++) {
+	   printf(" %d",mismatch_positions_left[i]);
+	 }
+	 printf("\n");
+	 );
+
+  /* No need to check chromosome bounds */
+  nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
+					      query_compress,left-indels,/*pos5*/0,/*pos3*/querylength,
+					      plusp,genestrand,first_read_p);
+
+  debug2(
+	 printf("%d mismatches on right at:",nmismatches_right);
+	 for (i = 0; i <= nmismatches_right; i++) {
+	   printf(" %d",mismatch_positions_right[i]);
+	 }
+	 printf("\n");
+	 );
+
+  best_sum = querylength;
+
+  /* Modeled after end C to get lowest possible coordinate */
+  righti = 0;
+  lefti = nmismatches_left - 1;
+
+  while (righti < nmismatches_right) {
+    while (lefti >= 0 && mismatch_positions_left[lefti] > mismatch_positions_right[righti]) {
+      lefti--;
+    }
+    sum = righti + lefti + 1;
+    debug2(printf("(Case C1) sum %d=%d+%d at indel_pos %d.  ",
+		  sum,righti,lefti+1,mismatch_positions_right[righti]+1));
+    if (sum <= best_sum) {
+      indel_pos = mismatch_positions_right[righti] + 1;
+      if (indel_pos >= min_indel_end_matches && indel_pos <= querylength - min_indel_end_matches) {
+	best_indel_pos = indel_pos;
+	nmismatches_righti = righti;
+	nmismatches_lefti = lefti + 1;
+	debug2(printf("**"));
+	best_sum = sum;
+      }
+    }
+    righti++;
+  }
+  debug2(printf("\n"));
+
+  /* Try from other side to see if we missed anything */
+  lefti = 0;
+  righti = nmismatches_right - 1;
+
+  while (lefti < nmismatches_left) {
+    while (righti >= 0 && mismatch_positions_right[righti] < mismatch_positions_left[lefti]) {
+      righti--;
+    }
+    sum = lefti + righti + 1;
+    debug2(printf("(Case C2) sum %d=%d+%d at indel_pos %d.  ",
+		  sum,lefti,righti+1,mismatch_positions_left[lefti]));
+    if (sum < best_sum) {
+      indel_pos = mismatch_positions_left[lefti];
+      if (indel_pos >= min_indel_end_matches && indel_pos <= querylength - min_indel_end_matches) {
+	best_indel_pos = indel_pos;
+	nmismatches_lefti = lefti;
+	nmismatches_righti = righti + 1;
+	debug2(printf("**"));
+	best_sum = sum;
+      }
+    } else if (sum == best_sum) {
+      indel_pos = mismatch_positions_left[lefti];
+      if (indel_pos < best_indel_pos) {
+	if (indel_pos >= min_indel_end_matches && indel_pos <= querylength - min_indel_end_matches) {
+	  best_indel_pos = indel_pos;
+	  nmismatches_lefti = lefti;
+	  nmismatches_righti = righti + 1;
+	  debug2(printf("**"));
+	  /* best_sum = sum; */
+	}
+      }
+    }
+    lefti++;
+  }
+  debug2(printf("\n"));
+
+
+  if (best_sum <= max_mismatches_allowed) {
+    if (plusp == true) {
+      query_indel_pos = best_indel_pos;
+      nmismatches1 = nmismatches_lefti;
+      nmismatches2 = nmismatches_righti;
+    } else {
+      query_indel_pos = querylength - best_indel_pos;
+      nmismatches1 = nmismatches_righti;
+      nmismatches2 = nmismatches_lefti;
+    }
+
+    if ((hit = Stage3end_new_deletion(&(*found_score),-indels,query_indel_pos,
+				      nmismatches1,nmismatches2,
+				      left,/*genomiclength*/querylength-indels,
+				      query_compress,querylength,plusp,genestrand,first_read_p,
+				      chrnum,chroffset,chrhigh,chrlength,
+				      indel_penalty_middle,sarrayp)) != NULL) {
+      debug2(printf("successful middle deletion with %d=%d+%d mismatches and indel_pos at %d and nindels %d\n",
+		    best_sum,nmismatches_lefti,nmismatches_righti,best_indel_pos,-indels));
+      *foundp = true;
+      /* ptr->usedp = ptr2->usedp = true; */
+      *nhits += 1;
+      hits = List_push(hits,(void *) hit);
+    }
+  }
+
+  return hits;
+}
+
+
diff --git a/src/indel.h b/src/indel.h
new file mode 100644
index 0000000..c4e612e
--- /dev/null
+++ b/src/indel.h
@@ -0,0 +1,30 @@
+/* $Id: indel.h 133760 2014-04-20 05:16:56Z twu $ */
+#ifndef INDEL_INCLUDED
+#define INDEL_INCLUDED
+#include "bool.h"
+#include "list.h"
+#include "chrnum.h"
+#include "genomicpos.h"
+#include "compress.h"
+
+extern void
+Indel_setup (int min_indel_end_matches_in, int indel_penalty_middle_in);
+
+extern List_T
+Indel_solve_middle_insertion (bool *foundp, int *found_score, int *nhits, List_T hits,
+			      Univcoord_T left, Chrnum_T chrnum, Univcoord_T chroffset,
+			      Univcoord_T chrhigh, Chrpos_T chrlength,
+			      int indels, Compress_T query_compress,
+			      int querylength, int max_mismatches_allowed,
+			      bool plusp, int genestrand, bool first_read_p, bool sarrayp);
+
+extern List_T
+Indel_solve_middle_deletion (bool *foundp, int *found_score, int *nhits, List_T hits,
+			     Univcoord_T left, Chrnum_T chrnum, Univcoord_T chroffset,
+			     Univcoord_T chrhigh, Chrpos_T chrlength,
+			     int indels, Compress_T query_compress,
+			     int querylength, int max_mismatches_allowed,
+			     bool plusp, int genestrand, bool first_read_p, bool sarrayp);
+
+#endif
+
diff --git a/src/indexdb-write.c b/src/indexdb-write.c
index 9beec7f..f9fe333 100644
--- a/src/indexdb-write.c
+++ b/src/indexdb-write.c
@@ -1,7 +1,8 @@
-static char rcsid[] = "$Id: indexdb-write.c 101477 2013-07-15 15:33:07Z twu $";
+static char rcsid[] = "$Id: indexdb-write.c 132144 2014-04-02 16:02:28Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
+
 #ifndef HAVE_MEMCPY
 # define memcpy(d,s,n) bcopy((s),(d),(n))
 #endif
@@ -50,20 +51,32 @@ static char rcsid[] = "$Id: indexdb-write.c 101477 2013-07-15 15:33:07Z twu $";
 #include "fopen.h"
 #include "types.h"		/* For Oligospace_T */
 
-#include "compress.h"
-#include "complement.h"		/* For UPPERCASE_U2T and NO_UPPERCASE */
-#include "genome_hr.h"		/* For read_gammas procedures */
+#include "compress-write.h"	/* For Compress_get_char */
+#include "interval.h"
+#include "complement.h"
+#include "access.h"
+#include "genomicpos.h"
+#include "bool.h"
+#include "indexdbdef.h"
 #include "iit-read-univ.h"
 #include "indexdb.h"
+#include "popcount.h"
+
+#include "bitpack64-read.h"
+#include "bitpack64-write.h"
 
 
+#define MAX_BITPACK_BLOCKSIZE 64
 
 /* Another MONITOR_INTERVAL is in compress.c */
 #define MONITOR_INTERVAL 100000000 /* 100 million nt */
 #define OFFSETS_BUFFER_SIZE 1000000
+#define WRITE_CHUNK 1000000
+#define POSITIONS8_HIGH_SHIFT 32
+#define POSITIONS8_LOW_MASK 0xFFFFFFFF
 
+/* #define ALLOW_ODD_PACKSIZES 1 */
 
-/* Gammas */
 #ifdef DEBUG
 #define debug(x) x
 #else
@@ -79,337 +92,209 @@ static char rcsid[] = "$Id: indexdb-write.c 101477 2013-07-15 15:33:07Z twu $";
 
 
 
+
 /************************************************************************
- *   Elias gamma representation
+ *   Write procedures -- called by gmapindex/pmapindex
  ************************************************************************/
 
-/* ctr is 32 at high bit and 1 at low bit */
-static int
-write_gamma (FILE *offsetscomp_fp, Offsetscomp_T *offsets_buffer, int offsets_buffer_size, int *offsets_buffer_i,
-	     unsigned int *nwritten, Offsetscomp_T *buffer, int ctr, Offsetscomp_T gamma) {
-  int length;
-  Positionsptr_T nn;
-  
-  debug(printf("Entering write_gamma with gamma %u, ctr %d\n",gamma,ctr));
-
-  gamma += 1;			/* To allow 0 to be represented */
-
-  /* Compute length */
-  length = 1;
-  nn = 2;
-  while (nn <= gamma) {
-    length += 2;
-    nn += nn;
-  }
-  debug(printf("gamma is %u (%08X), length is %u\n",gamma,gamma,length));
-
-
-  /* Update buffer and write */
-  while (length > ctr) {
-    if (length - ctr < 32) {
-      *buffer |= (gamma >> (length - ctr));
-    }
-    debug(printf("writing gamma %08X\n",*buffer));
-    offsets_buffer[(*offsets_buffer_i)++] = *buffer;
-    if (*offsets_buffer_i == offsets_buffer_size) {
-      FWRITE_UINTS(offsets_buffer,offsets_buffer_size,offsetscomp_fp);
-      *offsets_buffer_i = 0;
-    }
-    *nwritten += 1;
-    length -= ctr;
-    ctr = 32;
-    *buffer = 0U;
-  }
-  
-  debug(printf("  shifting gamma left by %d\n",ctr - length));
-  *buffer |= (gamma << (ctr - length));
-  debug(printf("  buffer is %08X\n",*buffer));
-  ctr -= length;
-
-  debug(printf("  returning ctr %d\n",ctr));
-  return ctr;
-}
-
-
-void
-Indexdb_write_gammaptrs (char *gammaptrsfile, char *offsetsfile, Positionsptr_T *offsets,
-			 Oligospace_T oligospace, int blocksize) {
-  FILE *offsets_fp;
-  FILE *gammaptrs_fp, *offsetscomp_fp;
-  Gammaptr_T *gammaptrs;
-  int gammaptri;
-  int j;
-  Oligospace_T oligoi;
-
-  Offsetscomp_T *offsets_buffer;
-  int offsets_buffer_size = OFFSETS_BUFFER_SIZE;
-  int offsets_buffer_i;
-
-  Offsetscomp_T buffer;			/* gammabuffer */
-  int ctr;
-  Gammaptr_T nwritten;
-
-
-  if (blocksize == 1) {
-    /* Don't write gammaptrs.  Write offsetscomp in a single command. */
-    if ((offsets_fp = FOPEN_WRITE_BINARY(offsetsfile)) == NULL) {
-      fprintf(stderr,"Can't write to file %s\n",offsetsfile);
-      exit(9);
-    } else {
-      FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-    }
-
-  } else {
-    gammaptrs = (Gammaptr_T *) CALLOC(oligospace/blocksize+1,sizeof(Gammaptr_T));
-    gammaptri = 0;
-
-    if ((offsetscomp_fp = FOPEN_WRITE_BINARY(offsetsfile)) == NULL) {
-      fprintf(stderr,"Can't write to file %s\n",offsetsfile);
-      exit(9);
-    }
-    offsets_buffer = (Offsetscomp_T *) CALLOC(offsets_buffer_size,sizeof(Offsetscomp_T));
-    offsets_buffer_i = 0;
-
-    nwritten = 0U;
-    for (oligoi = 0; oligoi < oligospace; oligoi += blocksize) {
-      gammaptrs[gammaptri++] = nwritten;
-
-      offsets_buffer[offsets_buffer_i++] = offsets[oligoi];
-      if (offsets_buffer_i == offsets_buffer_size) {
-	FWRITE_UINTS(offsets_buffer,offsets_buffer_size,offsetscomp_fp);
-	offsets_buffer_i = 0;
-      }
-      nwritten += 1;
-
-      if (blocksize > 1) {
-	buffer = 0U;
-	ctr = 32;
-	for (j = 1; j < blocksize; j++) {
-	  ctr = write_gamma(offsetscomp_fp,offsets_buffer,offsets_buffer_size,&offsets_buffer_i,
-			    &nwritten,&buffer,ctr,offsets[oligoi+j]-offsets[oligoi+j-1]);
-	}
-	debug(printf("writing gamma %08X\n",buffer));
-	offsets_buffer[offsets_buffer_i++] = buffer;
-	if (offsets_buffer_i == offsets_buffer_size) {
-	  FWRITE_UINTS(offsets_buffer,offsets_buffer_size,offsetscomp_fp);
-	  offsets_buffer_i = 0;
-	}
-	nwritten += 1;
-      }
-    }
-
-
-    /* Final entries for i == oligospace */
-    gammaptrs[gammaptri++] = nwritten;
-    if ((gammaptrs_fp = FOPEN_WRITE_BINARY(gammaptrsfile)) == NULL) {
-      fprintf(stderr,"Can't write to file %s\n",gammaptrsfile);
-      exit(9);
-    } else {
-      FWRITE_UINTS(gammaptrs,gammaptri,gammaptrs_fp);
-      FREE(gammaptrs);
-      fclose(gammaptrs_fp);
-    }
-    
-    offsets_buffer[offsets_buffer_i++] = offsets[oligoi];
-    if (offsets_buffer_i > 0) {
-      FWRITE_UINTS(offsets_buffer,offsets_buffer_i,offsetscomp_fp);
-      offsets_buffer_i = 0;
-    }
-    FREE(offsets_buffer);
-    fclose(offsetscomp_fp);
-    nwritten += 1;
+static Oligospace_T
+power (int base, int exponent) {
+#ifdef OLIGOSPACE_NOT_LONG
+  Oligospace_T result = 1U;
+#else
+  Oligospace_T result = 1UL;
+#endif
+  int i;
 
+  for (i = 0; i < exponent; i++) {
+    result *= base;
   }
-
-  return;
+  return result;
 }
 
 
+#if 0
 static void
-check_offsets_from_gammas (char *gammaptrsfile, char *offsetscompfile, Positionsptr_T *offsets,
-			   Oligospace_T oligospace, int blocksize) {
-  Gammaptr_T *gammaptrs;
-  Offsetscomp_T *offsetscomp;
-  int gammaptrs_fd, offsetscomp_fd;
-  size_t gammaptrs_len, offsetscomp_len;
-  Oligospace_T oligoi, oligok;
-  int j, p;
+check_bitpack (char *offsetsmetafile, char *offsetsstrmfile,
+	       Oligospace_T oligospace, Blocksize_T blocksize) {
+  UINT4 *offsetsmeta, *offsetsstrm, *info;
+  int offsetsmeta_fd, offsetsstrm_fd;
+  size_t offsetsmeta_len, offsetsstrm_len;
+  UINT4 *blockptr;
+  Oligospace_T oligo;
+  int packsize;
 #ifndef HAVE_MMAP
   double seconds;
 #endif
 
-  Positionsptr_T *ptr, cum;
-  int ctr;
-
-
 #ifdef HAVE_MMAP
-  gammaptrs = (Gammaptr_T *) Access_mmap(&gammaptrs_fd,&gammaptrs_len,gammaptrsfile,sizeof(Gammaptr_T),/*randomp*/false);
-  offsetscomp = (Offsetscomp_T *) Access_mmap(&offsetscomp_fd,&offsetscomp_len,offsetscompfile,sizeof(Offsetscomp_T),/*randomp*/false);
+  offsetsmeta = (UINT4 *) Access_mmap(&offsetsmeta_fd,&offsetsmeta_len,offsetsmetafile,sizeof(UINT4),/*randomp*/false);
+  offsetsstrm = (UINT4 *) Access_mmap(&offsetsstrm_fd,&offsetsstrm_len,offsetsstrmfile,sizeof(UINT4),/*randomp*/false);
 #else
-  gammaptrs = (Gammaptr_T *) Access_allocated(&gammaptrs_len,&seconds,gammaptrsfile,sizeof(Gammaptr_T));
-  offsetscomp = (Offsetscomp_T *) Access_allocated(&offsetscomp_len,&seconds,offsetscompfile,sizeof(Offsetscomp_T));
-#endif
-
-  ptr = offsetscomp;
-  oligok = 0UL;
-  p = 0;
+  offsetsmeta = (UINT4 *) Access_allocated(&offsetsmeta_len,&seconds,offsetsmetafile,sizeof(UINT4));
+  offsetsstrm = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsstrmfile,sizeof(UINT4));
+#endif
+
+  for (oligo = 0; oligo < oligospace; oligo += blocksize) {
+    info = &(offsetsmeta[oligo/blocksize * METAINFO_SIZE]);
+    blockptr = &(offsetsstrm[info[0]]);
+    packsize = (info[2] - info[0])/2;
+    if (packsize > 32) {
+      fprintf(stderr,"Error:\n");
+      fprintf(stderr,"oligo: %08X\n",oligo);
+      fprintf(stderr,"nwritten: %u\n",info[0]);
+      fprintf(stderr,"packsize: %d\n",packsize);
+      fprintf(stderr,"offset: %u\n",info[1]);
+      abort();
+    }
+  }
 
-  for (oligoi = 0UL; oligoi < oligospace; oligoi += blocksize) {
 #ifdef HAVE_MMAP
-#ifdef WORDS_BIGENDIAN
-    cum = Bigendian_convert_uint(*ptr++);
-#else
-    cum = *ptr++;
-#endif
+  munmap((void *) offsetsstrm,offsetsstrm_len);
+  munmap((void *) offsetsmeta,offsetsmeta_len);
 #else
-    cum = *ptr++;
+  FREE(offsetsstrm);
+  FREE(offsetsmeta);
 #endif
 
-    if (offsetscomp[gammaptrs[p++]] != cum) {
-#ifdef OLIGOSPACE_NOT_LONG
-      fprintf(stderr,"Problem with gammaptrs at oligo %u: %u != %u.  Please inform twu at gene.com\n",
-	      oligok,offsetscomp[gammaptrs[p-1]],cum);
-#else
-      fprintf(stderr,"Problem with gammaptrs at oligo %lu: %u != %u.  Please inform twu at gene.com\n",
-	      oligok,offsetscomp[gammaptrs[p-1]],cum);
+  return;
+}
 #endif
-      exit(9);
-    }
 
-    if (offsets[oligok++] != cum) {
-#ifdef OLIGOSPACE_NOT_LONG
-      fprintf(stderr,"Problem with offsetscomp at oligo %u: %u != %u.  Please inform twu at gene.com\n",
-	      oligok-1U,offsets[oligok-1],cum);
-#else
-      fprintf(stderr,"Problem with offsetscomp at oligo %lu: %u != %u.  Please inform twu at gene.com\n",
-	      oligok-1UL,offsets[oligok-1],cum);
+
+#ifndef PMAP
+static void
+check_offsets_from_bitpack (char *offsetsmetafile, char *offsetsstrmfile, Positionsptr_T *offsets,
+			    Oligospace_T oligospace, Blocksize_T blocksize) {
+  UINT4 *offsetsmeta;
+  UINT4 *offsetsstrm;
+  Positionsptr_T offsets_decoded[MAX_BITPACK_BLOCKSIZE+1];
+  int offsetsmeta_fd, offsetsstrm_fd;
+  size_t offsetsmeta_len, offsetsstrm_len;
+  Oligospace_T oligoi, i;
+#ifndef HAVE_MMAP
+  double seconds;
 #endif
-      exit(9);
-    }
 
-    ctr = 0;
-    for (j = 1; j < blocksize; j++) {
+
 #ifdef HAVE_MMAP
-#ifdef WORDS_BIGENDIAN
-      ctr = Genome_read_gamma_bigendian(&ptr,ctr,&cum);
-#else
-      ctr = Genome_read_gamma(&ptr,ctr,&cum);
-#endif
+  offsetsmeta = (UINT4 *) Access_mmap(&offsetsmeta_fd,&offsetsmeta_len,offsetsmetafile,sizeof(UINT4),/*randomp*/false);
+  offsetsstrm = (UINT4 *) Access_mmap(&offsetsstrm_fd,&offsetsstrm_len,offsetsstrmfile,sizeof(UINT4),/*randomp*/false);
 #else
-      ctr = Genome_read_gamma(&ptr,ctr,&cum);
+  offsetsmeta = (UINT4 *) Access_allocated(&offsetsmeta_len,&seconds,offsetsmetafile,sizeof(UINT4));
+  offsetsstrm = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsstrmfile,sizeof(UINT4));
 #endif
 
-      if (offsets[oligok++] != cum) {
+  for (oligoi = 0UL; oligoi < oligospace; oligoi += blocksize) {
+    Bitpack64_block_offsets(offsets_decoded,oligoi,offsetsmeta,offsetsstrm);
+    for (i = 0; i <= blocksize; i++) {
+      if (offsets_decoded[i] != offsets[oligoi+i]) {
 #ifdef OLIGOSPACE_NOT_LONG
-	fprintf(stderr,"Problem with offsetscomp at oligo %u: %u != %u.  Please inform twu at gene.com\n",
-		oligok-1U,offsets[oligok-1],cum);
+	fprintf(stderr,"Problem with bitpack at oligo %u+%u = %u: %u != %u.  Please inform twu at gene.com\n",
+		oligoi,i,oligoi+i,offsets_decoded[i],offsets[oligoi+i]);
 #else
-	fprintf(stderr,"Problem with offsetscomp at oligo %lu: %u != %u.  Please inform twu at gene.com\n",
-		oligok-1UL,offsets[oligok-1],cum);
+	fprintf(stderr,"Problem with bitpack at oligo %lu+%lu = %lu: %u != %u.  Please inform twu at gene.com\n",
+		oligoi,i,oligoi+i,offsets_decoded[i],offsets[oligoi+i]);
 #endif
 	exit(9);
       }
     }
-    if (ctr > 0) {
-      ptr++;			/* Done with last gamma byte */
-    }
   }
 
 
+
 #ifdef HAVE_MMAP
-#ifdef WORDS_BIGENDIAN
-  cum = Bigendian_convert_uint(*ptr++);
+  munmap((void *) offsetsstrm,offsetsstrm_len);
+  munmap((void *) offsetsmeta,offsetsmeta_len);
 #else
-  cum = *ptr++;
+  FREE(offsetsstrm);
+  FREE(offsetsmeta);
 #endif
-#else
-  cum = *ptr++;
+
+  return;
+}
 #endif
 
-  if (offsetscomp[gammaptrs[p]] != cum) {
-#ifdef OLIGOSPACE_NOT_LONG
-    fprintf(stderr,"Problem with gammaptrs at oligo %u: %u != %u.  Please inform twu at gene.com\n",
-	    oligok,offsetscomp[gammaptrs[p-1]],cum);
+
+#ifndef PMAP
+static void
+check_offsets_from_bitpack_huge (char *offsetspagesfile, char *offsetsmetafile, char *offsetsstrmfile,
+				 Hugepositionsptr_T *offsets, Oligospace_T oligospace, Blocksize_T blocksize) {
+  UINT4 *offsetspages;
+  UINT4 *offsetsmeta;
+  UINT4 *offsetsstrm;
+  Hugepositionsptr_T offsets64[65];
+  int offsetsmeta_fd, offsetsstrm_fd;
+  size_t offsetspages_len, offsetsmeta_len, offsetsstrm_len;
+  Oligospace_T oligoi, i;
+  double seconds;
+
+
+  offsetspages = (UINT4 *) Access_allocated(&offsetspages_len,&seconds,offsetspagesfile,sizeof(UINT4));
+#ifdef HAVE_MMAP
+  offsetsmeta = (UINT4 *) Access_mmap(&offsetsmeta_fd,&offsetsmeta_len,offsetsmetafile,sizeof(UINT4),/*randomp*/false);
+  offsetsstrm = (UINT4 *) Access_mmap(&offsetsstrm_fd,&offsetsstrm_len,offsetsstrmfile,sizeof(UINT4),/*randomp*/false);
 #else
-    fprintf(stderr,"Problem with gammaptrs at oligo %lu: %u != %u.  Please inform twu at gene.com\n",
-	    oligok,offsetscomp[gammaptrs[p-1]],cum);
+  offsetsmeta = (UINT4 *) Access_allocated(&offsetsmeta_len,&seconds,offsetsmetafile,sizeof(UINT4));
+  offsetsstrm = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsstrmfile,sizeof(UINT4));
 #endif
-    exit(9);
-  }
-    
-  if (offsets[oligok] != cum) {
+
+  for (oligoi = 0UL; oligoi < oligospace; oligoi += blocksize) {
+    Bitpack64_block_offsets_huge(offsets64,oligoi,offsetspages,offsetsmeta,offsetsstrm);
+    for (i = 0; i <= 64; i++) {
+      if (offsets64[i] != offsets[oligoi+i]) {
 #ifdef OLIGOSPACE_NOT_LONG
-    fprintf(stderr,"Problem with offsetscomp at oligo %u: %u != %u.  Please inform twu at gene.com\n",
-	    oligok,offsets[oligok],*ptr);
+	fprintf(stderr,"\nProblem with bitpack64 at oligo %u+%u = %u: uncompressed %lu != expected %lu.  Your compiler may be defective.  Please inform twu at gene.com\n",
+		oligoi,i,oligoi+i,offsets64[i],offsets[oligoi+i]);
 #else
-    fprintf(stderr,"Problem with offsetscomp at oligo %lu: %u != %u.  Please inform twu at gene.com\n",
-	    oligok,offsets[oligok],*ptr);
+	fprintf(stderr,"\nProblem with bitpack64 at oligo %lu+%lu = %lu: uncompressed %lu != expected %lu.  Your compiler may be defective.  Please inform twu at gene.com\n",
+		oligoi,i,oligoi+i,offsets64[i],offsets[oligoi+i]);
 #endif
-    exit(9);
+      }
+    }
   }
 
 #ifdef HAVE_MMAP
-  munmap((void *) offsetscomp,offsetscomp_len);
-  munmap((void *) gammaptrs,gammaptrs_len);
+  munmap((void *) offsetsstrm,offsetsstrm_len);
+  munmap((void *) offsetsmeta,offsetsmeta_len);
 #else
-  FREE(offsetscomp);
-  FREE(gammaptrs);
+  FREE(offsetsstrm);
+  FREE(offsetsmeta);
 #endif
+  FREE(offsetspages);
 
   return;
 }
+#endif
 
 
-static Oligospace_T
-power (int base, int exponent) {
-#ifdef OLIGOSPACE_NOT_LONG
-  Oligospace_T result = 1U;
-#else
-  Oligospace_T result = 1UL;
-#endif
-  int i;
 
-  for (i = 0; i < exponent; i++) {
-    result *= base;
-  }
-  return result;
-}
 
 
-void
-Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
-		       int offsetscomp_basesize,
+#ifdef HAVE_64_BIT
+UINT8
+Indexdb_count_offsets (FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-		       int alphabet_size, int index1part_aa, bool watsonp,
+		       Width_T index1part_aa, bool watsonp,
 #else
-		       int index1part,
+		       Width_T index1part,
 #endif
-		       int index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p) {
+		       Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p) {
   char *uppercaseCode;
-
-  /* If offsets[oligospace] > 2^32, then will will want to allocate and write 8-mers for offsets file */
-  Positionsptr_T *offsets;
-
-  char *comma;
-  int c, nchrs, chrnum;
-  Oligospace_T oligospace, oligoi;
   Univcoord_T position = 0, next_chrbound;
   Chrpos_T chrpos = 0U;
+  UINT8 noffsets = 0;
+  int c;
+  char *comma;
 #ifdef PMAP
   int frame = -1, between_counter[3], in_counter[3];
-  Storedoligomer_T high = 0U, low = 0U, carry;
-  Storedoligomer_T aaindex;
-  int index1part_nt = 3*index1part_aa;
+  Storedoligomer_T low = 0U;
 #else
   int between_counter = 0, in_counter = 0;
-  Storedoligomer_T oligo = 0U, masked, mask;
-#endif
-#ifdef DEBUG1
-  char *aa;
 #endif
-
-  int offsetscomp_blocksize;
   int circular_typeint;
+  int nchrs, chrnum;
+
 
   if (mask_lowercase_p == false) {
     uppercaseCode = UPPERCASE_U2T; /* We are reading DNA sequence */
@@ -418,47 +303,10 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
   }
 
 #ifdef PMAP
-  oligospace = power(alphabet_size,index1part_aa);
   between_counter[0] = between_counter[1] = between_counter[2] = 0;
   in_counter[0] = in_counter[1] = in_counter[2] = 0;
-#ifdef OLIGOSPACE_NOT_LONG
-  fprintf(stderr,"Allocating %u*%lu bytes for offsets\n",oligospace+1U,sizeof(Positionsptr_T));
-#else
-  fprintf(stderr,"Allocating %lu*%lu bytes for offsets\n",oligospace+1UL,sizeof(Positionsptr_T));
-#endif
-  offsets = (Positionsptr_T *) CALLOC_NO_EXCEPTION(oligospace+1,sizeof(Positionsptr_T));
-  if (offsets == NULL) {
-#ifdef OLIGOSPACE_NOT_LONG
-    fprintf(stderr,"Unable to allocate %u bytes of memory, needed to build offsets with %d-mers\n",oligospace+1U,index1part_aa);
-#else
-    fprintf(stderr,"Unable to allocate %lu bytes of memory, needed to build offsets with %d-mers\n",oligospace+1UL,index1part_aa);
-#endif
-    fprintf(stderr,"Either find a computer with more RAM, or lower your value for the k-mer size\n");
-    exit(9);
-  }
-  offsetscomp_blocksize = power(alphabet_size,index1part_aa - offsetscomp_basesize);
-#else
-  mask = ~(~0UL << 2*index1part);
-  oligospace = power(4,index1part);
-#ifdef OLIGOSPACE_NOT_LONG
-  fprintf(stderr,"Allocating %u*%lu bytes for offsets\n",oligospace+1U,sizeof(Positionsptr_T));
-#else
-  fprintf(stderr,"Allocating %lu*%lu bytes for offsets\n",oligospace+1UL,sizeof(Positionsptr_T));
-#endif
-  offsets = (Positionsptr_T *) CALLOC_NO_EXCEPTION(oligospace+1,sizeof(Positionsptr_T));
-  if (offsets == NULL) {
-#ifdef OLIGOSPACE_NOT_LONG
-    fprintf(stderr,"Unable to allocate %u bytes of memory, needed to build offsets with %d-mers\n",oligospace+1U,index1part);
-#else
-    fprintf(stderr,"Unable to allocate %lu bytes of memory, needed to build offsets with %d-mers\n",oligospace+1UL,index1part);
-#endif
-    fprintf(stderr,"Either find a computer with more RAM, or lower your value for the k-mer size\n");
-    exit(9);
-  }
-  offsetscomp_blocksize = power(4,index1part - offsetscomp_basesize);
 #endif
 
-  /* Handle reference strain */
   circular_typeint = Univ_IIT_typeint(chromosome_iit,"circular");
   chrnum = 1;
   nchrs = Univ_IIT_total_nintervals(chromosome_iit);
@@ -479,10 +327,10 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
     if (position % MONITOR_INTERVAL == 0) {
       comma = Genomicpos_commafmt(position);
 #ifdef PMAP
-      fprintf(stderr,"Indexing offsets of oligomers in genome %s (%d aa every %d aa), position %s",
+      fprintf(stderr,"Counting positions in genome %s (%d aa every %d aa), position %s",
 	      fileroot,index1part_aa,index1interval,comma);
 #else
-      fprintf(stderr,"Indexing offsets of oligomers in genome %s (%d bp every %d bp), position %s",
+      fprintf(stderr,"Counting positions in genome %s (%d bp every %d bp), position %s",
 	      fileroot,index1part,index1interval,comma);
 #endif
       FREE(comma);
@@ -497,36 +345,34 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
     }
 
 #ifdef PMAP
-    carry = (low >> 30);
     switch (uppercaseCode[c]) {
     case 'A': low = (low << 2); break;
     case 'C': low = (low << 2) | 1U; break;
     case 'G': low = (low << 2) | 2U; break;
     case 'T': low = (low << 2) | 3U; break;
     case 'X': case 'N': 
-      high = low = carry = 0U; 
       in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      low = 0U; 
       break;
     default: 
       if (genome_lc_p == true) {
-	high = low = carry = 0U;
+	low = 0U;
 	in_counter[0] = in_counter[1] = in_counter[2] = 0;
       } else {
 	fprintf(stderr,"Bad character %c at position %u\n",c,position);
 	abort();
       }
     }
-    high = (high << 2) | carry; 
 #else
     switch (uppercaseCode[c]) {
-    case 'A': oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1U; break;
-    case 'G': oligo = (oligo << 2) | 2U; break;
-    case 'T': oligo = (oligo << 2) | 3U; break;
-    case 'X': case 'N': oligo = 0U; in_counter = 0; break;
+    case 'A': break;
+    case 'C': break;
+    case 'G': break;
+    case 'T': break;
+    case 'X': case 'N': in_counter = 0; break;
     default: 
       if (genome_lc_p == true) {
-	oligo = 0U; in_counter = 0;
+	in_counter = 0;
       } else {
 	fprintf(stderr,"Bad character %c at position %lu\n",c,position);
 	abort();
@@ -553,22 +399,7 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
     }
     if (in_counter[frame] == index1part_aa + 1) {
       if (between_counter[frame] >= index1interval) {
-	aaindex = Alphabet_get_aa_index(high,low,watsonp,index1part_nt);
-#ifdef OLIGOSPACE_NOT_LONG
-	oligoi = (Oligospace_T) aaindex + 1U;
-#else
-	oligoi = (Oligospace_T) aaindex + 1UL;
-#endif
-	offsets[oligoi] += 1;
-	debug1(
-	       aa = aaindex_aa(aaindex);
-	       if (watsonp == true) {
-		 printf("Storing %s (%u) at %u\n",aa,aaindex,position-index1part_nt+1U);
-	       } else {
-		 printf("Storing %s (%u) at %u\n",aa,aaindex,position);
-	       }
-	       FREE(aa);
-	       );
+	noffsets += 1;
 	between_counter[frame] = 0;
       }
       in_counter[frame] -= 1;
@@ -582,15 +413,7 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
 	  (chrpos-index1part+1U) % index1interval == 0
 #endif
 	  ) {
-	masked = oligo & mask;
-#ifdef OLIGOSPACE_NOT_LONG
-	oligoi = (Oligospace_T) masked + 1U;
-#else
-	oligoi = (Oligospace_T) masked + 1UL;
-#endif
-	offsets[oligoi] += 1;
-	debug(printf("Found oligo %06X.  Incremented offsets for %lu to be %u\n",
-		     masked,oligoi,offsets[oligoi]));
+	noffsets += 1;
 	between_counter = 0;
       }
       in_counter--;
@@ -600,10 +423,10 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
     chrpos++;			/* Needs to go here, before we reset chrpos to 0 */
     if (position >= next_chrbound) {
 #ifdef PMAP
-      high = low = carry = 0U;
+      low = 0U;
       in_counter[0] = in_counter[1] = in_counter[2] = 0;
 #else
-      oligo = 0U; in_counter = 0;
+      in_counter = 0;
 #endif
       chrpos = 0U;
       chrnum++;
@@ -614,52 +437,716 @@ Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequenc
     position++;
   }
 
-
-#ifdef ADDSENTINEL
-  for (oligoi = 1; oligoi <= oligospace; oligoi++) {
-    offsets[oligoi] = offsets[oligoi] + offsets[oligoi-1] + 1U;
-    debug(if (offsets[oligoi] != offsets[oligoi-1]) {
-	    printf("Offset for %06X: %u\n",oligoi,offsets[oligoi]);
-	  });
-  }
-#else
-  for (oligoi = 1; oligoi <= oligospace; oligoi++) {
-    offsets[oligoi] = offsets[oligoi] + offsets[oligoi-1];
-    debug(if (offsets[oligoi] != offsets[oligoi-1]) {
-	    printf("Offset for %06X: %u\n",oligoi,offsets[oligoi]);
-	  });
-  }
+  return noffsets;
+}
 #endif
 
-  /*
-  fprintf(stderr,"Offset for A...A is %u to %u\n",offsets[0],offsets[1]);
-  fprintf(stderr,"Offset for T...T is %u to %u\n",offsets[oligospace-1],offsets[oligospace]);
-  */
 
-#ifdef PRE_GAMMAS
-  fprintf(stderr,"Writing %lu offsets to file with total of %u positions...",oligospace+1,offsets[oligospace]);
-  FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-#else
-#ifdef OLIGOSPACE_NOT_LONG
-  fprintf(stderr,"Writing %u offsets compressed to file with total of %u positions...",oligospace+1U,offsets[oligospace]);
+
+void
+Indexdb_write_offsets (char *destdir, char interval_char, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+#ifdef PMAP
+		       Alphabet_T alphabet, Width_T index1part_aa, bool watsonp,
 #else
-  fprintf(stderr,"Writing %lu offsets compressed to file with total of %u positions...",oligospace+1UL,offsets[oligospace]);
-#endif
-  Indexdb_write_gammaptrs(gammaptrsfile,offsetscompfile,offsets,oligospace,offsetscomp_blocksize);
+		       Width_T index1part,
 #endif
-  fprintf(stderr,"done\n");
-
-  
-  if (offsetscomp_blocksize > 1) {
-    fprintf(stderr,"Checking gammas...");
-    check_offsets_from_gammas(gammaptrsfile,offsetscompfile,offsets,oligospace,offsetscomp_blocksize);
-    fprintf(stderr,"done\n");
-  }
+		       Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
+		       int compression_types) {
+  char *uppercaseCode;
+  char *pointersfile, *offsetsfile;
+  char *filesuffix;
+  FILE *offsets_fp;
 
-  FREE(offsets);
+  /* If offsets[oligospace] > 2^32, then will will want to allocate and write 8-mers for offsets file */
+  Positionsptr_T *offsets;
+
+  char *comma;
+  int c, nchrs, chrnum;
+  Oligospace_T oligospace, oligoi;
+  Univcoord_T position = 0, next_chrbound;
+  Chrpos_T chrpos = 0U;
+#ifdef PMAP
+  int frame = -1, between_counter[3], in_counter[3];
+  Storedoligomer_T high = 0U, low = 0U, carry;
+  Storedoligomer_T aaindex;
+  int index1part_nt = 3*index1part_aa;
+  int alphabet_size;
+#else
+  int between_counter = 0, in_counter = 0;
+  Storedoligomer_T oligo = 0U, masked, mask;
+#endif
+#ifdef DEBUG1
+  char *aa;
+#endif
+
+  int blocksize;
+  int circular_typeint;
+
+  if (mask_lowercase_p == false) {
+    uppercaseCode = UPPERCASE_U2T; /* We are reading DNA sequence */
+  } else {
+    uppercaseCode = NO_UPPERCASE;
+  }
+
+#ifdef PMAP
+  alphabet_size = Alphabet_get_size(alphabet);
+  oligospace = power(alphabet_size,index1part_aa);
+  between_counter[0] = between_counter[1] = between_counter[2] = 0;
+  in_counter[0] = in_counter[1] = in_counter[2] = 0;
+#ifdef OLIGOSPACE_NOT_LONG
+  fprintf(stderr,"Allocating %u*%lu bytes for offsets\n",oligospace+1U,sizeof(Positionsptr_T));
+#else
+  fprintf(stderr,"Allocating %lu*%lu bytes for offsets\n",oligospace+1UL,sizeof(Positionsptr_T));
+#endif
+  offsets = (Positionsptr_T *) CALLOC_NO_EXCEPTION(oligospace+1,sizeof(Positionsptr_T));
+  if (offsets == NULL) {
+#ifdef OLIGOSPACE_NOT_LONG
+    fprintf(stderr,"Unable to allocate %u bytes of memory, needed to build offsets with %d-mers\n",oligospace+1U,index1part_aa);
+#else
+    fprintf(stderr,"Unable to allocate %lu bytes of memory, needed to build offsets with %d-mers\n",oligospace+1UL,index1part_aa);
+#endif
+    fprintf(stderr,"Either find a computer with more RAM, or lower your value for the k-mer size\n");
+    exit(9);
+  }
+#else
+  mask = ~(~0UL << 2*index1part);
+  oligospace = power(4,index1part);
+#ifdef OLIGOSPACE_NOT_LONG
+  fprintf(stderr,"Allocating %u*%lu bytes for offsets\n",oligospace+1U,sizeof(Positionsptr_T));
+#else
+  fprintf(stderr,"Allocating %lu*%lu bytes for offsets\n",oligospace+1UL,sizeof(Positionsptr_T));
+#endif
+  offsets = (Positionsptr_T *) CALLOC_NO_EXCEPTION(oligospace+1,sizeof(Positionsptr_T));
+  if (offsets == NULL) {
+#ifdef OLIGOSPACE_NOT_LONG
+    fprintf(stderr,"Unable to allocate %u bytes of memory, needed to build offsets with %d-mers\n",oligospace+1U,index1part);
+#else
+    fprintf(stderr,"Unable to allocate %lu bytes of memory, needed to build offsets with %d-mers\n",oligospace+1UL,index1part);
+#endif
+    fprintf(stderr,"Either find a computer with more RAM, or lower your value for the k-mer size\n");
+    exit(9);
+  }
+#endif
+
+  /* Handle reference strain */
+  circular_typeint = Univ_IIT_typeint(chromosome_iit,"circular");
+  chrnum = 1;
+  nchrs = Univ_IIT_total_nintervals(chromosome_iit);
+  next_chrbound = Univ_IIT_next_chrbound(chromosome_iit,chrnum,circular_typeint);
+
+  while ((c = Compress_get_char(sequence_fp,position,genome_lc_p)) != EOF) {
+
+#ifdef PMAP
+    if (++frame == 3) {
+      frame = 0;
+    }
+    between_counter[frame] += 1;
+    in_counter[frame] += 1;
+#else
+    between_counter++;
+    in_counter++;
+#endif
+
+    if (position % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(position);
+#ifdef PMAP
+      fprintf(stderr,"Indexing offsets of oligomers in genome %s (%d aa every %d aa), position %s",
+	      fileroot,index1part_aa,index1interval,comma);
+#else
+      fprintf(stderr,"Indexing offsets of oligomers in genome %s (%d bp every %d bp), position %s",
+	      fileroot,index1part,index1interval,comma);
+#endif
+      FREE(comma);
+#ifdef PMAP
+      if (watsonp == true) {
+	fprintf(stderr," (fwd)");
+      } else {
+	fprintf(stderr," (rev)");
+      }
+#endif
+      fprintf(stderr,"\n");
+    }
+
+#ifdef PMAP
+    carry = (low >> 30);
+    switch (uppercaseCode[c]) {
+    case 'A': low = (low << 2); break;
+    case 'C': low = (low << 2) | 1U; break;
+    case 'G': low = (low << 2) | 2U; break;
+    case 'T': low = (low << 2) | 3U; break;
+    case 'X': case 'N': 
+      high = low = carry = 0U; 
+      in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      break;
+    default: 
+      if (genome_lc_p == true) {
+	high = low = carry = 0U;
+	in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      } else {
+	fprintf(stderr,"Bad character %c at position %u\n",c,position);
+	abort();
+      }
+    }
+    high = (high << 2) | carry; 
+#else
+    switch (uppercaseCode[c]) {
+    case 'A': oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1U; break;
+    case 'G': oligo = (oligo << 2) | 2U; break;
+    case 'T': oligo = (oligo << 2) | 3U; break;
+    case 'X': case 'N': oligo = 0U; in_counter = 0; break;
+    default: 
+      if (genome_lc_p == true) {
+	oligo = 0U; in_counter = 0;
+      } else {
+	fprintf(stderr,"Bad character %c at position %lu\n",c,position);
+	abort();
+      }
+    }
+#endif
+
+#ifdef PMAP
+    debug(printf("frame=%d char=%c bc=%d ic=%d high=%08X low=%08X\n",
+		 frame,c,between_counter[frame],in_counter[frame],high,low));
+
+    if (in_counter[frame] > 0) {
+      if (watsonp == true) {
+	if (Alphabet_get_codon_fwd(low) == AA_STOP) {
+	  debug(printf("Resetting in_counter for frame %d to 0\n",frame));
+	  in_counter[frame] = 0; 
+	}
+      } else {
+	if (Alphabet_get_codon_rev(low) == AA_STOP) {
+	  debug(printf("Resetting in_counter for frame %d to 0\n",frame));
+	  in_counter[frame] = 0; 
+	}
+      }
+    }
+    if (in_counter[frame] == index1part_aa + 1) {
+      if (between_counter[frame] >= index1interval) {
+	aaindex = Alphabet_get_aa_index(high,low,watsonp,index1part_nt);
+#ifdef OLIGOSPACE_NOT_LONG
+	oligoi = (Oligospace_T) aaindex + 1U;
+#else
+	oligoi = (Oligospace_T) aaindex + 1UL;
+#endif
+	offsets[oligoi] += 1;
+	debug1(
+	       aa = aaindex_aa(aaindex);
+	       if (watsonp == true) {
+		 printf("Storing %s (%u) at %u\n",aa,aaindex,position-index1part_nt+1U);
+	       } else {
+		 printf("Storing %s (%u) at %u\n",aa,aaindex,position);
+	       }
+	       FREE(aa);
+	       );
+	between_counter[frame] = 0;
+      }
+      in_counter[frame] -= 1;
+    }
+#else
+    if (in_counter == index1part) {
+      if (
+#ifdef NONMODULAR
+	  between_counter >= index1interval
+#else
+	  (chrpos-index1part+1U) % index1interval == 0
+#endif
+	  ) {
+	masked = oligo & mask;
+#ifdef OLIGOSPACE_NOT_LONG
+	oligoi = (Oligospace_T) masked + 1U;
+#else
+	oligoi = (Oligospace_T) masked + 1UL;
+#endif
+	offsets[oligoi] += 1;
+	debug(printf("Found oligo %06X.  Incremented offsets for %lu to be %u\n",
+		     masked,oligoi,offsets[oligoi]));
+	between_counter = 0;
+      }
+      in_counter--;
+    }
+#endif
+
+    chrpos++;			/* Needs to go here, before we reset chrpos to 0 */
+    if (position >= next_chrbound) {
+#ifdef PMAP
+      high = low = carry = 0U;
+      in_counter[0] = in_counter[1] = in_counter[2] = 0;
+#else
+      oligo = 0U; in_counter = 0;
+#endif
+      chrpos = 0U;
+      chrnum++;
+      while (chrnum <= nchrs && (next_chrbound = Univ_IIT_next_chrbound(chromosome_iit,chrnum,circular_typeint)) < position) {
+	chrnum++;
+      }
+    }
+    position++;
+  }
+
+
+#ifdef ADDSENTINEL
+  for (oligoi = 1; oligoi <= oligospace; oligoi++) {
+    offsets[oligoi] = offsets[oligoi] + offsets[oligoi-1] + 1U;
+    debug(if (offsets[oligoi] != offsets[oligoi-1]) {
+	    printf("Offset for %06X: %u\n",oligoi,offsets[oligoi]);
+	  });
+  }
+#else
+  for (oligoi = 1; oligoi <= oligospace; oligoi++) {
+    offsets[oligoi] = offsets[oligoi] + offsets[oligoi-1];
+    debug(if (offsets[oligoi] != offsets[oligoi-1]) {
+	    printf("Offset for %06X: %u\n",oligoi,offsets[oligoi]);
+	  });
+  }
+#endif
+
+  /*
+  fprintf(stderr,"Offset for A...A is %u to %u\n",offsets[0],offsets[1]);
+  fprintf(stderr,"Offset for T...T is %u to %u\n",offsets[oligospace-1],offsets[oligospace]);
+  */
+
+#ifdef PMAP
+  if (watsonp == true) {
+    filesuffix = FWD_FILESUFFIX;
+  } else {
+    filesuffix = REV_FILESUFFIX;
+  }
+#else
+  filesuffix = IDX_FILESUFFIX;
+#endif
+
+  if (compression_types == NO_COMPRESSION) {
+    /* New convention.  Previously this was called offsetsstrm.  Will
+       need to create a symbolic link for backward compatibility */
+    offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+				      strlen(".")+strlen(filesuffix)+
+				      /*for kmer*/2+/*for interval char*/1+
+				      strlen("offsets")+1,sizeof(char));
+#ifdef PMAP
+    sprintf(offsetsfile,"%s/%s.%s.%s%d%c%s",
+	    destdir,fileroot,Alphabet_string(alphabet),filesuffix,index1part_aa,interval_char,"offsets");
+#else
+    sprintf(offsetsfile,"%s/%s.%s%02d%c%s",
+	    destdir,fileroot,filesuffix,index1part,interval_char,"offsets");
+#endif
+
+    if ((offsets_fp = FOPEN_WRITE_BINARY(offsetsfile)) == NULL) {
+      fprintf(stderr,"Can't write to file %s\n",offsetsfile);
+      exit(9);
+    } else {
+      fprintf(stderr,"Writing %lu offsets to file with total of %u k-mers...",oligospace+1,offsets[oligospace]);
+      FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
+      fprintf(stderr,"done\n");
+    }
+    fclose(offsets_fp);
+    FREE(offsetsfile);
+
+  } else {
+    if (compression_types & BITPACK64_COMPRESSION) {
+      pointersfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+				     strlen(".")+strlen(filesuffix)+
+				     /*for kmer*/2+/*for interval char*/1+
+				     strlen("offsets64meta")+1,sizeof(char));
+#ifdef PMAP
+      sprintf(pointersfile,"%s/%s.%s.%s%d%c%s",
+	      destdir,fileroot,Alphabet_string(alphabet),filesuffix,index1part_aa,interval_char,"offsets64meta");
+#else
+      sprintf(pointersfile,"%s/%s.%s%02d%c%s",
+	      destdir,fileroot,filesuffix,index1part,interval_char,"offsets64meta");
+#endif
+	
+      offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+				    strlen(".")+strlen(filesuffix)+
+				    /*for kmer*/2+/*for interval char*/1+
+				    strlen("offsets64strm")+1,sizeof(char));
+#ifdef PMAP
+      sprintf(offsetsfile,"%s/%s.%s.%s%d%c%s",
+	      destdir,fileroot,Alphabet_string(alphabet),filesuffix,index1part_aa,interval_char,"offsets64strm");
+#else
+      sprintf(offsetsfile,"%s/%s.%s%02d%c%s",
+	      destdir,fileroot,filesuffix,index1part,interval_char,"offsets64strm");
+#endif
+
+#ifdef OLIGOSPACE_NOT_LONG
+      fprintf(stderr,"Writing %u offsets compressed via bitpack64 to file with total of %u k-mers...",oligospace+1U,offsets[oligospace]);
+#else
+      fprintf(stderr,"Writing %lu offsets compressed via bitpack64 to file with total of %u k-mers...",oligospace+1UL,offsets[oligospace]);
+#endif
+
+      Bitpack64_write_differential(pointersfile,offsetsfile,offsets,oligospace);
+#ifdef PMAP
+      /* 20-mers do not coincide with 64-element blocks */
+#else
+      if (offsets[oligospace] == 0) {
+	/* Don't check bitpack, which will crash on an empty file */
+      } else {
+	fprintf(stderr,"Checking bitpack...");
+	check_offsets_from_bitpack(pointersfile,offsetsfile,offsets,oligospace,/*blocksize*/64);
+      }
+      fprintf(stderr,"done\n");
+#endif
+
+      FREE(offsetsfile);
+      FREE(pointersfile);
+    }
+  }
+  
+  FREE(offsets);
+
+  return;
+}
+
+
+#ifdef HAVE_64_BIT
+void
+Indexdb_write_offsets_huge (char *destdir, char interval_char, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+#ifdef PMAP
+			    Alphabet_T alphabet, Width_T index1part_aa, bool watsonp,
+#else
+			    Width_T index1part,
+#endif
+			    Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
+			    int compression_types) {
+  char *uppercaseCode;
+  char *pagesfile, *pointersfile, *offsetsfile;
+  char *filesuffix;
+
+  /* If offsets[oligospace] > 2^32, then we allocate and write 8-mers for offsets file */
+  Hugepositionsptr_T *offsets;
+
+  char *comma;
+  int c, nchrs, chrnum;
+  Oligospace_T oligospace, oligoi;
+  Univcoord_T position = 0, next_chrbound;
+  Chrpos_T chrpos = 0U;
+#ifdef PMAP
+  int alphabet_size;
+  int frame = -1, between_counter[3], in_counter[3];
+  Storedoligomer_T high = 0U, low = 0U, carry;
+  Storedoligomer_T aaindex;
+  int index1part_nt = 3*index1part_aa;
+#else
+  int between_counter = 0, in_counter = 0;
+  Storedoligomer_T oligo = 0U, masked, mask;
+#endif
+#ifdef DEBUG1
+  char *aa;
+#endif
+
+  int blocksize;
+  int circular_typeint;
+
+  if (mask_lowercase_p == false) {
+    uppercaseCode = UPPERCASE_U2T; /* We are reading DNA sequence */
+  } else {
+    uppercaseCode = NO_UPPERCASE;
+  }
+
+#ifdef PMAP
+  alphabet_size = Alphabet_get_size(alphabet);
+  oligospace = power(alphabet_size,index1part_aa);
+  between_counter[0] = between_counter[1] = between_counter[2] = 0;
+  in_counter[0] = in_counter[1] = in_counter[2] = 0;
+#ifdef OLIGOSPACE_NOT_LONG
+  fprintf(stderr,"Allocating %u*%lu bytes for offsets\n",oligospace+1U,sizeof(Hugepositionsptr_T));
+#else
+  fprintf(stderr,"Allocating %lu*%lu bytes for offsets\n",oligospace+1UL,sizeof(Hugepositionsptr_T));
+#endif
+  offsets = (Hugepositionsptr_T *) CALLOC_NO_EXCEPTION(oligospace+1,sizeof(Hugepositionsptr_T));
+  if (offsets == NULL) {
+#ifdef OLIGOSPACE_NOT_LONG
+    fprintf(stderr,"Unable to allocate %u bytes of memory, needed to build offsets with %d-mers\n",oligospace+1U,index1part_aa);
+#else
+    fprintf(stderr,"Unable to allocate %lu bytes of memory, needed to build offsets with %d-mers\n",oligospace+1UL,index1part_aa);
+#endif
+    fprintf(stderr,"Either find a computer with more RAM, or lower your value for the k-mer size\n");
+    exit(9);
+  }
+#else
+  mask = ~(~0UL << 2*index1part);
+  oligospace = power(4,index1part);
+#ifdef OLIGOSPACE_NOT_LONG
+  fprintf(stderr,"Allocating %u*%lu bytes for offsets\n",oligospace+1U,sizeof(Hugepositionsptr_T));
+#else
+  fprintf(stderr,"Allocating %lu*%lu bytes for offsets\n",oligospace+1UL,sizeof(Hugepositionsptr_T));
+#endif
+  offsets = (Hugepositionsptr_T *) CALLOC_NO_EXCEPTION(oligospace+1,sizeof(Hugepositionsptr_T));
+  if (offsets == NULL) {
+#ifdef OLIGOSPACE_NOT_LONG
+    fprintf(stderr,"Unable to allocate %u bytes of memory, needed to build offsets with %d-mers\n",oligospace+1U,index1part);
+#else
+    fprintf(stderr,"Unable to allocate %lu bytes of memory, needed to build offsets with %d-mers\n",oligospace+1UL,index1part);
+#endif
+    fprintf(stderr,"Either find a computer with more RAM, or lower your value for the k-mer size\n");
+    exit(9);
+  }
+#endif
+
+  /* Handle reference strain */
+  circular_typeint = Univ_IIT_typeint(chromosome_iit,"circular");
+  chrnum = 1;
+  nchrs = Univ_IIT_total_nintervals(chromosome_iit);
+  next_chrbound = Univ_IIT_next_chrbound(chromosome_iit,chrnum,circular_typeint);
+
+  while ((c = Compress_get_char(sequence_fp,position,genome_lc_p)) != EOF) {
+#ifdef PMAP
+    if (++frame == 3) {
+      frame = 0;
+    }
+    between_counter[frame] += 1;
+    in_counter[frame] += 1;
+#else
+    between_counter++;
+    in_counter++;
+#endif
+
+    if (position % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(position);
+#ifdef PMAP
+      fprintf(stderr,"Indexing offsets of oligomers in genome %s (%d aa every %d aa), position %s",
+	      fileroot,index1part_aa,index1interval,comma);
+#else
+      fprintf(stderr,"Indexing offsets of oligomers in genome %s (%d bp every %d bp), position %s",
+	      fileroot,index1part,index1interval,comma);
+#endif
+      FREE(comma);
+#ifdef PMAP
+      if (watsonp == true) {
+	fprintf(stderr," (fwd)");
+      } else {
+	fprintf(stderr," (rev)");
+      }
+#endif
+      fprintf(stderr,"\n");
+    }
+
+#ifdef PMAP
+    carry = (low >> 30);
+    switch (uppercaseCode[c]) {
+    case 'A': low = (low << 2); break;
+    case 'C': low = (low << 2) | 1U; break;
+    case 'G': low = (low << 2) | 2U; break;
+    case 'T': low = (low << 2) | 3U; break;
+    case 'X': case 'N': 
+      high = low = carry = 0U; 
+      in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      break;
+    default: 
+      if (genome_lc_p == true) {
+	high = low = carry = 0U;
+	in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      } else {
+	fprintf(stderr,"Bad character %c at position %u\n",c,position);
+	abort();
+      }
+    }
+    high = (high << 2) | carry; 
+#else
+    switch (uppercaseCode[c]) {
+    case 'A': oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1U; break;
+    case 'G': oligo = (oligo << 2) | 2U; break;
+    case 'T': oligo = (oligo << 2) | 3U; break;
+    case 'X': case 'N': oligo = 0U; in_counter = 0; break;
+    default: 
+      if (genome_lc_p == true) {
+	oligo = 0U; in_counter = 0;
+      } else {
+	fprintf(stderr,"Bad character %c at position %lu\n",c,position);
+	abort();
+      }
+    }
+#endif
+
+#ifdef PMAP
+    debug(printf("frame=%d char=%c bc=%d ic=%d high=%08X low=%08X\n",
+		 frame,c,between_counter[frame],in_counter[frame],high,low));
+
+    if (in_counter[frame] > 0) {
+      if (watsonp == true) {
+	if (Alphabet_get_codon_fwd(low) == AA_STOP) {
+	  debug(printf("Resetting in_counter for frame %d to 0\n",frame));
+	  in_counter[frame] = 0; 
+	}
+      } else {
+	if (Alphabet_get_codon_rev(low) == AA_STOP) {
+	  debug(printf("Resetting in_counter for frame %d to 0\n",frame));
+	  in_counter[frame] = 0; 
+	}
+      }
+    }
+    if (in_counter[frame] == index1part_aa + 1) {
+      if (between_counter[frame] >= index1interval) {
+	aaindex = Alphabet_get_aa_index(high,low,watsonp,index1part_nt);
+#ifdef OLIGOSPACE_NOT_LONG
+	oligoi = (Oligospace_T) aaindex + 1U;
+#else
+	oligoi = (Oligospace_T) aaindex + 1UL;
+#endif
+	offsets[oligoi] += 1;
+	debug1(
+	       aa = aaindex_aa(aaindex);
+	       if (watsonp == true) {
+		 printf("Storing %s (%u) at %u\n",aa,aaindex,position-index1part_nt+1U);
+	       } else {
+		 printf("Storing %s (%u) at %u\n",aa,aaindex,position);
+	       }
+	       FREE(aa);
+	       );
+	between_counter[frame] = 0;
+      }
+      in_counter[frame] -= 1;
+    }
+#else
+    if (in_counter == index1part) {
+      if (
+#ifdef NONMODULAR
+	  between_counter >= index1interval
+#else
+	  (chrpos-index1part+1U) % index1interval == 0
+#endif
+	  ) {
+	masked = oligo & mask;
+#ifdef OLIGOSPACE_NOT_LONG
+	oligoi = (Oligospace_T) masked + 1U;
+#else
+	oligoi = (Oligospace_T) masked + 1UL;
+#endif
+	offsets[oligoi] += 1;
+	debug(printf("Found oligo %06X.  Incremented offsets for %lu to be %u\n",
+		     masked,oligoi,offsets[oligoi]));
+	between_counter = 0;
+      }
+      in_counter--;
+    }
+#endif
+
+    chrpos++;			/* Needs to go here, before we reset chrpos to 0 */
+    if (position >= next_chrbound) {
+#ifdef PMAP
+      high = low = carry = 0U;
+      in_counter[0] = in_counter[1] = in_counter[2] = 0;
+#else
+      oligo = 0U; in_counter = 0;
+#endif
+      chrpos = 0U;
+      chrnum++;
+      while (chrnum <= nchrs && (next_chrbound = Univ_IIT_next_chrbound(chromosome_iit,chrnum,circular_typeint)) < position) {
+	chrnum++;
+      }
+    }
+    position++;
+  }
+
+
+#ifdef ADDSENTINEL
+  for (oligoi = 1; oligoi <= oligospace; oligoi++) {
+    offsets[oligoi] = offsets[oligoi] + offsets[oligoi-1] + 1U;
+    debug(if (offsets[oligoi] != offsets[oligoi-1]) {
+	    printf("Offset for %06X: %u\n",oligoi,offsets[oligoi]);
+	  });
+  }
+#else
+  for (oligoi = 1; oligoi <= oligospace; oligoi++) {
+    offsets[oligoi] = offsets[oligoi] + offsets[oligoi-1];
+    debug(if (offsets[oligoi] != offsets[oligoi-1]) {
+	    printf("Offset for %06X: %u\n",oligoi,offsets[oligoi]);
+	  });
+  }
+#endif
+
+  /*
+  fprintf(stderr,"Offset for A...A is %u to %u\n",offsets[0],offsets[1]);
+  fprintf(stderr,"Offset for T...T is %u to %u\n",offsets[oligospace-1],offsets[oligospace]);
+  */
+
+#ifdef PMAP
+  if (watsonp == true) {
+    filesuffix = FWD_FILESUFFIX;
+  } else {
+    filesuffix = REV_FILESUFFIX;
+  }
+#else
+  filesuffix = IDX_FILESUFFIX;
+#endif
+
+  if (compression_types == NO_COMPRESSION) {
+    fprintf(stderr,"Not supporting non-compression on huge genomes\n");
+    abort();
+
+  } else {
+    if (compression_types & BITPACK64_COMPRESSION) {
+#ifdef PMAP
+      /* blocksize = power(alphabet_size,index1part_aa - offsetsstrm_basesize); */
+#else
+      blocksize = 64; /* power(4,index1part - offsetsstrm_basesize); */
+#endif
+      pagesfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+				  strlen(".")+strlen(filesuffix)+
+				  /*for kmer*/2+/*for interval char*/1+
+				  strlen("offsets64pages")+1,sizeof(char));
+#ifdef PMAP
+      sprintf(pagesfile,"%s/%s.%s.%s%d%c%s",
+	      destdir,fileroot,Alphabet_string(alphabet),filesuffix,index1part_aa,interval_char,"offsets64pages");
+#else
+      sprintf(pagesfile,"%s/%s.%s%02d%c%s",
+	      destdir,fileroot,filesuffix,index1part,interval_char,"offsets64pages");
+#endif
+
+      pointersfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+				     strlen(".")+strlen(filesuffix)+
+				     /*for kmer*/2+/*for interval char*/1+
+				     strlen("offsets64meta")+1,sizeof(char));
+#ifdef PMAP
+      sprintf(pointersfile,"%s/%s.%s.%s%d%c%s",
+	      destdir,fileroot,Alphabet_string(alphabet),filesuffix,index1part_aa,interval_char,"offsets64meta");
+#else
+      sprintf(pointersfile,"%s/%s.%s%02d%c%s",
+	      destdir,fileroot,filesuffix,index1part,interval_char,"offsets64meta");
+#endif
+	
+      offsetsfile = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+				    strlen(".")+strlen(filesuffix)+
+				    /*for kmer*/2+/*for interval char*/1+
+				    strlen("offsets64strm")+1,sizeof(char));
+#ifdef PMAP
+      sprintf(offsetsfile,"%s/%s.%s.%s%d%c%s",
+	      destdir,fileroot,Alphabet_string(alphabet),filesuffix,index1part_aa,interval_char,"offsets64strm");
+#else
+      sprintf(offsetsfile,"%s/%s.%s%02d%c%s",
+	      destdir,fileroot,filesuffix,index1part,interval_char,"offsets64strm");
+#endif
+
+#ifdef OLIGOSPACE_NOT_LONG
+      fprintf(stderr,"Writing %u offsets compressed via bitpack to file with total of %lu k-mers...",oligospace+1U,offsets[oligospace]);
+#else
+      fprintf(stderr,"Writing %lu offsets compressed via bitpack to file with total of %lu k-mers...",oligospace+1UL,offsets[oligospace]);
+#endif
+
+      Bitpack64_write_differential_huge(pagesfile,pointersfile,offsetsfile,offsets,oligospace);
+#ifndef PMAP
+      if (offsets[oligospace] == 0) {
+	/* Don't check bitpack, which will crash on an empty file */
+      } else {
+	fprintf(stderr,"Checking bitpack...");
+	check_offsets_from_bitpack_huge(pagesfile,pointersfile,offsetsfile,offsets,oligospace,/*blocksize*/64);
+      }
+      fprintf(stderr,"done\n");
+#endif
+
+      FREE(offsetsfile);
+      FREE(pointersfile);
+      FREE(pagesfile);
+    }
+  }
+  
+  FREE(offsets);
 
   return;
 }
+#endif
 
 
 /* FILE *fp is preferable to int fd, because former is buffered.  No
@@ -678,78 +1165,327 @@ offsetsfile_move_absolute (FILE *fp, int ptr) {
   return;
 }
 #endif
-
-
-#if 0
-static bool
-need_to_sort_p (Univcoord_T *positions, int length) {
-  Univcoord_T prevpos;
-  int j;
-
-  prevpos = positions[0];
-  for (j = 1; j < length; j++) {
-    if (positions[j] <= prevpos) {
-      return true;
-    } else {
-      prevpos = positions[j];
+
+
+#if 0
+static bool
+need_to_sort_p (Univcoord_T *positions, int length) {
+  Univcoord_T prevpos;
+  int j;
+
+  prevpos = positions[0];
+  for (j = 1; j < length; j++) {
+    if (positions[j] <= prevpos) {
+      return true;
+    } else {
+      prevpos = positions[j];
+    }
+  }
+  return false;
+}
+#endif
+
+
+static void
+positions_move_absolute_1 (int positions_fd, Positionsptr_T ptr) {
+  off_t offset = ptr*((off_t) sizeof(unsigned char));
+
+  if (lseek(positions_fd,offset,SEEK_SET) < 0) {
+    fprintf(stderr,"Attempted to do lseek on offset %u*%lu=%lu\n",ptr,sizeof(unsigned char),offset);
+    perror("Error in indexdb.c, positions_move_absolute_1");
+    exit(9);
+  }
+  return;
+}
+
+static void
+positions_move_absolute_4 (int positions_fd, Positionsptr_T ptr) {
+  off_t offset = ptr*((off_t) sizeof(UINT4));
+
+  if (lseek(positions_fd,offset,SEEK_SET) < 0) {
+    fprintf(stderr,"Attempted to do lseek on offset %u*%lu=%lu\n",ptr,sizeof(UINT4),offset);
+    perror("Error in indexdb.c, positions_move_absolute_4");
+    exit(9);
+  }
+  return;
+}
+
+#if 0
+/* Replaced by positions_move_absolute_1 and positions_move_absolute_4 */
+static void
+positions_move_absolute_8 (int positions_fd, Positionsptr_T ptr) {
+  off_t offset = ptr*((off_t) sizeof(UINT8));
+
+  if (lseek(positions_fd,offset,SEEK_SET) < 0) {
+    fprintf(stderr,"Attempted to do lseek on offset %u*%lu=%lu\n",ptr,sizeof(UINT8),offset);
+    perror("Error in indexdb.c, positions_move_absolute_8");
+    exit(9);
+  }
+  return;
+}
+#endif
+
+
+/* Works directly in file, so we don't need to allocate memory */
+static void
+compute_positions_in_file (int positions_high_fd, int positions_low_fd, Positionsptr_T *offsets,
+			   FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+#ifdef PMAP
+			   Width_T index1part_aa, bool watsonp,
+#else
+			   Width_T index1part,
+#endif
+			   Width_T index1interval, bool genome_lc_p, char *fileroot,
+			   bool mask_lowercase_p, bool coord_values_8p) {
+  char *uppercaseCode;
+  Univcoord_T position = 0, next_chrbound;
+  UINT8 adjposition8;
+  UINT4 adjposition4;
+  Chrpos_T chrpos = 0U;
+  char *comma;
+  int c, nchrs, chrnum;
+#ifdef PMAP
+  int frame = -1, between_counter[3], in_counter[3];
+  Storedoligomer_T high = 0U, low = 0U, carry;
+  Oligospace_T aaindex;
+  Width_T index1part_nt = 3*index1part_aa;
+#else
+  int between_counter = 0, in_counter = 0;
+  Storedoligomer_T oligo = 0U, masked, mask;
+#endif
+  int circular_typeint;
+
+#ifdef ADDSENTINEL
+  Oligospace_T oligospace, oligoi;
+  oligospace = power(4,index1part);
+#endif
+
+  if (mask_lowercase_p == false) {
+    uppercaseCode = UPPERCASE_U2T; /* We are reading DNA sequence */
+  } else {
+    uppercaseCode = NO_UPPERCASE;
+  }
+
+#ifdef PMAP
+  /* oligospace = power(alphabet_size,index1part_aa); */
+#else
+  mask = ~(~0UL << 2*index1part);
+  /* oligospace = power(4,index1part); */
+#endif
+
+  /* Handle reference strain */
+  circular_typeint = Univ_IIT_typeint(chromosome_iit,"circular");
+  chrnum = 1;
+  nchrs = Univ_IIT_total_nintervals(chromosome_iit);
+  next_chrbound = Univ_IIT_next_chrbound(chromosome_iit,chrnum,circular_typeint);
+
+  while ((c = Compress_get_char(sequence_fp,position,genome_lc_p)) != EOF) {
+#ifdef PMAP
+    if (++frame == 3) {
+      frame = 0;
+    }
+    between_counter[frame] += 1;
+    in_counter[frame] += 1;
+#else
+    between_counter++;
+    in_counter++;
+#endif
+
+    if (position % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(position);
+#ifdef PMAP
+      fprintf(stderr,"Indexing positions of oligomers in genome %s (%d aa every %d aa), position %s",
+	      fileroot,index1part_aa,index1interval,comma);
+#else
+      fprintf(stderr,"Indexing positions of oligomers in genome %s (%d bp every %d bp), position %s",
+	      fileroot,index1part,index1interval,comma);
+#endif
+      FREE(comma);
+#ifdef PMAP
+      if (watsonp == true) {
+	fprintf(stderr," (fwd)");
+      } else {
+	fprintf(stderr," (rev)");
+      }
+#endif
+      fprintf(stderr,"\n");
+    }
+
+#ifdef PMAP
+    carry = (low >> 30);
+    switch (uppercaseCode[c]) {
+    case 'A': low = (low << 2); break;
+    case 'C': low = (low << 2) | 1; break;
+    case 'G': low = (low << 2) | 2; break;
+    case 'T': low = (low << 2) | 3; break;
+    case 'X': case 'N': 
+      high = low = carry = 0U;
+      in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      break;
+    default: 
+      if (genome_lc_p == true) {
+	high = low = carry = 0U;
+	in_counter[0] = in_counter[1] = in_counter[2] = 0;
+      } else {
+	fprintf(stderr,"Bad character %c at position %u\n",c,position);
+	abort();
+      }
+    }
+    high = (high << 2) | carry; 
+#else
+    switch (uppercaseCode[c]) {
+    case 'A': oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    case 'X': case 'N': oligo = 0U; in_counter = 0; break;
+    default: 
+      if (genome_lc_p == true) {
+	oligo = 0U; in_counter = 0;
+      } else {
+	fprintf(stderr,"Bad character %c at position %lu\n",c,position);
+	abort();
+      }
+    }
+#endif
+
+    /*
+    debug(printf("char=%c bc=%d ic=%d oligo=%016lX\n",
+		 c,between_counter,in_counter,oligo));
+    */
+    
+#ifdef PMAP
+    if (in_counter[frame] > 0) {
+      if (watsonp == true) {
+	if (Alphabet_get_codon_fwd(low) == AA_STOP) {
+	  in_counter[frame] = 0; 
+	}
+      } else {
+	if (Alphabet_get_codon_rev(low) == AA_STOP) {
+	  in_counter[frame] = 0; 
+	}
+      }
+    }
+    if (in_counter[frame] == index1part_aa + 1) {
+      if (between_counter[frame] >= index1interval) {
+	aaindex = Alphabet_get_aa_index(high,low,watsonp,index1part_nt);
+	if (coord_values_8p == true) {
+	  positions_move_absolute_1(positions_high_fd,offsets[aaindex]);
+	  positions_move_absolute_4(positions_low_fd,offsets[aaindex]);
+	  offsets[aaindex] += 1;
+	  if (watsonp == true) {
+	    adjposition8 =  position - index1part_nt + 1;
+	  } else {
+	    adjposition8 = position;
+	  }
+	  WRITE_CHAR((unsigned char) (adjposition8 >> POSITIONS8_HIGH_SHIFT),positions_high_fd);
+	  WRITE_UINT((UINT4) (adjposition8 & POSITIONS8_LOW_MASK),positions_low_fd);
+	} else {
+	  positions_move_absolute_4(positions_low_fd,offsets[aaindex]);
+	  offsets[aaindex] += 1;
+	  if (watsonp == true) {
+	    adjposition4 = (UINT4) (position - index1part_nt + 1);
+	  } else {
+	    adjposition4 = (UINT4) position;
+	  }
+	  WRITE_UINT(adjposition4,positions_low_fd);
+	}
+	between_counter[frame] = 0;
+      }
+      in_counter[frame] -= 1;
+    }
+#else
+    if (in_counter == index1part) {
+      if (
+#ifdef NONMODULAR
+	  between_counter >= index1interval
+#else
+	  (chrpos-index1part+1U) % index1interval == 0
+#endif
+	  ) {
+	masked = oligo & mask;
+	if (coord_values_8p == true) {
+	  positions_move_absolute_1(positions_high_fd,offsets[masked]);
+	  positions_move_absolute_4(positions_low_fd,offsets[masked]);
+	  offsets[masked] += 1;
+	  adjposition8 = position - index1part + 1;
+	  WRITE_CHAR((unsigned char) (adjposition8 >> POSITIONS8_HIGH_SHIFT),positions_high_fd);
+	  WRITE_UINT((UINT4) (adjposition8 & POSITIONS8_LOW_MASK),positions_low_fd);
+	} else {
+	  positions_move_absolute_4(positions_low_fd,offsets[masked]);
+	  offsets[masked] += 1;
+	  adjposition4 = (UINT4) (position - index1part + 1);
+	  WRITE_UINT(adjposition4,positions_low_fd);
+	}
+	between_counter = 0;
+      }
+      in_counter--;
+    }
+#endif
+    
+    chrpos++;			/* Needs to go here, before we reset chrpos to 0 */
+    if (position >= next_chrbound) {
+#ifdef PMAP
+      high = low = carry = 0U;
+      in_counter[0] = in_counter[1] = in_counter[2] = 0;
+#else
+      oligo = 0U; in_counter = 0;
+#endif
+      chrpos = 0U;
+      chrnum++;
+      while (chrnum <= nchrs && (next_chrbound = Univ_IIT_next_chrbound(chromosome_iit,chrnum,circular_typeint)) < position) {
+	chrnum++;
+      }
     }
+    position++;
   }
-  return false;
-}
-#endif
-
-
-static void
-positions_move_absolute_4 (int positions_fd, Positionsptr_T ptr) {
-  off_t offset = ptr*((off_t) sizeof(UINT4));
 
-  if (lseek(positions_fd,offset,SEEK_SET) < 0) {
-    fprintf(stderr,"Attempted to do lseek on offset %u*%lu=%lu\n",ptr,sizeof(UINT4),offset);
-    perror("Error in indexdb.c, positions_move_absolute_4");
-    exit(9);
+#ifdef ADDSENTINEL
+  if (coord_values_8p == true) {
+    for (oligoi = 0; oligoi < oligospace; oligoi++) {
+      positions_move_absolute_1(positions_high_fd,offsets[oligoi]);
+      positions_move_absolute_4(positions_low_fd,offsets[oligoi]);
+      WRITE_CHAR((unsigned char) (-1UL >> POSITIONS8_HIGH_SHIFT),positions_high_fd);
+      WRITE_UINT((UINT4) (-1UL & POSITIONS8_LOW_SHIFT),positions_low_fd);
+    }
+  } else {
+    for (oligoi = 0; oligoi < oligospace; oligoi++) {
+      positions_move_absolute_4(positions_low_fd,offsets[oligoi]);
+      WRITE_UINT(-1U,positions_low_fd);
+    }
   }
-  return;
-}
-
-static void
-positions_move_absolute_8 (int positions_fd, Positionsptr_T ptr) {
-  off_t offset = ptr*((off_t) sizeof(UINT8));
+#endif
 
-  if (lseek(positions_fd,offset,SEEK_SET) < 0) {
-    fprintf(stderr,"Attempted to do lseek on offset %u*%lu=%lu\n",ptr,sizeof(UINT8),offset);
-    perror("Error in indexdb.c, positions_move_absolute_8");
-    exit(9);
-  }
   return;
 }
 
-
-/* Works directly in file, so we don't need to allocate memory */
+/* Requires sufficient memory to hold all positions */
 static void
-compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
-			   FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+compute_positions_in_memory (UINT4 *positions4, unsigned char *positions8_high, UINT4 *positions8_low,
+			     Positionsptr_T *offsets, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-			   int index1part_aa, bool watsonp,
+			     Width_T index1part_aa, bool watsonp,
 #else
-			   int index1part,
+			     Width_T index1part,
 #endif
-			   int index1interval, bool genome_lc_p, char *fileroot,
-			   bool mask_lowercase_p, bool coord_values_8p) {
+			     Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
+			     bool coord_values_8p) {
   char *uppercaseCode;
   Univcoord_T position = 0, next_chrbound;
-  UINT8 adjposition8;
-  UINT4 adjposition4;
   Chrpos_T chrpos = 0U;
   char *comma;
   int c, nchrs, chrnum;
+  UINT8 adjposition8;
 #ifdef PMAP
   int frame = -1, between_counter[3], in_counter[3];
   Storedoligomer_T high = 0U, low = 0U, carry;
-  Oligospace_T aaindex;
-  int index1part_nt = 3*index1part_aa;
+  Storedoligomer_T aaindex;
+  Width_T index1part_nt = 3*index1part_aa;
+  debug1(char *aa);
 #else
   int between_counter = 0, in_counter = 0;
   Storedoligomer_T oligo = 0U, masked, mask;
+  debug1(char *nt);
 #endif
   int circular_typeint;
 
@@ -765,10 +1501,10 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
   }
 
 #ifdef PMAP
-  /* oligospace = power(alphabet_size,index1part_aa); */
+  between_counter[0] = between_counter[1] = between_counter[2] = 0;
+  in_counter[0] = in_counter[1] = in_counter[2] = 0;
 #else
   mask = ~(~0UL << 2*index1part);
-  /* oligospace = power(4,index1part); */
 #endif
 
   /* Handle reference strain */
@@ -813,10 +1549,10 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
     carry = (low >> 30);
     switch (uppercaseCode[c]) {
     case 'A': low = (low << 2); break;
-    case 'C': low = (low << 2) | 1; break;
-    case 'G': low = (low << 2) | 2; break;
-    case 'T': low = (low << 2) | 3; break;
-    case 'X': case 'N': 
+    case 'C': low = (low << 2) | 1U; break;
+    case 'G': low = (low << 2) | 2U; break;
+    case 'T': low = (low << 2) | 3U; break;
+    case 'X': case 'N':
       high = low = carry = 0U;
       in_counter[0] = in_counter[1] = in_counter[2] = 0;
       break;
@@ -830,12 +1566,15 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
       }
     }
     high = (high << 2) | carry; 
+
+    debug(printf("frame=%d char=%c bc=%d ic=%d high=%08X low=%08X\n",
+		 frame,c,between_counter[frame],in_counter[frame],high,low));
 #else
     switch (uppercaseCode[c]) {
     case 'A': oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
+    case 'C': oligo = (oligo << 2) | 1U; break;
+    case 'G': oligo = (oligo << 2) | 2U; break;
+    case 'T': oligo = (oligo << 2) | 3U; break;
     case 'X': case 'N': oligo = 0U; in_counter = 0; break;
     default: 
       if (genome_lc_p == true) {
@@ -845,12 +1584,11 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
 	abort();
       }
     }
-#endif
 
-    /*
-    debug(printf("char=%c bc=%d ic=%d oligo=%016lX\n",
+    debug(printf("char=%c bc=%d ic=%d oligo=%08X\n",
 		 c,between_counter,in_counter,oligo));
-    */
+#endif
+
     
 #ifdef PMAP
     if (in_counter[frame] > 0) {
@@ -868,24 +1606,30 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
       if (between_counter[frame] >= index1interval) {
 	aaindex = Alphabet_get_aa_index(high,low,watsonp,index1part_nt);
 	if (coord_values_8p == true) {
-	  positions_move_absolute_8(positions_fd,offsets[aaindex]);
-	  offsets[aaindex] += 1;
 	  if (watsonp == true) {
-	    adjposition8 = position-index1part_nt+1U;
+	    adjposition8 = position - index1part_nt + 1;
+	    positions8_high[offsets[aaindex]/*++*/] = (unsigned char) (adjposition8 >> POSITIONS8_HIGH_SHIFT);
+	    positions8_low[offsets[aaindex]++] = (UINT4) (adjposition8 & POSITIONS8_LOW_MASK);
+	    debug1(adjposition = position-index1part_nt+1UL);
 	  } else {
-	    adjposition8 = position;
+	    positions8_high[offsets[aaindex]/*++*/] = (unsigned char) (position >> POSITIONS8_HIGH_SHIFT);
+	    positions8_low[offsets[aaindex]++] = (UINT4) (position & POSITIONS8_LOW_MASK);
+	    debug1(adjposition = position);
 	  }
-	  WRITE_UINT8(adjposition8,positions_fd);
 	} else {
-	  positions_move_absolute_4(positions_fd,offsets[aaindex]);
-	  offsets[aaindex] += 1;
 	  if (watsonp == true) {
-	    adjposition4 = (UINT4) (position-index1part_nt+1U);
+	    positions4[offsets[aaindex]++] = (UINT4) (position - index1part_nt + 1);
+	    debug1(adjposition = position - index1part_nt + 1);
 	  } else {
-	    adjposition4 = (UINT4) position;
+	    positions4[offsets[aaindex]++] = (UINT4) position;
+	    debug1(adjposition = position);
 	  }
-	  WRITE_UINT(adjposition4,positions_fd);
 	}
+	debug1(
+	       aa = aaindex_aa(aaindex);
+	       printf("Storing %s (%u) at %u\n",aa,aaindex,adjposition);
+	       FREE(aa);
+	       );
 	between_counter[frame] = 0;
       }
       in_counter[frame] -= 1;
@@ -900,17 +1644,23 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
 #endif
 	  ) {
 	masked = oligo & mask;
+#if 0
+	if (offsets[masked] >= totalcounts) {
+	  fprintf(stderr,"masked = %u, offsets[masked] = %u >= totalcounts %u\n",
+		  masked,offsets[masked],totalcounts);
+	  exit(9);
+	}
+#endif
 	if (coord_values_8p == true) {
-	  positions_move_absolute_8(positions_fd,offsets[masked]);
-	  offsets[masked] += 1;
-	  adjposition8 = position-index1part+1U;
-	  WRITE_UINT8(adjposition8,positions_fd);
+	  adjposition8 = position - index1part + 1;
+	  positions8_high[offsets[masked]/*++*/] = (unsigned char) (adjposition8 >> POSITIONS8_HIGH_SHIFT);
+	  positions8_low[offsets[masked]++] = (UINT4) (adjposition8 & POSITIONS8_LOW_MASK);
 	} else {
-	  positions_move_absolute_4(positions_fd,offsets[masked]);
-	  offsets[masked] += 1;
-	  adjposition4 = (UINT4) (position-index1part+1U);
-	  WRITE_UINT(adjposition4,positions_fd);
+	  positions4[offsets[masked]++] = (UINT4) (position - index1part + 1);
 	}
+	debug1(nt = shortoligo_nt(masked,index1part);
+	       printf("Storing %s at %lu, chrpos %u\n",nt,position-index1part+1U,chrpos-index1part+1U);
+	       FREE(nt));
 	between_counter = 0;
       }
       in_counter--;
@@ -919,6 +1669,7 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
     
     chrpos++;			/* Needs to go here, before we reset chrpos to 0 */
     if (position >= next_chrbound) {
+      debug1(printf("Skipping because position %u is at chrbound\n",position));
 #ifdef PMAP
       high = low = carry = 0U;
       in_counter[0] = in_counter[1] = in_counter[2] = 0;
@@ -937,41 +1688,50 @@ compute_positions_in_file (int positions_fd, Positionsptr_T *offsets,
 #ifdef ADDSENTINEL
   if (coord_values_8p == true) {
     for (oligoi = 0; oligoi < oligospace; oligoi++) {
-      positions_move_absolute_8(positions_fd,offsets[oligoi]);
-      WRITE_UINT8(-1UL,positions_fd);
+      positions8_high[offsets[oligoi]] = (unsigned char) (-1UL >> POSITIONS8_HIGH_SHIFT);
+      positions8_low[offsets[oligoi]] = (UINT4) (-1UL & POSITIONS8_LOW_MASK);
     }
   } else {
     for (oligoi = 0; oligoi < oligospace; oligoi++) {
-      positions_move_absolute_4(positions_fd,offsets[oligoi]);
-      WRITE_UINT(-1U,positions_fd);
+      positions4[offsets[oligoi]] = (UINT4) -1U;
     }
   }
+  /*
+  fprintf(stderr,"Put a sentinel at %u\n",offsets[0]);
+  fprintf(stderr,"Put a sentinel at %u\n",offsets[oligospace-2]);
+  fprintf(stderr,"Put a sentinel at %u\n",offsets[oligospace-1]);
+  */
 #endif
 
   return;
 }
 
+
+#ifdef HAVE_64_BIT
 /* Requires sufficient memory to hold all positions */
+/* Main difference is that we use Hugepositionsptr_T * for offsets.
+   Also, huge genome implies large genome, so need only positions8. */
 static void
-compute_positions_in_memory (UINT4 *positions4, UINT8 *positions8, Positionsptr_T *offsets,
-			     FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+compute_positions_in_memory_huge (UINT4 *positions4, unsigned char *positions8_high, UINT4 *positions8_low,
+				  Hugepositionsptr_T *offsets, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-			     int index1part_aa, bool watsonp,
+				  Width_T index1part_aa, bool watsonp,
 #else
-			     int index1part,
+				  Width_T index1part,
 #endif
-			     int index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
-			     bool coord_values_8p) {
+				  Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
+				  bool coord_values_8p) {
   char *uppercaseCode;
   Univcoord_T position = 0, next_chrbound;
   Chrpos_T chrpos = 0U;
   char *comma;
   int c, nchrs, chrnum;
+  UINT8 adjposition8;
 #ifdef PMAP
   int frame = -1, between_counter[3], in_counter[3];
   Storedoligomer_T high = 0U, low = 0U, carry;
   Storedoligomer_T aaindex;
-  int index1part_nt = 3*index1part_aa;
+  Width_T index1part_nt = 3*index1part_aa;
   debug1(char *aa);
 #else
   int between_counter = 0, in_counter = 0;
@@ -1098,10 +1858,13 @@ compute_positions_in_memory (UINT4 *positions4, UINT8 *positions8, Positionsptr_
 	aaindex = Alphabet_get_aa_index(high,low,watsonp,index1part_nt);
 	if (coord_values_8p == true) {
 	  if (watsonp == true) {
-	    positions8[offsets[aaindex]++] = position-index1part_nt+1UL;
-	    debug1(adjposition = position-index1part_nt+1UL);
+	    adjposition8 = position - index1part_nt + 1;
+	    positions8_high[offsets[aaindex]/*++*/] = (unsigned char) (adjposition8 >> POSITIONS8_HIGH_SHIFT);
+	    positions8_low[offsets[aaindex]++] = (UINT4) (adjposition8 & POSITIONS8_LOW_MASK);
+	    debug1(adjposition = position-index1part_nt+1);
 	  } else {
-	    positions8[offsets[aaindex]++] = position;
+	    positions8_high[offsets[aaindex]/*++*/] = (unsigned char) (position >> POSITIONS8_HIGH_SHIFT);
+	    positions8_low[offsets[aaindex]++] = (UINT4) (position & POSITIONS8_LOW_MASK);
 	    debug1(adjposition = position);
 	  }
 	} else {
@@ -1140,9 +1903,11 @@ compute_positions_in_memory (UINT4 *positions4, UINT8 *positions8, Positionsptr_
 	}
 #endif
 	if (coord_values_8p == true) {
-	  positions8[offsets[masked]++] = position-index1part+1U;
+	  adjposition8 = position - index1part + 1;
+	  positions8_high[offsets[masked]/*++*/] = (unsigned char) (adjposition8 >> POSITIONS8_HIGH_SHIFT);
+	  positions8_low[offsets[masked]++] = (UINT4) (adjposition8 & POSITIONS8_LOW_MASK);
 	} else {
-	  positions4[offsets[masked]++] = (UINT4) (position-index1part+1U);
+	  positions4[offsets[masked]++] = (UINT4) (position - index1part + 1);
 	}
 	debug1(nt = shortoligo_nt(masked,index1part);
 	       printf("Storing %s at %lu, chrpos %u\n",nt,position-index1part+1U,chrpos-index1part+1U);
@@ -1174,7 +1939,8 @@ compute_positions_in_memory (UINT4 *positions4, UINT8 *positions8, Positionsptr_
 #ifdef ADDSENTINEL
   if (coord_values_8p == true) {
     for (oligoi = 0; oligoi < oligospace; oligoi++) {
-      positions8[offsets[oligoi]] = -1UL;
+      positions8_high[offsets[oligoi]] = (unsigned char) (-1UL >> POSITIONS8_HIGH_SHIFT);
+      positions8_low[offsets[oligoi]] = (UINT4) (-1UL & POSITIONS8_LOW_MASK);
     }
   } else {
     for (oligoi = 0; oligoi < oligospace; oligoi++) {
@@ -1190,34 +1956,54 @@ compute_positions_in_memory (UINT4 *positions4, UINT8 *positions8, Positionsptr_
 
   return;
 }
+#endif
+
 
 
 #define WRITE_CHUNK 1000000
 
 void
-Indexdb_write_positions (char *positionsfile, char *gammaptrsfile, char *offsetscompfile,
-			 FILE *sequence_fp, Univ_IIT_T chromosome_iit, int offsetscomp_basesize,
+Indexdb_write_positions (char *positionsfile_high, char *positionsfile_low, char *pointersfile, char *offsetsfile,
+			 FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-			 int alphabet_size, int index1part_aa, bool watsonp,
+			 Alphabet_T alphabet, int index1part_aa, bool watsonp,
 #else
 			 int index1part,
 #endif
 			 int index1interval, bool genome_lc_p, bool writefilep,
-			 char *fileroot, bool mask_lowercase_p, bool coord_values_8p) {
-  FILE *positions_fp;		/* For building positions in memory */
-  int positions_fd;		/* For building positions in file */
+			 char *fileroot, bool mask_lowercase_p, int compression_type,
+			 bool coord_values_8p) {
+  FILE *positions_high_fp, *positions_low_fp; /* For building positions in memory */
+  int positions_high_fd, positions_low_fd; /* For building positions in file */
   Positionsptr_T *offsets = NULL, totalcounts, count;
   UINT4 *positions4;
-  UINT8 *positions8;
+  unsigned char *positions8_high;
+  UINT4 *positions8_low;
   Oligospace_T oligospace;
   off_t filesize;
+  size_t offsetsstrm_len;
+  double seconds;
+#ifdef PMAP
+  int alphabet_size;
+  int offsetsstrm_fd;
+#endif
+
+
 
 #ifdef PMAP
-  offsets = Indexdb_offsets_from_gammas(gammaptrsfile,offsetscompfile,offsetscomp_basesize,
-					alphabet_size,index1part_aa);
+  alphabet_size = Alphabet_get_size(alphabet);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    offsets = Indexdb_offsets_from_bitpack(pointersfile,offsetsfile,alphabet_size,index1part_aa);
+  } else {
+    offsets = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsfile,sizeof(UINT4));
+  }
   oligospace = power(alphabet_size,index1part_aa);
 #else
-  offsets = Indexdb_offsets_from_gammas(gammaptrsfile,offsetscompfile,offsetscomp_basesize,index1part);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    offsets = Indexdb_offsets_from_bitpack(pointersfile,offsetsfile,index1part);
+  } else {
+    offsets = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsfile,sizeof(UINT4));
+  }
   oligospace = power(4,index1part);
 #endif
   totalcounts = offsets[oligospace];
@@ -1228,149 +2014,190 @@ Indexdb_write_positions (char *positionsfile, char *gammaptrsfile, char *offsets
 
   if (writefilep == true) {
     fprintf(stderr,"User requested build of positions in file\n");
-    positions_fd = Access_fileio_rw(positionsfile);
+    positions_high_fd = Access_fileio_rw(positionsfile_high);
+    positions_low_fd = Access_fileio_rw(positionsfile_low);
 #ifdef PMAP
-    compute_positions_in_file(positions_fd,offsets,sequence_fp,chromosome_iit,
+    compute_positions_in_file(positions_high_fd,positions_low_fd,offsets,sequence_fp,chromosome_iit,
 			      index1part_aa,watsonp,index1interval,genome_lc_p,fileroot,mask_lowercase_p,
 			      coord_values_8p);
 #else
-    compute_positions_in_file(positions_fd,offsets,sequence_fp,chromosome_iit,
+    compute_positions_in_file(positions_high_fd,positions_low_fd,offsets,sequence_fp,chromosome_iit,
 			      index1part,index1interval,genome_lc_p,fileroot,mask_lowercase_p,
 			      coord_values_8p);
 #endif
-    close(positions_fd);
+    close(positions_high_fd);
+    close(positions_low_fd);
 
   } else if (coord_values_8p == true) {
-    fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",totalcounts,(int) sizeof(UINT8));
-    positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT8));
-    if (positions8 == NULL) {
+    fprintf(stderr,"Trying to allocate %u*(%d+%d) bytes of memory for positions...",totalcounts,(int) sizeof(unsigned char),(int) sizeof(UINT4));
+    positions8_high = (unsigned char *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(unsigned char));
+    positions8_low = (UINT4 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT4));
+    if (positions8_high == NULL || positions8_low == NULL) {
       fprintf(stderr,"failed.  Building positions in file.\n");
-      positions_fd = Access_fileio_rw(positionsfile);
+      positions_high_fd = Access_fileio_rw(positionsfile_high);
+      positions_low_fd = Access_fileio_rw(positionsfile_low);
 #ifdef PMAP
-      compute_positions_in_file(positions_fd,offsets,sequence_fp,chromosome_iit,
+      compute_positions_in_file(positions_high_fd,positions_low_fd,offsets,sequence_fp,chromosome_iit,
 				index1part_aa,watsonp,index1interval,genome_lc_p,fileroot,
 				mask_lowercase_p,/*coord_values_8p*/true);
 #else
-      compute_positions_in_file(positions_fd,offsets,sequence_fp,chromosome_iit,
+      compute_positions_in_file(positions_high_fd,positions_low_fd,offsets,sequence_fp,chromosome_iit,
 				index1part,index1interval,genome_lc_p,fileroot,
 				mask_lowercase_p,/*coord_values_8p*/true);
 #endif
-      close(positions_fd);
+      close(positions_high_fd);
+      close(positions_low_fd);
 
-      if ((filesize = Access_filesize(positionsfile)) != totalcounts * (off_t) sizeof(UINT8)) {
+      if ((filesize = Access_filesize(positionsfile_high)) != totalcounts * (off_t) sizeof(unsigned char)) {
 	fprintf(stderr,"Error after file-based build: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
-		positionsfile,totalcounts*sizeof(UINT8),filesize);
+		positionsfile_high,totalcounts*sizeof(unsigned char),filesize);
+	abort();
+      } else if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
+	fprintf(stderr,"Error after file-based build: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
+		positionsfile_low,totalcounts*sizeof(UINT4),filesize);
 	abort();
       }
 
     } else {
       fprintf(stderr,"succeeded.  Building positions in memory.\n");
-      if ((positions_fp = FOPEN_WRITE_BINARY(positionsfile)) == NULL) {
-	fprintf(stderr,"Can't open file %s\n",positionsfile);
+      if ((positions_high_fp = FOPEN_WRITE_BINARY(positionsfile_high)) == NULL) {
+	fprintf(stderr,"Can't open file %s\n",positionsfile_high);
+	exit(9);
+      } else if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	fprintf(stderr,"Can't open file %s\n",positionsfile_low);
 	exit(9);
       }
 #ifdef PMAP
-      compute_positions_in_memory(/*positions4*/NULL,positions8,offsets,sequence_fp,chromosome_iit,
-				  index1part_aa,watsonp,index1interval,genome_lc_p,fileroot,
+      compute_positions_in_memory(/*positions4*/NULL,positions8_high,positions8_low,offsets,
+				  sequence_fp,chromosome_iit,index1part_aa,watsonp,
+				  index1interval,genome_lc_p,fileroot,
 				  mask_lowercase_p,/*coord_values_8p*/true);
 #else
-      compute_positions_in_memory(/*positions4*/NULL,positions8,offsets,sequence_fp,chromosome_iit,
-				  index1part,index1interval,genome_lc_p,fileroot,
+      compute_positions_in_memory(/*positions4*/NULL,positions8_high,positions8_low,offsets,
+				  sequence_fp,chromosome_iit,index1part,
+				  index1interval,genome_lc_p,fileroot,
 				  mask_lowercase_p,/*coord_values_8p*/true);
 #endif
-      fprintf(stderr,"Writing %u genomic positions to file %s ...\n",
-	      totalcounts,positionsfile);
-      FWRITE_UINT8S(positions8,totalcounts,positions_fp);
+      fprintf(stderr,"Writing %u genomic positions to files %s and %s ...\n",
+	      totalcounts,positionsfile_high,positionsfile_low);
+      FWRITE_CHARS(positions8_high,totalcounts,positions_high_fp);
+      FWRITE_UINTS(positions8_low,totalcounts,positions_low_fp);
+
+      fclose(positions_high_fp);
+      fclose(positions_low_fp);
+
+      if ((filesize = Access_filesize(positionsfile_high)) != totalcounts * (off_t) sizeof(unsigned char)) {
+	fprintf(stderr,"Error: expected file size for %s is %lu, but observed only %lu.  Trying now to write with smaller chunks.\n",
+		positionsfile_high,totalcounts*sizeof(unsigned char),filesize);
+	if ((positions_high_fp = FOPEN_WRITE_BINARY(positionsfile_high)) == NULL) {
+	  fprintf(stderr,"Can't open file %s\n",positionsfile_high);
+	  exit(9);
+	}
+	for (count = 0; count + WRITE_CHUNK < totalcounts; count += WRITE_CHUNK) {
+	  FWRITE_CHARS(&(positions8_high[count]),count,positions_high_fp);
+	}
+	if (count < totalcounts) {
+	  FWRITE_CHARS(&(positions8_high[count]),totalcounts - count,positions_high_fp);
+	}
+	fclose(positions_high_fp);
 
-      fclose(positions_fp);
+	if ((filesize = Access_filesize(positionsfile_high)) != totalcounts * (off_t) sizeof(unsigned char)) {
+	  fprintf(stderr,"Error persists: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
+		  positionsfile_high,totalcounts*sizeof(unsigned char),filesize);
+	  abort();
+	}
+      }
 
-      if ((filesize = Access_filesize(positionsfile)) != totalcounts * (off_t) sizeof(UINT8)) {
+      if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
 	fprintf(stderr,"Error: expected file size for %s is %lu, but observed only %lu.  Trying now to write with smaller chunks.\n",
-		positionsfile,totalcounts*sizeof(UINT8),filesize);
-	if ((positions_fp = FOPEN_WRITE_BINARY(positionsfile)) == NULL) {
-	  fprintf(stderr,"Can't open file %s\n",positionsfile);
+		positionsfile_low,totalcounts*sizeof(UINT4),filesize);
+	if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	  fprintf(stderr,"Can't open file %s\n",positionsfile_low);
 	  exit(9);
 	}
 	for (count = 0; count + WRITE_CHUNK < totalcounts; count += WRITE_CHUNK) {
-	  FWRITE_UINT8S(&(positions8[count]),count,positions_fp);
+	  FWRITE_UINTS(&(positions8_low[count]),count,positions_low_fp);
 	}
 	if (count < totalcounts) {
-	  FWRITE_UINT8S(&(positions8[count]),totalcounts - count,positions_fp);
+	  FWRITE_UINTS(&(positions8_low[count]),totalcounts - count,positions_low_fp);
 	}
-	fclose(positions_fp);
+	fclose(positions_low_fp);
 
-	if ((filesize = Access_filesize(positionsfile)) != totalcounts * (off_t) sizeof(UINT8)) {
+	if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
 	  fprintf(stderr,"Error persists: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
-		  positionsfile,totalcounts*sizeof(UINT8),filesize);
+		  positionsfile_low,totalcounts*sizeof(UINT4),filesize);
 	  abort();
 	}
       }
 
-      FREE(positions8);
+      FREE(positions8_high);
+      FREE(positions8_low);
     }
 
   } else {
-    fprintf(stderr,"Trying to allocate %u*%d bytes of memory...",totalcounts,(int) sizeof(UINT4));
+    fprintf(stderr,"Trying to allocate %u*%d bytes of memory for positions...",totalcounts,(int) sizeof(UINT4));
     positions4 = (UINT4 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT4));
     if (positions4 == NULL) {
       fprintf(stderr,"failed.  Building positions in file.\n");
-      positions_fd = Access_fileio_rw(positionsfile);
+      positions_low_fd = Access_fileio_rw(positionsfile_low);
 #ifdef PMAP
-      compute_positions_in_file(positions_fd,offsets,sequence_fp,chromosome_iit,
+      compute_positions_in_file(/*positions_high_fd*/0,positions_low_fd,offsets,sequence_fp,chromosome_iit,
 				index1part_aa,watsonp,index1interval,genome_lc_p,fileroot,mask_lowercase_p,
 				/*coord_values_8*/false);
 #else
-      compute_positions_in_file(positions_fd,offsets,sequence_fp,chromosome_iit,
+      compute_positions_in_file(/*positions_high_fd*/0,positions_low_fd,offsets,sequence_fp,chromosome_iit,
 				index1part,index1interval,genome_lc_p,fileroot,mask_lowercase_p,
 				/*coord_values_8p*/false);
 #endif
-      close(positions_fd);
+      close(positions_low_fd);
 
-      if ((filesize = Access_filesize(positionsfile)) != totalcounts * (off_t) sizeof(UINT4)) {
+      if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
 	fprintf(stderr,"Error after file-based build: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
-		positionsfile,totalcounts*sizeof(UINT4),filesize);
+		positionsfile_low,totalcounts*sizeof(UINT4),filesize);
 	abort();
       }
 
     } else {
       fprintf(stderr,"succeeded.  Building positions in memory.\n");
-      if ((positions_fp = FOPEN_WRITE_BINARY(positionsfile)) == NULL) {
-	fprintf(stderr,"Can't open file %s\n",positionsfile);
+      if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	fprintf(stderr,"Can't open file %s\n",positionsfile_low);
 	exit(9);
       }
 #ifdef PMAP
-      compute_positions_in_memory(positions4,/*positions8*/NULL,offsets,sequence_fp,chromosome_iit,
+      compute_positions_in_memory(positions4,/*positions8_high*/NULL,/*positions8_low*/NULL,
+				  offsets,sequence_fp,chromosome_iit,
 				  index1part_aa,watsonp,index1interval,genome_lc_p,fileroot,
 				  mask_lowercase_p,/*coord_values_8p*/false);
 #else
-      compute_positions_in_memory(positions4,/*positions8*/NULL,offsets,sequence_fp,chromosome_iit,
+      compute_positions_in_memory(positions4,/*positions8_high*/NULL,/*positions8_low*/NULL,
+				  offsets,sequence_fp,chromosome_iit,
 				  index1part,index1interval,genome_lc_p,fileroot,
 				  mask_lowercase_p,/*coord_values_8p*/false);
 #endif
       fprintf(stderr,"Writing %u genomic positions to file %s ...\n",
-	      totalcounts,positionsfile);
-      FWRITE_UINTS(positions4,totalcounts,positions_fp);
+	      totalcounts,positionsfile_low);
+      FWRITE_UINTS(positions4,totalcounts,positions_low_fp);
 
-      fclose(positions_fp);
+      fclose(positions_low_fp);
 
-      if ((filesize = Access_filesize(positionsfile)) != totalcounts * (off_t) sizeof(UINT4)) {
+      if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
 	fprintf(stderr,"Error: expected file size for %s is %lu, but observed only %lu.  Trying now to write with smaller chunks.\n",
-		positionsfile,totalcounts*sizeof(UINT4),filesize);
-	if ((positions_fp = FOPEN_WRITE_BINARY(positionsfile)) == NULL) {
-	  fprintf(stderr,"Can't open file %s\n",positionsfile);
+		positionsfile_low,totalcounts*sizeof(UINT4),filesize);
+	if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	  fprintf(stderr,"Can't open file %s\n",positionsfile_low);
 	  exit(9);
 	}
 	for (count = 0; count + WRITE_CHUNK < totalcounts; count += WRITE_CHUNK) {
-	  FWRITE_UINTS(&(positions4[count]),count,positions_fp);
+	  FWRITE_UINTS(&(positions4[count]),count,positions_low_fp);
 	}
 	if (count < totalcounts) {
-	  FWRITE_UINTS(&(positions4[count]),totalcounts - count,positions_fp);
+	  FWRITE_UINTS(&(positions4[count]),totalcounts - count,positions_low_fp);
 	}
-	fclose(positions_fp);
+	fclose(positions_low_fp);
 
-	if ((filesize = Access_filesize(positionsfile)) != totalcounts * (off_t) sizeof(UINT4)) {
+	if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
 	  fprintf(stderr,"Error persists: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
-		  positionsfile,totalcounts*sizeof(UINT4),filesize);
+		  positionsfile_low,totalcounts*sizeof(UINT4),filesize);
 	  abort();
 	}
       }
@@ -1385,71 +2212,199 @@ Indexdb_write_positions (char *positionsfile, char *gammaptrsfile, char *offsets
 }
 
 
-
-#if 0
+#ifdef HAVE_64_BIT
 void
-Indexdb_convert_gammas (char *gammaptrsfile, char *offsetscompfile, FILE *offsets_fp,
+Indexdb_write_positions_huge (char *positionsfile_high, char *positionsfile_low,
+			      char *pagesfile, char *pointersfile, char *offsetsfile,
+			      FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-			int alphabet_size, int index1part_aa,
+			      Alphabet_T alphabet, int index1part_aa, bool watsonp,
 #else
-			int index1part,
+			      int index1part,
+#endif
+			      int index1interval, bool genome_lc_p, bool writefilep,
+			      char *fileroot, bool mask_lowercase_p, int compression_type,
+			      bool coord_values_8p) {
+  FILE *positions_high_fp, *positions_low_fp; /* For building positions in memory */
+  Hugepositionsptr_T *offsets = NULL, totalcounts, count;
+  UINT4 *positions4;
+  unsigned char *positions8_high;
+  UINT4 *positions8_low;
+  Oligospace_T oligospace;
+  off_t filesize;
+#ifdef PMAP
+  int alphabet_size;
 #endif
-			int blocksize) {
-  int gammaptrs_fd, offsetscomp_fd;
-  Positionsptr_T *offsets = NULL, totalcounts;
-  int j;
-  Oligospace_T oligospace, oligoi;
 
-  UINT4 buffer;
-  int ctr;
-  UINT4 nwritten;
 
 #ifdef PMAP
+  alphabet_size = Alphabet_get_size(alphabet);
   oligospace = power(alphabet_size,index1part_aa);
 #else
+  if (compression_type == BITPACK64_COMPRESSION) {
+    offsets = Indexdb_offsets_from_bitpack_huge(pagesfile,pointersfile,offsetsfile,index1part);
+  } else {
+    fprintf(stderr,"Not supporting non-compression on huge genomes\n");
+    return;
+  }
   oligospace = power(4,index1part);
 #endif
-
-  offsets = (Positionsptr_T *) CALLOC(oligospace+1,sizeof(Positionsptr_T));
-  FREAD_UINTS(offsets,oligospace+1,offsets_fp);
   totalcounts = offsets[oligospace];
   if (totalcounts == 0) {
     fprintf(stderr,"Something is wrong with the offsets file.  Total counts is zero.\n");
     exit(9);
   }
 
-  gammaptrs_fd = Access_fileio_rw(gammaptrsfile);
-  offsetscomp_fd = Access_fileio_rw(offsetscompfile);
+  if (writefilep == true) {
+    fprintf(stderr,"User requested build of positions in file, but not supported.\n");
+    abort();
+
+  } else if (coord_values_8p == true) {
+    fprintf(stderr,"Trying to allocate %lu*(%d+%d) bytes of memory for positions...",
+	    totalcounts,(int) sizeof(unsigned char),(int) sizeof(UINT8));
+    positions8_high = (unsigned char *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(unsigned char));
+    positions8_low = (UINT4 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT4));
+    if (positions8_high == NULL || positions8_low == NULL) {
+      fprintf(stderr,"failed.  Not able to proceed.\n");
+      abort();
+
+    } else {
+      fprintf(stderr,"succeeded.  Building positions in memory.\n");
+      if ((positions_high_fp = FOPEN_WRITE_BINARY(positionsfile_high)) == NULL) {
+	fprintf(stderr,"Can't open file %s\n",positionsfile_high);
+	exit(9);
+      } else if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	fprintf(stderr,"Can't open file %s\n",positionsfile_low);
+	exit(9);
+      }
+#ifdef PMAP
+      compute_positions_in_memory_huge(/*positions4*/NULL,positions8_high,positions8_low,offsets,
+				       sequence_fp,chromosome_iit,index1part_aa,watsonp,
+				       index1interval,genome_lc_p,fileroot,
+				       mask_lowercase_p,/*coord_values_8p*/true);
+#else
+      compute_positions_in_memory_huge(/*positions4*/NULL,positions8_high,positions8_low,offsets,
+				       sequence_fp,chromosome_iit,index1part,index1interval,
+				       genome_lc_p,fileroot,mask_lowercase_p,/*coord_values_8p*/true);
+#endif
+      fprintf(stderr,"Writing %lu genomic positions to files %s and %s...\n",
+	      totalcounts,positionsfile_high,positionsfile_low);
+      FWRITE_CHARS(positions8_high,totalcounts,positions_high_fp);
+      FWRITE_UINTS(positions8_low,totalcounts,positions_low_fp);
+
+      fclose(positions_high_fp);
+      fclose(positions_low_fp);
+
+      if ((filesize = Access_filesize(positionsfile_high)) != totalcounts * (off_t) sizeof(unsigned char)) {
+	fprintf(stderr,"Error: expected file size for %s is %lu, but observed only %lu.  Trying now to write with smaller chunks.\n",
+		positionsfile_high,totalcounts*sizeof(unsigned char),filesize);
+	if ((positions_high_fp = FOPEN_WRITE_BINARY(positionsfile_high)) == NULL) {
+	  fprintf(stderr,"Can't open file %s\n",positionsfile_high);
+	  exit(9);
+	}
+	for (count = 0; count + WRITE_CHUNK < totalcounts; count += WRITE_CHUNK) {
+	  FWRITE_CHARS(&(positions8_high[count]),count,positions_high_fp);
+	}
+	if (count < totalcounts) {
+	  FWRITE_CHARS(&(positions8_high[count]),totalcounts - count,positions_high_fp);
+	}
+	fclose(positions_high_fp);
+
+	if ((filesize = Access_filesize(positionsfile_high)) != totalcounts * (off_t) sizeof(unsigned char)) {
+	  fprintf(stderr,"Error persists: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
+		  positionsfile_high,totalcounts*sizeof(unsigned char),filesize);
+	  abort();
+	}
+      }
 
-  nwritten = 0U;
-  for (oligoi = 0; oligoi < oligospace; oligoi += blocksize) {
-    WRITE_UINT(nwritten,gammaptrs_fd);
+      if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
+	fprintf(stderr,"Error: expected file size for %s is %lu, but observed only %lu.  Trying now to write with smaller chunks.\n",
+		positionsfile_low,totalcounts*sizeof(UINT4),filesize);
+	if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	  fprintf(stderr,"Can't open file %s\n",positionsfile_low);
+	  exit(9);
+	}
+	for (count = 0; count + WRITE_CHUNK < totalcounts; count += WRITE_CHUNK) {
+	  FWRITE_UINTS(&(positions8_low[count]),count,positions_low_fp);
+	}
+	if (count < totalcounts) {
+	  FWRITE_UINTS(&(positions8_low[count]),totalcounts - count,positions_low_fp);
+	}
+	fclose(positions_low_fp);
 
-    WRITE_UINT(offsets[oligoi],offsetscomp_fd);
-    nwritten += 1;
+	if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
+	  fprintf(stderr,"Error persists: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
+		  positionsfile_low,totalcounts*sizeof(UINT4),filesize);
+	  abort();
+	}
+      }
 
-    buffer = 0U;
-    ctr = 32;
-    for (j = 1; j < blocksize; j++) {
-      ctr = write_gamma(offsetscomp_fp,offsets_buffer,offsets_buffer_size,&offsets_buffer_i,
-			&nwritten,&buffer,ctr,offsets[oligoi+j]-offsets[oligoi+j-1]);
+      FREE(positions8_high);
+      FREE(positions8_low);
     }
-    debug(printf("writing gamma %08X\n",buffer));
-    WRITE_UINT(buffer,offsetscomp_fd);
-    nwritten += 1;
-  }
 
-  WRITE_UINT(offsets[oligoi],offsetscomp_fd);
-  nwritten += 1;
-  WRITE_UINT(nwritten,gammaptrs_fd);
+  } else {
+    fprintf(stderr,"Something is wrong.  We have a huge genome (offsets need 8 bytes), but positions can fit in 4 bytes\n");
+    fprintf(stderr,"Please report this bug to twu at gene.com\n");
+    abort();
+
+    fprintf(stderr,"Trying to allocate %lu*%d bytes of memory for positions...",totalcounts,(int) sizeof(UINT4));
+    positions4 = (UINT4 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT4));
+    if (positions4 == NULL) {
+      fprintf(stderr,"failed.  Not able to proceed.\n");
+      abort();
+
+    } else {
+      fprintf(stderr,"succeeded.  Building positions in memory.\n");
+      if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	fprintf(stderr,"Can't open file %s\n",positionsfile_low);
+	exit(9);
+      }
+#ifdef PMAP
+      compute_positions_in_memory_huge(positions4,/*positions8_high*/NULL,/*positions8_low*/NULL,offsets,
+				       sequence_fp,chromosome_iit,index1part_aa,watsonp,index1interval,
+				       genome_lc_p,fileroot,mask_lowercase_p,/*coord_values_8p*/false);
+#else
+      compute_positions_in_memory_huge(positions4,/*positions8_high*/NULL,/*positions8_low*/NULL,offsets,
+				       sequence_fp,chromosome_iit,index1part,index1interval,
+				       genome_lc_p,fileroot,mask_lowercase_p,/*coord_values_8p*/false);
+#endif
+      fprintf(stderr,"Writing %lu genomic positions to file %s ...\n",
+	      totalcounts,positionsfile_low);
+      FWRITE_UINTS(positions4,totalcounts,positions_low_fp);
+
+      fclose(positions_low_fp);
+
+      if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
+	fprintf(stderr,"Error: expected file size for %s is %lu, but observed only %lu.  Trying now to write with smaller chunks.\n",
+		positionsfile_low,totalcounts*sizeof(UINT4),filesize);
+	if ((positions_low_fp = FOPEN_WRITE_BINARY(positionsfile_low)) == NULL) {
+	  fprintf(stderr,"Can't open file %s\n",positionsfile_low);
+	  exit(9);
+	}
+	for (count = 0; count + WRITE_CHUNK < totalcounts; count += WRITE_CHUNK) {
+	  FWRITE_UINTS(&(positions4[count]),count,positions_low_fp);
+	}
+	if (count < totalcounts) {
+	  FWRITE_UINTS(&(positions4[count]),totalcounts - count,positions_low_fp);
+	}
+	fclose(positions_low_fp);
+
+	if ((filesize = Access_filesize(positionsfile_low)) != totalcounts * (off_t) sizeof(UINT4)) {
+	  fprintf(stderr,"Error persists: expected file size for %s is %lu, but observed only %lu.  Please notify twu at gene.com of this error.\n",
+		  positionsfile_low,totalcounts*sizeof(UINT4),filesize);
+	  abort();
+	}
+      }
 
-  close(offsetscomp_fd);
-  close(gammaptrs_fd);
+      FREE(positions4);
+    }
+  }
 
   FREE(offsets);
+
   return;
 }
 #endif
 
 
-
diff --git a/src/indexdb-write.h b/src/indexdb-write.h
index bd7bf77..13ad3e8 100644
--- a/src/indexdb-write.h
+++ b/src/indexdb-write.h
@@ -1,21 +1,13 @@
-/* $Id: indexdb-write.h 100260 2013-07-02 23:48:24Z twu $ */
+/* $Id: indexdb-write.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef INDEXDB_WRITE_INCLUDED
 #define INDEXDB_WRITE_INCLUDED
-#include <stdio.h>
-#include "access.h"
-#include "types.h"
-#include "mode.h"
-#include "genomicpos.h"
+
 #include "bool.h"
+#include "types.h"		/* For Oligospace_T */
 #include "iit-read-univ.h"
 
 #ifdef PMAP
 #include "alphabet.h"
-#endif
-
-
-#ifdef PMAP
-
 #define FWD_FILESUFFIX "pf"
 #define REV_FILESUFFIX "pr"
 
@@ -24,34 +16,68 @@
 #endif
 
 #define OFFSETS_FILESUFFIX "offsets"
-#define POSITIONS_FILESUFFIX "positions"
-
+#define POSITIONS_HIGH_FILESUFFIX "positionsh"
+#define POSITIONS_LOW_FILESUFFIX "positions"
 
+#ifdef HAVE_64_BIT
+extern UINT8
+Indexdb_count_offsets (FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+#ifdef PMAP
+		       Width_T index1part_aa, bool watsonp,
+#else
+		       Width_T index1part,
+#endif
+		       Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p);
+#endif
 
 extern void
-Indexdb_write_gammaptrs (char *gammaptrsfile, char *offsetscompfile, Positionsptr_T *offsets,
-			 Oligospace_T oligospace, int blocksize);
+Indexdb_write_offsets (char *destdir, char interval_char, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+#ifdef PMAP
+		       Alphabet_T alphabet, Width_T index1part_aa, bool watsonp,
+#else
+		       Width_T index1part,
+#endif
+		       Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
+		       int compression_types);
+#ifdef HAVE_64_BIT
+extern void
+Indexdb_write_offsets_huge (char *destdir, char interval_char, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
+#ifdef PMAP
+			    Alphabet_T alphabet, Width_T index1part_aa, bool watsonp,
+#else
+			    Width_T index1part,
+#endif
+			    Width_T index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p,
+			    int compression_types);
+#endif
+
 
 extern void
-Indexdb_write_offsets (char *gammaptrsfile, char *offsetscompfile, FILE *sequence_fp, Univ_IIT_T chromosome_iit,
-		       int offsetscomp_basesize,
+Indexdb_write_positions (char *positionsfile_high, char *positionsfile_low, char *pointersfile, char *offsetsfile,
+			 FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-		       int alphabet_size, int index1part_aa, bool watsonp,
+			 Alphabet_T alphabet, Width_T index1part_aa, bool watsonp,
 #else
-		       int index1part,
+			 Width_T index1part,
 #endif
-		       int index1interval, bool genome_lc_p, char *fileroot, bool mask_lowercase_p);
+			 Width_T index1interval, bool genome_lc_p, bool writefilep,
+			 char *fileroot, bool mask_lowercase_p, int compression_type,
+			 bool coord_values_8p);
 
+
+#ifdef HAVE_64_BIT
 extern void
-Indexdb_write_positions (char *positionsfile, char *gammaptrsfile, char *offsetscompfile,
-			 FILE *sequence_fp, Univ_IIT_T chromosome_iit, int offsetscomp_basesize,
+Indexdb_write_positions_huge (char *positionsfile_high, char *positionsfile_low, char *pagesfile, char *pointersfile, char *offsetsfile,
+			      FILE *sequence_fp, Univ_IIT_T chromosome_iit,
 #ifdef PMAP
-			 int alphabet_size, int index1part_aa, bool watsonp,
+			      Alphabet_T alphabet, int index1part_aa, bool watsonp,
 #else
-			 int index1part,
+			      int index1part,
+#endif
+			      int index1interval, bool genome_lc_p, bool writefilep,
+			      char *fileroot, bool mask_lowercase_p, int compression_type,
+			      bool coord_values_8p);
 #endif
-			 int index1interval, bool genome_lc_p, bool writefilep,
-			 char *fileroot, bool mask_lowercase_p, bool coord_values_8p);
 
 #endif
 
diff --git a/src/indexdb.c b/src/indexdb.c
index 7466210..1509fa5 100644
--- a/src/indexdb.c
+++ b/src/indexdb.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: indexdb.c 99753 2013-06-27 21:13:11Z twu $";
+static char rcsid[] = "$Id: indexdb.c 134965 2014-05-02 21:39:55Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -8,10 +8,12 @@ static char rcsid[] = "$Id: indexdb.c 99753 2013-06-27 21:13:11Z twu $";
 #ifndef HAVE_MEMMOVE
 # define memmove(d,s,n) bcopy((s),(d),(n))
 #endif
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
 
 #include "indexdb.h"
 #include "indexdbdef.h"
-#include "genome_hr.h"		/* For read_gammas procedures */
 
 
 #ifdef WORDS_BIGENDIAN
@@ -56,6 +58,8 @@ static char rcsid[] = "$Id: indexdb.c 99753 2013-06-27 21:13:11Z twu $";
 #include "compress.h"
 #include "interval.h"
 #include "complement.h"
+#include "bitpack64-read.h"
+#include "bitpack64-readtwo.h"
 
 
 #ifdef HAVE_PTHREAD
@@ -132,29 +136,49 @@ void
 Indexdb_free (T *old) {
   if (*old) {
     if ((*old)->positions_access == ALLOCATED) {
+#ifdef LARGE_GENOMES
+      FREE((*old)->positions_high);
+      FREE((*old)->positions_low);
+#else
       FREE((*old)->positions);
+#endif
 #ifdef HAVE_MMAP
     } else if ((*old)->positions_access == MMAPPED) {
+#ifdef LARGE_GENOMES
+      munmap((void *) (*old)->positions_high,(*old)->positions_high_len);
+      close((*old)->positions_high_fd);
+      munmap((void *) (*old)->positions_high,(*old)->positions_low_len);
+      close((*old)->positions_low_fd);
+#else
       munmap((void *) (*old)->positions,(*old)->positions_len);
       close((*old)->positions_fd);
 #endif
+#endif
     } else if ((*old)->positions_access == FILEIO) {
 #ifdef HAVE_PTHREAD
       pthread_mutex_destroy(&(*old)->positions_read_mutex);
 #endif
+#ifdef LARGE_GENOMES
+      close((*old)->positions_high_fd);
+      close((*old)->positions_low_fd);
+#else
       close((*old)->positions_fd);
+#endif
     }
 
-    if ((*old)->offsetscomp_access == ALLOCATED) {
-      FREE((*old)->offsetscomp);
+    if ((*old)->offsetsstrm_access == ALLOCATED) {
+      FREE((*old)->offsetsstrm);
 #ifdef HAVE_MMAP
-    } else if ((*old)->offsetscomp_access == MMAPPED) {
-      munmap((void *) (*old)->offsetscomp,(*old)->offsetscomp_len);
-      close((*old)->offsetscomp_fd);
+    } else if ((*old)->offsetsstrm_access == MMAPPED) {
+      munmap((void *) (*old)->offsetsstrm,(*old)->offsetsstrm_len);
+      close((*old)->offsetsstrm_fd);
 #endif
     }
       
-    FREE((*old)->gammaptrs);	/* Always ALLOCATED */
+    FREE((*old)->offsetsmeta);	/* Always ALLOCATED */
+#ifdef LARGE_GENOMES
+    FREE((*old)->offsetspages);	/* Always ALLOCATED */
+#endif
 
     FREE(*old);
   }
@@ -207,43 +231,91 @@ Indexdb_mean_size (T this, Mode_T mode, Width_T index1part) {
 #endif
 
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    return (double) this->offsetscomp[this->gammaptrs[oligospace/this->offsetscomp_blocksize]]/(double) n;
+  if (this->offsetsstrm_access == ALLOCATED) {
+    return (double) this->offsetsstrm[this->offsetsmeta[oligospace/this->blocksize]]/(double) n;
   } else {
-    return (double) Bigendian_convert_uint(this->offsetscomp[this->gammaptrs[oligospace/this->offsetscomp_blocksize]])/(double) n;
+    return (double) Bigendian_convert_uint(this->offsetsstrm[this->offsetsmeta[oligospace/this->blocksize]])/(double) n;
   }
 #else
-  return (double) this->offsetscomp[this->gammaptrs[oligospace/this->offsetscomp_blocksize]]/(double) n;
+  return (double) this->offsetsstrm[this->offsetsmeta[oligospace/this->blocksize]]/(double) n;
 #endif
 }
 
 
 
-bool
-Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filename,
-				char **offsets_basename_ptr, char **positions_basename_ptr,
-				char **offsets_index1info_ptr, char **positions_index1info_ptr,
-				Width_T *index1part, Width_T *index1interval, char *genomesubdir,
-				char *fileroot, char *idx_filesuffix, char *snps_root,
-				Width_T required_interval) {
+static Filenames_T
+Filenames_new (char *pages_filename, char *pointers_filename, char *offsets_filename,
+	       char *positions_high_filename, char *positions_low_filename,
+	       char *pointers_basename_ptr, char *offsets_basename_ptr,
+	       char *positions_high_basename_ptr, char *positions_low_basename_ptr,
+	       char *pointers_index1info_ptr, char *offsets_index1info_ptr,
+	       char *positions_high_index1info_ptr, char *positions_low_index1info_ptr) {
+  Filenames_T new = (Filenames_T) MALLOC(sizeof(*new));
+
+  new->pages_filename = pages_filename;
+  new->pointers_filename = pointers_filename;
+  new->offsets_filename = offsets_filename;
+  new->positions_high_filename = positions_high_filename;
+  new->positions_low_filename = positions_low_filename;
+
+  new->pointers_basename_ptr = pointers_basename_ptr;
+  new->offsets_basename_ptr = offsets_basename_ptr;
+  new->positions_high_basename_ptr = positions_high_basename_ptr;
+  new->positions_low_basename_ptr = positions_low_basename_ptr;
+
+  new->pointers_index1info_ptr = pointers_index1info_ptr;
+  new->offsets_index1info_ptr = offsets_index1info_ptr;
+  new->positions_high_index1info_ptr = positions_high_index1info_ptr;
+  new->positions_low_index1info_ptr = positions_low_index1info_ptr;
+
+  return new;
+}
+
+void
+Filenames_free (Filenames_T *old) {
+
+  FREE((*old)->pages_filename);
+  FREE((*old)->pointers_filename);
+  FREE((*old)->offsets_filename);
+  FREE((*old)->positions_high_filename);
+  FREE((*old)->positions_low_filename);
+
+  FREE(*old);
+
+  return;
+}
+
+
+Filenames_T
+Indexdb_get_filenames_no_compression (Width_T *index1part, Width_T *index1interval,
+				      char *genomesubdir, char *fileroot, char *idx_filesuffix, char *snps_root,
+				      Width_T required_interval, bool offsets_only_p) {
+  char *offsets_filename, *positions_high_filename, *positions_low_filename,
+    *offsets_basename_ptr, *positions_high_basename_ptr, *positions_low_basename_ptr,
+    *offsets_index1info_ptr, *positions_high_index1info_ptr, *positions_low_index1info_ptr;
+
   char *base_filename, *filename;
   char *pattern, interval_char, digit_string[2], *p, *q;
+  char tens, ones, ones0;
   Width_T found_index1part, found_interval;
   int rootlength, patternlength;
 
-  char *offsets_suffix, *positions_suffix;
+  char *offsets_suffix, *positions_high_suffix, *positions_low_suffix;
   struct dirent *entry;
   DIR *dp;
 
 
   if (snps_root == NULL) {
     offsets_suffix = "offsets";
-    positions_suffix = POSITIONS_FILESUFFIX;
+    positions_high_suffix = POSITIONS_HIGH_FILESUFFIX;
+    positions_low_suffix = POSITIONS_LOW_FILESUFFIX;
   } else {
     offsets_suffix = (char *) CALLOC(strlen("offsets")+strlen(".")+strlen(snps_root)+1,sizeof(char));
     sprintf(offsets_suffix,"%s.%s","offsets",snps_root);
-    positions_suffix = (char *) CALLOC(strlen(POSITIONS_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
-    sprintf(positions_suffix,"%s.%s",POSITIONS_FILESUFFIX,snps_root);
+    positions_high_suffix = (char *) CALLOC(strlen(POSITIONS_HIGH_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
+    sprintf(positions_high_suffix,"%s.%s",POSITIONS_HIGH_FILESUFFIX,snps_root);
+    positions_low_suffix = (char *) CALLOC(strlen(POSITIONS_LOW_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
+    sprintf(positions_low_suffix,"%s.%s",POSITIONS_LOW_FILESUFFIX,snps_root);
   }
 
   *index1part = 0;
@@ -265,7 +337,37 @@ Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filena
     if (!strncmp(filename,pattern,patternlength)) {
       p = &(filename[strlen(pattern)]); /* Points after idx_filesuffix, e.g., "ref" */
       if ((q = strstr(p,offsets_suffix)) != NULL && !strcmp(q,offsets_suffix)) {
-	if (q - p == 1) {
+	if (q - p == 3) {
+#ifdef PMAP
+	  /* e.g., pf677 */
+	  if (sscanf(p,"%c%c%c",&ones0,&ones,&interval_char) == 3) {
+	    /* digit_string[0] = ones0; */
+	    /* found_basesize = atoi(digit_string); */
+
+	    digit_string[0] = ones;
+	    found_index1part = atoi(digit_string);
+	    
+	    digit_string[0] = interval_char;
+	    found_interval = atoi(digit_string);
+	  } else {
+	    abort();
+	  }
+#else
+	  /* e.g., ref123offsets */
+	  if (sscanf(p,"%c%c%c",&tens,&ones,&interval_char) == 3) {
+	    digit_string[0] = tens;
+	    found_index1part = 10*atoi(digit_string);
+	    digit_string[0] = ones;
+	    found_index1part += atoi(digit_string);
+
+	    digit_string[0] = interval_char;
+	    found_interval = atoi(digit_string);
+	  } else {
+	    abort();
+	  }
+#endif
+
+	} else if (q - p == 1) {
 	  /* Old style, e.g, idx or ref3 */
 	  if (sscanf(p,"%c",&interval_char) == 1) {
 	    if (interval_char == 'x') {
@@ -274,6 +376,8 @@ Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filena
 	      digit_string[0] = interval_char;
 	      found_interval = atoi(digit_string);
 	    }
+	  } else {
+	    abort();
 	  }
 #ifdef PMAP
 	  found_index1part = found_interval;
@@ -283,7 +387,12 @@ Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filena
 
 	} else {
 	  fprintf(stderr,"Cannot parse part between %s and offsets in filename %s\n",idx_filesuffix,filename);
-	  return false;
+	  if (snps_root != NULL) {
+	    FREE(offsets_suffix);
+	    FREE(positions_high_suffix);
+	    FREE(positions_low_suffix);
+	  }
+	  return (Filenames_T) NULL;
 	}
 
 	if (required_interval != 0) {
@@ -315,30 +424,43 @@ Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filena
 
   /* Construct full filenames */
   if (base_filename == NULL) {
-    fprintf(stderr,"Cannot find offsets file containing %s and %s",
-	    idx_filesuffix,offsets_suffix);
+#if 0
+    fprintf(stderr,"Cannot find offsets file containing %s and %s",idx_filesuffix,offsets_suffix);
     if (required_interval > 0) {
       fprintf(stderr," and having sampling interval of %d",required_interval);
     }
     fprintf(stderr,"\n");
+#endif
 
-    *offsets_filename = (char *) NULL;
-    *positions_filename = (char *) NULL;
-    return false;
+    /* offsets_filename = (char *) NULL; */
+    /* positions_high_filename = (char *) NULL; */
+    /* positions_low_filename = (char *) NULL; */
+    if (snps_root != NULL) {
+      FREE(offsets_suffix);
+      FREE(positions_high_suffix);
+      FREE(positions_low_suffix);
+    }
+    return (Filenames_T) NULL;
 
   } else {
-    *offsets_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(base_filename)+1,sizeof(char));
-    *offsets_basename_ptr = &((*offsets_filename)[strlen(genomesubdir)+strlen("/")]);
-    *offsets_index1info_ptr = &((*offsets_basename_ptr)[patternlength]);
-
-    sprintf(*offsets_filename,"%s/%s",genomesubdir,base_filename);
-    if (Access_file_exists_p(*offsets_filename) == false) {
-      fprintf(stderr,"Offsets filename %s does not exist\n",*offsets_filename);
-      FREE(*offsets_filename);
-      *offsets_filename = (char *) NULL;
-      *positions_filename = (char *) NULL;
+    offsets_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(base_filename)+1,sizeof(char));
+    offsets_basename_ptr = &(offsets_filename[strlen(genomesubdir)+strlen("/")]);
+    offsets_index1info_ptr = &(offsets_basename_ptr[patternlength]);
+
+    sprintf(offsets_filename,"%s/%s",genomesubdir,base_filename);
+    if (Access_file_exists_p(offsets_filename) == false) {
+      fprintf(stderr,"Offsets filename %s does not exist\n",offsets_filename);
+      FREE(offsets_filename);
+      /* offsets_filename = (char *) NULL; */
+      /* positions_high_filename = (char *) NULL; */
+      /* positions_low_filename = (char *) NULL; */
       FREE(base_filename);
-      return false;
+      if (snps_root != NULL) {
+	FREE(offsets_suffix);
+	FREE(positions_high_suffix);
+	FREE(positions_low_suffix);
+      }
+      return (Filenames_T) NULL;
     }
 
 
@@ -348,34 +470,67 @@ Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filena
       rootlength = q - base_filename;
     }
 
-    *positions_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(positions_suffix)+1,sizeof(char));
-    *positions_basename_ptr = &((*positions_filename)[strlen(genomesubdir)+strlen("/")]);
-    *positions_index1info_ptr = &((*positions_basename_ptr)[patternlength]);
-
-    sprintf(*positions_filename,"%s/",genomesubdir);
-    strncpy(*positions_basename_ptr,base_filename,rootlength);
-    strcpy(&((*positions_basename_ptr)[rootlength]),positions_suffix);
-
-    if (Access_file_exists_p(*positions_filename) == false) {
-      fprintf(stderr,"Positions filename %s does not exist\n",*positions_filename);
-      FREE(*offsets_filename);
-      FREE(*positions_filename);
-      *offsets_filename = (char *) NULL;
-      *positions_filename = (char *) NULL;
+    positions_high_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(positions_high_suffix)+1,sizeof(char));
+    positions_high_basename_ptr = &(positions_high_filename[strlen(genomesubdir)+strlen("/")]);
+    positions_high_index1info_ptr = &(positions_high_basename_ptr[patternlength]);
+
+    positions_low_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(positions_low_suffix)+1,sizeof(char));
+    positions_low_basename_ptr = &(positions_low_filename[strlen(genomesubdir)+strlen("/")]);
+    positions_low_index1info_ptr = &(positions_low_basename_ptr[patternlength]);
+
+    sprintf(positions_high_filename,"%s/",genomesubdir);
+    strncpy(positions_high_basename_ptr,base_filename,rootlength);
+    strcpy(&(positions_high_basename_ptr[rootlength]),positions_high_suffix);
+
+    sprintf(positions_low_filename,"%s/",genomesubdir);
+    strncpy(positions_low_basename_ptr,base_filename,rootlength);
+    strcpy(&(positions_low_basename_ptr[rootlength]),positions_low_suffix);
+
+    if (offsets_only_p == true) {
+      /* Do not look for a positions file */
+    } else if (Access_file_exists_p(positions_low_filename) == false) {
+      fprintf(stderr,"Positions filename %s does not exist\n",positions_low_filename);
+      FREE(offsets_filename);
+      FREE(positions_high_filename);
+      FREE(positions_low_filename);
+      /* offsets_filename = (char *) NULL; */
+      /* positions_high_filename = (char *) NULL; */
+      /* positions_low_filename = (char *) NULL; */
       FREE(base_filename);
-      return false;
+      if (snps_root != NULL) {
+	FREE(offsets_suffix);
+	FREE(positions_high_suffix);
+	FREE(positions_low_suffix);
+      }
+      return (Filenames_T) NULL;
+    }
+
+    if (Access_file_exists_p(positions_high_filename) == false) {
+      /* Not a large genome */
+      FREE(positions_high_filename);
+      positions_high_filename = (char *) NULL;
     }
 
     if (snps_root != NULL) {
       FREE(offsets_suffix);
-      FREE(positions_suffix);
+      FREE(positions_high_suffix);
+      FREE(positions_low_suffix);
     }
 
     FREE(base_filename);
     fprintf(stderr,"Looking for index files in directory %s (offsets not compressed)\n",genomesubdir);
-    fprintf(stderr,"  Offsets file is %s\n",*offsets_basename_ptr);
-    fprintf(stderr,"  Positions file is %s\n",*positions_basename_ptr);
-    return true;
+    fprintf(stderr,"  Offsets file is %s\n",offsets_basename_ptr);
+    if (positions_high_filename == NULL) {
+      fprintf(stderr,"  Positions file is %s\n",positions_low_basename_ptr);
+    } else {
+      fprintf(stderr,"  Positions files are %s and %s\n",positions_high_basename_ptr,positions_low_basename_ptr);
+    }
+    return Filenames_new(/*pages_filename*/NULL,/*pointers_filename*/NULL,offsets_filename,
+			 positions_high_filename,positions_low_filename,
+			 /*pointers_basename_ptr*/NULL,offsets_basename_ptr,
+			 positions_high_basename_ptr,positions_low_basename_ptr,
+			 /*pointers_index1info_ptr*/NULL,offsets_index1info_ptr,
+			 positions_high_index1info_ptr,positions_low_index1info_ptr);
   }
 }
 
@@ -390,16 +545,18 @@ Indexdb_get_filenames_pregamma (char **offsets_filename, char **positions_filena
 #endif
 
 
-bool
-Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, char **positions_filename,
-		       char **gammaptrs_basename_ptr, char **offsetscomp_basename_ptr, char **positions_basename_ptr,
-		       char **gammaptrs_index1info_ptr, char **offsetscomp_index1info_ptr, char **positions_index1info_ptr,
-#ifdef PMAP
-		       Alphabet_T *alphabet, Alphabet_T required_alphabet,
-#endif
-		       Width_T *basesize, Width_T *index1part, Width_T *index1interval, char *genomesubdir,
-		       char *fileroot, char *idx_filesuffix, char *snps_root,
-		       Width_T required_basesize, Width_T required_index1part, Width_T required_interval) {
+Filenames_T
+Indexdb_get_filenames_bitpack (Width_T *index1part, Width_T *index1interval,
+			       char *genomesubdir, char *fileroot, char *idx_filesuffix, char *snps_root,
+			       Width_T required_index1part, Width_T required_interval,
+			       Blocksize_T blocksize, bool offsets_only_p) {
+  char *offsetspages_filename, *offsetsmeta_filename, *offsetsstrm_filename,
+    *positions_high_filename, *positions_low_filename,
+    *offsetspages_basename_ptr, *offsetsmeta_basename_ptr, *offsetsstrm_basename_ptr,
+    *positions_high_basename_ptr, *positions_low_basename_ptr,
+    *offsetspages_index1info_ptr, *offsetsmeta_index1info_ptr, *offsetsstrm_index1info_ptr,
+    *positions_high_index1info_ptr, *positions_low_index1info_ptr;
+
   char *base_filename, *filename;
 #ifdef PMAP
   char *pattern1, *pattern2, *a;
@@ -410,32 +567,70 @@ Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, c
   char tens0, tens;
 #endif
   char interval_char, digit_string[2], *p, *q;
-  Width_T found_basesize, found_index1part, found_interval;
+  Width_T found_index1part = 0, found_interval = 0;
   int rootlength, patternlength;
 
   char ones0, ones;
-  char *gammaptrs_suffix, *offsetscomp_suffix, *positions_suffix;
+  char *offsetspages_suffix, *offsetsmeta_suffix, *offsetsstrm_suffix,
+    *positions_high_suffix, *positions_low_suffix;
   struct dirent *entry;
   DIR *dp;
 
 
   if (snps_root == NULL) {
-    gammaptrs_suffix = "gammaptrs";
-    offsetscomp_suffix = "offsetscomp";
-    positions_suffix = POSITIONS_FILESUFFIX;
+    if (blocksize == 32) {
+      offsetspages_suffix = "offsets32pages";
+      offsetsmeta_suffix = "offsets32meta";
+      offsetsstrm_suffix = "offsets32strm";
+      positions_high_suffix = POSITIONS_HIGH_FILESUFFIX;
+      positions_low_suffix = POSITIONS_LOW_FILESUFFIX;
+    } else if (blocksize == 64) {
+      offsetspages_suffix = "offsets64pages";
+      offsetsmeta_suffix = "offsets64meta";
+      offsetsstrm_suffix = "offsets64strm";
+      positions_high_suffix = POSITIONS_HIGH_FILESUFFIX;
+      positions_low_suffix = POSITIONS_LOW_FILESUFFIX;
+    } else {
+      fprintf(stderr,"Unexpected blocksize %d\n",blocksize);
+      abort();
+    }
   } else {
-    gammaptrs_suffix = (char *) CALLOC(strlen("gammaptrs")+strlen(".")+strlen(snps_root)+1,sizeof(char));
-    sprintf(gammaptrs_suffix,"%s.%s","gammaptrs",snps_root);
-    offsetscomp_suffix = (char *) CALLOC(strlen("offsetscomp")+strlen(".")+strlen(snps_root)+1,sizeof(char));
-    sprintf(offsetscomp_suffix,"%s.%s","offsetscomp",snps_root);
-    positions_suffix = (char *) CALLOC(strlen(POSITIONS_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
-    sprintf(positions_suffix,"%s.%s",POSITIONS_FILESUFFIX,snps_root);
+    if (blocksize == 32) {
+      offsetspages_suffix = (char *) CALLOC(strlen("offsets32pages.")+strlen(snps_root)+1,sizeof(char));
+      offsetsmeta_suffix = (char *) CALLOC(strlen("offsets32meta.")+strlen(snps_root)+1,sizeof(char));
+      offsetsstrm_suffix = (char *) CALLOC(strlen("offsets32strm.")+strlen(snps_root)+1,sizeof(char));
+      positions_high_suffix = (char *) CALLOC(strlen(POSITIONS_HIGH_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
+      positions_low_suffix = (char *) CALLOC(strlen(POSITIONS_LOW_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
+
+      sprintf(offsetspages_suffix,"offsets32pages.%s",snps_root);
+      sprintf(offsetsmeta_suffix,"offsets32meta.%s",snps_root);
+      sprintf(offsetsstrm_suffix,"offsets32strm.%s",snps_root);
+      sprintf(positions_high_suffix,"%s.%s",POSITIONS_HIGH_FILESUFFIX,snps_root);
+      sprintf(positions_low_suffix,"%s.%s",POSITIONS_LOW_FILESUFFIX,snps_root);
+
+    } else if (blocksize == 64) {
+      offsetspages_suffix = (char *) CALLOC(strlen("offsets64pages.")+strlen(snps_root)+1,sizeof(char));
+      offsetsmeta_suffix = (char *) CALLOC(strlen("offsets64meta.")+strlen(snps_root)+1,sizeof(char));
+      offsetsstrm_suffix = (char *) CALLOC(strlen("offsets64strm.")+strlen(snps_root)+1,sizeof(char));
+      positions_high_suffix = (char *) CALLOC(strlen(POSITIONS_HIGH_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
+      positions_low_suffix = (char *) CALLOC(strlen(POSITIONS_LOW_FILESUFFIX)+strlen(".")+strlen(snps_root)+1,sizeof(char));
+
+      sprintf(offsetspages_suffix,"offsets64pages.%s",snps_root);
+      sprintf(offsetsmeta_suffix,"offsets64meta.%s",snps_root);
+      sprintf(offsetsstrm_suffix,"offsets64strm.%s",snps_root);
+      sprintf(positions_high_suffix,"%s.%s",POSITIONS_HIGH_FILESUFFIX,snps_root);
+      sprintf(positions_low_suffix,"%s.%s",POSITIONS_LOW_FILESUFFIX,snps_root);
+
+    } else {
+      fprintf(stderr,"Unexpected blocksize %d\n",blocksize);
+      abort();
+    }
   }
 
+
 #ifdef PMAP
   *alphabet = NALPHABETS + 1;
 #endif
-  *basesize = 0;
   *index1part = 0;
   *index1interval = 1000;
   base_filename = (char *) NULL;
@@ -459,13 +654,25 @@ Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, c
     filename = entry->d_name;
     if (!strncmp(filename,pattern1,patternlength1)) {
       a = &(filename[strlen(pattern1)]); /* Points after fileroot, e.g., "hg19." */
-      if ((p = strstr(a,pattern2)) != NULL && (q = strstr(p,offsetscomp_suffix)) != NULL && !strcmp(q,offsetscomp_suffix)) {
+      if ((p = strstr(a,pattern2)) != NULL && (q = strstr(p,offsetsstrm_suffix)) != NULL && !strcmp(q,offsetsstrm_suffix)) {
 	if ((found_alphabet = Alphabet_find(a)) != AA0) {
 	  alphabet_strlen = p - a;
 	  p += patternlength2;
 
-	  if (q - p == BASE_KMER_SAMPLING) {
-	    /* New style, e.g., pf677 */
+	  if (q - p == KMER_SAMPLING) {
+	    /* Latest style, e.g., pf77 */
+	    if (sscanf(p,"%c%c",&ones,&interval_char) == 2) {
+	      digit_string[0] = ones;
+	      found_index1part = atoi(digit_string);
+
+	      digit_string[0] = interval_char;
+	      found_interval = atoi(digit_string);
+	    } else {
+	      abort();
+	    }
+
+	  } else if (q - p == BASE_KMER_SAMPLING) {
+	    /* Previous style, e.g., pf677 */
 	    if (sscanf(p,"%c%c%c",&ones0,&ones,&interval_char) == 3) {
 	      digit_string[0] = ones0;
 	      found_basesize = atoi(digit_string);
@@ -475,22 +682,29 @@ Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, c
 
 	      digit_string[0] = interval_char;
 	      found_interval = atoi(digit_string);
+	    } else {
+	      abort();
 	    }
+
 	  } else {
 	    /* fprintf(stderr,"Cannot parse part between %s and offsets in filename %s\n",idx_filesuffix,filename); */
-	    return false;
+	    if (snps_root != NULL) {
+	      FREE(offsetsstrm_suffix);
+	      FREE(offsetsmeta_suffix);
+	      FREE(offsetspages_suffix);
+	      FREE(positions_high_suffix);
+	      FREE(positions_low_suffix);
+	    }
+	    return (Filenames_T) NULL;
 	  }
 
 	  if ((required_alphabet == AA0 || found_alphabet == required_alphabet) &&
 	      (required_index1part == 0 || found_index1part == required_index1part) &&
-	      (required_basesize == 0 || found_basesize == required_basesize) &&
 	      (required_interval == 0 || found_interval == required_interval)) {
 	    if (required_alphabet == AA0 && found_alphabet > *alphabet) {
 	      /* Skip, since we have already found an earlier alphabet */
 	    } else if (required_index1part == 0 && found_index1part < *index1part) {
 	      /* Skip, since we have already found a larger index1part */
-	    } else if (required_basesize == 0 && found_basesize < *basesize) {
-	      /* Skip, since we have already found a larger basesize */
 	    } else if (required_interval == 0 && found_interval > *index1interval) {
 	      /* Skip, since we have already found a smaller interval */
 	    } else {
@@ -523,16 +737,11 @@ Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, c
     filename = entry->d_name;
     if (!strncmp(filename,pattern,patternlength)) {
       p = &(filename[strlen(pattern)]); /* Points after idx_filesuffix, e.g., "ref" */
-      if ((q = strstr(p,offsetscomp_suffix)) != NULL && !strcmp(q,offsetscomp_suffix)) {
-
-	if (q - p == BASE_KMER_SAMPLING) {
-	  /* New style, e.g., ref12153 */
-	  if (sscanf(p,"%c%c%c%c%c",&tens0,&ones0,&tens,&ones,&interval_char) == 5) {
-	    digit_string[0] = tens0;
-	    found_basesize = 10*atoi(digit_string);
-	    digit_string[0] = ones0;
-	    found_basesize += atoi(digit_string);
+      if ((q = strstr(p,offsetsstrm_suffix)) != NULL && !strcmp(q,offsetsstrm_suffix)) {
 
+	if (q - p == KMER_SAMPLING) {
+	  /* New style, e.g., ref153 */
+	  if (sscanf(p,"%c%c%c",&tens,&ones,&interval_char) == 3) {
 	    digit_string[0] = tens;
 	    found_index1part = 10*atoi(digit_string);
 	    digit_string[0] = ones;
@@ -540,24 +749,30 @@ Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, c
 
 	    digit_string[0] = interval_char;
 	    found_interval = atoi(digit_string);
+	  } else {
+	    abort();
 	  }
+
 	} else {
 	  fprintf(stderr,"Cannot parse part between %s and offsets in filename %s: found %ld characters, expecting %d\n",
 		  idx_filesuffix,filename,q-p,BASE_KMER_SAMPLING);
-	  return false;
+	  if (snps_root != NULL) {
+	    FREE(offsetsstrm_suffix);
+	    FREE(offsetsmeta_suffix);
+	    FREE(offsetspages_suffix);
+	    FREE(positions_high_suffix);
+	    FREE(positions_low_suffix);
+	  }
+	  return (Filenames_T) NULL;
 	}
 
 	if ((required_index1part == 0 || found_index1part == required_index1part) &&
-	    (required_basesize == 0 || found_basesize == required_basesize) &&
 	    (required_interval == 0 || found_interval == required_interval)) {
 	  if (required_index1part == 0 && found_index1part < *index1part) {
 	    /* Skip, since we have already found a larger index1part */
-	  } else if (required_basesize == 0 && found_basesize < *basesize) {
-	    /* Skip, since we have already found a larger basesize */
 	  } else if (required_interval == 0 && found_interval > *index1interval) {
 	    /* Skip, since we have already found a smaller interval */
 	  } else {
-	    *basesize = found_basesize;
 	    *index1part = found_index1part;
 	    *index1interval = found_interval;
 	    FREE(base_filename);
@@ -579,222 +794,421 @@ Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, c
 
   /* Construct full filenames */
   if (base_filename == NULL) {
-    fprintf(stderr,"Cannot find offsetscomp file containing %s and %s",
-	    idx_filesuffix,offsetscomp_suffix);
-#ifdef PMAP
-    if (required_alphabet > AA0) {
-      fprintf(stderr," and having alphabet %s",Alphabet_string(required_alphabet));
-    }
-#endif
-    if (required_index1part > 0) {
-      fprintf(stderr," and having k-mer of %d",required_index1part);
-    }
-    if (required_interval > 0) {
-      fprintf(stderr," and having sampling interval of %d",required_interval);
+    /* offsetspages_filename = (char *) NULL; */
+    /* offsetsmeta_filename = (char *) NULL; */
+    /* offsetsstrm_filename = (char *) NULL; */
+    /* positions_high_filename = (char *) NULL; */
+    /* positions_low_filename = (char *) NULL; */
+    if (snps_root != NULL) {
+      FREE(offsetsstrm_suffix);
+      FREE(offsetsmeta_suffix);
+      FREE(offsetspages_suffix);
+      FREE(positions_high_suffix);
+      FREE(positions_low_suffix);
     }
-    fprintf(stderr,"\n");
-
-    *gammaptrs_filename = (char *) NULL;
-    *offsetscomp_filename = (char *) NULL;
-    *positions_filename = (char *) NULL;
-    return false;
+    return (Filenames_T) NULL;
 
   } else {
-    *offsetscomp_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(base_filename)+1,sizeof(char));
-    *offsetscomp_basename_ptr = &((*offsetscomp_filename)[strlen(genomesubdir)+strlen("/")]);
-    *offsetscomp_index1info_ptr = &((*offsetscomp_basename_ptr)[patternlength]);
-
-    sprintf(*offsetscomp_filename,"%s/%s",genomesubdir,base_filename);
-    if (Access_file_exists_p(*offsetscomp_filename) == false) {
-      fprintf(stderr,"Offsets filename %s does not exist\n",*offsetscomp_filename);
-      FREE(*offsetscomp_filename);
-      *offsetscomp_filename = (char *) NULL;
-      *positions_filename = (char *) NULL;
+    offsetsstrm_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+strlen(base_filename)+1,sizeof(char));
+    offsetsstrm_basename_ptr = &(offsetsstrm_filename[strlen(genomesubdir)+strlen("/")]);
+    offsetsstrm_index1info_ptr = &(offsetsstrm_basename_ptr[patternlength]);
+
+    sprintf(offsetsstrm_filename,"%s/%s",genomesubdir,base_filename);
+    if (Access_file_exists_p(offsetsstrm_filename) == false) {
+      fprintf(stderr,"Offsets filename %s does not exist\n",offsetsstrm_filename);
+      FREE(offsetsstrm_filename);
+      /* offsetsstrm_filename = (char *) NULL; */
+      /* positions_high_filename = (char *) NULL; */
+      /* positions_low_filename = (char *) NULL; */
       FREE(base_filename);
-      return false;
+      if (snps_root != NULL) {
+	FREE(offsetsstrm_suffix);
+	FREE(offsetsmeta_suffix);
+	FREE(offsetspages_suffix);
+	FREE(positions_high_suffix);
+	FREE(positions_low_suffix);
+      }
+      return (Filenames_T) NULL;
     }
 
 
-    if ((q = strstr(base_filename,offsetscomp_suffix)) == NULL) {
+    if ((q = strstr(base_filename,offsetsstrm_suffix)) == NULL) {
       abort();
     } else {
       rootlength = q - base_filename;
     }
 
-    if (*index1part == *basesize) {
-      *gammaptrs_filename = (char *) NULL;
-      *gammaptrs_basename_ptr = (char *) NULL;
-      *gammaptrs_index1info_ptr = (char *) NULL;
-    } else {
-      *gammaptrs_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(gammaptrs_suffix)+1,sizeof(char));
-      *gammaptrs_basename_ptr = &((*gammaptrs_filename)[strlen(genomesubdir)+strlen("/")]);
-      *gammaptrs_index1info_ptr = &((*gammaptrs_basename_ptr)[patternlength]);
-
-      sprintf(*gammaptrs_filename,"%s/",genomesubdir);
-      strncpy(*gammaptrs_basename_ptr,base_filename,rootlength);
-      strcpy(&((*gammaptrs_basename_ptr)[rootlength]),gammaptrs_suffix);
-
-      if (Access_file_exists_p(*gammaptrs_filename) == false) {
-	fprintf(stderr,"Gammaptrs filename %s does not exist\n",*gammaptrs_filename);
-	FREE(*offsetscomp_filename);
-	*offsetscomp_filename = (char *) NULL;
-	FREE(base_filename);
-	return false;
+    offsetsmeta_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(offsetsmeta_suffix)+1,sizeof(char));
+    offsetsmeta_basename_ptr = &(offsetsmeta_filename[strlen(genomesubdir)+strlen("/")]);
+    offsetsmeta_index1info_ptr = &(offsetsmeta_basename_ptr[patternlength]);
+
+    sprintf(offsetsmeta_filename,"%s/",genomesubdir);
+    strncpy(offsetsmeta_basename_ptr,base_filename,rootlength);
+    strcpy(&(offsetsmeta_basename_ptr[rootlength]),offsetsmeta_suffix);
+
+    if (Access_file_exists_p(offsetsmeta_filename) == false) {
+      fprintf(stderr,"Offsetsmeta filename %s does not exist\n",offsetsmeta_filename);
+      FREE(offsetsstrm_filename);
+      /* offsetsstrm_filename = (char *) NULL; */
+      FREE(base_filename);
+      if (snps_root != NULL) {
+	FREE(offsetsstrm_suffix);
+	FREE(offsetsmeta_suffix);
+	FREE(positions_high_suffix);
+	FREE(positions_low_suffix);
       }
+      return (Filenames_T) NULL;
     }
 
 
-    *positions_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(positions_suffix)+1,sizeof(char));
-    *positions_basename_ptr = &((*positions_filename)[strlen(genomesubdir)+strlen("/")]);
-    *positions_index1info_ptr = &((*positions_basename_ptr)[patternlength]);
+    offsetspages_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(offsetspages_suffix)+1,sizeof(char));
+    offsetspages_basename_ptr = &(offsetspages_filename[strlen(genomesubdir)+strlen("/")]);
+    offsetspages_index1info_ptr = &(offsetspages_basename_ptr[patternlength]);
+
+    sprintf(offsetspages_filename,"%s/",genomesubdir);
+    strncpy(offsetspages_basename_ptr,base_filename,rootlength);
+    strcpy(&(offsetspages_basename_ptr[rootlength]),offsetspages_suffix);
+    if (Access_file_exists_p(offsetspages_filename) == false) {
+      /* Not a huge genome */
+      FREE(offsetspages_filename);
+      offsetspages_filename = (char *) NULL;
+    }
 
-    sprintf(*positions_filename,"%s/",genomesubdir);
-    strncpy(*positions_basename_ptr,base_filename,rootlength);
-    strcpy(&((*positions_basename_ptr)[rootlength]),positions_suffix);
+    positions_high_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(positions_high_suffix)+1,sizeof(char));
+    positions_high_basename_ptr = &(positions_high_filename[strlen(genomesubdir)+strlen("/")]);
+    positions_high_index1info_ptr = &(positions_high_basename_ptr[patternlength]);
 
-    if (Access_file_exists_p(*positions_filename) == false) {
+    positions_low_filename = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+rootlength+strlen(positions_low_suffix)+1,sizeof(char));
+    positions_low_basename_ptr = &(positions_low_filename[strlen(genomesubdir)+strlen("/")]);
+    positions_low_index1info_ptr = &(positions_low_basename_ptr[patternlength]);
+
+    sprintf(positions_high_filename,"%s/",genomesubdir);
+    strncpy(positions_high_basename_ptr,base_filename,rootlength);
+    strcpy(&(positions_high_basename_ptr[rootlength]),positions_high_suffix);
+
+    sprintf(positions_low_filename,"%s/",genomesubdir);
+    strncpy(positions_low_basename_ptr,base_filename,rootlength);
+    strcpy(&(positions_low_basename_ptr[rootlength]),positions_low_suffix);
+
+    if (offsets_only_p == true) {
+      /* Do not look for a positions file */
+    } else if (Access_file_exists_p(positions_low_filename) == false) {
       /* Try newer naming scheme: ref153positions instead of ref12153positions */
-      sprintf(*positions_filename,"%s/",genomesubdir);
-      strncpy(*positions_basename_ptr,base_filename,rootlength-BASE_KMER_SAMPLING); /* e.g., skip "12153" */
-      strncpy(&((*positions_basename_ptr)[rootlength-BASE_KMER_SAMPLING]),&(base_filename[rootlength-KMER_SAMPLING]),KMER_SAMPLING);
-      strcpy(&((*positions_basename_ptr)[rootlength+KMER_SAMPLING-BASE_KMER_SAMPLING]),positions_suffix);
-
-      if (Access_file_exists_p(*positions_filename) == false) {
-	fprintf(stderr,"Positions filename %s does not exist\n",*positions_filename);
-	FREE(*gammaptrs_filename);
-	FREE(*offsetscomp_filename);
-	FREE(*positions_filename);
-	*gammaptrs_filename = (char *) NULL;
-	*offsetscomp_filename = (char *) NULL;
-	*positions_filename = (char *) NULL;
+      sprintf(positions_high_filename,"%s/",genomesubdir);
+      strncpy(positions_high_basename_ptr,base_filename,rootlength-BASE_KMER_SAMPLING); /* e.g., skip "12153" */
+      strncpy(&(positions_high_basename_ptr[rootlength-BASE_KMER_SAMPLING]),&(base_filename[rootlength-KMER_SAMPLING]),KMER_SAMPLING);
+      strcpy(&(positions_high_basename_ptr[rootlength+KMER_SAMPLING-BASE_KMER_SAMPLING]),positions_high_suffix);
+
+      sprintf(positions_low_filename,"%s/",genomesubdir);
+      strncpy(positions_low_basename_ptr,base_filename,rootlength-BASE_KMER_SAMPLING); /* e.g., skip "12153" */
+      strncpy(&(positions_low_basename_ptr[rootlength-BASE_KMER_SAMPLING]),&(base_filename[rootlength-KMER_SAMPLING]),KMER_SAMPLING);
+      strcpy(&(positions_low_basename_ptr[rootlength+KMER_SAMPLING-BASE_KMER_SAMPLING]),positions_low_suffix);
+
+      if (Access_file_exists_p(positions_low_filename) == false) {
+	fprintf(stderr,"Positions filename %s does not exist\n",positions_low_filename);
+	FREE(offsetspages_filename);
+	FREE(offsetsmeta_filename);
+	FREE(offsetsstrm_filename);
+	FREE(positions_high_filename);
+	FREE(positions_low_filename);
+	/* offsetsmeta_filename = (char *) NULL; */
+	/* offsetsstrm_filename = (char *) NULL; */
+	/* positions_high_filename = (char *) NULL; */
+	/* positions_low_filename = (char *) NULL; */
 	FREE(base_filename);
-	return false;
+	if (snps_root != NULL) {
+	  FREE(offsetsstrm_suffix);
+	  FREE(offsetsmeta_suffix);
+	  FREE(offsetspages_suffix);
+	  FREE(positions_high_suffix);
+	  FREE(positions_low_suffix);
+	}
+	return (Filenames_T) NULL;
       }
     }
 
+    if (Access_file_exists_p(positions_high_filename) == false) {
+      /* Not a large genome */
+      FREE(positions_high_filename);
+      positions_high_filename = (char *) NULL;
+    }
+
     if (snps_root != NULL) {
-      FREE(offsetscomp_suffix);
-      FREE(gammaptrs_suffix);
-      FREE(positions_suffix);
+      FREE(offsetsstrm_suffix);
+      FREE(offsetsmeta_suffix);
+      FREE(offsetspages_suffix);
+      FREE(positions_high_suffix);
+      FREE(positions_low_suffix);
     }
 
     FREE(base_filename);
 
     fprintf(stderr,"Looking for index files in directory %s\n",genomesubdir);
-    if (*gammaptrs_filename == NULL) {
-      fprintf(stderr,"  No gammaptrs file, because kmersize %d == basesize %d\n",
-	      *index1part,*basesize);
+    if (offsetspages_filename != NULL)  {
+      fprintf(stderr,"  Pages file is %s\n",offsetspages_basename_ptr);
+    }
+    fprintf(stderr,"  Pointers file is %s\n",offsetsmeta_basename_ptr);
+    fprintf(stderr,"  Offsets file is %s\n",offsetsstrm_basename_ptr);
+    if (positions_high_filename == NULL) {
+      fprintf(stderr,"  Positions file is %s\n",positions_low_basename_ptr);
     } else {
-      fprintf(stderr,"  Gammaptrs file is %s\n",*gammaptrs_basename_ptr);
+      fprintf(stderr,"  Positions files are %s and %s\n",positions_high_basename_ptr,positions_low_basename_ptr);
     }
-    fprintf(stderr,"  Offsetscomp file is %s\n",*offsetscomp_basename_ptr);
-    fprintf(stderr,"  Positions file is %s\n",*positions_basename_ptr);
-    return true;
+    return Filenames_new(offsetspages_filename,offsetsmeta_filename,offsetsstrm_filename,
+			 positions_high_filename,positions_low_filename,
+			 offsetsmeta_basename_ptr,offsetsstrm_basename_ptr,
+			 positions_high_basename_ptr,positions_low_basename_ptr,
+			 offsetsmeta_index1info_ptr,offsetsstrm_index1info_ptr,
+			 positions_high_index1info_ptr,positions_low_index1info_ptr);
+
   }
 }
 
 
+Filenames_T
+Indexdb_get_filenames (int *compression_type,
+#ifdef PMAP
+		       Alphabet_T *alphabet, Alphabet_T required_alphabet,
+#endif
+		       Width_T *index1part, Width_T *index1interval, char *genomesubdir,
+		       char *fileroot, char *idx_filesuffix, char *snps_root,
+		       Width_T required_index1part, Width_T required_interval,
+		       bool offsets_only_p) {
+  Filenames_T filenames;
+
+  if ((filenames = Indexdb_get_filenames_no_compression(&(*index1part),&(*index1interval),
+							genomesubdir,fileroot,idx_filesuffix,snps_root,
+							required_interval,offsets_only_p)) != NULL) {
+    *compression_type = NO_COMPRESSION;
+    return filenames;
+    
+
+  } else if ((filenames = Indexdb_get_filenames_bitpack(
+#ifdef PMAP
+							&(*alphabet),required_alphabet,
+#endif
+							&(*index1part),&(*index1interval),
+							genomesubdir,fileroot,idx_filesuffix,snps_root,
+							required_index1part,required_interval,
+							/*blocksize*/64,offsets_only_p)) != NULL) {
+    *compression_type = BITPACK64_COMPRESSION;
+    return filenames;
+    
+  } else {
+    return (Filenames_T) NULL;
+  }
+}
+
 
 T
-Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1interval,
+Indexdb_new_genome (Width_T *index1part, Width_T *index1interval,
 		    char *genomesubdir, char *fileroot, char *idx_filesuffix, char *snps_root,
 #ifdef PMAP
 		    Alphabet_T *alphabet, int *alphabet_size, Alphabet_T required_alphabet,
 #endif
-		    Width_T required_basesize, Width_T required_index1part, Width_T required_interval, bool expand_offsets_p,
-		    Access_mode_T offsetscomp_access, Access_mode_T positions_access) {
+		    Width_T required_index1part, Width_T required_interval,
+		    bool expand_offsets_p, Access_mode_T offsetsstrm_access, Access_mode_T positions_access) {
   T new = (T) MALLOC(sizeof(*new));
-  char *gammaptrs_filename, *offsetscomp_filename, *positions_filename,
-    *gammaptrs_basename_ptr, *offsetscomp_basename_ptr, *positions_basename_ptr,
-    *gammaptrs_index1info_ptr, *offsetscomp_index1info_ptr, *positions_index1info_ptr;
-  char *offsets_filename, *offsets_basename_ptr, *offsets_index1info_ptr;
+  Filenames_T filenames;
   Oligospace_T basespace, base;
 
   unsigned int poly_T;
-  Positionsptr_T ptr0, end0;
+  Positionsptr_T ptr0, end0;	/* UINT8 or UINT4 */
   off_t filesize;
 
+#ifdef LARGE_GENOMES
+  size_t offsetspages_len;
+#endif
+
   char *comma;
   double seconds;
 #ifdef HAVE_MMAP
   int npages;
 #endif
 
-  /* Read offsets file */
-  if (Indexdb_get_filenames(&gammaptrs_filename,&offsetscomp_filename,&positions_filename,
-			    &gammaptrs_basename_ptr,&offsetscomp_basename_ptr,&positions_basename_ptr,
-			    &gammaptrs_index1info_ptr,&offsetscomp_index1info_ptr,&positions_index1info_ptr,
+  if ((filenames = Indexdb_get_filenames_no_compression(&new->index1part,&new->index1interval,
+							genomesubdir,fileroot,idx_filesuffix,snps_root,
+							required_interval,/*offsets_only_p*/false)) != NULL) {
+    /* Try non-compressed files */
+    fprintf(stderr,"Offsets compression type: none\n");
+    new->compression_type = NO_COMPRESSION;
+    new->blocksize = 1;
+
+    *index1part = new->index1part;
+    *index1interval = new->index1interval;
+
 #ifdef PMAP
-			    &(*alphabet),required_alphabet,
+    basespace = power(*alphabet_size,new->index1part);
+#else
+    basespace = power(4,new->index1part);
 #endif
-			    &new->offsetscomp_basesize,&new->index1part,&new->index1interval,
-			    genomesubdir,fileroot,idx_filesuffix,snps_root,
-			    required_basesize,required_index1part,required_interval) == true) {
+    new->offsetsmeta = (UINT4 *) CALLOC(basespace+1,sizeof(UINT4));
+    for (base = 0; base <= basespace; base++) {
+      new->offsetsmeta[base] = base;
+    }
+
+
+    if (offsetsstrm_access == USE_ALLOCATE) {
+      if (snps_root) {
+	fprintf(stderr,"Allocating memory for %s (%s) offsets, kmer %d, interval %d...",
+		idx_filesuffix,snps_root,new->index1part,new->index1interval);
+      } else {
+	fprintf(stderr,"Allocating memory for %s offsets, kmer %d, interval %d...",
+		idx_filesuffix,new->index1part,new->index1interval);
+      }
+      new->offsetsstrm = (UINT4 *) Access_allocated(&new->offsetsstrm_len,&seconds,
+							    filenames->offsets_filename,sizeof(UINT4));
+      if (new->offsetsstrm == NULL) {
+	fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B))\n");
+	exit(9);
+      } else {
+	comma = Genomicpos_commafmt(new->offsetsstrm_len);
+	fprintf(stderr,"done (%s bytes, %.2f sec)\n",comma,seconds);
+	FREE(comma);
+	new->offsetsstrm_access = ALLOCATED;
+      }
+
+#ifdef HAVE_MMAP
+    } else if (offsetsstrm_access == USE_MMAP_PRELOAD) {
+      if (snps_root) {
+	fprintf(stderr,"Pre-loading %s (%s) offsets, kmer %d, interval %d...",
+		idx_filesuffix,snps_root,new->index1part,new->index1interval);
+      } else {
+	fprintf(stderr,"Pre-loading %s offsets, kmer %d, interval %d...",
+		idx_filesuffix,new->index1part,new->index1interval);
+      }
+      new->offsetsstrm = (UINT4 *) Access_mmap_and_preload(&new->offsetsstrm_fd,&new->offsetsstrm_len,&npages,&seconds,
+								   filenames->offsets_filename,sizeof(UINT4));
+      if (new->offsetsstrm == NULL) {
+	fprintf(stderr,"insufficient memory (will use disk file instead, but program may not run)\n");
+#ifdef PMAP
+	new->offsetsstrm_access = FILEIO;
+#else
+	exit(9);
+#endif
+      } else {
+	comma = Genomicpos_commafmt(new->offsetsstrm_len);
+	fprintf(stderr,"done (%s bytes, %d pages, %.2f sec)\n",comma,npages,seconds);
+	FREE(comma);
+	new->offsetsstrm_access = MMAPPED;
+      }
+
+    } else if (offsetsstrm_access == USE_MMAP_ONLY) {
+      new->offsetsstrm = (UINT4 *) Access_mmap(&new->offsetsstrm_fd,&new->offsetsstrm_len,
+						       filenames->offsets_filename,sizeof(UINT4),/*randomp*/false);
+      if (new->offsetsstrm == NULL) {
+	fprintf(stderr,"Insufficient memory for mmap of %s (will use disk file instead, but program may not run)\n",
+		filenames->offsets_filename);
+#ifdef PMAP
+	new->offsetsstrm_access = FILEIO;
+#else
+	exit(9);
+#endif
+      } else {
+	new->offsetsstrm_access = MMAPPED;
+      }
+#endif
+
+    } else if (offsetsstrm_access == USE_FILEIO) {
+      fprintf(stderr,"Offsets file I/O access of %s not allowed\n",filenames->offsets_filename);
+      exit(9);
+
+    } else {
+      fprintf(stderr,"Don't recognize offsetsstrm_access type %d\n",offsetsstrm_access);
+      abort();
+    }
+
+ } else if ((filenames = Indexdb_get_filenames_bitpack(
+#ifdef PMAP
+						       &(*alphabet),required_alphabet,
+#endif
+						       &new->index1part,&new->index1interval,
+						       genomesubdir,fileroot,idx_filesuffix,snps_root,
+						       required_index1part,required_interval,
+						       /*blocksize*/64,/*offsets_only_p*/false)) != NULL) {
+    /* Try bitpack compression  */
     *index1part = new->index1part;
     *index1interval = new->index1interval;
 
     if (expand_offsets_p == true) {
-      *basesize = *index1part;
+#ifdef LARGE_GENOMES
+      fprintf(stderr,"Expansion of bitpack offsets not supported for large genomes\n");
+      abort();
+#else      
+      fprintf(stderr,"Offsets compression type: none (bitpack expanded)\n");
+      new->compression_type = NO_COMPRESSION;
+
 #ifdef PMAP
       *alphabet_size = Alphabet_get_size(*alphabet);
-      new->offsetscomp_blocksize = 1;
+      new->blocksize = 1;
       basespace = power(*alphabet_size,new->index1part);
 #else
-      new->offsetscomp_blocksize = 1;
+      new->blocksize = 1;
       basespace = power(4,new->index1part);
 #endif
-      new->gammaptrs = (Gammaptr_T *) CALLOC(basespace+1,sizeof(Gammaptr_T));
+      new->offsetsmeta = (UINT4 *) CALLOC(basespace+1,sizeof(UINT4));
       for (base = 0; base <= basespace; base++) {
-	new->gammaptrs[base] = base;
+	new->offsetsmeta[base] = base;
       }
 
 #ifdef PMAP
-      new->offsetscomp = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,
-						     new->offsetscomp_basesize,*alphabet_size,new->index1part);
+      new->offsetsstrm = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,
+						      *alphabet_size,new->index1part);
 #else
-      new->offsetscomp = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,
-						     new->offsetscomp_basesize,new->index1part);
+      new->offsetsstrm = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,
+						      new->index1part);
+#endif
+      new->offsetsstrm_access = ALLOCATED;
+
 #endif
-      new->offsetscomp_access = ALLOCATED;
 
-    } else {
-      *basesize = new->offsetscomp_basesize;
 #ifdef PMAP
-      *alphabet_size = Alphabet_get_size(*alphabet);
-      new->offsetscomp_blocksize = power(*alphabet_size,(*index1part) - new->offsetscomp_basesize);
 #else
-      new->offsetscomp_blocksize = power(4,(*index1part) - new->offsetscomp_basesize);
+      /* Sanity check on positions filesize */
+      poly_T = ~(~0UL << 2*new->index1part);
+      end0 = new->offsetsstrm[poly_T+1];
+#ifdef LARGE_GENOMES
+      if ((filesize = Access_filesize(filenames->positions_high_filename)) != end0 * (off_t) sizeof(unsigned char)) {
+	fprintf(stderr,"Something is wrong with the genomic index: expected file size for %s is %lu, but observed %lu.\n",
+		filenames->positions_high_filename,end0*sizeof(unsigned char),filesize);
+	abort();
+      }
 #endif
+      if ((filesize = Access_filesize(filenames->positions_low_filename)) != end0 * (off_t) sizeof(UINT4)) {
+	fprintf(stderr,"Something is wrong with the genomic index: expected file size for %s is %lu, but observed %lu.\n",
+		filenames->positions_low_filename,end0*sizeof(UINT4),filesize);
+	abort();
+      }
+#endif	/* PMAP */
+
+    } else {
+      fprintf(stderr,"Offsets compression type: bitpack64\n");
+      new->compression_type = BITPACK64_COMPRESSION;
 
-      if (new->index1part == new->offsetscomp_basesize) {
 #ifdef PMAP
-	basespace = power(*alphabet_size,new->offsetscomp_basesize);
+      *alphabet_size = Alphabet_get_size(*alphabet);
+      /* new->blocksize = power(*alphabet_size,(*index1part) - new->offsetsstrm_basesize); */
 #else
-	basespace = power(4,new->offsetscomp_basesize);
+      new->blocksize = 64;  /* power(4,(*index1part) - new->offsetsstrm_basesize); */
 #endif
-	new->gammaptrs = (Gammaptr_T *) CALLOC(basespace+1,sizeof(Gammaptr_T));
-	for (base = 0; base <= basespace; base++) {
-	  new->gammaptrs[base] = base;
-	}
 
+      /* offsetsmeta and offsetsmeta always ALLOCATED */
+      if (snps_root) {
+	fprintf(stderr,"Allocating memory for %s (%s) offset pointers, kmer %d, interval %d...",
+		idx_filesuffix,snps_root,new->index1part,new->index1interval);
       } else {
-	/* gammaptrs always ALLOCATED */
-	if (snps_root) {
-	  fprintf(stderr,"Allocating memory for %s (%s) gammaptrs, kmer %d, interval %d...",
-		  idx_filesuffix,snps_root,new->index1part,new->index1interval);
-	} else {
-	  fprintf(stderr,"Allocating memory for %s gammaptrs, kmer %d, interval %d...",
-		  idx_filesuffix,new->index1part,new->index1interval);
-	}
-	new->gammaptrs = (Gammaptr_T *) Access_allocated(&new->gammaptrs_len,&seconds,
-						    gammaptrs_filename,sizeof(Gammaptr_T));
-	comma = Genomicpos_commafmt(new->gammaptrs_len);
-	fprintf(stderr,"done (%s bytes, %.2f sec)\n",comma,seconds);
-	FREE(comma);
+	fprintf(stderr,"Allocating memory for %s offset pointers, kmer %d, interval %d...",
+		idx_filesuffix,new->index1part,new->index1interval);
       }
+      new->offsetsmeta = (UINT4 *) Access_allocated(&new->offsetsmeta_len,&seconds,
+							 filenames->pointers_filename,sizeof(UINT4));
 
-      /* offsetscomp could be ALLOCATED or MMAPPED +/- PRELOAD */
-      if (offsetscomp_access == USE_ALLOCATE) {
+      comma = Genomicpos_commafmt(new->offsetsmeta_len);
+      fprintf(stderr,"done (%s bytes, %.2f sec)\n",comma,seconds);
+      FREE(comma);
+
+      /* offsetsstrm could be ALLOCATED or MMAPPED +/- PRELOAD */
+      if (offsetsstrm_access == USE_ALLOCATE) {
 	if (snps_root) {
 	  fprintf(stderr,"Allocating memory for %s (%s) offsets, kmer %d, interval %d...",
 		  idx_filesuffix,snps_root,new->index1part,new->index1interval);
@@ -802,20 +1216,20 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
 	  fprintf(stderr,"Allocating memory for %s offsets, kmer %d, interval %d...",
 		  idx_filesuffix,new->index1part,new->index1interval);
 	}
-	new->offsetscomp = (Offsetscomp_T *) Access_allocated(&new->offsetscomp_len,&seconds,
-						      offsetscomp_filename,sizeof(Offsetscomp_T));
-	if (new->offsetscomp == NULL) {
+	new->offsetsstrm = (UINT4 *) Access_allocated(&new->offsetsstrm_len,&seconds,
+							      filenames->offsets_filename,sizeof(UINT4));
+	if (new->offsetsstrm == NULL) {
 	  fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B))\n");
 	  exit(9);
 	} else {
-	  comma = Genomicpos_commafmt(new->offsetscomp_len);
+	  comma = Genomicpos_commafmt(new->offsetsstrm_len);
 	  fprintf(stderr,"done (%s bytes, %.2f sec)\n",comma,seconds);
 	  FREE(comma);
-	  new->offsetscomp_access = ALLOCATED;
+	  new->offsetsstrm_access = ALLOCATED;
 	}
 
 #ifdef HAVE_MMAP
-      } else if (offsetscomp_access == USE_MMAP_PRELOAD) {
+      } else if (offsetsstrm_access == USE_MMAP_PRELOAD) {
 	if (snps_root) {
 	  fprintf(stderr,"Pre-loading %s (%s) offsets, kmer %d, interval %d...",
 		  idx_filesuffix,snps_root,new->index1part,new->index1interval);
@@ -823,177 +1237,89 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
 	  fprintf(stderr,"Pre-loading %s offsets, kmer %d, interval %d...",
 		  idx_filesuffix,new->index1part,new->index1interval);
 	}
-	new->offsetscomp = (Offsetscomp_T *) Access_mmap_and_preload(&new->offsetscomp_fd,&new->offsetscomp_len,&npages,&seconds,
-							     offsetscomp_filename,sizeof(Offsetscomp_T));
-	if (new->offsetscomp == NULL) {
+	new->offsetsstrm = (UINT4 *) Access_mmap_and_preload(&new->offsetsstrm_fd,&new->offsetsstrm_len,&npages,&seconds,
+								     filenames->offsets_filename,sizeof(UINT4));
+	if (new->offsetsstrm == NULL) {
 	  fprintf(stderr,"insufficient memory (will use disk file instead, but program may not run)\n");
 #ifdef PMAP
-	  new->offsetscomp_access = FILEIO;
+	  new->offsetsstrm_access = FILEIO;
 #else
 	  exit(9);
 #endif
 	} else {
-	  comma = Genomicpos_commafmt(new->offsetscomp_len);
+	  comma = Genomicpos_commafmt(new->offsetsstrm_len);
 	  fprintf(stderr,"done (%s bytes, %d pages, %.2f sec)\n",comma,npages,seconds);
 	  FREE(comma);
-	  new->offsetscomp_access = MMAPPED;
+	  new->offsetsstrm_access = MMAPPED;
 	}
 
-      } else if (offsetscomp_access == USE_MMAP_ONLY) {
-	new->offsetscomp = (Offsetscomp_T *) Access_mmap(&new->offsetscomp_fd,&new->offsetscomp_len,
-						 offsetscomp_filename,sizeof(Offsetscomp_T),/*randomp*/false);
-	if (new->offsetscomp == NULL) {
+      } else if (offsetsstrm_access == USE_MMAP_ONLY) {
+	new->offsetsstrm = (UINT4 *) Access_mmap(&new->offsetsstrm_fd,&new->offsetsstrm_len,
+							 filenames->offsets_filename,sizeof(UINT4),/*randomp*/false);
+	if (new->offsetsstrm == NULL) {
 	  fprintf(stderr,"Insufficient memory for mmap of %s (will use disk file instead, but program may not run)\n",
-		  offsetscomp_filename);
+		  filenames->offsets_filename);
 #ifdef PMAP
-	  new->offsetscomp_access = FILEIO;
+	  new->offsetsstrm_access = FILEIO;
 #else
 	  exit(9);
 #endif
 	} else {
-	  new->offsetscomp_access = MMAPPED;
+	  new->offsetsstrm_access = MMAPPED;
 	}
 #endif
 
-      } else if (offsetscomp_access == USE_FILEIO) {
-	fprintf(stderr,"Offsetscomp file I/O access of %s not allowed\n",offsetscomp_filename);
+      } else if (offsetsstrm_access == USE_FILEIO) {
+	fprintf(stderr,"Offsetsstrm file I/O access of %s not allowed\n",filenames->offsets_filename);
 	exit(9);
 
       } else {
-	fprintf(stderr,"Don't recognize offsetscomp_access type %d\n",offsetscomp_access);
+	fprintf(stderr,"Don't recognize offsetsstrm_access type %d\n",offsetsstrm_access);
 	abort();
       }
-    }
-
-
-    FREE(offsetscomp_filename);
-    FREE(gammaptrs_filename);
-
-
-  } else if (Indexdb_get_filenames_pregamma(&offsets_filename,&positions_filename,
-					    &offsets_basename_ptr,&positions_basename_ptr,
-					    &offsets_index1info_ptr,&positions_index1info_ptr,
-					    &new->index1part,&new->index1interval,
-					    genomesubdir,fileroot,idx_filesuffix,snps_root,
-					    required_interval) == true) {
-
-    new->offsetscomp_basesize = new->index1part;
-    new->offsetscomp_blocksize = 1;
-
-    *basesize = new->index1part;
-    *index1part = new->index1part;
-    *index1interval = new->index1interval;
 
 #ifdef PMAP
-    basespace = power(*alphabet_size,new->index1part);
 #else
-    basespace = power(4,new->index1part);
-#endif
-    new->gammaptrs = (Gammaptr_T *) CALLOC(basespace+1,sizeof(Gammaptr_T));
-    for (base = 0; base <= basespace; base++) {
-      new->gammaptrs[base] = base;
-    }
-
-
-    if (offsetscomp_access == USE_ALLOCATE) {
-      if (snps_root) {
-	fprintf(stderr,"Allocating memory for %s (%s) offsets, kmer %d, interval %d...",
-		idx_filesuffix,snps_root,new->index1part,new->index1interval);
-      } else {
-	fprintf(stderr,"Allocating memory for %s offsets, kmer %d, interval %d...",
-		idx_filesuffix,new->index1part,new->index1interval);
-      }
-      new->offsetscomp = (Offsetscomp_T *) Access_allocated(&new->offsetscomp_len,&seconds,
-							    offsets_filename,sizeof(Offsetscomp_T));
-      if (new->offsetscomp == NULL) {
-	fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B))\n");
-	exit(9);
-      } else {
-	comma = Genomicpos_commafmt(new->offsetscomp_len);
-	fprintf(stderr,"done (%s bytes, %.2f sec)\n",comma,seconds);
-	FREE(comma);
-	new->offsetscomp_access = ALLOCATED;
-      }
-
-#ifdef HAVE_MMAP
-    } else if (offsetscomp_access == USE_MMAP_PRELOAD) {
-      if (snps_root) {
-	fprintf(stderr,"Pre-loading %s (%s) offsets, kmer %d, interval %d...",
-		idx_filesuffix,snps_root,new->index1part,new->index1interval);
+      /* Sanity check on positions filesize */
+#ifdef LARGE_GENOMES
+      if (filenames->pages_filename != NULL) {
+	new->offsetspages = (UINT4 *) Access_allocated(&offsetspages_len,&seconds,filenames->pages_filename,sizeof(UINT4));
       } else {
-	fprintf(stderr,"Pre-loading %s offsets, kmer %d, interval %d...",
-		idx_filesuffix,new->index1part,new->index1interval);
+	new->offsetspages = (UINT4 *) MALLOC(1*sizeof(UINT4));
+	new->offsetspages[0] = -1U;
       }
-      new->offsetscomp = (Offsetscomp_T *) Access_mmap_and_preload(&new->offsetscomp_fd,&new->offsetscomp_len,&npages,&seconds,
-								   offsets_filename,sizeof(Offsetscomp_T));
-      if (new->offsetscomp == NULL) {
-	fprintf(stderr,"insufficient memory (will use disk file instead, but program may not run)\n");
-#ifdef PMAP
-	new->offsetscomp_access = FILEIO;
-#else
-	exit(9);
 #endif
-      } else {
-	comma = Genomicpos_commafmt(new->offsetscomp_len);
-	fprintf(stderr,"done (%s bytes, %d pages, %.2f sec)\n",comma,npages,seconds);
-	FREE(comma);
-	new->offsetscomp_access = MMAPPED;
-      }
-
-    } else if (offsetscomp_access == USE_MMAP_ONLY) {
-      new->offsetscomp = (Offsetscomp_T *) Access_mmap(&new->offsetscomp_fd,&new->offsetscomp_len,
-						       offsets_filename,sizeof(Offsetscomp_T),/*randomp*/false);
-      if (new->offsetscomp == NULL) {
-	fprintf(stderr,"Insufficient memory for mmap of %s (will use disk file instead, but program may not run)\n",
-		offsets_filename);
-#ifdef PMAP
-	new->offsetscomp_access = FILEIO;
+      poly_T = ~(~0UL << 2*new->index1part);
+#ifdef LARGE_GENOMES
+      ptr0 = Bitpack64_read_two_huge(&end0,poly_T,new->offsetspages,new->offsetsmeta,new->offsetsstrm);
 #else
-	exit(9);
+      ptr0 = Bitpack64_read_two(&end0,poly_T,new->offsetsmeta,new->offsetsstrm);
 #endif
-      } else {
-	new->offsetscomp_access = MMAPPED;
+
+#ifdef LARGE_GENOMES
+      ptr0 = Bitpack64_read_two_huge(&end0,poly_T,new->offsetspages,new->offsetsmeta,new->offsetsstrm);
+      if ((filesize = Access_filesize(filenames->positions_high_filename)) != end0 * (off_t) sizeof(unsigned char)) {
+	fprintf(stderr,"Something is wrong with the genomic index: expected file size for %s is %lu, but observed %lu.\n",
+		filenames->positions_high_filename,end0*sizeof(unsigned char),filesize);
+	abort();
       }
 #endif
+      if ((filesize = Access_filesize(filenames->positions_low_filename)) != end0 * (off_t) sizeof(UINT4)) {
+	fprintf(stderr,"Something is wrong with the genomic index: expected file size for %s is %lu, but observed %lu.\n",
+		filenames->positions_low_filename,end0*sizeof(UINT4),filesize);
+	abort();
+      }
+#endif	/* PMAP */
 
-    } else if (offsetscomp_access == USE_FILEIO) {
-      fprintf(stderr,"Offsets file I/O access of %s not allowed\n",offsets_filename);
-      exit(9);
-
-    } else {
-      fprintf(stderr,"Don't recognize offsetscomp_access type %d\n",offsetscomp_access);
-      abort();
     }
 
-    FREE(offsets_filename);
-
   } else {
-    fprintf(stderr,"Cannot find genomic index files in either current or old format\n");
+    fprintf(stderr,"Cannot find genomic index files in either current or old format.  Looking for files containing %s\n",idx_filesuffix);
     exit(9);
   }
 
 
-  /* Sanity check on positions filesize */
-
-  poly_T = ~(~0UL << 2*new->index1part);
-#ifdef WORDS_BIGENDIAN
-  if (offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,new->gammaptrs,new->offsetscomp,new->offsetscomp_blocksize,poly_T);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,new->gammaptrs,new->offsetscomp,new->offsetscomp_blocksize,poly_T);
-  }
-#else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,new->gammaptrs,new->offsetscomp,new->offsetscomp_blocksize,poly_T);
-#endif
-  if ((filesize = Access_filesize(positions_filename)) != end0 * (off_t) sizeof(Univcoord_T)) {
-    fprintf(stderr,"Something is wrong with the genomic index: expected file size for %s is %lu, but observed %lu.\n",
-	    positions_filename,end0*sizeof(Univcoord_T),filesize);
-    abort();
-  }
-
-
-  /* Positions */
-
+  /* Read or memory map positions file */
   if (positions_access == USE_ALLOCATE) {
     if (snps_root) {
       fprintf(stderr,"Allocating memory for %s (%s) positions, kmer %d, interval %d...",
@@ -1002,8 +1328,33 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
       fprintf(stderr,"Allocating memory for %s positions, kmer %d, interval %d...",
 	      idx_filesuffix,new->index1part,new->index1interval);
     }
-    new->positions = (Univcoord_T *) Access_allocated(&new->positions_len,&seconds,
-						      positions_filename,sizeof(Univcoord_T));
+#ifdef LARGE_GENOMES
+    new->positions_high = (unsigned char *) Access_allocated(&new->positions_high_len,&seconds,
+							     filenames->positions_high_filename,sizeof(unsigned char));
+    if (new->positions_high == NULL) {
+      fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B)\n");
+      exit(9);
+    } else {
+      comma = Genomicpos_commafmt(new->positions_high_len);
+      fprintf(stderr,"done (%s bytes, %.2f sec), ",comma,seconds);
+      FREE(comma);
+
+      new->positions_low = (UINT4 *) Access_allocated(&new->positions_low_len,&seconds,
+						      filenames->positions_low_filename,sizeof(UINT4));
+      if (new->positions_low == NULL) {
+	fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B)\n");
+	exit(9);
+      } else {
+	comma = Genomicpos_commafmt(new->positions_low_len);
+	fprintf(stderr,"done (%s bytes, %.2f sec)\n",comma,seconds);
+	FREE(comma);
+
+	new->positions_access = ALLOCATED;
+      }
+    }
+#else
+    new->positions = (UINT4 *) Access_allocated(&new->positions_len,&seconds,
+						filenames->positions_low_filename,sizeof(UINT4));
     if (new->positions == NULL) {
       fprintf(stderr,"insufficient memory (need to use a lower batch mode (-B)\n");
       exit(9);
@@ -1013,6 +1364,8 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
       FREE(comma);
       new->positions_access = ALLOCATED;
     }
+#endif
+    
 
 #ifdef HAVE_MMAP
   } else if (positions_access == USE_MMAP_PRELOAD) {
@@ -1023,9 +1376,33 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
       fprintf(stderr,"Pre-loading %s positions, kmer %d, interval %d...",
 	      idx_filesuffix,new->index1part,new->index1interval);
     }
-    new->positions = (Univcoord_T *) Access_mmap_and_preload(&new->positions_fd,&new->positions_len,&npages,&seconds,
-							     positions_filename,sizeof(Univcoord_T));
+#ifdef LARGE_GENOMES
+    new->positions_high = (unsigned char *) Access_mmap_and_preload(&new->positions_high_fd,&new->positions_high_len,&npages,&seconds,
+								  filenames->positions_high_filename,sizeof(unsigned char));
+    if (new->positions_high == NULL) {
+      fprintf(stderr,"insufficient memory (will use disk file instead, but program will be slow)\n");
+      new->positions_access = FILEIO;
+    } else {
+      comma = Genomicpos_commafmt(new->positions_high_len);
+      fprintf(stderr,"done (%s bytes, %d pages, %.2f sec), ",comma,npages,seconds);
+      FREE(comma);
+
+      new->positions_low = (UINT4 *) Access_mmap_and_preload(&new->positions_low_fd,&new->positions_low_len,&npages,&seconds,
+							     filenames->positions_low_filename,sizeof(UINT4));
+      if (new->positions_low == NULL) {
+	fprintf(stderr,"insufficient memory (will use disk file instead, but program will be slow)\n");
+	new->positions_access = FILEIO;
+      } else {
+	comma = Genomicpos_commafmt(new->positions_low_len);
+	fprintf(stderr,"done (%s bytes, %d pages, %.2f sec)\n",comma,npages,seconds);
+	FREE(comma);
 
+	new->positions_access = MMAPPED;
+      }
+    }
+#else
+    new->positions = (UINT4 *) Access_mmap_and_preload(&new->positions_fd,&new->positions_len,&npages,&seconds,
+						       filenames->positions_low_filename,sizeof(UINT4));
     if (new->positions == NULL) {
       fprintf(stderr,"insufficient memory (will use disk file instead, but program will be slow)\n");
       new->positions_access = FILEIO;
@@ -1035,20 +1412,42 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
       FREE(comma);
       new->positions_access = MMAPPED;
     }
+#endif
 
   } else if (positions_access == USE_MMAP_ONLY) {
-    new->positions = (Univcoord_T *) Access_mmap(&new->positions_fd,&new->positions_len,
-						 positions_filename,sizeof(Univcoord_T),/*randomp*/true);
+#ifdef LARGE_GENOMES
+    new->positions_high = (unsigned char *) Access_mmap(&new->positions_high_fd,&new->positions_high_len,
+							filenames->positions_high_filename,sizeof(unsigned char),/*randomp*/true);
+    if (new->positions_high == NULL) {
+      fprintf(stderr,"Insufficient memory for mmap of %s (will use disk file instead, but program will be slow)\n",
+	      filenames->positions_high_filename);
+      new->positions_access = FILEIO;
+    } else {
+      new->positions_low = (UINT4 *) Access_mmap(&new->positions_low_fd,&new->positions_low_len,
+						 filenames->positions_low_filename,sizeof(UINT4),/*randomp*/true);
+      if (new->positions_low == NULL) {
+	fprintf(stderr,"Insufficient memory for mmap of %s (will use disk file instead, but program will be slow)\n",
+		filenames->positions_low_filename);
+	new->positions_access = FILEIO;
+      } else {
+	new->positions_access = MMAPPED;
+      }
+    }
+#else
+    new->positions = (UINT4 *) Access_mmap(&new->positions_fd,&new->positions_len,
+					   filenames->positions_low_filename,sizeof(UINT4),/*randomp*/true);
 
     if (new->positions == NULL) {
       fprintf(stderr,"Insufficient memory for mmap of %s (will use disk file instead, but program will be slow)\n",
-	      positions_filename);
+	      filenames->positions_low_filename);
       new->positions_access = FILEIO;
     } else {
       new->positions_access = MMAPPED;
     }
 #endif
 
+#endif
+
   } else if (positions_access == USE_FILEIO) {
     new->positions_access = FILEIO;
   } else {
@@ -1062,7 +1461,7 @@ Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1inter
   }
 #endif
 
-  FREE(positions_filename);
+  Filenames_free(&filenames);
 
   return new;
 }
@@ -1117,12 +1516,25 @@ shortoligo_nt (Storedoligomer_T oligo, Width_T oligosize) {
 
 
 static void
-positions_move_absolute (int positions_fd, off_t ptr) {
-  off_t offset = ptr*((off_t) sizeof(Univcoord_T));
+positions_move_absolute_1 (int positions_fd, off_t ptr) {
+  off_t offset = ptr*((off_t) sizeof(unsigned char));
+
+  if (lseek(positions_fd,offset,SEEK_SET) < 0) {
+    fprintf(stderr,"Attempted to do lseek on offset %ld*%lu=%ld\n",
+	    ptr,sizeof(unsigned char),offset);
+    perror("Error in indexdb.c, positions_move_absolute");
+    exit(9);
+  }
+  return;
+}
+
+static void
+positions_move_absolute_4 (int positions_fd, off_t ptr) {
+  off_t offset = ptr*((off_t) sizeof(UINT4));
 
   if (lseek(positions_fd,offset,SEEK_SET) < 0) {
     fprintf(stderr,"Attempted to do lseek on offset %ld*%lu=%ld\n",
-	    ptr,sizeof(Univcoord_T),offset);
+	    ptr,sizeof(UINT4),offset);
     perror("Error in indexdb.c, positions_move_absolute");
     exit(9);
   }
@@ -1149,6 +1561,66 @@ positions_read_forward (int positions_fd) {
 }
 #endif
 
+#ifdef LARGE_GENOMES
+static void
+positions_read_multiple_large (int positions_high_fd, int positions_low_fd, Univcoord_T *values, int n) {
+  int i;
+  Univcoord_T value;
+  unsigned char buffer[4];
+
+#ifdef WORDS_BIGENDIAN
+  /* Need to keep in bigendian format */
+  for (i = 0; i < n; i++) {
+    read(positions_high_fd,buffer,1);
+    value = (buffer[0] & 0xff);
+    value <<= 8;
+
+    read(positions_low_fd,buffer,4);
+    value |= (buffer[0] & 0xff);
+    value <<= 8;
+    value |= (buffer[1] & 0xff);
+    value <<= 8;
+    value |= (buffer[2] & 0xff);
+    value <<= 8;
+    value |= (buffer[3] & 0xff);
+
+    values[i] = value;
+  }
+#else
+  for (i = 0; i < n; i++) {
+    read(positions_high_fd,buffer,1);
+    value = (buffer[0] & 0xff);
+    value <<= 8;
+
+    read(positions_low_fd,buffer,4);
+    value |= (buffer[3] & 0xff);
+    value <<= 8;
+    value |= (buffer[2] & 0xff);
+    value <<= 8;
+    value |= (buffer[1] & 0xff);
+    value <<= 8;
+    value |= (buffer[0] & 0xff);
+
+    values[i] = value;
+  }
+#endif
+
+  return;
+}
+
+static void
+positions_copy_multiple_large (Univcoord_T *positions, unsigned char *positions_high, UINT4 *positions_low, int n) {
+  int i;
+
+  for (i = 0; i < n; i++) {
+    positions[i] = ((Univcoord_T) positions_high[i] << 32) + positions_low[i];
+  }
+
+  return;
+}
+
+#else
+
 static void
 positions_read_multiple (int positions_fd, Univcoord_T *values, int n) {
   int i;
@@ -1188,6 +1660,10 @@ positions_read_multiple (int positions_fd, Univcoord_T *values, int n) {
 
   return;
 }
+#endif
+
+
+
 
 #if 0
 static Univcoord_T
@@ -1206,61 +1682,158 @@ positions_read_backward (int positions_fd) {
   value <<= 8;
   value |= (buffer[0] & 0xff);
 
-  if (lseek(positions_fd,reloffset,SEEK_CUR) < 0) {
-    fprintf(stderr,"Attempted to do lseek on relative offset %ld\n",(long int) reloffset);
-    perror("Error in indexdb.c, positions_read_backward");
+  if (lseek(positions_fd,reloffset,SEEK_CUR) < 0) {
+    fprintf(stderr,"Attempted to do lseek on relative offset %ld\n",(long int) reloffset);
+    perror("Error in indexdb.c, positions_read_backward");
+    exit(9);
+  }
+    
+  return value;
+}
+#endif
+
+
+/* Used by non-utility programs */
+Positionsptr_T *
+Indexdb_offsets_from_bitpack (char *offsetsmetafile, char *offsetsstrmfile, 
+#ifdef PMAP
+			      int alphabet_size, Width_T index1part_aa
+#else
+			      Width_T index1part
+#endif
+			      ) {
+  UINT4 *offsetsmeta;
+  UINT4 *offsetsstrm;
+  int offsetsmeta_fd, offsetsstrm_fd;
+  size_t offsetsmeta_len, offsetsstrm_len;
+  Positionsptr_T *offsets = NULL;
+  Oligospace_T oligospace, oligoi;
+#ifndef PMAP
+  Blocksize_T blocksize;
+#endif
+  double seconds;
+
+#ifdef PMAP
+  oligospace = power(alphabet_size,index1part_aa);
+#else
+  oligospace = power(4,index1part);
+  blocksize = 64;
+#endif
+
+
+#ifdef HAVE_MMAP
+  offsetsmeta = (UINT4 *) Access_mmap(&offsetsmeta_fd,&offsetsmeta_len,offsetsmetafile,sizeof(UINT4),/*randomp*/false);
+  offsetsstrm = (UINT4 *) Access_mmap(&offsetsstrm_fd,&offsetsstrm_len,offsetsstrmfile,sizeof(UINT4),/*randomp*/false);
+#else
+  offsetsmeta = (UINT4 *) Access_allocated(&offsetsmeta_len,&seconds,offsetsmetafile,sizeof(UINT4));
+  offsetsstrm = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsstrmfile,sizeof(UINT4));
+#endif
+
+#ifdef OLIGOSPACE_NOT_LONG
+  fprintf(stderr,"Allocating memory (%u 4-byte words) for offsets, kmer %d...",oligospace+1U,
+#ifdef PMAP
+	  index1part_aa
+#else
+	  index1part
+#endif
+	  );
+#else
+  fprintf(stderr,"Allocating memory (%lu 4-byte words) for offsets, kmer %d...",oligospace+1UL,
+#ifdef PMAP
+	  index1part_aa
+#else
+	  index1part
+#endif
+	  );
+#endif
+
+  /* Bitpack procedures start from offsets[1], so we need to print offsets[0] as a special case */
+  offsets = (Positionsptr_T *) MALLOC((oligospace+1) * sizeof(Positionsptr_T));
+
+  if (offsets == NULL) {
+    fprintf(stderr,"cannot allocated requested memory.  Cannot run expand offsets on this machine.\n");
     exit(9);
+  } else {
+    fprintf(stderr,"done\n");
+  }
+
+  fprintf(stderr,"Expanding offsetsstrm into offsets...");
+#ifdef PMAP
+  for (oligoi = 0UL; oligoi <= oligospace; oligoi += 1) {
+    offsets[oligoi] = Bitpack64_read_one(oligoi,offsetsmeta,offsetsstrm);
+  }
+#elif defined(LARGE_GENOMES)
+  fprintf(stderr,"Cannot do expand offsets on large genomes\n");
+  exit(9);
+#else
+  for (oligoi = 0UL; oligoi < oligospace; oligoi += blocksize) {
+    Bitpack64_block_offsets(&(offsets[oligoi]),oligoi,offsetsmeta,offsetsstrm);
   }
-    
-  return value;
-}
 #endif
 
+  fprintf(stderr,"done\n");
 
-Positionsptr_T *
-Indexdb_offsets_from_gammas (char *gammaptrsfile, char *offsetscompfile, Width_T offsetscomp_basesize
-#ifdef PMAP
-			     , int alphabet_size, Width_T index1part_aa
+#ifdef HAVE_MMAP
+  munmap((void *) offsetsstrm,offsetsstrm_len);
+  munmap((void *) offsetsmeta,offsetsmeta_len);
 #else
-			     , Width_T index1part
+  FREE(offsetsstrm);
+  FREE(offsetsmeta);
 #endif
-			     ) {
-  Gammaptr_T *gammaptrs;
-  Offsetscomp_T *offsetscomp;
-  int gammaptrs_fd, offsetscomp_fd;
-  size_t gammaptrs_len, offsetscomp_len;
-  Positionsptr_T *offsets = NULL;
-  Oligospace_T oligospace, oligoi, oligok;
-  Blocksize_T blocksize, j;
-  double seconds;
 
-  Positionsptr_T *ptr, cum;
-  int ctr;
+  return offsets;
+}
+
 
+#if defined(HAVE_64_BIT) && defined(UTILITYP)
+/* Used by utility programs */
+Hugepositionsptr_T *
+Indexdb_offsets_from_bitpack_huge (char *offsetspagesfile, char *offsetsmetafile, char *offsetsstrmfile,
+#ifdef PMAP
+				   int alphabet_size, Width_T index1part_aa
+#else
+				   Width_T index1part
+#endif
+				   ) {
+  UINT4 *offsetspages;
+  UINT4 *offsetsmeta;
+  UINT4 *offsetsstrm;
+  int offsetsmeta_fd, offsetsstrm_fd;
+  size_t offsetspages_len, offsetsmeta_len, offsetsstrm_len;
+  Hugepositionsptr_T *offsets = NULL;
+  Oligospace_T oligospace, oligoi;
+  Blocksize_T blocksize;
+  double seconds;
 
 #ifdef PMAP
   oligospace = power(alphabet_size,index1part_aa);
-  blocksize = power(alphabet_size,index1part_aa - offsetscomp_basesize);
+  /* blocksize = power(alphabet_size,index1part_aa - offsetsstrm_basesize); */
 #else
   oligospace = power(4,index1part);
-  blocksize = power(4,index1part - offsetscomp_basesize);
+  blocksize = 64;
 #endif
 
   if (blocksize == 1) {
-    return (Positionsptr_T *) Access_allocated(&offsetscomp_len,&seconds,offsetscompfile,sizeof(Positionsptr_T));
+    return (Hugepositionsptr_T *) Access_allocated(&offsetsstrm_len,&seconds,offsetsstrmfile,sizeof(Hugepositionsptr_T));
 
   } else {
 
+    if (offsetspagesfile == NULL) {
+      offsetspages = (UINT4 *) MALLOC(1*sizeof(UINT4));
+      offsetspages[0] = -1U;
+    } else {
+      offsetspages = (UINT4 *) Access_allocated(&offsetspages_len,&seconds,offsetspagesfile,sizeof(UINT4));
+    }
 #ifdef HAVE_MMAP
-    gammaptrs = (Gammaptr_T *) Access_mmap(&gammaptrs_fd,&gammaptrs_len,gammaptrsfile,sizeof(Gammaptr_T),/*randomp*/false);
-    offsetscomp = (Offsetscomp_T *) Access_mmap(&offsetscomp_fd,&offsetscomp_len,offsetscompfile,sizeof(Offsetscomp_T),/*randomp*/false);
+    offsetsmeta = (UINT4 *) Access_mmap(&offsetsmeta_fd,&offsetsmeta_len,offsetsmetafile,sizeof(UINT4),/*randomp*/false);
+    offsetsstrm = (UINT4 *) Access_mmap(&offsetsstrm_fd,&offsetsstrm_len,offsetsstrmfile,sizeof(UINT4),/*randomp*/false);
 #else
-    gammaptrs = (Gammaptr_T *) Access_allocated(&gammaptrs_len,&seconds,gammaptrsfile,sizeof(Gammaptr_T));
-    offsetscomp = (Offsetscomp_T *) Access_allocated(&offsetscomp_len,&seconds,offsetscompfile,sizeof(Offsetscomp_T));
+    offsetsmeta = (UINT4 *) Access_allocated(&offsetsmeta_len,&seconds,offsetsmetafile,sizeof(UINT4));
+    offsetsstrm = (UINT4 *) Access_allocated(&offsetsstrm_len,&seconds,offsetsstrmfile,sizeof(UINT4));
 #endif
 
 #ifdef OLIGOSPACE_NOT_LONG
-    fprintf(stderr,"Allocating memory (%u words) for offsets, kmer %d...",oligospace+1U,
+    fprintf(stderr,"Allocating memory (%u 8-byte words) for offsets, kmer %d...",oligospace+1U,
 #ifdef PMAP
 	    index1part_aa
 #else
@@ -1268,7 +1841,7 @@ Indexdb_offsets_from_gammas (char *gammaptrsfile, char *offsetscompfile, Width_T
 #endif
 	    );
 #else
-    fprintf(stderr,"Allocating memory (%lu words) for offsets, kmer %d...",oligospace+1UL,
+    fprintf(stderr,"Allocating memory (%lu 8-byte words) for offsets, kmer %d...",oligospace+1UL,
 #ifdef PMAP
 	    index1part_aa
 #else
@@ -1277,7 +1850,9 @@ Indexdb_offsets_from_gammas (char *gammaptrsfile, char *offsetscompfile, Width_T
 	    );
 #endif
 
-    offsets = (Positionsptr_T *) CALLOC(oligospace+1,sizeof(Positionsptr_T));
+    /* Bitpack procedures start from offsets[1], so we need to print offsets[0] as a special case */
+    offsets = (Hugepositionsptr_T *) MALLOC((oligospace+1) * sizeof(Hugepositionsptr_T));
+
     if (offsets == NULL) {
       fprintf(stderr,"cannot allocated requested memory.  Cannot run expand offsets on this machine.\n");
       exit(9);
@@ -1285,67 +1860,32 @@ Indexdb_offsets_from_gammas (char *gammaptrsfile, char *offsetscompfile, Width_T
       fprintf(stderr,"done\n");
     }
 
-
-    fprintf(stderr,"Expanding offsetscomp into offsets (controllable with the --expand-offsets flag)...");
-
-    ptr = offsetscomp;
-    oligok = 0UL;
-
-
-    for (oligoi = 0UL; oligoi < oligospace; oligoi += blocksize) {
-#ifdef HAVE_MMAP
-#ifdef WORDS_BIGENDIAN
-      cum = offsets[oligok++] = Bigendian_convert_uint(*ptr++);
-#else
-      cum = offsets[oligok++] = *ptr++;
-#endif
-#else
-      cum = offsets[oligok++] = *ptr++;
-#endif
-
-      ctr = 0;
-      for (j = 1; j < blocksize; j++) {
-#ifdef HAVE_MMAP
-#ifdef WORDS_BIGENDIAN
-	ctr = Genome_read_gamma_bigendian(&ptr,ctr,&cum);
-#else
-	ctr = Genome_read_gamma(&ptr,ctr,&cum);
-#endif
-#else
-	ctr = Genome_read_gamma(&ptr,ctr,&cum);
-#endif
-	offsets[oligok++] = cum;
-      }
-      if (ctr > 0) {
-	ptr++;			/* Done with last gamma byte */
-      }
+    fprintf(stderr,"Expanding offsetsstrm into offsets...");
+#ifdef PMAP
+    for (oligoi = 0UL; oligoi <= oligospace; oligoi += 1) {
+      offsets[oligoi] = Bitpack64_read_one_huge(oligoi,offsetspages,offsetsmeta,offsetsstrm);
     }
-
-#ifdef HAVE_MMAP
-#ifdef WORDS_BIGENDIAN
-    offsets[oligok++] = Bigendian_convert_uint(*ptr++);
 #else
-    offsets[oligok++] = *ptr++;
-#endif
-#else
-    offsets[oligok++] = *ptr++;
+    for (oligoi = 0UL; oligoi < oligospace; oligoi += blocksize) {
+      Bitpack64_block_offsets_huge(&(offsets[oligoi]),oligoi,offsetspages,offsetsmeta,offsetsstrm);
+    }
 #endif
 
     fprintf(stderr,"done\n");
 
 #ifdef HAVE_MMAP
-    munmap((void *) offsetscomp,offsetscomp_len);
-    munmap((void *) gammaptrs,gammaptrs_len);
+    munmap((void *) offsetsstrm,offsetsstrm_len);
+    munmap((void *) offsetsmeta,offsetsmeta_len);
 #else
-    FREE(offsetscomp);
-    FREE(gammaptrs);
+    FREE(offsetsstrm);
+    FREE(offsetsmeta);
 #endif
+    FREE(offsetspages);
 
     return offsets;
   }
 }
-
-
+#endif
 
 
 #ifdef PMAP
@@ -1360,19 +1900,32 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T aaindex) {
 
   debug0(printf("%u (%s)\n",aaindex,Alphabet_aaindex_aa(aaindex,this->alphabet)));
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,aaindex);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,aaindex);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[aaindex];
+      end0 = this->offsetsstrm[aaindex+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[aaindex]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[aaindex+1]);
+    }
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,aaindex);
+    ptr0 = this->offsetsstrm[aaindex];
+    end0 = this->offsetsstrm[aaindex+1];
 #endif
 
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+    ptr0 = Bitpack64_read_two(&end0,aaindex,this->offsetsmeta,this->offsetsstrm);
+
+  } else {
+    abort();
+  }
+
+
   debug0(printf("offset pointers are %u and %u\n",ptr0,end0));
 
 #ifdef ALLOW_DUPLICATES
+  /* Not used */
   /* Skip backward over bad values, due to duplicates */
   if (this->positions_access == FILEIO) {
 #ifdef HAVE_PTHREAD
@@ -1390,7 +1943,7 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T aaindex) {
       end0--;
     }
   }
-#endif
+#endif	/* ALLOW_DUPLICATES */
 
   if ((*nentries = end0 - ptr0) == 0) {
     return NULL;
@@ -1400,41 +1953,63 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T aaindex) {
 #ifdef HAVE_PTHREAD
       pthread_mutex_lock(&this->positions_read_mutex);
 #endif
-      positions_move_absolute(this->positions_fd,ptr0);
+#ifdef LARGE_GENOMES
+      positions_move_absolute_1(this->positions_high_fd,ptr0);
+      positions_move_absolute_4(this->positions_low_fd,ptr0);
+      positions_read_multiple_large(this->positions_high_fd,this->positions_low_fd,positions,*nentries);
+#else
+      positions_move_absolute_4(this->positions_fd,ptr0);
       positions_read_multiple(this->positions_fd,positions,*nentries);
+#endif
 #ifdef HAVE_PTHREAD
       pthread_mutex_unlock(&this->positions_read_mutex);
 #endif
 
     } else if (this->positions_access == ALLOCATED) {
+#ifdef LARGE_GENOMES
+      positions_copy_multiple_large(positions,&(this->positions_high[ptr0]),&(this->positions_low[ptr0]),*nentries);
+#else
       memcpy(positions,&(this->positions[ptr0]),(*nentries)*sizeof(Univcoord_T));
+#endif
 
     } else {
 #ifdef WORDS_BIGENDIAN
-	for (ptr = ptr0, i = 0; ptr < end0; ptr++, i++) {
-	  littleendian = this->positions[ptr];
-	  bigendian = littleendian & 0xff; /* 0 */
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 1 */
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 2 */
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 3 */
 #ifdef LARGE_GENOMES
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 4 */
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 5 */
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 6 */
-	  bigendian <<= 8;
-	  bigendian |= ((littleendian >>= 8) & 0xff); /* 7 */
-#endif
-	  positions[i] = bigendian;
-	}
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++, i++) {
+	bigendian = (Univcoord_T) this->positions_high[ptr];
+	bigendian <<= 8;
+
+	littleendian = this->positions_low[ptr];
+	bigendian |= littleendian & 0xff; /* 0 */
+	bigendian <<= 8;
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 1 */
+	bigendian <<= 8;
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 2 */
+	bigendian <<= 8;
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 3 */
+	positions[i] = bigendian;
+      }
+#else
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++, i++) {
+	littleendian = this->positions[ptr];
+	bigendian = littleendian & 0xff; /* 0 */
+	bigendian <<= 8;
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 1 */
+	bigendian <<= 8;
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 2 */
+	bigendian <<= 8;
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 3 */
+	positions[i] = bigendian;
       }
+#endif
+
+#else  /* littleendian */
+
+#ifdef LARGE_GENOMES
+      positions_copy_multiple_large(positions,&(this->positions_high[ptr0]),&(this->positions_low[ptr0]),*nentries);
 #else
-    memcpy(positions,&(this->positions[ptr0]),(*nentries)*sizeof(Univcoord_T));
+      memcpy(positions,&(this->positions[ptr0]),(*nentries)*sizeof(Univcoord_T));
+#endif
 #endif
     }
     debug0(
@@ -1480,17 +2055,34 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T oligo) {
     return NULL;
   }
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,part0);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,part0);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[part0];
+      end0 = this->offsetsstrm[part0+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[part0]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[part0+1]);
+    }
+#else
+    ptr0 = this->offsetsstrm[part0];
+    end0 = this->offsetsstrm[part0+1];
+#endif
+
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+#ifdef LARGE_GENOMES
+    ptr0 = Bitpack64_read_two_huge(&end0,part0,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,part0);
+    ptr0 = Bitpack64_read_two(&end0,part0,this->offsetsmeta,this->offsetsstrm);
 #endif
 
+  } else {
+    abort();
+  }
+
+
 #ifdef ALLOW_DUPLICATES
+  /* Not used */
   /* Skip backward over bad values, due to duplicates */
   if (this->positions_access == FILEIO) {
 #ifdef HAVE_PTHREAD
@@ -1520,40 +2112,63 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T oligo) {
 #ifdef HAVE_PTHREAD
       pthread_mutex_lock(&this->positions_read_mutex);
 #endif
-      positions_move_absolute(this->positions_fd,ptr0);
+#ifdef LARGE_GENOMES
+      positions_move_absolute_1(this->positions_high_fd,ptr0);
+      positions_move_absolute_4(this->positions_low_fd,ptr0);
+      positions_read_multiple_large(this->positions_high_fd,this->positions_low_fd,positions,*nentries);
+#else
+      positions_move_absolute_4(this->positions_fd,ptr0);
       positions_read_multiple(this->positions_fd,positions,*nentries);
+#endif
 #ifdef HAVE_PTHREAD
       pthread_mutex_unlock(&this->positions_read_mutex);
 #endif
     } else if (this->positions_access == ALLOCATED) {
+#ifdef LARGE_GENOMES
+      positions_copy_multiple_large(positions,&(this->positions_high[ptr0]),&(this->positions_low[ptr0]),*nentries);
+#else
       memcpy(positions,&(this->positions[ptr0]),(*nentries)*sizeof(Univcoord_T));
+#endif
 
     } else {
 #ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
       for (ptr = ptr0, i = 0; ptr < end0; ptr++, i++) {
-	littleendian = this->positions[ptr];
-	bigendian = littleendian & 0xff; /* 0 */
+	bigendian = (Univcoord_T) this->positions_high[ptr];
+	bigendian <<= 8;
+
+	littleendian = this->positions_low[ptr];
+	bigendian |= littleendian & 0xff; /* 0 */
 	bigendian <<= 8;
 	bigendian |= ((littleendian >>= 8) & 0xff); /* 1 */
 	bigendian <<= 8;
 	bigendian |= ((littleendian >>= 8) & 0xff); /* 2 */
 	bigendian <<= 8;
 	bigendian |= ((littleendian >>= 8) & 0xff); /* 3 */
-#ifdef LARGE_GENOMES
-	bigendian <<= 8;
-	bigendian |= ((littleendian >>= 8) & 0xff); /* 4 */
+	positions[i] = bigendian;
+      }
+#else
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++, i++) {
+	littleendian = this->positions[ptr];
+	bigendian = littleendian & 0xff; /* 0 */
 	bigendian <<= 8;
-	bigendian |= ((littleendian >>= 8) & 0xff); /* 5 */
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 1 */
 	bigendian <<= 8;
-	bigendian |= ((littleendian >>= 8) & 0xff); /* 6 */
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 2 */
 	bigendian <<= 8;
-	bigendian |= ((littleendian >>= 8) & 0xff); /* 7 */
-#endif
+	bigendian |= ((littleendian >>= 8) & 0xff); /* 3 */
 	positions[i] = bigendian;
       }
+#endif
+
+#else  /* littleendian */
+
+#ifdef LARGE_GENOMES
+      positions_copy_multiple_large(positions,&(this->positions_high[ptr0]),&(this->positions_low[ptr0]),*nentries);
 #else
       memcpy(positions,&(this->positions[ptr0]),(*nentries)*sizeof(Univcoord_T));
 #endif
+#endif
     }
 
     debug0(
@@ -1570,9 +2185,12 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T oligo) {
 
 
 /* GSNAP version.  Expects calling procedure to handle bigendian conversion. */
-Univcoord_T *
-Indexdb_read_inplace (int *nentries, T this, Storedoligomer_T oligo) {
-  Univcoord_T *positions;
+UINT4 *
+Indexdb_read_inplace (int *nentries,
+#ifdef LARGE_GENOMES
+		      unsigned char **positions_high,
+#endif
+		      T this, Storedoligomer_T oligo) {
   Positionsptr_T ptr0, end0;
   Storedoligomer_T part0;
 #ifdef DEBUG0
@@ -1580,42 +2198,66 @@ Indexdb_read_inplace (int *nentries, T this, Storedoligomer_T oligo) {
 #endif
 
   debug0(printf("%08X (%s)\n",oligo,shortoligo_nt(oligo,index1part)));
-  part0 = oligo & poly_T;
+  part0 = oligo & poly_T;	/* Probably unnecessary, since stage1 procedure already masks oligo */
 
+#if 0
   /* Needed to avoid overflow on 15-mers */
   if (part0 == poly_A || part0 == poly_T) {
     *nentries = 0;
     return NULL;
   }
+#endif
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[part0];
+      end0 = this->offsetsstrm[part0+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[part0]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[part0+1]);
+    }
+#else
+    ptr0 = this->offsetsstrm[part0];
+    end0 = this->offsetsstrm[part0+1];
+#endif
+
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+#ifdef LARGE_GENOMES
+    ptr0 = Bitpack64_read_two_huge(&end0,oligo,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
+    ptr0 = Bitpack64_read_two(&end0,oligo,this->offsetsmeta,this->offsetsstrm);
 #endif
 
+  } else {
+    abort();
+  }
+
+#ifdef LARGE_GENOMES
+  debug0(printf("Indexdb_read_inplace: offset pointers are %llu and %llu\n",ptr0,end0));
+#else
   debug0(printf("Indexdb_read_inplace: offset pointers are %u and %u\n",ptr0,end0));
+#endif
 
   *nentries = end0 - ptr0;
 
   if (*nentries == 0) {
     return NULL;
   } else if (this->positions_access == FILEIO) {
-    positions = (Univcoord_T *) CALLOC(*nentries,sizeof(Univcoord_T));
-#ifdef HAVE_PTHREAD
-    pthread_mutex_lock(&this->positions_read_mutex);
-#endif
-    positions_move_absolute(this->positions_fd,ptr0);
-    positions_read_multiple(this->positions_fd,positions,*nentries);
-#ifdef HAVE_PTHREAD
-    pthread_mutex_unlock(&this->positions_read_mutex);
-#endif
-    return positions;
+    abort();
   } else {
+#ifdef LARGE_GENOMES
+    debug0(
+	   printf("%d entries:",*nentries);
+	   for (ptr = ptr0; ptr < end0; ptr++) {
+	     printf(" %d %lu",this->positions_high[ptr],this->positions_low[ptr]);
+	   }
+	   printf("\n");
+	   );
+
+    *positions_high = &(this->positions_high[ptr0]);
+    return &(this->positions_low[ptr0]);
+#else
     debug0(
 	   printf("%d entries:",*nentries);
 	   for (ptr = ptr0; ptr < end0; ptr++) {
@@ -1623,7 +2265,9 @@ Indexdb_read_inplace (int *nentries, T this, Storedoligomer_T oligo) {
 	   }
 	   printf("\n");
 	   );
+
     return &(this->positions[ptr0]);
+#endif
   }
 }
 
@@ -1637,16 +2281,31 @@ Indexdb_read_with_diagterm (int *nentries, T this, Storedoligomer_T oligo, int d
   Positionsptr_T ptr0, end0, ptr;
   int i;
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[oligo];
+      end0 = this->offsetsstrm[oligo+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[oligo]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[oligo+1]);
+    }
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
+    ptr0 = this->offsetsstrm[oligo];
+    end0 = this->offsetsstrm[oligo+1];
 #endif
 
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+#ifdef LARGE_GENOMES
+    ptr0 = Bitpack64_read_two_huge(&end0,oligo,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
+#else
+    ptr0 = Bitpack64_read_two(&end0,oligo,this->offsetsmeta,this->offsetsstrm);
+#endif
+
+  } else {
+    abort();
+  }
+
   debug0(printf("read_zero_shift: oligo = %06X, offset pointers are %u and %u\n",oligo,ptr0,end0));
 
   if ((*nentries = end0 - ptr0) == 0) {
@@ -1657,29 +2316,52 @@ Indexdb_read_with_diagterm (int *nentries, T this, Storedoligomer_T oligo, int d
 #ifdef HAVE_PTHREAD
       pthread_mutex_lock(&this->positions_read_mutex);
 #endif
-      positions_move_absolute(this->positions_fd,ptr0);
+#ifdef LARGE_GENOMES
+      positions_move_absolute_1(this->positions_high_fd,ptr0);
+      positions_move_absolute_4(this->positions_low_fd,ptr0);
+      positions_read_multiple_large(this->positions_high_fd,this->positions_low_fd,positions,*nentries);
+#else
+      positions_move_absolute_4(this->positions_fd,ptr0);
       positions_read_multiple(this->positions_fd,positions,*nentries);
-
+#endif
 #ifdef HAVE_PTHREAD
       pthread_mutex_unlock(&this->positions_read_mutex);
 #endif
 
     } else if (this->positions_access == ALLOCATED) {
+#ifdef LARGE_GENOMES
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
+	positions[i++] = ((Univcoord_T) this->positions_high[ptr] << 32) + this->positions_low[ptr] + diagterm;
+      }
+#else
       for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
 	positions[i++] = this->positions[ptr] + diagterm;
       }
+#endif
 
     } else {
 
 #ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
+	positions[i++] = ((Univcoord_T) this->positions_high[ptr] << 32) + Bigendian_convert_uint(this->positions_low[ptr]) + diagterm;
+      }
+#else
       for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
 	positions[i++] = Bigendian_convert_univcoord(this->positions[ptr]) + diagterm;
       }
+#endif
+#else
+#ifdef LARGE_GENOMES
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
+	positions[i++] = ((Univcoord_T) this->positions_high[ptr] << 32) + this->positions_low[ptr] + diagterm;
+      }
 #else
       for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
 	positions[i++] = this->positions[ptr] + diagterm;
       }
 #endif
+#endif
     }
   }
       
@@ -1703,16 +2385,32 @@ Indexdb_read_with_diagterm_sizelimit (int *nentries, T this, Storedoligomer_T ol
   Positionsptr_T ptr0, end0, ptr;
   int i;
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[oligo];
+      end0 = this->offsetsstrm[oligo+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[oligo]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[oligo+1]);
+    }
+#else
+    ptr0 = this->offsetsstrm[oligo];
+    end0 = this->offsetsstrm[oligo+1];
+#endif
+
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+#ifdef LARGE_GENOMES
+    ptr0 = Bitpack64_read_two_huge(&end0,oligo,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
+    ptr0 = Bitpack64_read_two(&end0,oligo,this->offsetsmeta,this->offsetsstrm);
 #endif
 
+  } else {
+    abort();
+  }
+
+
   debug0(printf("read_zero_shift: oligo = %06X, offset pointers are %u and %u\n",oligo,ptr0,end0));
 
   if ((*nentries = end0 - ptr0) == 0) {
@@ -1728,29 +2426,53 @@ Indexdb_read_with_diagterm_sizelimit (int *nentries, T this, Storedoligomer_T ol
 #ifdef HAVE_PTHREAD
       pthread_mutex_lock(&this->positions_read_mutex);
 #endif
-      positions_move_absolute(this->positions_fd,ptr0);
+#ifdef LARGE_GENOMES
+      positions_move_absolute_1(this->positions_high_fd,ptr0);
+      positions_move_absolute_4(this->positions_low_fd,ptr0);
+      positions_read_multiple_large(this->positions_high_fd,this->positions_low_fd,positions,*nentries);
+#else
+      positions_move_absolute_4(this->positions_fd,ptr0);
       positions_read_multiple(this->positions_fd,positions,*nentries);
+#endif
 
 #ifdef HAVE_PTHREAD
       pthread_mutex_unlock(&this->positions_read_mutex);
 #endif
 
     } else if (this->positions_access == ALLOCATED) {
+#ifdef LARGE_GENOMES
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
+	positions[i++] = ((Univcoord_T) this->positions_high[ptr] << 32) + this->positions_low[ptr] + diagterm;
+      }
+#else
       for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
 	positions[i++] = this->positions[ptr] + diagterm;
       }
+#endif
 
     } else {
 
 #ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
+	positions[i++] = ((Univcoord_T) this->positions_high[ptr] << 32) + Bigendian_convert_uint(this->positions_low[ptr]) + diagterm;
+      }
+#else
       for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
 	positions[i++] = Bigendian_convert_univcoord(this->positions[ptr]) + diagterm;
       }
+#endif
+#else
+#ifdef LARGE_GENOMES
+      for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
+	positions[i++] = ((Univcoord_T) this->positions_high[ptr] << 32) + this->positions_low[ptr] + diagterm;
+      }
 #else
       for (ptr = ptr0, i = 0; ptr < end0; ptr++) {
 	positions[i++] = this->positions[ptr] + diagterm;
       }
 #endif
+#endif
     }
   }
       
@@ -1770,6 +2492,8 @@ Indexdb_read_with_diagterm_sizelimit (int *nentries, T this, Storedoligomer_T ol
  *   Create procedure -- for user-provided genomic segment
  ************************************************************************/
 
+#if defined(UTILITYP) || defined(LARGE_GENOMES)
+#else
 T
 Indexdb_new_segment (char *genomicseg,
 #ifdef PMAP
@@ -1800,19 +2524,24 @@ Indexdb_new_segment (char *genomicseg,
 
 #ifdef PMAP
   oligospace = power(alphabet_size,index1part_aa);
+  between_counter[0] = between_counter[1] = between_counter[2] = 0;
+  in_counter[0] = in_counter[1] = in_counter[2] = 0;
+  new->index1part = index1part_aa;
 #else
   mask = ~(~0UL << 2*index1part);
   oligospace = power(4,index1part);
-  new->index1interval = 1;
+  new->index1part = index1part;
 #endif
+  new->index1interval = 1;
 
+  new->compression_type = NO_COMPRESSION;
 
-  new->gammaptrs = (Gammaptr_T *) CALLOC(oligospace+1,sizeof(Gammaptr_T));
+  new->offsetsmeta = (UINT4 *) CALLOC(oligospace+1,sizeof(UINT4));
   for (oligoi = 0; oligoi <= oligospace; oligoi++) {
-    new->gammaptrs[oligoi] = oligoi;
+    new->offsetsmeta[oligoi] = oligoi;
   }
 
-  new->offsetscomp = (Positionsptr_T *) CALLOC(oligospace+1,sizeof(Positionsptr_T));
+  new->offsetsstrm = (UINT4 *) CALLOC(oligospace+1,sizeof(UINT4));
 
   p = genomicseg;
   while ((c = *(p++)) != '\0') {
@@ -1875,7 +2604,7 @@ Indexdb_new_segment (char *genomicseg,
 #else
 	oligoi = (Oligospace_T) aaindex + 1UL;
 #endif
-	new->offsetscomp[oligoi] += 1;
+	new->offsetsstrm[oligoi] += 1;
 	between_counter[frame] = 0;
       }
       in_counter[frame] -= 1;
@@ -1896,9 +2625,9 @@ Indexdb_new_segment (char *genomicseg,
 #else
 	oligoi = (Oligospace_T) masked + 1UL;
 #endif
-	new->offsetscomp[oligoi] += 1;
+	new->offsetsstrm[oligoi] += 1;
 	debug(printf("Found oligo %06X.  Incremented offsets for %lu to be %u\n",
-		     masked,oligoi,new->offsetscomp[oligoi]));
+		     masked,oligoi,new->offsetsstrm[oligoi]));
 	between_counter = 0;
       }
       in_counter--;
@@ -1910,13 +2639,13 @@ Indexdb_new_segment (char *genomicseg,
 
 #ifdef ADDSENTINEL
   for (oligoi = 1; oligoi <= oligospace; oligoi++) {
-    new->offsetscomp[oligoi] = new->offsetscomp[oligoi] + new->offsetscomp[oligoi-1] + 1;
-    debug(printf("Offset for %06X: %u\n",oligoi,new->offsetscomp[oligoi]));
+    new->offsetsstrm[oligoi] = new->offsetsstrm[oligoi] + new->offsetsstrm[oligoi-1] + 1;
+    debug(printf("Offset for %06X: %u\n",oligoi,new->offsetsstrm[oligoi]));
   }
 #else
   for (oligoi = 1; oligoi <= oligospace; oligoi++) {
-    new->offsetscomp[oligoi] = new->offsetscomp[oligoi] + new->offsetscomp[oligoi-1];
-    debug(printf("Offset for %06X: %u\n",oligoi,new->offsetscomp[oligoi]));
+    new->offsetsstrm[oligoi] = new->offsetsstrm[oligoi] + new->offsetsstrm[oligoi-1];
+    debug(printf("Offset for %06X: %u\n",oligoi,new->offsetsstrm[oligoi]));
   }
 #endif
 
@@ -1927,7 +2656,7 @@ Indexdb_new_segment (char *genomicseg,
   frame = -1;
   between_counter[0] = between_counter[1] = between_counter[2] = 0;
   in_counter[0] = in_counter[1] = in_counter[2] = 0;
-  high = low = 0UL;
+  high = low = 0U;
 #else
   between_counter = in_counter = 0;
   oligo = 0UL;
@@ -1935,10 +2664,10 @@ Indexdb_new_segment (char *genomicseg,
 
   work_offsets = (Positionsptr_T *) CALLOC(oligospace+1,sizeof(Positionsptr_T));
   for (oligoi = 0; oligoi <= oligospace; oligoi++) {
-    work_offsets[oligoi] = new->offsetscomp[oligoi];
+    work_offsets[oligoi] = new->offsetsstrm[oligoi];
   }
 
-  totalcounts = new->offsetscomp[oligospace];
+  totalcounts = new->offsetsstrm[oligospace];
   if (totalcounts == 0) {
 #ifdef PMAP
     fprintf(stderr,"Error: user-provided genomic segment has no valid oligomers of size %d\n",index1part_nt);
@@ -2047,6 +2776,7 @@ Indexdb_new_segment (char *genomicseg,
 
   return new;
 }
+#endif
 
 
 int
diff --git a/src/indexdb.h b/src/indexdb.h
index acddd7b..ffc0584 100644
--- a/src/indexdb.h
+++ b/src/indexdb.h
@@ -1,4 +1,4 @@
-/* $Id: indexdb.h 99753 2013-06-27 21:13:11Z twu $ */
+/* $Id: indexdb.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef INDEXDB_INCLUDED
 #define INDEXDB_INCLUDED
 #include <stdio.h>
@@ -7,7 +7,7 @@
 #include "mode.h"
 #include "genomicpos.h"
 #include "bool.h"
-#include "iit-read.h"
+#include "iitdef.h"
 #include "indexdbdef.h"
 
 #ifdef PMAP
@@ -15,7 +15,6 @@
 #endif
 
 
-
 #ifdef PMAP
 #define SUFFICIENT_SUPPORT 9
 #else
@@ -32,7 +31,8 @@
 #endif
 
 #define OFFSETS_FILESUFFIX "offsets"
-#define POSITIONS_FILESUFFIX "positions"
+#define POSITIONS_HIGH_FILESUFFIX "positionsh"
+#define POSITIONS_LOW_FILESUFFIX "positions"
 
 
 #define T Indexdb_T
@@ -57,16 +57,49 @@ Indexdb_positions_fileio_p (T this);
 extern double
 Indexdb_mean_size (T this, Mode_T mode, Width_T index1part);
 
-extern bool
-Indexdb_get_filenames (char **gammaptrs_filename, char **offsetscomp_filename, char **positions_filename,
-		       char **gammaptrs_basename_ptr, char **offsetscomp_basename_ptr, char **positions_basename_ptr,
-		       char **gammaptrs_index1info_ptr, char **offsetscomp_index1info_ptr, char **positions_index1info_ptr,
+
+typedef struct Filenames_T *Filenames_T;
+struct Filenames_T {
+  char *pages_filename;
+  char *pointers_filename;
+  char *offsets_filename;
+  char *positions_high_filename;
+  char *positions_low_filename;
+
+  char *pointers_basename_ptr;
+  char *offsets_basename_ptr;
+  char *positions_high_basename_ptr;
+  char *positions_low_basename_ptr;
+
+  char *pointers_index1info_ptr;
+  char *offsets_index1info_ptr;
+  char *positions_high_index1info_ptr;
+  char *positions_low_index1info_ptr;
+};
+
+
+extern void
+Filenames_free (Filenames_T *old);
+
+extern Filenames_T
+Indexdb_get_filenames_no_compression (Width_T *index1part, Width_T *index1interval,
+				      char *genomesubdir, char *fileroot, char *idx_filesuffix, char *snps_root,
+				      Width_T required_interval, bool offsets_only_p);
+extern Filenames_T
+Indexdb_get_filenames_bitpack (Width_T *index1part, Width_T *index1interval,
+			       char *genomesubdir, char *fileroot, char *idx_filesuffix, char *snps_root,
+			       Width_T required_index1part, Width_T required_interval,
+			       Blocksize_T blocksize, bool offsets_only_p);
+
+extern Filenames_T
+Indexdb_get_filenames (int *compression_type,
 #ifdef PMAP
 		       Alphabet_T *alphabet, Alphabet_T required_alphabet,
 #endif
-		       Width_T *basesize, Width_T *index1part, Width_T *index1interval, char *genomesubdir,
+		       Width_T *index1part, Width_T *index1interval, char *genomesubdir,
 		       char *fileroot, char *idx_filesuffix, char *snps_root,
-		       Width_T required_basesize, Width_T required_index1part, Width_T required_interval);
+		       Width_T required_index1part, Width_T required_interval,
+		       bool offsets_only_p);
 
 extern Univcoord_T *
 Indexdb_point_one_shift (int *nentries, T this, Storedoligomer_T subst);
@@ -75,22 +108,34 @@ Indexdb_count_one_shift (T this, Storedoligomer_T subst, int nadjacent);
 
 
 extern Positionsptr_T *
-Indexdb_offsets_from_gammas (char *gammaptrsfile, char *offsetscompfile, Width_T offsetscomp_basesize
+Indexdb_offsets_from_bitpack (char *offsetsmetafile, char *offsetsstrmfile, 
 #ifdef PMAP
-			     , int alphabet_size, Width_T index1part_aa
+			      int alphabet_size, Width_T index1part_aa
 #else
-			     , Width_T index1part
+			      Width_T index1part
+#endif
+			      );
+
+#if defined(HAVE_64_BIT) && defined(UTILITYP)
+extern Hugepositionsptr_T *
+Indexdb_offsets_from_bitpack_huge (char *bitpackpagesfile, char *offsetsmetafile, char *offsetsstrmfile,
+#ifdef PMAP
+				   int alphabet_size, Width_T index1part_aa
+#else
+				   Width_T index1part
+#endif
+				   );
 #endif
-			     );
 
 extern T
-Indexdb_new_genome (Width_T *basesize, Width_T *index1part, Width_T *index1interval,
+Indexdb_new_genome (Width_T *index1part, Width_T *index1interval,
 		    char *genomesubdir, char *fileroot, char *idx_filesuffix, char *snps_root,
 #ifdef PMAP
 		    Alphabet_T *alphabet, int *alphabet_size, Alphabet_T required_alphabet,
 #endif
-		    Width_T required_basesize, Width_T required_index1part, Width_T required_interval, bool expand_offsets_p,
-		    Access_mode_T offsetscomp_access, Access_mode_T positions_access);
+		    Width_T required_index1part, Width_T required_interval, bool expand_offsets_p,
+		    Access_mode_T offsetsstrm_access, Access_mode_T positions_access);
+#ifndef UTILITYP
 extern T
 Indexdb_new_segment (char *genomicseg,
 #ifdef PMAP
@@ -99,6 +144,7 @@ Indexdb_new_segment (char *genomicseg,
 		     Width_T index1part,
 #endif
 		     Width_T index1interval);
+#endif
 
 #ifdef PMAP
 extern Univcoord_T *
@@ -106,8 +152,12 @@ Indexdb_read (int *nentries, T this, Storedoligomer_T aaindex);
 #else
 extern Univcoord_T *
 Indexdb_read (int *nentries, T this, Storedoligomer_T oligo);
-extern Univcoord_T *
-Indexdb_read_inplace (int *nentries, T this, Storedoligomer_T oligo);
+extern UINT4 *
+Indexdb_read_inplace (int *nentries,
+#ifdef LARGE_GENOMES
+		      unsigned char **positions_high,
+#endif
+		      T this, Storedoligomer_T oligo);
 #endif
 
 extern Univcoord_T *
diff --git a/src/indexdb_hr.c b/src/indexdb_hr.c
index 9f898d1..3b810e5 100644
--- a/src/indexdb_hr.c
+++ b/src/indexdb_hr.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: indexdb_hr.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: indexdb_hr.c 132144 2014-04-02 16:02:28Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -15,7 +15,9 @@ static char rcsid[] = "$Id: indexdb_hr.c 99737 2013-06-27 19:33:03Z twu $";
 
 #include "indexdb_hr.h"
 #include "indexdbdef.h"
-#include "genome_hr.h"
+#include "genome128_hr.h"
+#include "bitpack64-read.h"
+#include "bitpack64-readtwo.h"
 
 
 #ifdef WORDS_BIGENDIAN
@@ -118,7 +120,12 @@ typedef struct Batch_T *Batch_T;
 struct Batch_T {
   int nentries;
   Univcoord_T position;
+#ifdef LARGE_GENOMES
+  unsigned char *positionptr_high;
+  UINT4 *positionptr_low;
+#else
   Univcoord_T *positionptr;
+#endif
 };
 
 typedef struct Header_T *Header_T;
@@ -187,6 +194,12 @@ check_heap_even (Batch_T *heap, int heapsize) {
 
 #define READ_THEN_WRITE 1
 
+#ifdef LARGE_GENOMES
+static unsigned char sentinel_position_high = (unsigned char) -1;
+static UINT4 sentinel_position_low = (UINT4) -1;
+#endif
+
+
 static Univcoord_T *
 merge_batches_one_heap_16_existing (int *nmerged, struct Batch_T *batchpool, int nentries, int diagterm) {
   Univcoord_T *positions, *ptr, position, last_position, this_position;
@@ -211,7 +224,9 @@ merge_batches_one_heap_16_existing (int *nmerged, struct Batch_T *batchpool, int
   for (i = 0; i < 16; i++) {
     batch = &(batchpool[i]);
     if (batch->nentries > 0) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      batch->position = (((Univcoord_T) *batch->positionptr_high++) << 32) + (*batch->positionptr_low++);
+#elif defined(WORDS_BIGENDIAN)
       batch->position = Bigendian_convert_univcoord(*batch->positionptr++);
 #else
       batch->position = *batch->positionptr++;
@@ -221,7 +236,12 @@ merge_batches_one_heap_16_existing (int *nmerged, struct Batch_T *batchpool, int
   }
 
   sentinel_struct.position = (Univcoord_T) -1; /* infinity */
+#ifdef LARGE_GENOMES
+  sentinel_struct.positionptr_high = &sentinel_position_high;
+  sentinel_struct.positionptr_low = &sentinel_position_low;
+#else
   sentinel_struct.positionptr = &(sentinel_struct.position);
+#endif
   sentinel = &sentinel_struct;
 
   for (i = heapsize+1; i <= 16; i++) {
@@ -252,7 +272,9 @@ merge_batches_one_heap_16_existing (int *nmerged, struct Batch_T *batchpool, int
 
     } else {
       /* Advance heap, and use this batch for insertion */
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      batch->position = (((Univcoord_T) *batch->positionptr_high++) << 32) + (*batch->positionptr_low++);
+#elif defined(WORDS_BIGENDIAN)
       batch->position = Bigendian_convert_univcoord(*batch->positionptr++);
 #else
       batch->position = *batch->positionptr++;
@@ -417,7 +439,9 @@ merge_batches_one_heap_4_existing (int *nmerged, struct Batch_T *batchpool, int
   for (i = 0; i < 4; i++) {
     batch = &(batchpool[i]);
     if (batch->nentries > 0) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      batch->position = (((Univcoord_T) *batch->positionptr_high++) << 32) + (*batch->positionptr_low++);
+#elif defined(WORDS_BIGENDIAN)
       batch->position = Bigendian_convert_univcoord(*batch->positionptr++);
 #else
       batch->position = *batch->positionptr++;
@@ -427,7 +451,12 @@ merge_batches_one_heap_4_existing (int *nmerged, struct Batch_T *batchpool, int
   }
 
   sentinel_struct.position = (Univcoord_T) -1; /* infinity */
+#ifdef LARGE_GENOMES
+  sentinel_struct.positionptr_high = &sentinel_position_high;
+  sentinel_struct.positionptr_low = &sentinel_position_low;
+#else
   sentinel_struct.positionptr = &(sentinel_struct.position);
+#endif
   sentinel = &sentinel_struct;
 
   for (i = heapsize+1; i <= 4; i++) {
@@ -459,7 +488,9 @@ merge_batches_one_heap_4_existing (int *nmerged, struct Batch_T *batchpool, int
 
     } else {
       /* Advance heap, and use this batch for insertion */
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      batch->position = (((Univcoord_T) *batch->positionptr_high++) << 32) + (*batch->positionptr_low++);
+#elif defined(WORDS_BIGENDIAN)
       batch->position = Bigendian_convert_univcoord(*batch->positionptr++);
 #else
       batch->position = *batch->positionptr++;
@@ -553,6 +584,7 @@ merge_batches_one_heap_4_existing (int *nmerged, struct Batch_T *batchpool, int
  *  The following positions functions are take from indexdb.c
  ************************************************************************/
 
+#ifndef LARGE_GENOMES
 static void
 positions_move_absolute (int positions_fd, Positionsptr_T ptr) {
   off_t offset = ptr*((off_t) sizeof(Univcoord_T));
@@ -560,7 +592,7 @@ positions_move_absolute (int positions_fd, Positionsptr_T ptr) {
   if (lseek(positions_fd,offset,SEEK_SET) < 0) {
     fprintf(stderr,"Attempted to do lseek on offset %u*%lu=%lu\n",
 	    ptr,sizeof(Univcoord_T),(long unsigned int) offset);
-    perror("Error in indexdb.c, positions_move_absolute");
+    perror("Error in indexdb.c, positions_move_absolute_4");
     exit(9);
   }
   return;
@@ -605,7 +637,60 @@ positions_read_multiple (int positions_fd, Univcoord_T *values, int n) {
 
   return;
 }
+#endif
+
+
+
+#ifdef LARGE_GENOMES
+static UINT4 *
+point_one_shift (int *nentries, unsigned char **positions_high, T this, Storedoligomer_T subst) {
+  UINT4 *positions_low;
+  Positionsptr_T ptr0, end0;
+#ifdef DEBUG
+  int i;
+#endif
+
+  if (this->compression_type == NO_COMPRESSION) {
+#ifdef WORDS_BIGENDIAN
+    abort();
+#else
+    ptr0 = this->offsetsstrm[subst];
+    end0 = this->offsetsstrm[subst+1];
+#endif
 
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+    ptr0 = Bitpack64_read_two_huge(&end0,subst,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
+  }
+
+
+  debug(printf("point_one_shift: %08X %u %u\n",subst,ptr0,end0));
+
+  if ((*nentries = end0 - ptr0) == 0) {
+    *positions_high = (unsigned char *) NULL;
+    return (UINT4 *) NULL;
+  } else {
+    if (this->positions_access == FILEIO) {
+      abort();
+
+    } else {
+      /* ALLOCATED or MMAPPED */
+      *positions_high = &(this->positions_high[ptr0]);
+      positions_low = &(this->positions_low[ptr0]);
+    }
+  }
+      
+  debug(
+	printf("%d entries:",*nentries);
+	for (i = 0; i < *nentries; i++) {
+	  printf(" %u",(Univcoord_T) positions_high[i] << 32 + positions_low[i]);
+	}
+	printf("\n");
+	);
+  
+  return positions_low;
+}
+
+#else
 
 static Univcoord_T *
 point_one_shift (int *nentries, T this, Storedoligomer_T subst) {
@@ -615,16 +700,25 @@ point_one_shift (int *nentries, T this, Storedoligomer_T subst) {
   int i;
 #endif
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[subst];
+      end0 = this->offsetsstrm[subst+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[subst]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[subst+1]);
+    }
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst);
+    ptr0 = this->offsetsstrm[subst];
+    end0 = this->offsetsstrm[subst+1];
 #endif
 
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+    ptr0 = Bitpack64_read_two(&end0,subst,this->offsetsmeta,this->offsetsstrm);
+  }
+
+
   debug(printf("point_one_shift: %08X %u %u\n",subst,ptr0,end0));
 
   if ((*nentries = end0 - ptr0) == 0) {
@@ -637,7 +731,6 @@ point_one_shift (int *nentries, T this, Storedoligomer_T subst) {
 #endif
       positions_move_absolute(this->positions_fd,ptr0);
       positions_read_multiple(this->positions_fd,positions,*nentries);
-
 #ifdef HAVE_PTHREAD
       pthread_mutex_unlock(&this->positions_read_mutex);
 #endif
@@ -669,7 +762,7 @@ point_one_shift (int *nentries, T this, Storedoligomer_T subst) {
   return positions;
 }
 
-
+#endif
 
 
 
@@ -708,29 +801,73 @@ shortoligo_nt (Storedoligomer_T oligo, int oligosize) {
 #endif
 
 
+#ifdef LARGE_GENOMES
 static int
 count_one_shift (T this, Storedoligomer_T subst, int nadjacent) {
   Positionsptr_T ptr0, end0;
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_only_from_gammas(this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst);
-    end0 = Genome_offsetptr_only_from_gammas(this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst+nadjacent);
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[subst];
+      end0 = this->offsetsstrm[subst+nadjacent];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[subst]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[subst+nadjacent]);
+    }
+#else
+    ptr0 = this->offsetsstrm[subst];
+    end0 = this->offsetsstrm[subst+nadjacent];
+#endif
+
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+    ptr0 = Bitpack64_read_one_huge(subst,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
+    end0 = Bitpack64_read_one_huge(subst+nadjacent,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
+
   } else {
-    ptr0 = Genome_offsetptr_only_from_gammas_bigendian(this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst);
-    end0 = Genome_offsetptr_only_from_gammas_bigendian(this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst+nadjacent);
+    abort();
   }
+
+  debug(printf("count_one_shift: oligo = %06X (%s), %u - %u = %u\n",
+	       subst,shortoligo_nt(subst,index1part),end0,ptr0,end0-ptr0));
+  return (end0 - ptr0);
+
+}
+
+#else
+static int
+count_one_shift (T this, Storedoligomer_T subst, int nadjacent) {
+  Positionsptr_T ptr0, end0;
+
+  if (this->compression_type == NO_COMPRESSION) {
+#ifdef WORDS_BIGENDIAN
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[subst];
+      end0 = this->offsetsstrm[subst+nadjacent];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[subst]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[subst+nadjacent]);
+    }
 #else
-  ptr0 = Genome_offsetptr_only_from_gammas(this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst);
-  end0 = Genome_offsetptr_only_from_gammas(this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,subst+nadjacent);
+    ptr0 = this->offsetsstrm[subst];
+    end0 = this->offsetsstrm[subst+nadjacent];
 #endif
 
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+    ptr0 = Bitpack64_read_one(subst,this->offsetsmeta,this->offsetsstrm);
+    end0 = Bitpack64_read_one(subst+nadjacent,this->offsetsmeta,this->offsetsstrm);
+
+  } else {
+    abort();
+  }
+
   debug(printf("count_one_shift: oligo = %06X (%s), %u - %u = %u\n",
 	       subst,shortoligo_nt(subst,index1part),end0,ptr0,end0-ptr0));
   return (end0 - ptr0);
 
 }
 
+#endif
 
 
 /************************************************************************
@@ -896,7 +1033,12 @@ Compoundpos_init_positions_free (bool positions_fileio_p) {
 struct Compoundpos_T {
   int n;
 
+#ifdef LARGE_GENOMES
+  unsigned char *positions_high[16];
+  UINT4 *positions_low[16];
+#else
   Univcoord_T *positions[16];
+#endif
   int npositions[16];
 
   struct Batch_T batchpool[16];
@@ -905,7 +1047,12 @@ struct Compoundpos_T {
   struct Batch_T sentinel_struct;
   Batch_T sentinel;
 
+#ifdef LARGE_GENOMES
+  unsigned char *positions_high_reset[16]; /* altered by find_nomiss_aux and find_onemiss_aux */
+  UINT4 *positions_low_reset[16]; /* altered by find_nomiss_aux and find_onemiss_aux */
+#else
   Univcoord_T *positions_reset[16]; /* altered by find_nomiss_aux and find_onemiss_aux */
+#endif
   int npositions_reset[16]; /* altered by find_nomiss_aux and find_onemiss_aux */
 };
 
@@ -915,7 +1062,12 @@ Compoundpos_set (Compoundpos_T compoundpos) {
   int i;
 
   for (i = 0; i < compoundpos->n; i++) {
+#ifdef LARGE_GENOMES
+    compoundpos->positions_high_reset[i] = compoundpos->positions_high[i];
+    compoundpos->positions_low_reset[i] = compoundpos->positions_low[i];
+#else
     compoundpos->positions_reset[i] = compoundpos->positions[i];
+#endif
     compoundpos->npositions_reset[i] = compoundpos->npositions[i];
   }
   return;
@@ -926,7 +1078,12 @@ Compoundpos_reset (Compoundpos_T compoundpos) {
   int i;
 
   for (i = 0; i < compoundpos->n; i++) {
+#ifdef LARGE_GENOMES
+    compoundpos->positions_high[i] = compoundpos->positions_high_reset[i];
+    compoundpos->positions_low[i] = compoundpos->positions_low_reset[i];
+#else
     compoundpos->positions[i] = compoundpos->positions_reset[i];
+#endif
     compoundpos->npositions[i] = compoundpos->npositions_reset[i];
   }
   return;
@@ -957,7 +1114,10 @@ Compoundpos_dump (Compoundpos_T compoundpos, int diagterm) {
 
   for (i = 0; i < compoundpos->n; i++) {
     for (j = 0; j < compoundpos->npositions[i]; j++) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      printf(" compound%d.%d:%lu+%d\n",
+	     i,j,((Univcoord_T) compoundpos->positions_high[i][j] << 32) + compoundpos->positions_low[i][j],diagterm);
+#elif defined(WORDS_BIGENDIAN)
       printf(" compound%d.%d:%u+%d\n",
 	     i,j,Bigendian_convert_univcoord(compoundpos->positions[i][j]),diagterm);
 #else
@@ -976,7 +1136,12 @@ Compoundpos_free (Compoundpos_T *old) {
   if (*old) {
     if (free_positions_p == true) {
       for (i = 0; i < (*old)->n; i++) {
+#ifdef LARGE_GENOMES
+	FREE((*old)->positions_high[i]);
+	FREE((*old)->positions_low[i]);
+#else
 	FREE((*old)->positions[i]);
+#endif
       }
     }
 
@@ -1004,7 +1169,12 @@ Indexdb_compoundpos_left_subst_2 (T this, Storedoligomer_T oligo) {
   /* Right shift */
   base = (oligo >> 4);
   for (i = 0; i < 16; i++, base += left_subst) {
+#ifdef LARGE_GENOMES
+    compoundpos->positions_low[i] =
+      point_one_shift(&(compoundpos->npositions[i]),&(compoundpos->positions_high[i]),this,base);
+#else
     compoundpos->positions[i] = point_one_shift(&(compoundpos->npositions[i]),this,base);
+#endif
   }
 
   return compoundpos;
@@ -1025,7 +1195,12 @@ Indexdb_compoundpos_left_subst_1 (T this, Storedoligomer_T oligo) {
   /* Zero shift */
   base = (oligo >> 2);
   for (i = 0; i < 4; i++, base += top_subst) {
+#ifdef LARGE_GENOMES
+    compoundpos->positions_low[i] =
+      point_one_shift(&(compoundpos->npositions[i]),&(compoundpos->positions_high[i]),this,base);
+#else
     compoundpos->positions[i] = point_one_shift(&(compoundpos->npositions[i]),this,base);
+#endif
   }
 
   return compoundpos;
@@ -1046,7 +1221,12 @@ Indexdb_compoundpos_right_subst_2 (T this, Storedoligomer_T oligo) {
   /* Left shift */
   base = (oligo << 4) & kmer_mask;
   for (i = 0; i < 16; i++, base += right_subst) {
+#ifdef LARGE_GENOMES
+    compoundpos->positions_low[i] =
+      point_one_shift(&(compoundpos->npositions[i]),&(compoundpos->positions_high[i]),this,base);
+#else
     compoundpos->positions[i] = point_one_shift(&(compoundpos->npositions[i]),this,base);
+#endif
   }
 
   return compoundpos;
@@ -1067,7 +1247,12 @@ Indexdb_compoundpos_right_subst_1 (T this, Storedoligomer_T oligo) {
   /* Zero shift */
   base = (oligo << 2) & kmer_mask;
   for (i = 0; i < 4; i++, base += right_subst) {
+#ifdef LARGE_GENOMES
+    compoundpos->positions_low[i] =
+      point_one_shift(&(compoundpos->npositions[i]),&(compoundpos->positions_high[i]),this,base);
+#else
     compoundpos->positions[i] = point_one_shift(&(compoundpos->npositions[i]),this,base);
+#endif
   }
 
   return compoundpos;
@@ -1077,6 +1262,46 @@ Indexdb_compoundpos_right_subst_1 (T this, Storedoligomer_T oligo) {
 
 /************************************************************************/
 
+#ifdef LARGE_GENOMES
+static int
+binary_search (int lowi, int highi, unsigned char *positions_high, UINT4 *positions_low, Univcoord_T goal) {
+  bool foundp = false;
+  int middlei;
+  Univcoord_T position;
+
+#ifdef NOBINARY
+  return lowi;
+#endif
+
+  if (goal == 0U) {
+    return lowi;
+  }
+
+  while (!foundp && lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
+    position = ((Univcoord_T) positions_high[middlei] << 32) + positions_low[middlei];
+    debug2(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		  lowi,(positions_high[lowi] << 32) + positions_low[lowi],
+		  middlei,position,
+		  highi,(positions_high[highi] << 32) + positions_low[highi],goal));
+    if (goal < position) {
+      highi = middlei;
+    } else if (goal > position) {
+      lowi = middlei + 1;
+    } else {
+      foundp = true;
+    }
+  }
+
+  if (foundp == true) {
+    return middlei;
+  } else {
+    return highi;
+  }
+}
+
+#else
+
 static int
 binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
   bool foundp = false;
@@ -1091,8 +1316,8 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
   }
 
   while (!foundp && lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
 #ifdef WORDS_BIGENDIAN
-    middlei = (lowi+highi)/2;
     debug2(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
 		  lowi,Bigendian_convert_univcoord(positions[lowi]),
 		  middlei,Bigendian_convert_univcoord(positions[middlei]),
@@ -1105,7 +1330,6 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
       foundp = true;
     }
 #else
-    middlei = (lowi+highi)/2;
     debug2(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
 		  lowi,positions[lowi],middlei,positions[middlei],
 		  highi,positions[highi],goal));
@@ -1126,6 +1350,8 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
   }
 }
 
+#endif
+
 
 void
 Compoundpos_heap_init (Compoundpos_T compoundpos, int querylength, int diagterm) {
@@ -1135,11 +1361,24 @@ Compoundpos_heap_init (Compoundpos_T compoundpos, int querylength, int diagterm)
   compoundpos->heapsize = 0;
   for (i = 0; i < compoundpos->n; i++) {
     batch = &(compoundpos->batchpool[i]);
+#ifdef LARGE_GENOMES
+    batch->positionptr_high = compoundpos->positions_high[i];
+    batch->positionptr_low = compoundpos->positions_low[i];
+#else
     batch->positionptr = compoundpos->positions[i];
+#endif
     batch->nentries = compoundpos->npositions[i];
     if (diagterm < querylength) {
       startbound = querylength - diagterm;
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      while (batch->nentries > 0 && (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low) < (unsigned int) startbound) {
+	debug11(printf("Eliminating diagonal %u as straddling beginning of genome (Compoundpos_heap_init)\n",
+		       ((Univcoord_T) *batch->positionptr_high << 32) + *batch->positionptr_low));
+	++batch->positionptr_high;
+	++batch->positionptr_low;
+	--batch->nentries;
+      }
+#elif defined(WORDS_BIGENDIAN)
       while (batch->nentries > 0 && Bigendian_convert_univcoord(*batch->positionptr) < (unsigned int) startbound) {
 	debug11(printf("Eliminating diagonal %u as straddling beginning of genome (Compoundpos_heap_init)\n",
 		       Bigendian_convert_univcoord(*batch->positionptr)));
@@ -1156,7 +1395,9 @@ Compoundpos_heap_init (Compoundpos_T compoundpos, int querylength, int diagterm)
 #endif
     }
     if (batch->nentries > 0) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      batch->position = (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low);
+#elif defined(WORDS_BIGENDIAN)
       batch->position = Bigendian_convert_univcoord(*batch->positionptr);
 #else
       batch->position = *batch->positionptr;
@@ -1166,7 +1407,12 @@ Compoundpos_heap_init (Compoundpos_T compoundpos, int querylength, int diagterm)
   }
 
   compoundpos->sentinel_struct.position = (Univcoord_T) -1; /* infinity */
+#ifdef LARGE_GENOMES
+  compoundpos->sentinel_struct.positionptr_high = &sentinel_position_high;
+  compoundpos->sentinel_struct.positionptr_low = &sentinel_position_low;
+#else
   compoundpos->sentinel_struct.positionptr = &(compoundpos->sentinel_struct.position);
+#endif
   compoundpos->sentinel = &compoundpos->sentinel_struct;
 
   for (i = compoundpos->heapsize+1; i <= compoundpos->n; i++) {
@@ -1209,7 +1455,25 @@ Compoundpos_find (bool *emptyp, Compoundpos_T compoundpos, Univcoord_T local_goa
     debug6(heap_even_dump(heap,compoundpos->heapsize));
 
     batch = heap[i];
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    if (batch->nentries > 0 && (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low) < local_goal) {
+      j = 1;
+      while (j < batch->nentries &&
+	     ((Univcoord_T) batch->positionptr_high[j] << 32) + batch->positionptr_low[j] < local_goal) {
+	j <<= 1;		/* gallop by 2 */
+      }
+      if (j >= batch->nentries) {
+	j = binary_search(j >> 1,batch->nentries,batch->positionptr_high,batch->positionptr_low,local_goal);
+      } else {
+	j = binary_search(j >> 1,j,batch->positionptr_high,batch->positionptr_low,local_goal);
+      }
+      batch->positionptr_high += j;
+      batch->positionptr_low += j;
+      batch->nentries -= j;
+      debug6(printf("binary search jump %d positions to %d:%u\n",
+		    j,batch->nentries,(((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low)));
+    }
+#elif defined(WORDS_BIGENDIAN)
     if (batch->nentries > 0 && Bigendian_convert_univcoord(*batch->positionptr) < local_goal) {
       j = 1;
       while (j < batch->nentries && Bigendian_convert_univcoord(batch->positionptr[j]) < local_goal) {
@@ -1249,7 +1513,13 @@ Compoundpos_find (bool *emptyp, Compoundpos_T compoundpos, Univcoord_T local_goa
       compoundpos->heap[i] = compoundpos->heap[compoundpos->heapsize];
       --compoundpos->heapsize;
 
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    } else if (((Univcoord_T) *batch->positionptr_high << 32) + (*batch->positionptr_low) > local_goal) {
+      /* Already advanced past goal, so continue with loop */
+      debug6(printf("Setting emptyp to be false\n"));
+      *emptyp = false;
+      i++;
+#elif defined(WORDS_BIGENDIAN)
     } else if (Bigendian_convert_univcoord(*batch->positionptr) > local_goal) {
       /* Already advanced past goal, so continue with loop */
       debug6(printf("Setting emptyp to be false\n"));
@@ -1266,12 +1536,19 @@ Compoundpos_find (bool *emptyp, Compoundpos_T compoundpos, Univcoord_T local_goa
       /* Found goal, so return */
       debug6(printf("Setting emptyp to be false\n"));
       *emptyp = false;
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      debug6(printf("Found! Returning position %lu\n",(((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low)));
+#elif defined(WORDS_BIGENDIAN)
       debug6(printf("Found! Returning position %lu\n",Bigendian_convert_univcoord(*batch->positionptr)));
 #else
       debug6(printf("Found! Returning position %lu\n",*batch->positionptr));
 #endif
+#ifdef LARGE_GENOMES
+      ++batch->positionptr_high;
+      ++batch->positionptr_low;
+#else
       ++batch->positionptr;
+#endif
       --batch->nentries;
       return true;
     }
@@ -1301,7 +1578,26 @@ Compoundpos_search (Univcoord_T *value, Compoundpos_T compoundpos, Univcoord_T l
     while (compoundpos->heapsize > 0 && (batch = heap[1])->position < local_goal) {
       debug3(printf("Compoundpos_search iteration, heapsize %d:\n",compoundpos->heapsize));
       debug3(heap_even_dump(heap,compoundpos->heapsize));
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      if (batch->nentries > 0 && (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low) < local_goal) {
+	j = 1;
+	while (j < batch->nentries &&
+	       ((Univcoord_T) batch->positionptr_high[j] << 32) + batch->positionptr_low[j] < local_goal) {
+	  j <<= 1;		/* gallop by 2 */
+	}
+	if (j >= batch->nentries) {
+	  j = binary_search(j >> 1,batch->nentries,batch->positionptr_high,batch->positionptr_low,local_goal);
+	} else {
+	  j = binary_search(j >> 1,j,batch->positionptr_high,batch->positionptr_low,local_goal);
+	}
+	batch->positionptr_high += j;
+	batch->positionptr_low += j;
+	batch->nentries -= j;
+	debug3(printf("binary search jump %d positions to %d:%u\n",
+		      j,batch->nentries,(((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low)));
+      }
+      batch->position = (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low);
+#elif defined(WORDS_BIGENDIAN)
       if (batch->nentries > 0 && Bigendian_convert_univcoord(*batch->positionptr) < local_goal) {
 	j = 1;
 	while (j < batch->nentries && Bigendian_convert_univcoord(batch->positionptr[j]) < local_goal) {
@@ -1376,7 +1672,26 @@ Compoundpos_search (Univcoord_T *value, Compoundpos_T compoundpos, Univcoord_T l
     while (compoundpos->heapsize > 0 && (batch = heap[1])->position < local_goal) {
       debug3(printf("Compoundpos_search iteration, heapsize %d:\n",compoundpos->heapsize));
       debug3(heap_even_dump(heap,compoundpos->heapsize));
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      if (batch->nentries > 0 && (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low) < local_goal) {
+	j = 1;
+	while (j < batch->nentries &&
+	       ((Univcoord_T) batch->positionptr_high[j] << 32) + batch->positionptr_low[j] < local_goal) {
+	  j <<= 1;		/* gallop by 2 */
+	}
+	if (j >= batch->nentries) {
+	  j = binary_search(j >> 1,batch->nentries,batch->positionptr_high,batch->positionptr_low,local_goal);
+	} else {
+	  j = binary_search(j >> 1,j,batch->positionptr_high,batch->positionptr_low,local_goal);
+	}
+	batch->positionptr_high += j;
+	batch->positionptr_low += j;
+	batch->nentries -= j;
+	debug3(printf("binary search jump %d positions to %d:%u\n",
+		      j,batch->nentries,(((Univcoord_T) *batch->positionptr_high) << 32 + (*batch->positionptr_low))));
+      }
+      batch->position = (((Univcoord_T) *batch->positionptr_high) << 32) + (*batch->positionptr_low);
+#elif defined(WORDS_BIGENDIAN)
       if (batch->nentries > 0 && Bigendian_convert_univcoord(*batch->positionptr) < local_goal) {
 	j = 1;
 	while (j < batch->nentries && Bigendian_convert_univcoord(batch->positionptr[j]) < local_goal) {
@@ -1490,7 +1805,12 @@ Indexdb_merge_compoundpos (int *nmerged, Compoundpos_T compoundpos, int diagterm
 
   for (i = 0; i < compoundpos->n; i++) {
     batch = &(batchpool[i]);
+#ifdef LARGE_GENOMES
+    batch->positionptr_high = compoundpos->positions_high[i];
+    batch->positionptr_low = compoundpos->positions_low[i];
+#else
     batch->positionptr = compoundpos->positions[i];
+#endif
     batch->nentries = compoundpos->npositions[i];
     debug(printf(" %d",batch->nentries));
     nentries += batch->nentries;
@@ -1514,16 +1834,32 @@ int
 Indexdb_count_no_subst (T this, Storedoligomer_T oligo) {
   Positionsptr_T ptr0, end0;
 
+  if (this->compression_type == NO_COMPRESSION) {
 #ifdef WORDS_BIGENDIAN
-  if (this->offsetscomp_access == ALLOCATED) {
-    ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  } else {
-    ptr0 = Genome_offsetptr_from_gammas_bigendian(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
-  }
+    if (this->offsetsstrm_access == ALLOCATED) {
+      ptr0 = this->offsetsstrm[oligo];
+      end0 = this->offsetsstrm[oligo+1];
+    } else {
+      ptr0 = Bigendian_convert_uint(this->offsetsstrm[oligo]);
+      end0 = Bigendian_convert_uint(this->offsetsstrm[oligo+1]);
+    }
+#else
+    ptr0 = this->offsetsstrm[oligo];
+    end0 = this->offsetsstrm[oligo+1];
+#endif
+
+  } else if (this->compression_type == BITPACK64_COMPRESSION) {
+#ifdef LARGE_GENOMES
+    ptr0 = Bitpack64_read_two_huge(&end0,oligo,this->offsetspages,this->offsetsmeta,this->offsetsstrm);
 #else
-  ptr0 = Genome_offsetptr_from_gammas(&end0,this->gammaptrs,this->offsetscomp,this->offsetscomp_blocksize,oligo);
+    ptr0 = Bitpack64_read_two(&end0,oligo,this->offsetsmeta,this->offsetsstrm);
 #endif
 
+  } else {
+    abort();
+  }
+
+
   debug(printf("count_one_shift: oligo = %06X (%s), %u - %u = %u\n",
 	       oligo,shortoligo_nt(oligo,index1part),end0,ptr0,end0-ptr0));
   return (end0 - ptr0);
diff --git a/src/indexdbdef.h b/src/indexdbdef.h
index 1454c85..e922b0f 100644
--- a/src/indexdbdef.h
+++ b/src/indexdbdef.h
@@ -1,4 +1,4 @@
-/* $Id: indexdbdef.h 99754 2013-06-27 21:14:05Z twu $ */
+/* $Id: indexdbdef.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef INDEXDBDEF_INCLUDED
 #define INDEXDBDEF_INCLUDED
 
@@ -13,6 +13,11 @@
 
 #define BADVAL (Univcoord_T) -1
 
+/* Compression types */
+#define NO_COMPRESSION 0
+#define BITPACK64_COMPRESSION 1
+
+
 #define T Indexdb_T
 struct T {
 #ifdef PMAP
@@ -20,25 +25,37 @@ struct T {
   int alphabet_size;
 #endif
 
+  int compression_type;
   Width_T index1part;
   Width_T index1interval;
-  Width_T offsetscomp_basesize;		/* e.g., 12 */
-  Blocksize_T offsetscomp_blocksize;	/* e.g., 64 = 4^(15-12) */
+  Blocksize_T blocksize;	/* e.g., 64 = 4^(15-12) */
 
-  /* Access_T gammaptrs_access; -- Always ALLOCATED */ 
-  int gammaptrs_fd;
-  size_t gammaptrs_len;
-  Positionsptr_T *gammaptrs;
+#ifdef LARGE_GENOMES
+  UINT4 *offsetspages;
+#endif
 
-  Access_T offsetscomp_access;
-  int offsetscomp_fd;
-  size_t offsetscomp_len;
-  Positionsptr_T *offsetscomp;
+  int offsetsmeta_fd;
+  size_t offsetsmeta_len;
+  UINT4 *offsetsmeta;
+
+  Access_T offsetsstrm_access;
+  int offsetsstrm_fd;
+  size_t offsetsstrm_len;
+  UINT4 *offsetsstrm;
 
   Access_T positions_access;
+#ifdef LARGE_GENOMES
+  int positions_high_fd;
+  size_t positions_high_len;
+  int positions_low_fd;
+  size_t positions_low_len;
+  unsigned char *positions_high;
+  UINT4 *positions_low;
+#else
   int positions_fd;
   size_t positions_len;
-  Univcoord_T *positions;
+  UINT4 *positions;		/* For small genomes, same as Univcoord_T */
+#endif
 
 #ifdef HAVE_PTHREAD
   pthread_mutex_t positions_read_mutex;
diff --git a/src/interval.c b/src/interval.c
index 737d5c5..741aacd 100644
--- a/src/interval.c
+++ b/src/interval.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: interval.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: interval.c 135351 2014-05-07 15:56:14Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -49,6 +49,15 @@ Interval_copy (T old) {
   new->type = old->type;
   return new;
 }
+
+void
+Interval_copy_existing (T dest, T src) {
+  dest->low = src->low;
+  dest->high = src->high;
+  dest->sign = src->sign;
+  dest->type = src->type;
+  return;
+}
   
 void
 Interval_free (T *old) {
@@ -283,6 +292,30 @@ Interval_cmp_high (const void *a, const void *b) {
 
 
 int
+Interval_cmp_low_struct (const void *a, const void *b) {
+  struct T x = * (struct T *) a;
+  struct T y = * (struct T *) b;
+
+  debug(printf("Comparing %u..%u with %u..%u => ",x.low,x.high,y.low,y.high));
+  if (x.low < y.low) {
+    debug(printf("-1\n"));
+    return -1;
+  } else if (x.low > y.low) {
+    debug(printf("+1\n"));
+    return +1;
+  } else if (x.type < y.type) {
+    debug(printf("-1\n"));
+    return -1;
+  } else if (x.type > y.type) {
+    debug(printf("-1\n"));
+    return +1;
+  } else {
+    debug(printf("0\n"));
+    return 0;
+  }
+}
+
+int
 Interval_windex_cmp (const void *a, const void *b) {
   struct Interval_windex_T x = * (struct Interval_windex_T *) a;
   struct Interval_windex_T y = * (struct Interval_windex_T *) b;
diff --git a/src/interval.h b/src/interval.h
index e72053f..bcef35a 100644
--- a/src/interval.h
+++ b/src/interval.h
@@ -1,4 +1,4 @@
-/* $Id: interval.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: interval.h 135351 2014-05-07 15:56:14Z twu $ */
 #ifndef INTERVAL_INCLUDED
 #define INTERVAL_INCLUDED
 #include "bool.h"
@@ -19,6 +19,8 @@ Interval_new (Chrpos_T low, Chrpos_T high, int type);
 extern T
 Interval_copy (T old);
 extern void
+Interval_copy_existing (T dest, T src);
+extern void
 Interval_free (T *old);
 extern void
 Interval_print (T this);
@@ -57,6 +59,8 @@ extern int
 Interval_cmp_low (const void *a, const void *b);
 extern int
 Interval_cmp_high (const void *a, const void *b);
+extern int
+Interval_cmp_low_struct (const void *a, const void *b);
 
 
 struct Interval_windex_T {
diff --git a/src/intlist.c b/src/intlist.c
index 66900c0..6c163c6 100644
--- a/src/intlist.c
+++ b/src/intlist.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: intlist.c 64017 2012-05-14 22:35:15Z twu $";
+static char rcsid[] = "$Id: intlist.c 134888 2014-05-01 23:30:38Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -148,6 +148,26 @@ Intlist_to_array (int *n, T list) {
   }
 }
 
+
+int *
+Intlist_to_array_out (int *n, T list) {
+  int *array;
+  int i;
+
+  *n = Intlist_length(list);
+  if (*n == 0) {
+    return NULL;
+  } else {
+    array = (int *) CALLOC_OUT(*n,sizeof(int));
+    for (i = 0; i < *n; i++) {
+      array[i] = list->first;
+      list = list->rest;
+    }
+    return array;
+  }
+}
+
+
 char *
 Intlist_to_char_array (int *n, T list) {
   char *array;
diff --git a/src/intlist.h b/src/intlist.h
index ad0fbcb..4b34b75 100644
--- a/src/intlist.h
+++ b/src/intlist.h
@@ -1,4 +1,4 @@
-/* $Id: intlist.h 64017 2012-05-14 22:35:15Z twu $ */
+/* $Id: intlist.h 134888 2014-05-01 23:30:38Z twu $ */
 #ifndef INTLIST_INCLUDED
 #define INTLIST_INCLUDED
 #include "bool.h"
@@ -32,6 +32,8 @@ extern bool
 Intlist_exists_p (T list, int x);
 extern int *
 Intlist_to_array (int *n, T list);
+extern int *
+Intlist_to_array_out (int *n, T list);
 extern char *
 Intlist_to_char_array (int *n, T list);
 extern T 
diff --git a/src/littleendian.c b/src/littleendian.c
index d0c2deb..2ed8b98 100644
--- a/src/littleendian.c
+++ b/src/littleendian.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: littleendian.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: littleendian.c 115433 2013-11-18 18:24:33Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -7,6 +7,16 @@ static char rcsid[] = "$Id: littleendian.c 99737 2013-06-27 19:33:03Z twu $";
 #include <unistd.h>
 
 void
+Littleendian_write_char (unsigned char value, int fd) {
+  unsigned char buf[1];
+
+  buf[0] = value;
+  write(fd,buf,1);
+
+  return;
+}
+
+void
 Littleendian_write_uint (UINT4 value, int fd) {
   unsigned char buf[4];
 
diff --git a/src/littleendian.h b/src/littleendian.h
index ec6316a..7e6cd90 100644
--- a/src/littleendian.h
+++ b/src/littleendian.h
@@ -1,4 +1,4 @@
-/* $Id: littleendian.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: littleendian.h 115892 2013-11-20 22:52:31Z twu $ */
 #ifndef LITTLEENDIAN_INCLUDED
 #define LITTLEENDIAN_INCLUDED
 #ifdef HAVE_CONFIG_H
@@ -9,11 +9,14 @@
 #include "types.h"
 
 extern void
+Littleendian_write_char (unsigned char value, int fd);
+extern void
 Littleendian_write_uint (UINT4 value, int fd);
 extern void
 Littleendian_write_uint8 (UINT8 value, int fd);
 
 
+#define FREAD_CHAR(p,fp) fread(p,sizeof(unsigned char),1,fp)
 #define FREAD_INT(p,fp) fread(p,sizeof(int),1,fp)
 #define FREAD_UINT(p,fp) fread(p,sizeof(UINT4),1,fp)
 #define FREAD_INTS(a,n,fp) fread(a,sizeof(int),n,fp)
@@ -23,8 +26,11 @@ Littleendian_write_uint8 (UINT8 value, int fd);
 #define FREAD_UINT8S(a,n,fp) fread(a,sizeof(UINT8),n,fp)
 #endif
 
+#define FWRITE_CHAR(x,fp) fwrite(&(x),sizeof(unsigned char),1,fp)
 #define FWRITE_INT(x,fp) fwrite(&(x),sizeof(int),1,fp)
 #define FWRITE_UINT(x,fp) fwrite(&(x),sizeof(UINT4),1,fp)
+#define FWRITE_DOUBLE(x,fp) fwrite(&(x),sizeof(double),1,fp)
+#define WRITE_CHAR(x,fd) Littleendian_write_char(x,fd)
 #define WRITE_UINT(x,fd) Littleendian_write_uint(x,fd)
 #define WRITE_UINT8(x,fd) Littleendian_write_uint8(x,fd)
 #define WRITE_UINT8_AS_UINT(x,fd) Littleendian_write_uint8_as_uint(x,fd)
diff --git a/src/mapq.c b/src/mapq.c
index 0fd9ca3..2f934ff 100644
--- a/src/mapq.c
+++ b/src/mapq.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: mapq.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: mapq.c 133760 2014-04-20 05:16:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -6,7 +6,7 @@ static char rcsid[] = "$Id: mapq.c 99737 2013-06-27 19:33:03Z twu $";
 #include "mapq.h"
 #include "bool.h"
 #include "assert.h"
-#include "genome_hr.h"
+#include "genome128_hr.h"
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -32,7 +32,7 @@ MAPQ_init (int quality_score_adj_in) {
 
 
 /* Duplicated in pair.c */
-static double
+static float
 mismatch_logprob[MAX_QUALITY_SCORE+1] =
   /* log(1/3*10^(-Q/10)) */
   {-1.098612,
@@ -46,7 +46,7 @@ mismatch_logprob[MAX_QUALITY_SCORE+1] =
    -9.387919, -9.618177, -9.848436, -10.078694, -10.308953};
 
 #ifdef USE_MATCHES
-static double
+static float
 match_logprob[MAX_QUALITY_SCORE+1] = 
   /* log(1 - 10^(-Q/10)) */
   {/*-Inf*/-1.58,
@@ -96,11 +96,11 @@ MAPQ_max_quality_score (char *quality_string, int querylength) {
 
 
 
-double
+float
 MAPQ_loglik_exact (char *quality_string, int querystart, int queryend) {
 
 #ifdef USE_MATCHES
-  double loglik = 0.0;
+  float loglik = 0.0;
   int Q;
   int querypos;
 
@@ -149,10 +149,10 @@ check_badchar (char c) {
 
 
 
-double
+float
 MAPQ_loglik (Compress_T query_compress, Univcoord_T left, int querystart, int queryend,
-	     int querylength, char *quality_string, bool plusp, int genestrand) {
-  double loglik = 0.0;
+	     int querylength, char *quality_string, bool plusp, int genestrand, bool first_read_p) {
+  float loglik = 0.0;
   int Q;
   int querypos;
 
@@ -179,7 +179,7 @@ MAPQ_loglik (Compress_T query_compress, Univcoord_T left, int querystart, int qu
 		 querystart,queryend,alignlength));
     nmismatches = Genome_mismatches_left(mismatch_positions,/*max_mismatches*/alignlength,
 					 query_compress,left,/*pos5*/querystart,/*pos3*/queryend,plusp,
-					 genestrand);
+					 genestrand,first_read_p);
     
     debug(printf("%d mismatches:",nmismatches));
     debug(
@@ -215,7 +215,7 @@ MAPQ_loglik (Compress_T query_compress, Univcoord_T left, int querystart, int qu
 		 querylength - queryend,querylength - querystart,alignlength));
     nmismatches = Genome_mismatches_left(mismatch_positions,/*max_mismatches*/alignlength,
 					 query_compress,left,/*pos5*/querylength - queryend,
-					 /*pos3*/querylength - querystart,plusp,genestrand);
+					 /*pos3*/querylength - querystart,plusp,genestrand,first_read_p);
 
     debug(printf("%d mismatches (adjusted for querylength %d):",nmismatches,querylength));
     debug(
diff --git a/src/mapq.h b/src/mapq.h
index f8a5274..e700388 100644
--- a/src/mapq.h
+++ b/src/mapq.h
@@ -1,4 +1,4 @@
-/* $Id: mapq.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: mapq.h 133760 2014-04-20 05:16:56Z twu $ */
 #ifndef MAPQ_INCLUDED
 #define MAPQ_INCLUDED
 
@@ -14,11 +14,11 @@ extern void
 MAPQ_init (int quality_score_adj_in);
 extern int
 MAPQ_max_quality_score (char *quality_string, int querylength);
-extern double
+extern float
 MAPQ_loglik_exact (char *quality_string, int querystart, int queryend);
-extern double
+extern float
 MAPQ_loglik (Compress_T query_compress, Univcoord_T left, int querystart, int queryend,
-	     int querylength, char *quality_string, bool plusp, int genestrand);
+	     int querylength, char *quality_string, bool plusp, int genestrand, bool first_read_p);
 
 #endif
 
diff --git a/src/mem.c b/src/mem.c
index 588409a..1229e1a 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: mem.c 82065 2012-12-19 21:35:44Z twu $";
+static char rcsid[] = "$Id: mem.c 135653 2014-05-09 01:26:58Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -59,31 +59,31 @@ Mem_trap_check (const char *file, int line) {
 
 #ifdef HAVE_PTHREAD
 static pthread_mutex_t memusage_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_key_t key_memusage; /* Memory that is used by a thread within a query */
-static pthread_key_t key_max_memusage;
-static pthread_key_t key_memusage_keep; /* Memory that is kept by a thread between queries  */
+static pthread_key_t key_memusage_std; /* Standard pool: Memory that is used by a thread within a query */
+static pthread_key_t key_max_memusage_std;
+static pthread_key_t key_memusage_keep; /* Keep pool: Memory that is kept by a thread between queries  */
 static pthread_key_t key_threadname;
 #else
 static char *threadname = "program";
 #endif
 
-static long int memusage = 0;
-static long int max_memusage = 0;
-static long int memusage_in = 0; /* Memory from inbuffer to threads */
-static long int memusage_out = 0; /* Memory from threads to outbuffer */
+static long int memusage_std = 0;
+static long int max_memusage_std = 0;
+static long int memusage_in = 0; /* Input pool: Memory from inbuffer to threads */
+static long int memusage_out = 0; /* Output pool: Memory from threads to outbuffer */
 
 void
 Mem_usage_init () {
 #ifdef HAVE_PTHREAD
-  pthread_key_create(&key_memusage,NULL);
-  pthread_key_create(&key_max_memusage,NULL);
+  pthread_key_create(&key_memusage_std,NULL);
+  pthread_key_create(&key_max_memusage_std,NULL);
   pthread_key_create(&key_memusage_keep,NULL);
   pthread_key_create(&key_threadname,NULL);
-  pthread_setspecific(key_memusage,(void *) 0);
-  pthread_setspecific(key_max_memusage,(void *) 0);
+  pthread_setspecific(key_memusage_std,(void *) 0);
+  pthread_setspecific(key_max_memusage_std,(void *) 0);
 #else
-  memusage = 0;
-  max_memusage = 0;
+  memusage_std = 0;
+  max_memusage_std = 0;
 #endif
 
   memusage_in = 0;
@@ -104,15 +104,15 @@ void
 Mem_usage_reset (long int x) {
 #ifdef HAVE_PTHREAD
   char *threadname;
-  long int memusage;
+  long int memusage_std;
 
   threadname = (char *) pthread_getspecific(key_threadname);
-  memusage = (long int) pthread_getspecific(key_memusage);
-  debug(printf("%ld %s: Reset memusage to %ld\n",memusage,threadname,x));
-  pthread_setspecific(key_max_memusage,(void *) x);
+  memusage_std = (long int) pthread_getspecific(key_memusage_std);
+  debug(printf("%ld %s: Reset memusage to %ld\n",memusage_std,threadname,x));
+  pthread_setspecific(key_memusage_std,(void *) x);
 #else
-  debug(printf("%ld: Reset memusage to %ld\n",memusage,x));
-  memusage = x;
+  debug(printf("%ld: Reset memusage to %ld\n",memusage_std,x));
+  memusage_std = x;
 #endif
 }
 
@@ -120,13 +120,13 @@ void
 Mem_usage_reset_max () {
 #ifdef HAVE_PTHREAD
   char *threadname;
-  long int max_memusage;
+  long int max_memusage_std;
 
   threadname = (char *) pthread_getspecific(key_threadname);
-  max_memusage = (long int) pthread_getspecific(key_max_memusage);
-  pthread_setspecific(key_max_memusage,(void *) 0);
+  max_memusage_std = (long int) pthread_getspecific(key_max_memusage_std);
+  pthread_setspecific(key_max_memusage_std,(void *) 0);
 #else
-  max_memusage = 0;
+  max_memusage_std = 0;
 #endif
 }
 
@@ -134,46 +134,55 @@ void
 Mem_usage_add (long int x) {
 #ifdef HAVE_PTHREAD
   char *threadname;
-  long int memusage;
+  long int memusage_std;
 
   threadname = (char *) pthread_getspecific(key_threadname);
-  memusage = (long int) pthread_getspecific(key_memusage);
-  debug(printf("%ld %s: ",memusage,threadname));
-  memusage += x;
-  pthread_setspecific(key_memusage,(void *) x);
-  debug(printf("Reset memusage to %ld\n",memusage));
+  memusage_std = (long int) pthread_getspecific(key_memusage_std);
+  debug(printf("%ld %s: ",memusage_std,threadname));
+  memusage_std += x;
+  pthread_setspecific(key_memusage_std,(void *) x);
+  debug(printf("Reset memusage to %ld\n",memusage_std));
 #else
-  debug(printf("%ld: ",memusage));
-  memusage += x;
-  debug(printf("Reset memusage to %ld\n",memusage));
+  debug(printf("%ld: ",memusage_std));
+  memusage_std += x;
+  debug(printf("Reset memusage to %ld\n",memusage_std));
 #endif
 }
 
 long int
-Mem_usage_report () {
+Mem_usage_report_std () {
 #ifdef HAVE_PTHREAD
-  return (long int) pthread_getspecific(key_memusage);
+  return (long int) pthread_getspecific(key_memusage_std);
 #else
-  return memusage;
+  return memusage_std;
 #endif
 }
 
 long int
-Mem_max_usage_report () {
+Mem_usage_report_keep () {
 #ifdef HAVE_PTHREAD
-  return (long int) pthread_getspecific(key_max_memusage);
+  return (long int) pthread_getspecific(key_memusage_keep);
 #else
-  return max_memusage;
+  return memusage_keep;
 #endif
 }
 
 long int
-Mem_usage_in_report () {
+Mem_max_usage_report_std () {
+#ifdef HAVE_PTHREAD
+  return (long int) pthread_getspecific(key_max_memusage_std);
+#else
+  return max_memusage_std;
+#endif
+}
+
+long int
+Mem_usage_report_in () {
   return memusage_in;
 }
 
 long int
-Mem_usage_out_report () {
+Mem_usage_report_out () {
   return memusage_out;
 }
 
@@ -220,7 +229,7 @@ Mem_alloc (size_t nbytes, const char *file, int line) {
 
 #ifdef HAVE_PTHREAD
   pthread_mutex_lock(&memusage_mutex);
-  long int memusage, max_memusage;
+  long int memusage_std, max_memusage_std;
   char *threadname;
 #endif
 #endif
@@ -231,18 +240,18 @@ Mem_alloc (size_t nbytes, const char *file, int line) {
 #ifdef MEMUSAGE
 #ifdef HAVE_PTHREAD
   threadname = (char *) pthread_getspecific(key_threadname);
-  memusage = (long int) pthread_getspecific(key_memusage);
-  memusage += nbytes;
-  pthread_setspecific(key_memusage,(void *) memusage);
+  memusage_std = (long int) pthread_getspecific(key_memusage_std);
+  memusage_std += nbytes;
+  pthread_setspecific(key_memusage_std,(void *) memusage_std);
 
-  max_memusage = (long int) pthread_getspecific(key_max_memusage);
-  if (memusage > max_memusage) {
-    pthread_setspecific(key_max_memusage,(void *) memusage);
+  max_memusage_std = (long int) pthread_getspecific(key_max_memusage_std);
+  if (memusage_std > max_memusage_std) {
+    pthread_setspecific(key_max_memusage_std,(void *) memusage_std);
   }
 #else
-  memusage += nbytes;
-  if (memusage > max_memusage) {
-    max_memusage = memusage;
+  memusage_std += nbytes;
+  if (memusage_std > max_memusage_std) {
+    max_memusage_std = memusage_std;
   }
 #endif
   h = hash(ptr,htab);
@@ -254,10 +263,10 @@ Mem_alloc (size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld %s: Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
-	       memusage,threadname,ptr,(char *) ptr + nbytes-1,nbytes,file,line));
+  debug(printf("%ld %s: Allocating %p to %p -- Malloc of %lu bytes in standard pool requested from %s:%d\n",
+	       memusage_std,threadname,ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Malloc of %lu bytes in standard pool requested from %s:%d\n",
 	       ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #endif
 
@@ -327,10 +336,10 @@ Mem_alloc_keep (size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld %s-keep: Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("%ld %s-keep: Allocating %p to %p -- Malloc of %lu bytes in keep pool requested from %s:%d\n",
 	       memusage_keep,threadname,ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Malloc of %lu bytes in keep pool requested from %s:%d\n",
 	       ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #endif
 
@@ -391,10 +400,10 @@ Mem_alloc_in (size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld IN: Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("%ld IN: Allocating %p to %p -- Malloc of %lu bytes in input pool requested from %s:%d\n",
 	       memusage_in,ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Malloc of %lu bytes in input pool requested from %s:%d\n",
 	       ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #endif
 
@@ -455,10 +464,10 @@ Mem_alloc_out (size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld OUT: Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("%ld OUT: Allocating %p to %p -- Malloc of %lu bytes in output pool requested from %s:%d\n",
 	       memusage_out,ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Malloc of %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Malloc of %lu bytes in output pool requested from %s:%d\n",
 	       ptr,(char *) ptr + nbytes-1,nbytes,file,line));
 #endif
 
@@ -510,7 +519,7 @@ Mem_calloc (size_t count, size_t nbytes, const char *file, int line) {
 
 #ifdef HAVE_PTHREAD
   pthread_mutex_lock(&memusage_mutex);
-  long int memusage, max_memusage;
+  long int memusage_std, max_memusage_std;
   char *threadname;
 #endif
 #endif
@@ -543,18 +552,18 @@ Mem_calloc (size_t count, size_t nbytes, const char *file, int line) {
 #ifdef MEMUSAGE
 #ifdef HAVE_PTHREAD
   threadname = (char *) pthread_getspecific(key_threadname);
-  memusage = (long int) pthread_getspecific(key_memusage);
-  memusage += count*nbytes;
-  pthread_setspecific(key_memusage,(void *) memusage);
+  memusage_std = (long int) pthread_getspecific(key_memusage_std);
+  memusage_std += count*nbytes;
+  pthread_setspecific(key_memusage_std,(void *) memusage_std);
 
-  max_memusage = (long int) pthread_getspecific(key_max_memusage);
-  if (memusage > max_memusage) {
-    pthread_setspecific(key_max_memusage,(void *) memusage);
+  max_memusage_std = (long int) pthread_getspecific(key_max_memusage_std);
+  if (memusage_std > max_memusage_std) {
+    pthread_setspecific(key_max_memusage_std,(void *) memusage_std);
   }
 #else
-  memusage += count*nbytes;
-  if (memusage > max_memusage) {
-    max_memusage = memusage;
+  memusage_std += count*nbytes;
+  if (memusage_std > max_memusage_std) {
+    max_memusage_std = memusage_std;
   }
 #endif
   h = hash(ptr,htab);
@@ -566,10 +575,10 @@ Mem_calloc (size_t count, size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld %s: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
-	       memusage,threadname,ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
+  debug(printf("%ld %s: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in standard pool requested from %s:%d\n",
+	       memusage_std,threadname,ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in standard pool requested from %s:%d\n",
 	       ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #endif
 
@@ -649,10 +658,10 @@ Mem_calloc_keep (size_t count, size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld %s-keep: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("%ld %s-keep: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in keep pool requested from %s:%d\n",
 	       memusage_keep,threadname,ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in keep pool requested from %s:%d\n",
 	       ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #endif
 
@@ -723,10 +732,10 @@ Mem_calloc_in (size_t count, size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld IN: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("%ld IN: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in input pool requested from %s:%d\n",
 	       memusage_in,ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in input pool requested from %s:%d\n",
 	       ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #endif
 
@@ -796,10 +805,10 @@ Mem_calloc_out (size_t count, size_t nbytes, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-  debug(printf("%ld OUT: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("%ld OUT: Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in output pool requested from %s:%d\n",
 	       memusage_out,ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #else
-  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes requested from %s:%d\n",
+  debug(printf("Allocating %p to %p -- Calloc of %lu x %lu = %lu bytes in output pool requested from %s:%d\n",
 	       ptr,(char *) ptr + count*nbytes-1,count,nbytes,count*nbytes,file,line));
 #endif
 
@@ -830,7 +839,7 @@ Mem_calloc_no_exception (size_t count, size_t nbytes, const char *file, int line
 
 #ifdef HAVE_PTHREAD
   pthread_mutex_lock(&memusage_mutex);
-  long int memusage;
+  long int memusage_std;
   char *threadname;
 #endif
 #endif
@@ -850,11 +859,11 @@ Mem_calloc_no_exception (size_t count, size_t nbytes, const char *file, int line
 #ifdef MEMUSAGE
 #ifdef HAVE_PTHREAD
   threadname = (char *) pthread_getspecific(key_threadname);
-  memusage = (long int) pthread_getspecific(key_memusage);
-  memusage += count*nbytes;
-  pthread_setspecific(key_memusage,(void *) memusage);
+  memusage_std = (long int) pthread_getspecific(key_memusage_std);
+  memusage_std += count*nbytes;
+  pthread_setspecific(key_memusage_std,(void *) memusage_std);
 #else
-  memusage += count*nbytes;
+  memusage_std += count*nbytes;
 #endif
   h = hash(ptr,htab);
   bp = malloc(sizeof(*bp));
@@ -881,7 +890,7 @@ Mem_free (void *ptr, const char *file, int line) {
 
 #ifdef HAVE_PTHREAD
   pthread_mutex_lock(&memusage_mutex);
-  long int memusage;
+  long int memusage_std;
   char *threadname;
 #endif
 #endif
@@ -900,21 +909,21 @@ Mem_free (void *ptr, const char *file, int line) {
       nbytes = bp->size;
 #ifdef HAVE_PTHREAD
       threadname = (char *) pthread_getspecific(key_threadname);
-      memusage = (long int) pthread_getspecific(key_memusage);
-      memusage -= nbytes;
-      pthread_setspecific(key_memusage,(void *) memusage);
+      memusage_std = (long int) pthread_getspecific(key_memusage_std);
+      memusage_std -= nbytes;
+      pthread_setspecific(key_memusage_std,(void *) memusage_std);
 #else
-      memusage -= nbytes;
+      memusage_std -= nbytes;
 #endif
       free(bp);
     }
 #endif
 
 #ifdef MEMUSAGE
-    debug(printf("%ld %s: Freeing %p at %s:%d (%ld bytes)\n",
-		 memusage,threadname,ptr,file,line,nbytes));
+    debug(printf("%ld %s: Freeing %p in standard pool at %s:%d (%ld bytes)\n",
+		 memusage_std,threadname,ptr,file,line,nbytes));
 #else
-    debug(printf("Freeing %p at %s:%d\n",ptr,file,line));
+    debug(printf("Freeing %p in standard pool at %s:%d\n",ptr,file,line));
 #endif
     free(ptr);
   }
@@ -976,10 +985,10 @@ Mem_free_keep (void *ptr, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-    debug(printf("%ld %s-keep: Freeing %p at %s:%d (%ld bytes)\n",
+    debug(printf("%ld %s-keep: Freeing %p in keep pool at %s:%d (%ld bytes)\n",
 		 memusage_keep,threadname,ptr,file,line,nbytes));
 #else
-    debug(printf("Freeing %p at %s:%d\n",ptr,file,line));
+    debug(printf("Freeing %p in keep pool at %s:%d\n",ptr,file,line));
 #endif
     free(ptr);
   }
@@ -1032,10 +1041,10 @@ Mem_free_in (void *ptr, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-    debug(printf("%ld IN: Freeing %p at %s:%d (%ld bytes)\n",
+    debug(printf("%ld IN: Freeing %p in input pool at %s:%d (%ld bytes)\n",
 		 memusage_in,ptr,file,line,nbytes));
 #else
-    debug(printf("Freeing %p at %s:%d\n",ptr,file,line));
+    debug(printf("Freeing %p in input pool at %s:%d\n",ptr,file,line));
 #endif
     free(ptr);
   }
@@ -1087,10 +1096,10 @@ Mem_free_out (void *ptr, const char *file, int line) {
 #endif
 
 #ifdef MEMUSAGE
-    debug(printf("%ld OUT: Freeing %p at %s:%d (%ld bytes)\n",
+    debug(printf("%ld OUT: Freeing %p in output pool at %s:%d (%ld bytes)\n",
 		 memusage_out,ptr,file,line,nbytes));
 #else
-    debug(printf("Freeing %p at %s:%d\n",ptr,file,line));
+    debug(printf("Freeing %p in output pool at %s:%d\n",ptr,file,line));
 #endif
     free(ptr);
   }
diff --git a/src/mem.h b/src/mem.h
index 6c30fdc..9649eaa 100644
--- a/src/mem.h
+++ b/src/mem.h
@@ -1,4 +1,4 @@
-/* $Id: mem.h 82065 2012-12-19 21:35:44Z twu $ */
+/* $Id: mem.h 135653 2014-05-09 01:26:58Z twu $ */
 #ifndef MEM_INCLUDED
 #define MEM_INCLUDED
 
@@ -32,13 +32,15 @@ Mem_usage_reset_max ();
 extern void
 Mem_usage_add (long int x);
 extern long int
-Mem_usage_report ();
+Mem_usage_report_std ();
 extern long int
-Mem_max_usage_report ();
+Mem_max_usage_report_std ();
 extern long int
-Mem_usage_in_report ();
+Mem_usage_report_keep ();
 extern long int
-Mem_usage_out_report ();
+Mem_usage_report_in ();
+extern long int
+Mem_usage_report_out ();
 #endif
 
 
@@ -99,6 +101,12 @@ extern void *Mem_resize (void *ptr, size_t nbytes,
 
 #endif
 
+#ifdef HAVE_ALLOCA
+#define MALLOC_AUTO(nbytes) Mem_alloca((nbytes), __FILE__, __LINE__)
+#define CALLOC_AUTO(count,nbytes)Mem_calloca((count), (nbytes), __FILE__, __LINE__)
+#define FREE_AUTO(ptr)
+#endif
+
 
 #define MALLOC_NO_EXCEPTION(nbytes) \
 	Mem_alloc_no_exception((nbytes), __FILE__, __LINE__)
diff --git a/src/oligo.c b/src/oligo.c
index 9195c73..1b353f5 100644
--- a/src/oligo.c
+++ b/src/oligo.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: oligo.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: oligo.c 133760 2014-04-20 05:16:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -828,82 +828,82 @@ static Storedoligomer_T repetitive_oligos_15[NREPETITIVE] =
   };
 
 static Storedoligomer_T repetitive_oligos_16[NREPETITIVE] =
-  {0, /* AAAAAAAAAAAAAAAA */
-   68174084, /* AACAACAACAACAACA */
-   136348168, /* AAGAAGAAGAAGAAGA */
-   204522252, /* AATAATAATAATAATA */
-   272696336, /* ACAACAACAACAACAA */
-   286331153, /* ACACACACACACACAC */
-   340870420, /* ACCACCACCACCACCA */
-   409044504, /* ACGACGACGACGACGA */
-   477218588, /* ACTACTACTACTACTA */
-   545392672, /* AGAAGAAGAAGAAGAA */
-   572662306, /* AGAGAGAGAGAGAGAG */
-   613566756, /* AGCAGCAGCAGCAGCA */
-   681740840, /* AGGAGGAGGAGGAGGA */
-   749914924, /* AGTAGTAGTAGTAGTA */
-   818089008, /* ATAATAATAATAATAA */
-   858993459, /* ATATATATATATATAT */
-   886263092, /* ATCATCATCATCATCA */
-   954437176, /* ATGATGATGATGATGA */
-   1022611260, /* ATTATTATTATTATTA */
-   1090785345, /* CAACAACAACAACAAC */
-   1145324612, /* CACACACACACACACA */
-   1158959429, /* CACCACCACCACCACC */
-   1227133513, /* CAGCAGCAGCAGCAGC */
-   1295307597, /* CATCATCATCATCATC */
-   1363481681, /* CCACCACCACCACCAC */
-   1431655765, /* CCCCCCCCCCCCCCCC */
-   1499829849, /* CCGCCGCCGCCGCCGC */
-   1568003933, /* CCTCCTCCTCCTCCTC */
-   1636178017, /* CGACGACGACGACGAC */
-   1704352101, /* CGCCGCCGCCGCCGCC */
-   1717986918, /* CGCGCGCGCGCGCGCG */
-   1772526185, /* CGGCGGCGGCGGCGGC */
-   1840700269, /* CGTCGTCGTCGTCGTC */
-   1908874353, /* CTACTACTACTACTAC */
-   1977048437, /* CTCCTCCTCCTCCTCC */
-   2004318071, /* CTCTCTCTCTCTCTCT */
-   2045222521, /* CTGCTGCTGCTGCTGC */
-   2113396605, /* CTTCTTCTTCTTCTTC */
-   2181570690, /* GAAGAAGAAGAAGAAG */
-   2249744774, /* GACGACGACGACGACG */
-   2290649224, /* GAGAGAGAGAGAGAGA */
-   2317918858, /* GAGGAGGAGGAGGAGG */
-   2386092942, /* GATGATGATGATGATG */
-   2454267026, /* GCAGCAGCAGCAGCAG */
-   2522441110, /* GCCGCCGCCGCCGCCG */
-   2576980377, /* GCGCGCGCGCGCGCGC */
-   2590615194, /* GCGGCGGCGGCGGCGG */
-   2658789278, /* GCTGCTGCTGCTGCTG */
-   2726963362, /* GGAGGAGGAGGAGGAG */
-   2795137446, /* GGCGGCGGCGGCGGCG */
-   2863311530, /* GGGGGGGGGGGGGGGG */
-   2931485614, /* GGTGGTGGTGGTGGTG */
-   2999659698, /* GTAGTAGTAGTAGTAG */
-   3067833782, /* GTCGTCGTCGTCGTCG */
-   3136007866, /* GTGGTGGTGGTGGTGG */
-   3149642683, /* GTGTGTGTGTGTGTGT */
-   3204181950, /* GTTGTTGTTGTTGTTG */
-   3272356035, /* TAATAATAATAATAAT */
-   3340530119, /* TACTACTACTACTACT */
-   3408704203, /* TAGTAGTAGTAGTAGT */
-   3435973836, /* TATATATATATATATA */
-   3476878287, /* TATTATTATTATTATT */
-   3545052371, /* TCATCATCATCATCAT */
-   3613226455, /* TCCTCCTCCTCCTCCT */
-   3681400539, /* TCGTCGTCGTCGTCGT */
-   3722304989, /* TCTCTCTCTCTCTCTC */
-   3749574623, /* TCTTCTTCTTCTTCTT */
-   3817748707, /* TGATGATGATGATGAT */
-   3885922791, /* TGCTGCTGCTGCTGCT */
-   3954096875, /* TGGTGGTGGTGGTGGT */
-   4008636142, /* TGTGTGTGTGTGTGTG */
-   4022270959, /* TGTTGTTGTTGTTGTT */
-   4090445043, /* TTATTATTATTATTAT */
-   4158619127, /* TTCTTCTTCTTCTTCT */
-   4226793211, /* TTGTTGTTGTTGTTGT */
-   4294967295, /* TTTTTTTTTTTTTTTT */
+  {0U, /* AAAAAAAAAAAAAAAA */
+   68174084U, /* AACAACAACAACAACA */
+   136348168U, /* AAGAAGAAGAAGAAGA */
+   204522252U, /* AATAATAATAATAATA */
+   272696336U, /* ACAACAACAACAACAA */
+   286331153U, /* ACACACACACACACAC */
+   340870420U, /* ACCACCACCACCACCA */
+   409044504U, /* ACGACGACGACGACGA */
+   477218588U, /* ACTACTACTACTACTA */
+   545392672U, /* AGAAGAAGAAGAAGAA */
+   572662306U, /* AGAGAGAGAGAGAGAG */
+   613566756U, /* AGCAGCAGCAGCAGCA */
+   681740840U, /* AGGAGGAGGAGGAGGA */
+   749914924U, /* AGTAGTAGTAGTAGTA */
+   818089008U, /* ATAATAATAATAATAA */
+   858993459U, /* ATATATATATATATAT */
+   886263092U, /* ATCATCATCATCATCA */
+   954437176U, /* ATGATGATGATGATGA */
+   1022611260U, /* ATTATTATTATTATTA */
+   1090785345U, /* CAACAACAACAACAAC */
+   1145324612U, /* CACACACACACACACA */
+   1158959429U, /* CACCACCACCACCACC */
+   1227133513U, /* CAGCAGCAGCAGCAGC */
+   1295307597U, /* CATCATCATCATCATC */
+   1363481681U, /* CCACCACCACCACCAC */
+   1431655765U, /* CCCCCCCCCCCCCCCC */
+   1499829849U, /* CCGCCGCCGCCGCCGC */
+   1568003933U, /* CCTCCTCCTCCTCCTC */
+   1636178017U, /* CGACGACGACGACGAC */
+   1704352101U, /* CGCCGCCGCCGCCGCC */
+   1717986918U, /* CGCGCGCGCGCGCGCG */
+   1772526185U, /* CGGCGGCGGCGGCGGC */
+   1840700269U, /* CGTCGTCGTCGTCGTC */
+   1908874353U, /* CTACTACTACTACTAC */
+   1977048437U, /* CTCCTCCTCCTCCTCC */
+   2004318071U, /* CTCTCTCTCTCTCTCT */
+   2045222521U, /* CTGCTGCTGCTGCTGC */
+   2113396605U, /* CTTCTTCTTCTTCTTC */
+   2181570690U, /* GAAGAAGAAGAAGAAG */
+   2249744774U, /* GACGACGACGACGACG */
+   2290649224U, /* GAGAGAGAGAGAGAGA */
+   2317918858U, /* GAGGAGGAGGAGGAGG */
+   2386092942U, /* GATGATGATGATGATG */
+   2454267026U, /* GCAGCAGCAGCAGCAG */
+   2522441110U, /* GCCGCCGCCGCCGCCG */
+   2576980377U, /* GCGCGCGCGCGCGCGC */
+   2590615194U, /* GCGGCGGCGGCGGCGG */
+   2658789278U, /* GCTGCTGCTGCTGCTG */
+   2726963362U, /* GGAGGAGGAGGAGGAG */
+   2795137446U, /* GGCGGCGGCGGCGGCG */
+   2863311530U, /* GGGGGGGGGGGGGGGG */
+   2931485614U, /* GGTGGTGGTGGTGGTG */
+   2999659698U, /* GTAGTAGTAGTAGTAG */
+   3067833782U, /* GTCGTCGTCGTCGTCG */
+   3136007866U, /* GTGGTGGTGGTGGTGG */
+   3149642683U, /* GTGTGTGTGTGTGTGT */
+   3204181950U, /* GTTGTTGTTGTTGTTG */
+   3272356035U, /* TAATAATAATAATAAT */
+   3340530119U, /* TACTACTACTACTACT */
+   3408704203U, /* TAGTAGTAGTAGTAGT */
+   3435973836U, /* TATATATATATATATA */
+   3476878287U, /* TATTATTATTATTATT */
+   3545052371U, /* TCATCATCATCATCAT */
+   3613226455U, /* TCCTCCTCCTCCTCCT */
+   3681400539U, /* TCGTCGTCGTCGTCGT */
+   3722304989U, /* TCTCTCTCTCTCTCTC */
+   3749574623U, /* TCTTCTTCTTCTTCTT */
+   3817748707U, /* TGATGATGATGATGAT */
+   3885922791U, /* TGCTGCTGCTGCTGCT */
+   3954096875U, /* TGGTGGTGGTGGTGGT */
+   4008636142U, /* TGTGTGTGTGTGTGTG */
+   4022270959U, /* TGTTGTTGTTGTTGTT */
+   4090445043U, /* TTATTATTATTATTAT */
+   4158619127U, /* TTCTTCTTCTTCTTCT */
+   4226793211U, /* TTGTTGTTGTTGTTGT */
+   4294967295U, /* TTTTTTTTTTTTTTTT */
   };
 
 
@@ -1726,9 +1726,9 @@ oligo_revise (int *querypos, Storedoligomer_T *forward, Storedoligomer_T *revcom
     *forward = *revcomp = 0U;
     debug(
 	  if (cdnaend == FIVE) {
-	    printf("5' Revision: read terminating char %c\n",c);
+	    printf("5' Revision: read terminating char '0'\n");
 	  } else {
-	    printf("3' Revision: read terminating char %c\n",c);
+	    printf("3' Revision: read terminating char '0'\n");
 	  }
 	  );
     return DONE;
@@ -1782,9 +1782,9 @@ oligo_revise_dibase (int *querypos, Storedoligomer_T *forward, Storedoligomer_T
     *forward = *revcomp = 0U;
     debug(
 	  if (cdnaend == FIVE) {
-	    printf("5' Revision: read terminating char %c\n",c);
+	    printf("5' Revision: read terminating char '0'\n");
 	  } else {
-	    printf("3' Revision: read terminating char %c\n",c);
+	    printf("3' Revision: read terminating char '0'\n");
 	  }
 	  );
     return DONE;
@@ -1950,7 +1950,7 @@ binary_search (int lowi, int highi, Storedoligomer_T *oligos, Storedoligomer_T g
   debug2(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
 
   while (!foundp && lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     debug2(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
 		   lowi,oligos[lowi],middlei,oligos[middlei],
 		   highi,oligos[highi],goal));
diff --git a/src/oligoindex.c b/src/oligoindex.c
deleted file mode 100644
index 168153c..0000000
--- a/src/oligoindex.c
+++ /dev/null
@@ -1,2020 +0,0 @@
-static char rcsid[] = "$Id: oligoindex.c 99737 2013-06-27 19:33:03Z twu $";
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifndef HAVE_MEMCPY
-# define memcpy(d,s,n) bcopy((s),(d),(n))
-#endif
-#ifndef HAVE_MEMMOVE
-# define memmove(d,s,n) bcopy((s),(d),(n))
-#endif
-
-#include "oligoindex.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>		/* For memcpy and memset */
-#include "bool.h"
-#include "assert.h"
-#include "mem.h"
-#include "list.h"
-#include "diag.h"
-#include "intlistdef.h"
-#include "orderstat.h"
-
-
-#ifndef PMAP
-#define STRAIGHT_MASK_2  0x0000000F /* 2-mer: 1111 */
-#define STRAIGHT_MASK_3  0x0000003F /* 3-mer: 11 1111 */
-#define STRAIGHT_MASK_4  0x000000FF /* 4-mer: 1111 1111 */
-#define STRAIGHT_MASK_5  0x000003FF /* 5-mer: 11 1111 1111 */
-#define STRAIGHT_MASK_6  0x00000FFF /* 6-mer: 1111 1111 1111 */
-#define STRAIGHT_MASK_7  0x00003FFF /* 7-mer: 11 1111 1111 1111 */
-#define STRAIGHT_MASK_8  0x0000FFFF /* 8-mer: 1111 1111 1111 1111 */
-#define STRAIGHT_MASK_9  0x0003FFFF /* 9-mer: 11 1111 1111 1111 1111 */
-#define STRAIGHT_MASK_10 0x000FFFFF /* 10-mer: 1111 1111 1111 1111 1111 */
-#define STRAIGHT_MASK_11 0x003FFFFF /* 11-mer: 11 1111 1111 1111 1111 1111 */
-
-#define WOBBLE_MASK_2  0x0000000F /* 2-mer: 1111 */
-#define WOBBLE_MASK_3  0x0000003C /* 3-mer: 11 1100 */
-#define WOBBLE_MASK_4  0x000000F3 /* 4-mer: 1111 0011 */
-#define WOBBLE_MASK_5  0x000003CF /* 5-mer: 11 1100 1111 */
-#define WOBBLE_MASK_6  0x00000F3C /* 6-mer: 1111 0011 1100 */
-#define WOBBLE_MASK_7  0x00003CF3 /* 7-mer: 11 1100 1111 0011 */
-#define WOBBLE_MASK_8  0x0000F3CF /* 8-mer: 1111 0011 1100 1111 */
-#define WOBBLE_MASK_9  0x0003CF3C /* 9-mer: 11 1100 1111 0011 1100 */
-#define WOBBLE_MASK_10 0x000F3CF3 /* 10-mer: 1111 0011 1100 1111 0011 */
-#define WOBBLE_MASK_11 0x003CF3CF /* 11-mer: 11 1100 1111 0011 1100 1111 */
-#endif
-
-
-#ifdef PMAP
-#define NOLIGOINDICES_MAJOR 1
-static int indexsizes_major[NOLIGOINDICES_MAJOR] = {6}; /* In aa */
-static int diag_lookbacks_major[NOLIGOINDICES_MAJOR] = {40};
-static int suffnconsecutives_major[NOLIGOINDICES_MAJOR] = {10};
-
-#define NOLIGOINDICES_MINOR 1
-static int indexsizes_minor[NOLIGOINDICES_MINOR] = {6}; /* In aa */
-static int diag_lookbacks_minor[NOLIGOINDICES_MINOR] = {40};
-static int suffnconsecutives_minor[NOLIGOINDICES_MINOR] = {10};
-
-#elif defined(GSNAP)
-
-/* Have fewer to enable speedup.  Note: Including 7-mers causes an 8x
-   increase in run-time for score_querypos, and including 6-mers causes a
-   30x increase. */
-#define NOLIGOINDICES_MAJOR 1
-static int indexsizes_major[NOLIGOINDICES_MAJOR] = {8};
-static Shortoligomer_T masks_major[NOLIGOINDICES_MAJOR] = {STRAIGHT_MASK_8};
-static int diag_lookbacks_major[NOLIGOINDICES_MAJOR] = {120};
-static int suffnconsecutives_major[NOLIGOINDICES_MAJOR] = {20};
-
-#define NOLIGOINDICES_MINOR 3
-static int indexsizes_minor[NOLIGOINDICES_MINOR] = {8, 7, 6};
-static Shortoligomer_T masks_minor[NOLIGOINDICES_MINOR] = {STRAIGHT_MASK_8, STRAIGHT_MASK_7, STRAIGHT_MASK_6};
-static int diag_lookbacks_minor[NOLIGOINDICES_MINOR] = {120, 60, 30};
-static int suffnconsecutives_minor[NOLIGOINDICES_MINOR] = {20, 15, 10};
-
-#else
-
-#define NOLIGOINDICES_MAJOR 3
-static int indexsizes_major[NOLIGOINDICES_MAJOR] = {8, 7, 6};
-static Shortoligomer_T masks_major[NOLIGOINDICES_MAJOR] = {STRAIGHT_MASK_8, STRAIGHT_MASK_7, STRAIGHT_MASK_6};
-static int diag_lookbacks_major[NOLIGOINDICES_MAJOR] = {120, 60, 30};
-static int suffnconsecutives_major[NOLIGOINDICES_MAJOR] = {20, 15, 10};
-
-#define NOLIGOINDICES_MINOR 3
-static int indexsizes_minor[NOLIGOINDICES_MINOR] = {8, 7, 6};
-static Shortoligomer_T masks_minor[NOLIGOINDICES_MINOR] = {STRAIGHT_MASK_8, STRAIGHT_MASK_7, STRAIGHT_MASK_6};
-static int diag_lookbacks_minor[NOLIGOINDICES_MINOR] = {120, 60, 30};
-static int suffnconsecutives_minor[NOLIGOINDICES_MINOR] = {20, 15, 10};
-
-#endif
-
-#if 0
-/* This fails badly on NM_001142699 */
-#define NOLIGOINDICES_MINOR 1
-static int indexsizes_minor[NOLIGOINDICES_MINOR] = {4};
-static Shortoligomer_T masks_minor[NOLIGOINDICES_MINOR] = {STRAIGHT_MASK_4};
-static int diag_lookbacks_minor[NOLIGOINDICES_MINOR] = {30};
-static int suffnconsecutives_minor[NOLIGOINDICES_MINOR] = {5};
-#endif
-
-
-#define THETADIFF1 20.0
-#define THETADIFF2 20.0
-#define REPOLIGOCOUNT 8
-
-#define CHANGEPOINT 1		/* Needed for bad sequences like BM926731 */
-
-#ifdef PMAP
-#define NAMINOACIDS_STAGE2 20
-#define NT_PER_MATCH 3
-#else
-#define NT_PER_MATCH 1
-#endif
-
-/* To ensure that we search for initial and final exons */
-#if 0
-#ifdef PMAP
-#define ACTIVE_BUFFER 30
-#else
-#define ACTIVE_BUFFER 90
-#endif
-#endif
-
-
-/* Treats 'N' as 'A', just as Oligoindex_hr_tally does */
-/* #define EXTRACT_GENOMICSEG 1 */
-
-
-#ifdef DEBUG
-#define debug(x) x
-#else
-#define debug(x)
-#endif
-
-/* For trimming ends of query sequence */
-#ifdef DEBUG1
-#define debug1(x) x
-#else
-#define debug1(x)
-#endif
-
-/* Diagonals */
-#ifdef DEBUG3
-#define debug3(x) x
-#else
-#define debug3(x)
-#endif
-
-/* dump_positions */
-#ifdef DEBUG9
-#define debug9(x) x
-#else
-#define debug9(x)
-#endif
-
-
-#ifdef PMAP
-/* A short oligomer, representing 3 amino acids, or 9 nt, requiring 18
-   bits or 2.25 bytes */
-#else
-/* A short oligomer, typically 8 nt (but could by 9 or 10 nt),
-   requiring 16 bits or 2 bytes */
-#endif
-
-#define T Oligoindex_T
-
-
-#ifdef PMAP
-
-#if NAMINOACIDS_STAGE2 == 20
-static int aa_index_table[128] =
-  { -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-  /*     *                                  */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1,
-
-  /* A,  B,  C,  D,  E,  F,  G,  H,  I,  J, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* K,  L,  M,  N,  O,  P,  Q,  R,  S,  T  */
-     8,  9, 10, 11, -1, 12, 13, 14, 15, 16,
-
-  /* U,  V,  W,  X,  Y,  Z  */
-    -1, 17, 18, -1, 19, -1,
-
-    -1, -1, -1, -1, -1, -1,
-
-  /* a,  b,  c,  d,  e,  f,  g,  h,  i,  j, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* k,  l,  m,  n,  o,  p,  q,  r,  s,  t  */
-     8,  9, 10, 11, -1, 12, 13, 14, 15, 16,
-
-  /* u,  v,  w,  x,  y,  z  */
-    -1, 17, 18, -1, 19, -1,
-
-    -1, -1, -1, -1, -1};
-
-#elif NAMINOACIDS_STAGE2 == 18
-
-static int aa_index_table[128] =
-  { -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-  /*     *                                  */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1,
-
-  /* A,  B,  C,  D,  E,  F,  G,  H,  I,  J, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* K,  L,  M,  N,  O,  P,  Q,  R,  S,  T  */
-     8,  7,  9, 10, -1, 11, 12, 13, 14, 15,
-
-  /* U,  V,  W,  X,  Y,  Z  */
-    -1,  7, 16, -1, 17, -1,
-
-    -1, -1, -1, -1, -1, -1,
-
-  /* a,  b,  c,  d,  e,  f,  g,  h,  i,  j, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* k,  l,  m,  n,  o,  p,  q,  r,  s,  t  */
-     8,  7,  9, 10, -1, 11, 12, 13, 14, 15,
-
-  /* u,  v,  w,  x,  y,  z  */
-    -1,  7, 16, -1, 17, -1,
-
-    -1, -1, -1, -1, -1};
-
-#elif NAMINOACIDS_STAGE2 == 16
-
-static int aa_index_table[128] =
-  { -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-  /*     *                                  */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1,
-
-  /* A,  B,  C,  D,  E,  F,  G,  H,  I,  J, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* K,  L,  M,  N,  O,  P,  Q,  R,  S,  T  */
-     8,  7,  7,  9, -1, 10, 11,  8, 12, 13,
-
-  /* U,  V,  W,  X,  Y,  Z  */
-    -1,  7, 14, -1, 15, -1,
-
-    -1, -1, -1, -1, -1, -1,
-
-  /* a,  b,  c,  d,  e,  f,  g,  h,  i,  j, */
-     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
-
-  /* k,  l,  m,  n,  o,  p,  q,  r,  s,  t  */
-     8,  7,  7,  9, -1, 10, 11,  8, 12, 13,
-
-  /* u,  v,  w,  x,  y,  z  */
-    -1,  7, 14, -1, 15, -1,
-
-    -1, -1, -1, -1, -1};
-
-#endif	/* NAMINOACIDS_STAGE2 */
-
-#endif	/* PMAP */
-
-
-static int
-power (int base, int exponent) {
-  int result = 1, i;
-
-  for (i = 0; i < exponent; i++) {
-    result *= base;
-  }
-  return result;
-}
-
-int
-Oligoindex_indexsize (T this) {
-#ifdef PMAP
-  return this->indexsize_aa;
-#else
-  return this->indexsize;
-#endif
-}
-
-
-static T
-Oligoindex_new (int indexsize, int diag_lookback, int suffnconsecutive
-#ifndef PMAP
-		, Shortoligomer_T mask
-#endif
-		) {
-  T new = (T) MALLOC(sizeof(*new));
-
-#ifdef PMAP
-  new->indexsize_aa = indexsize;
-  new->msb = power(NAMINOACIDS_STAGE2,indexsize-1);
-  debug(printf("msb for indexsize %d is %u\n",indexsize,new->msb));
-  new->oligospace = power(NAMINOACIDS_STAGE2,indexsize);
-#else
-  new->indexsize = indexsize;
-  new->mask = mask;
-  new->oligospace = power(4,indexsize);
-#endif
-
-  new->diag_lookback = diag_lookback;
-  new->suffnconsecutive = suffnconsecutive;
-
-  new->query_evaluated_p = false;
-#ifdef HAVE_SSE2
-  new->inquery_allocated = (__m128i *) _mm_malloc(new->oligospace * sizeof(Count_T),16);
-  new->counts_allocated = (__m128i *) _mm_malloc(new->oligospace * sizeof(Count_T),16);
-  assert((long) new->inquery_allocated % 16 == 0);
-  assert((long) new->counts_allocated % 16 == 0);
-  new->inquery = (Count_T *) new->inquery_allocated;
-  new->counts = (Count_T *) new->counts_allocated;
-#else
-  new->inquery = (bool *) CALLOC(new->oligospace,sizeof(bool));
-  new->counts = (Count_T *) CALLOC(new->oligospace,sizeof(int));
-#endif
-#ifdef PMAP
-  new->relevant_counts = (int *) CALLOC(new->oligospace,sizeof(int));
-  new->overabundant = (bool *) CALLOC(new->oligospace,sizeof(bool));
-#endif
-  new->positions = (Chrpos_T **) CALLOC(new->oligospace+1,sizeof(Chrpos_T *));
-  new->pointers = (Chrpos_T **) CALLOC(new->oligospace,sizeof(Chrpos_T *));
-
-  return new;
-}
-
-
-Count_T *
-Oligoindex_counts_copy (T this) {
-  Count_T *counts;
-
-  counts = (Count_T *) CALLOC(this->oligospace,sizeof(Count_T));
-  memcpy(counts,this->counts,this->oligospace*sizeof(Count_T));
-  return counts;
-}
-
-
-T *
-Oligoindex_new_major (int *noligoindices) {
-  T *oligoindices;
-  int source;
-
-  *noligoindices = NOLIGOINDICES_MAJOR;
-  oligoindices = (T *) CALLOC(NOLIGOINDICES_MAJOR,sizeof(T));
-  for (source = 0; source < NOLIGOINDICES_MAJOR; source++) {
-#ifdef PMAP
-    oligoindices[source] = Oligoindex_new(indexsizes_major[source],diag_lookbacks_major[source],suffnconsecutives_major[source]);
-#else
-    oligoindices[source] = Oligoindex_new(indexsizes_major[source],diag_lookbacks_major[source],suffnconsecutives_major[source],masks_major[source]);
-#endif
-  }
-  
-  return oligoindices;
-}
-
-T *
-Oligoindex_new_minor (int *noligoindices) {
-  T *oligoindices;
-  int source;
-
-  *noligoindices = NOLIGOINDICES_MINOR;
-  oligoindices = (T *) CALLOC(NOLIGOINDICES_MINOR,sizeof(T));
-  for (source = 0; source < NOLIGOINDICES_MINOR; source++) {
-#ifdef PMAP
-    oligoindices[source] = Oligoindex_new(indexsizes_minor[source],diag_lookbacks_minor[source],suffnconsecutives_minor[source]);
-#else
-    oligoindices[source] = Oligoindex_new(indexsizes_minor[source],diag_lookbacks_minor[source],suffnconsecutives_minor[source],masks_minor[source]);
-#endif
-  }
-  
-  return oligoindices;
-}
-
-
-
-/*                87654321 */
-#define RIGHT_A 0x00000000
-#define RIGHT_C 0x00000001
-#define RIGHT_G 0x00000002
-#define RIGHT_T 0x00000003
-
-/*                      87654321 */
-#define LOW_TWO_BITS  0x00000003
-
-static char *
-shortoligo_nt (Shortoligomer_T oligo, int oligosize) {
-  char *nt;
-  int i, j;
-  Shortoligomer_T lowbits;
-
-  nt = (char *) CALLOC(oligosize+1,sizeof(char));
-  j = oligosize-1;
-  for (i = 0; i < oligosize; i++) {
-    lowbits = oligo & LOW_TWO_BITS;
-    switch (lowbits) {
-    case RIGHT_A: nt[j] = 'A'; break;
-    case RIGHT_C: nt[j] = 'C'; break;
-    case RIGHT_G: nt[j] = 'G'; break;
-    case RIGHT_T: nt[j] = 'T'; break;
-    }
-    oligo >>= 2;
-    j--;
-  }
-
-  return nt;
-}
-
-
-#ifndef PMAP
-void
-Oligoindex_dump (T this) {
-  Oligospace_T i;
-  char *nt;
-
-  for (i = 0; i < this->oligospace; i++) {
-    if (this->counts[i] == 0) {
-    } else {
-      nt = shortoligo_nt(i,this->indexsize);
-      printf("%s %d\n",nt,this->counts[i]);
-      FREE(nt);
-    }
-  }
-  return;
-}
-
-
-void
-Oligoindex_counts_dump (T this, Count_T *counts) {
-  Oligospace_T i;
-  char *nt;
-
-  for (i = 0; i < this->oligospace; i++) {
-    if (counts[i] == 0 && this->counts[i] == 0) {
-    } else {
-      nt = shortoligo_nt(i,this->indexsize);
-      printf("%s %d %d\n",nt,counts[i],this->counts[i]);
-      FREE(nt);
-    }
-  }
-  return;
-}
-
-
-bool
-Oligoindex_counts_equal (T this, Count_T *counts) {
-  Oligospace_T i;
-  char *nt;
-
-  for (i = 0; i < this->oligospace; i++) {
-    if (counts[i] != this->counts[i]) {
-      nt = shortoligo_nt(i,this->indexsize);
-      fprintf(stderr,"At %s, counts = %d, this->counts = %d\n",
-	      nt,counts[i],this->counts[i]);
-      FREE(nt);
-      /* Oligoindex_counts_dump(this,counts); */
-      return false;
-    }
-  }
-  return true;
-}
-#endif
-
-
-
-#ifdef PMAP
-#if NAMINOACIDS_STAGE2 == 20
-static char aa_table[NAMINOACIDS_STAGE2] = "ACDEFGHIKLMNPQRSTVWY";
-#elif NAMINOACIDS_STAGE2 == 18
-static char aa_table[NAMINOACIDS_STAGE2] = "ACDEFGHIKMNPQRSTWY";
-#elif NAMINOACIDS_STAGE2 == 16
-static char aa_table[NAMINOACIDS_STAGE2] = "ACDEFGHIKNPQSTWY";
-#endif
-
-static char *
-aaindex_aa (Storedoligomer_T aaindex, int indexsize_aa) {
-  char *aa;
-  int i, j;
-
-  aa = (char *) CALLOC(indexsize_aa+1,sizeof(char));
-  j = indexsize_aa-1;
-  for (i = 0; i < indexsize_aa; i++) {
-    aa[j] = aa_table[aaindex % NAMINOACIDS_STAGE2];
-    aaindex /= NAMINOACIDS_STAGE2;
-    j--;
-  }
-
-  return aa;
-}
-
-#endif
-
-
-#define NPSEUDO 0.0
-
-#ifndef PMAP
-/* -1 means edge is on 5', +1 means edge is on 3'  0 means no edge found. */
-static int
-edge_detect (int *edge, int *sumx, int *sumxx, int length) {
-  int side = 0;
-  int pos, sumx_left, sumxx_left, sumx_right, sumxx_right, n_left, n_right;
-  double theta, sumx_pseudo, theta_left, theta_right, rss_left, rss_right, rss_sep;
-  double min_rss_sep;
-#ifdef DEBUG1
-  double fscore;
-#endif
-
-  debug1(printf("\n*** Start of edge_detect\n"));
-
-  sumx_right = sumx[length] - sumx[0];
-  sumxx_right = sumxx[length] - sumxx[0];
-
-  theta = (double) sumx_right/(double) length;
-  sumx_pseudo = NPSEUDO * theta;
-  min_rss_sep = sumxx_right - sumx_right*theta;
-  debug1(printf("theta: %d/%d = %f\n",sumx_right,length,theta));
-  debug1(printf("rss: %f\n",rss)); 
-
-  debug1(printf("%s %s %s %s %s %s %s %s %s %s %s\n",
-		"pos","x","sumx.left","n.left","sumx.right","n.right",
-		"theta.left","theta.right","rss.left","rss.right","fscore"));
-
-  n_left = 1;
-  n_right = length-1;
-  for (pos = 1; pos < length; pos++) {
-    sumx_left = sumx[pos] - sumx[0];
-    sumxx_left = sumxx[pos] - sumxx[0];
-    sumx_right = sumx[length] - sumx[pos];
-    sumxx_right = sumxx[length] - sumxx[pos];
-
-    theta_left = ((double) sumx_left + sumx_pseudo)/((double) n_left + NPSEUDO);
-    theta_right = ((double) sumx_right + sumx_pseudo)/((double) n_right + NPSEUDO);
-    rss_left = sumxx_left - sumx_left*theta_left;
-    rss_right = sumxx_right - sumx_right*theta_right;
-    rss_sep = rss_left + rss_right;
-
-    debug1(
-	   if (rss_sep > 0.0) {
-	     fscore = ((double) (length - 2))*(rss - rss_sep)/rss_sep;
-	     printf("%d %d %d %d %d %d %f %f %f %f %f\n",
-		    pos,sumx[pos]-sumx[pos-1],sumx_left,n_left,sumx_right,n_right,
-		    theta_left,theta_right,rss_left,rss_right,fscore);
-	   } else {
-	     printf("%d %d %d %d %d %d %f %f %f %f NA\n",
-		    pos,sumx[pos]-sumx[pos-1],sumx_left,n_left,sumx_right,n_right,
-		    theta_left,theta_right,rss_left,rss_right);
-	   });
-    /* fscore = (n-2)*(rss - rss_sep)/rss_sep = (n-2)*(rss/rss_sep -
-       1) is maximized when rss_sep is minimized */
-
-    if (theta_left > theta_right + THETADIFF1) {
-      if (rss_sep < min_rss_sep) {
-	min_rss_sep = rss_sep;
-	*edge = pos;
-	side = -1;
-	debug1(printf("Set edge to %d\n",pos));
-      }
-    } else if (theta_right > theta_left + THETADIFF1) {
-      if (rss_sep < min_rss_sep) {
-	min_rss_sep = rss_sep;
-	*edge = pos;
-	side = +1;
-	debug1(printf("Set edge to %d\n",pos));
-      }
-    }
-
-    n_left += 1;
-    n_right -= 1;
-  }
-
-  debug1(printf("*** End of edge_detect.  Returning %d\n\n",side));
-
-  return side;
-}
-#endif
-
-#ifndef PMAP
-static int
-trim_start_detect (int start, int end, int *sumx, int *sumxx) {
-  int edge = -1;
-  int pos, sumx_left, sumxx_left, sumx_right, sumxx_right, n_left, n_right;
-  double theta, sumx_pseudo, theta_left, theta_right, rss_left, rss_right, rss_sep;
-  double min_rss_sep;
-#ifdef DEBUG1
-  double fscore;
-#endif
-
-  debug1(printf("\n*** Start of trim_start_detect\n"));
-
-  sumx_right = sumx[end] - sumx[start];
-  sumxx_right = sumxx[end] - sumxx[start];
-
-  if (end <= start) {
-    return -1;
-  }
-  theta = (double) sumx_right/(double) (end - start);
-  sumx_pseudo = NPSEUDO * theta;
-  min_rss_sep = sumxx_right - sumx_right*theta;
-  debug1(printf("%d/%d = %f\n",sumx_right,end-start,theta));
-  
-  debug1(printf("%s %s %s %s %s %s %s %s %s %s %s\n",
-		"pos","counts","sumx.left","n.left","sumx.right","n.right",
-		"theta.left","theta.right","rss.left","rss.right","fscore"));
-
-  n_left = 1;
-  n_right = end - (start+1);
-  for (pos = start+1; pos < end; pos++) {
-    sumx_left = sumx[pos] - sumx[start];
-    sumxx_left = sumxx[pos] - sumxx[start];
-    sumx_right = sumx[end] - sumx[pos];
-    sumxx_right = sumxx[end] - sumxx[pos];
-
-    theta_left = ((double) sumx_left + sumx_pseudo)/((double) n_left + NPSEUDO);
-    theta_right = ((double) sumx_right + sumx_pseudo)/((double) n_right + NPSEUDO);
-    rss_left = sumxx_left - sumx_left*theta_left;
-    rss_right = sumxx_right - sumx_right*theta_right;
-    rss_sep = rss_left + rss_right;
-
-    debug1(
-	   if (rss_sep > 0.0) {
-	     fscore = ((double) (end - start - 2))*(rss - rss_sep)/rss_sep;
-	     printf("%d %d %d %d %d %f %f %f %f %f\n",
-		    pos,sumx_left,n_left,sumx_right,n_right,
-		    theta_left,theta_right,rss_left,rss_right,fscore);
-	   } else {
-	     printf("%d %d %d %d %d %f %f %f %f NA\n",
-		    pos,sumx_left,n_left,sumx_right,n_right,
-		    theta_left,theta_right,rss_left,rss_right);
-	   });
-    /* fscore = (n-2)*(rss - rss_sep)/rss_sep = (n-2)*(rss/rss_sep -
-       1) is maximized when rss_sep is minimized */
-
-    if (theta_left < theta_right) {
-      debug1(printf("trim_detect aborting early with edge=%d\n",edge));
-      return edge;
-    } else if (theta_left > theta_right + THETADIFF2) {
-      if (rss_sep < min_rss_sep) {
-	min_rss_sep = rss_sep;
-	edge = pos;
-	debug1(printf("Set trim_start to %d\n",pos));      
-      }
-    }
-
-    n_left += 1;
-    n_right -= 1;
-  }
-
-  debug1(printf("trim_start_detect returning %d\n",edge));
-  return edge;
-}
-#endif
-
-#ifndef PMAP
-static int
-trim_end_detect (int start, int end, int *sumx, int *sumxx) {
-  int edge = -1;
-  int pos, sumx_left, sumxx_left, sumx_right, sumxx_right, n_left, n_right;
-  double theta, sumx_pseudo, theta_left, theta_right, rss_left, rss_right, rss_sep;
-  double min_rss_sep;
-#ifdef DEBUG1
-  double fscore;
-#endif
-
-  debug1(printf("\n*** Start of trim_end_detect\n"));
-
-  sumx_right = sumx[end] - sumx[start];
-  sumxx_right = sumxx[end] - sumxx[start];
-
-  if (end <= start) {
-    return -1;
-  }
-  theta = (double) sumx_right/(double) (end - start);
-  sumx_pseudo = NPSEUDO * theta;
-  min_rss_sep = sumxx_right - sumx_right*theta;
-  debug1(printf("%d/%d = %f\n",sumx_right,end-start,theta));
-  
-  debug1(printf("%s %s %s %s %s %s %s %s %s %s %s\n",
-		"pos","counts","sumx.left","n.left","sumx.right","n.right",
-		"theta.left","theta.right","rss.left","rss.right","fscore"));
-
-  n_left = end - (start+1);
-  n_right = 1;
-  for (pos = end-1; pos > start; --pos) {
-    sumx_left = sumx[pos] - sumx[start];
-    sumxx_left = sumxx[pos] - sumxx[start];
-    sumx_right = sumx[end] - sumx[pos];
-    sumxx_right = sumxx[end] - sumxx[pos];
-
-    theta_left = ((double) sumx_left + sumx_pseudo)/((double) n_left + NPSEUDO);
-    theta_right = ((double) sumx_right + sumx_pseudo)/((double) n_right + NPSEUDO);
-    rss_left = sumxx_left - sumx_left*theta_left;
-    rss_right = sumxx_right - sumx_right*theta_right;
-    rss_sep = rss_left + rss_right;
-
-    debug1(
-	   if (rss_sep == 0) {
-	     printf("%d %d %d %d %d %f %f %f %f NA\n",
-		    pos,sumx_left,n_left,sumx_right,n_right,
-		    theta_left,theta_right,rss_left,rss_right);
-	   } else {
-	     fscore = ((double) (end - start - 2))*(rss - rss_sep)/rss_sep;
-	     printf("%d %d %d %d %d %f %f %f %f %f\n",
-		    pos,sumx_left,n_left,sumx_right,n_right,
-		    theta_left,theta_right,rss_left,rss_right,fscore);
-	   });
-    /* fscore = (n-2)*(rss - rss_sep)/rss_sep = (n-2)*(rss/rss_sep -
-       1) is maximized when rss_sep is minimized */
-
-    if (theta_right < theta_left) {
-      debug1(printf("trim_detect aborting early with edge=%d\n",edge));
-      return edge;
-    } else if (theta_right > theta_left + THETADIFF2) {
-      if (rss_sep < min_rss_sep) {
-	min_rss_sep = rss_sep;
-	edge = pos;
-	debug1(printf("Set trim_end to %d\n",pos));      
-      }
-    }
-
-    n_left -= 1;
-    n_right += 1;
-  }
-
-  debug1(printf("trim_end_detect returning %d\n",edge));
-  return edge;
-}
-#endif
-
-
-/* Run query sequence through this procedure.  First, we count occurrences
- * of each oligo in queryuc (upper case version of queryseq).  This
- * allows us to scan genomicseg intelligently, because then we know
- * whether to store positions for that oligo. */
-
-double
-Oligoindex_set_inquery (int *badoligos, int *repoligos, int *trimoligos, int *trim_start, int *trim_end,
-			T this, char *queryuc_ptr, int querylength, bool trimp) {
-#ifndef PMAP
-  double oligodepth;
-  int ngoodoligos, nrepoligos, x, *sumx, *sumxx, sumx0 = 0, sumxx0 = 0;
-  int edge, side;
-  int querypos;
-  Shortoligomer_T oligo = 0U;
-  char *ptr;
-#endif
-  int nunique = 0;
-  int i, noligos = 0;
-  int in_counter = 0;
-  Shortoligomer_T masked;
-  char *p;
-#ifdef PMAP
-  int indexsize = this->indexsize_aa, index;
-  Storedoligomer_T aaindex = 0U;
-#else
-  int indexsize = this->indexsize;
-#endif
-#if 0
-  bool prevunique = false;
-#endif
-#ifdef DEBUG
-  char *aa, *nt;
-#endif
-
-  if (this->query_evaluated_p == true) {
-    return 1.0;
-  } else {
-    this->query_evaluated_p = true; /* Set this flag so we don't redo this part */
-  }
-
-#ifdef HAVE_SSE2
-  memset((void *) this->inquery,/*false*/0x00,this->oligospace*sizeof(Count_T));
-#else
-  memset((void *) this->inquery,false,this->oligospace*sizeof(bool));
-#endif
-  memset((void *) this->counts,0,this->oligospace*sizeof(Count_T));
-
-#if 0
-  /* Test for thread safety */
-  for (i = 0; i < this->oligospace; i++) {
-    if (this->inquery[i] != false) {
-      abort();
-    }
-  }
-  for (i = 0; i < this->oligospace; i++) {
-    if (this->counts[i] != 0) {
-      abort();
-    }
-  }
-#endif
-
-  if (querylength <= indexsize) {
-    *badoligos = 0;
-    *trim_start = 0;
-    *trim_end = querylength;
-    return 1.0;
-  }
-    
-  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
-    in_counter++;
-
-#ifdef PMAP
-    if ((index = aa_index_table[(int) *p]) < 0) {
-      aaindex = 0U;
-      in_counter = 0;
-    } else {
-      aaindex = aaindex % this->msb;
-      aaindex = aaindex * NAMINOACIDS_STAGE2 + index;
-    }
-#else
-    switch (*p) {
-    case 'A': oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; in_counter = 0; break;
-    }
-#endif
-
-    if (in_counter == indexsize) {
-#ifdef PMAP
-      masked = aaindex;
-      debug(aa = aaindex_aa(masked,indexsize); /* Should be indexsize and not indexsize/3 */
-	    printf("At querypos %d, aa %s seen (masked = %u)\n",i,aa,masked);
-	    FREE(aa));
-#else
-      masked = oligo & this->mask;
-      noligos++;
-      debug(nt = shortoligo_nt(oligo,indexsize);
-	    printf("At querypos %d, oligo %s seen\n",i,nt);
-	    FREE(nt));
-#endif
-
-      this->counts[masked] += 1;
-#ifdef HAVE_SSE2
-      if (this->inquery[masked] == /*false*/0x00) {
-	nunique += 1;
-	this->inquery[masked] = /*true*/0xFF;
-      }
-#else
-      if (this->inquery[masked] == false) {
-	nunique += 1;
-	this->inquery[masked] = true;
-      }
-#endif
-      in_counter--;
-    }
-  }
-
-  if (trimp == false) {
-    *badoligos = (querylength + 1 - indexsize) - noligos;
-    *trim_start = 0;
-    *trim_end = querylength;
-    return 1.0;
-  }
-
-#ifdef PMAP
-  /* trimp should be set to false for PMAP */
-  abort();
-
-#else
-  /* Determine where to trim using a changepoint analysis */
-  sumx = (int *) CALLOC(querylength - indexsize + 1,sizeof(int));
-  sumxx = (int *) CALLOC(querylength - indexsize + 1,sizeof(int));
-
-  in_counter = 0;
-  querypos = -indexsize;
-  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
-    in_counter++;
-    querypos++;
-
-    switch (*p) {
-    case 'A': oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; in_counter = 0; break;
-    }
-
-    if (in_counter == indexsize) {
-      x = this->counts[oligo & this->mask];
-      in_counter--;
-    } else {
-      x = 1;
-    } 
-
-    if (querypos >= 0) {
-      sumx0 += x;
-      sumxx0 += x*x;
-      sumx[querypos] = sumx0;
-      sumxx[querypos] = sumxx0;
-    }
-  }
-  sumx[querylength-indexsize] = sumx0;
-  sumxx[querylength-indexsize] = sumxx0;
-
-
-  *trim_start = 0;
-  *trim_end = querylength-1;
-  if ((side = edge_detect(&edge,sumx,sumxx,querylength-indexsize)) == -1) {
-    *trim_start = edge+1;
-    if ((edge = trim_end_detect(*trim_start,querylength-indexsize,sumx,sumxx)) >= 0) {
-      *trim_end = edge+1;
-    }
-  } else if (side == +1) {
-    *trim_end = edge+1;
-    if ((edge = trim_start_detect(0,*trim_end,sumx,sumxx)) >= 0) {
-      *trim_start = edge;
-    }
-  }
-
-  FREE(sumxx);
-  FREE(sumx);
-
-  debug1(printf("trim_start = %d, trim_end = %d\n",*trim_start,*trim_end));
-#endif
-
-#if 0
-  /* If not using changepoint */
-
-  *trim_start = -1;
-  *trim_end = 0;
-
-  in_counter = 0;
-  querypos = -indexsize;
-  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
-    in_counter++;
-    querypos++;
-
-    switch (*p) {
-    case 'A': oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; in_counter = 0; break;
-    }
-
-    debug1(if (querypos < 0) {
-	     /* Print nothing */
-	   } else if (in_counter == indexsize) {
-	     printf("%d\n",this->counts[oligo&mask]);
-	   } else {
-	     printf("0\n");
-	   });
-
-    if (in_counter == indexsize) {
-      if (this->counts[oligo & this->mask] == 1) {
-	if (prevunique == true) {
-	  if (*trim_start < 0) {
-	    *trim_start = querypos; /* trim 5' at first unique 8-mer */
-	  }
-	  *trim_end = querypos;	/* trim 3' at last unique 8-mer */
-	}
-	prevunique = true;
-      } else {
-	prevunique = false;
-      }
-      in_counter--;
-    } else {
-      prevunique = false;
-    }
-  }
-
-  if (*trim_start < 0) {
-    *trim_start = 0;
-  } else {
-    *trim_start -= 1;		/* To compensate for prevunique */
-  }
-  *trim_end += indexsize;
-#endif
-
-#ifdef PMAP
-  *trimoligos = (*trim_end - indexsize) - (*trim_start) + 1;
-  *badoligos = 0;
-  return 1000000.0;
-#else
-  /* Count good oligos in trimmed region */
-  ngoodoligos = nrepoligos = 0;
-  in_counter = 0;
-  ptr = queryuc_ptr;
-  p = &(ptr[*trim_start]);
-  for (querypos = (*trim_start)-indexsize; querypos < (*trim_end)-indexsize;
-       querypos++, p++) {
-    in_counter++;
-
-    switch (*p) {
-    case 'A': oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; in_counter = 0; break;
-    }
-
-    if (in_counter == indexsize) {
-      ngoodoligos++;
-      if (this->counts[oligo & this->mask] >= REPOLIGOCOUNT) {
-	nrepoligos++;
-      }
-      in_counter--;
-    }
-  }
-
-  *trimoligos = (*trim_end - indexsize) - (*trim_start) + 1;
-  *badoligos = (*trimoligos) - ngoodoligos;
-  *repoligos = nrepoligos;
-
-  if (nunique == 0) {
-    return 1000000.0;
-  } else {
-    /* trimlength = *trim_end - *trim_start; */
-    oligodepth = (double) noligos/(double) nunique;
-    return oligodepth;
-  }
-#endif
-}
-
-
-/************************************************************************/
-
-#ifdef PMAP
-
-/*              87654321 */
-#define CHAR1 0x00000030
-#define CHAR2 0x0000000C
-#define CHAR3 0x00000003
-
-#define A1    0x00000000	/* 0 */
-#define C1    0x00000010	/* 16 */
-#define G1    0x00000020	/* 32 */
-#define T1    0x00000030	/* 48 */
-
-#define A2    0x00000000	/* 0 */
-#define C2    0x00000004	/* 4 */
-#define G2    0x00000008	/* 8 */
-#define T2    0x0000000C	/* 12 */
-
-#define A3    0x00000000	/* 0 */
-#define C3    0x00000001	/* 1 */
-#define G3    0x00000002	/* 2 */
-#define T3    0x00000003	/* 3 */
-
-/* Do not include stop codon, because oligospace will not allow it */
-#if NAMINOACIDS_STAGE2 == 20
-typedef enum {AA_A, AA_C, AA_D, AA_E, AA_F, 
-	      AA_G, AA_H, AA_I, AA_K, AA_L,
-	      AA_M, AA_N, AA_P, AA_Q, AA_R,
-	      AA_S, AA_T, AA_V, AA_W, AA_Y} Aminoacid_T;
-#elif NAMINOACIDS_STAGE2 == 18
-typedef enum {AA_A, AA_C, AA_D, AA_E, AA_F, 
-	      AA_G, AA_H, AA_ILV, AA_K,
-	      AA_M, AA_N, AA_P, AA_Q, AA_R,
-	      AA_S, AA_T, AA_W, AA_Y} Aminoacid_T;
-#elif NAMINOACIDS_STAGE2 == 16
-typedef enum {AA_A, AA_C, AA_D, AA_E, AA_F, 
-	      AA_G, AA_H, AA_ILMV, AA_KR,
-	      AA_N, AA_P, AA_Q,
-	      AA_S, AA_T, AA_W, AA_Y} Aminoacid_T;
-#else
-#error The given value of NAMINOACIDS_STAGE2 is not supported by oligoindex.c
-#endif
-
-static int
-get_last_codon (Shortoligomer_T oligo) {
-  switch (oligo & CHAR2) {
-  case T2:
-    switch (oligo & CHAR1) {
-    case T1:
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_F;
-      default: /* case A3: case G3: */ 
-#if NAMINOACIDS_STAGE2 == 20
-	return AA_L;
-#elif NAMINOACIDS_STAGE2 == 18
-	return AA_ILV;
-#elif NAMINOACIDS_STAGE2 == 16
-	return AA_ILMV;
-#endif
-      }	/* CHAR3 */
-#if NAMINOACIDS_STAGE2 == 20
-    case A1: 
-      switch (oligo & CHAR3) {
-      case G3: return AA_M;
-      default: /* case T3: case A3: case C3: */ return AA_I;
-      }
-    case C1: return AA_L;
-    default: /* case G1: */ return AA_V;
-#elif NAMINOACIDS_STAGE2 == 18
-    case A1: 
-      switch (oligo & CHAR3) {
-      case G3: return AA_M;
-      default: /* case T3: case A3: case C3: */ return AA_ILV;
-      }
-    default: /* case C1: case G1: */ return AA_ILV;
-#elif NAMINOACIDS_STAGE2 == 16
-    default: /* case A1: case C1: case G1: */ return AA_ILMV;
-#endif
-  } /* CHAR1 */
-
-  case C2:
-    switch (oligo & CHAR1) {
-    case C1: return AA_P;
-    case T1: return AA_S;
-    case A1: return AA_T;
-    default: /* case G1: */ return AA_A;
-    } /* CHAR1 */
-  case A2:
-    switch (oligo & CHAR1) {
-    case T1:
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_Y;
-      default: /* case A3: case G3: */ return -1; /* STOP */
-      }
-    case C1:
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_H;
-      default: /* case A3: case G3: */ return AA_Q;
-      }
-    case A1:
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_N;
-      default: /* case A3: case G3: */
-#if NAMINOACIDS_STAGE2 == 20
-	return AA_K;
-#elif NAMINOACIDS_STAGE2 == 18
-	return AA_K;
-#elif NAMINOACIDS_STAGE2 == 16
-	return AA_KR;
-#endif
-      }
-    default: /* case G1: */
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_D;
-      default: /* case A3: case G3: */ return AA_E;
-      }
-    }
-  default: /* case G2: */
-    switch (oligo & CHAR1) {
-    case T1:
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_C;
-      case A3: return -1; /* STOP */
-      default: /* case G3: */ return AA_W;
-      }
-    case C1:
-#if NAMINOACIDS_STAGE2 == 20
-      return AA_R;
-#elif NAMINOACIDS_STAGE2 == 18
-      return AA_R;
-#elif NAMINOACIDS_STAGE2 == 16
-      return AA_KR;
-#endif
-    case A1:
-      switch (oligo & CHAR3) {
-      case T3: case C3: return AA_S;
-      default: /* case A3: case G3: */
-#if NAMINOACIDS_STAGE2 == 20
-	return AA_R;
-#elif NAMINOACIDS_STAGE2 == 18
-	return AA_R;
-#elif NAMINOACIDS_STAGE2 == 16
-	return AA_KR;
-#endif
-      }
-    default: /* case G1: */ return AA_G;
-    }
-  }
-
-  abort();
-  return -1;
-}
-
-#endif
-
-
-/************************************************************************/
-
-
-#ifdef PMAP
-/* Second, run genomicuc through this procedure, to determine the genomic positions for each oligo.  */
-static int
-allocate_positions (Chrpos_T **pointers, Chrpos_T **positions, bool *overabundant,
-#ifdef HAVE_SSE2		    
-		    Count_T *inquery,
-#else
-		    bool *inquery,
-#endif
-		    Count_T *counts, int *relevant_counts, int oligospace, int indexsize,
-#ifdef PMAP
-		    Shortoligomer_T msb,
-#else
-		    Shortoligomer_T mask,
-#endif
-		    char *sequence, int seqlength, int sequencepos) {
-#ifdef PMAP
-  int index;
-  int frame = 2;
-  Storedoligomer_T aaindex0 = 0U, aaindex1 = 0U, aaindex2 = 0U;
-  int in_counter_0 = 0, in_counter_1 = 0, in_counter_2 = 0;
-#endif
-  int i = 0, n;
-  int in_counter = 0;
-  Shortoligomer_T oligo = 0U, masked;
-  char *p;
-  Chrpos_T *ptr;
-  int totalcounts;
-  int overabundance_threshold;
-
-#ifdef DEBUG
-#ifdef PMAP
-  char *aa;
-#else
-  char *nt;
-#endif
-#endif
-
-  sequencepos -= indexsize;
-  for (i = 0, p = sequence; i < seqlength; i++, p++) {
-#ifdef PMAP
-    in_counter_0++;
-    in_counter_1++;
-    in_counter_2++;
-#else
-    in_counter++;
-#endif
-    sequencepos++;
-
-    switch (*p) {
-    case 'A':
-#ifdef EXTRACT_GENOMICSEG
-    case 'N':
-#endif
-      oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; 
-#ifdef PMAP
-      in_counter_0 = in_counter_1 = in_counter_2 = 0; 
-#else
-      in_counter = 0;
-#endif
-    }
-
-    debug(printf("At genomicpos %u, char is %c, oligo is %04X\n",
-		 sequencepos,*p,oligo));
-
-#ifdef PMAP
-    index = get_last_codon(oligo);
-    /* debug(printf("%d %d %d => %d\n",oligo&CHAR1,oligo&CHAR2,oligo&CHAR3,index)); */
-    if (frame == 0) {
-      frame = 1;
-      if (index < 0) {
-	aaindex1 = 0;
-	in_counter = in_counter_1 = 0;
-      } else {
-	aaindex1 = aaindex1 % msb;
-	masked = aaindex1 = aaindex1 * NAMINOACIDS_STAGE2 + index;
-	in_counter = in_counter_1;
-      }
-    } else if (frame == 1) {
-      frame = 2;
-      if (index < 0) {
-	aaindex2 = 0;
-	in_counter = in_counter_2 = 0;
-      } else {
-	aaindex2 = aaindex2 % msb;
-	masked = aaindex2 = aaindex2 * NAMINOACIDS_STAGE2 + index;
-	in_counter = in_counter_2;
-      }
-    } else {
-      frame = 0;
-      if (index < 0) {
-	aaindex0 = 0;
-	in_counter = in_counter_0 = 0;
-      } else {
-	aaindex0 = aaindex0 % msb;
-	masked = aaindex0 = aaindex0 * NAMINOACIDS_STAGE2 + index;
-	in_counter = in_counter_0;
-      }
-    }
-    debug(printf("frame = %d, masked = %d, in_counters = %d/%d/%d\n",frame,masked,in_counter_0,in_counter_1,in_counter_2));
-#endif
-
-    if (in_counter == indexsize) {
-#ifndef PMAP
-      masked = oligo & mask;
-      debug(printf("%04X\n",masked));
-#endif
-      if (overabundant[masked] == true) {
-	/* Don't bother */
-#ifdef PMAP
-	debug(aa = aaindex_aa(masked,indexsize/3);
-	      printf("At genomicpos %u, aa %s is overabundant\n",sequencepos,aa);
-	      FREE(aa));
-#else
-	debug(nt = shortoligo_nt(masked,indexsize);
-	      printf("At genomicpos %u, oligo %s is overabundant\n",sequencepos,nt);
-	      FREE(nt));
-#endif
-
-#ifdef HAVE_SSE2
-      } else if (inquery[masked] == /*false*/0x00) {
-	/* Don't bother, because it's not in the query sequence */
-#ifdef PMAP
-	debug(aa = aaindex_aa(masked,indexsize/3);
-	      printf("At genomicpos %u, aa %s wasn't seen in querypos\n",
-		     sequencepos,aa,counts[masked]);
-	      FREE(aa));
-#else
-	debug(nt = shortoligo_nt(masked,indexsize);
-	      printf("At genomicpos %u, oligo %s wasn't seen in querypos\n",sequencepos,nt);
-	      FREE(nt));
-#endif
-#else
-      } else if (inquery[masked] == false) {
-	/* Don't bother, because it's not in the query sequence */
-#ifdef PMAP
-	debug(aa = aaindex_aa(masked,indexsize/3);
-	      printf("At genomicpos %u, aa %s wasn't seen in querypos\n",
-		     sequencepos,aa,counts[masked]);
-	      FREE(aa));
-#else
-	debug(nt = shortoligo_nt(masked,indexsize);
-	      printf("At genomicpos %u, oligo %s wasn't seen in querypos\n",sequencepos,nt);
-	      FREE(nt));
-#endif
-#endif
-
-      } else {
-	counts[masked] += 1;
-
-#ifdef PMAP
-	debug(aa = aaindex_aa(masked,indexsize/3);
-	      printf("At genomicpos %u, aa %s seen, counts is now %d\n",
-		     sequencepos,aa,counts[masked]);
-	      FREE(aa));
-#else
-	debug(nt = shortoligo_nt(masked,indexsize);
-	      printf("At genomicpos %u, oligo %s seen, counts is now %d\n",sequencepos,nt,counts[masked]);
-	      FREE(nt));
-
-#endif
-      }
-#ifndef PMAP
-      in_counter--;
-#endif
-    }
-#ifdef PMAP
-    if (in_counter_0 == indexsize) {
-      in_counter_0--;
-    }
-    if (in_counter_1 == indexsize) {
-      in_counter_1--;
-    }
-    if (in_counter_2 == indexsize) {
-      in_counter_2--;
-    }
-#endif
-  }
-
-  n = 0;
-  for (i = 0; i < oligospace; i++) {
-    if (counts[i] > 0) {
-      relevant_counts[n++] = counts[i];
-    }
-  }
-
-  totalcounts = 0;
-  if (n < OVERABUNDANCE_CHECK) {
-    debug(printf("only %d entries => don't use orderstat\n",n));
-
-    for (i = 0; i < oligospace; i++) {
-      totalcounts += counts[i];
-    }
-
-  } else {
-    overabundance_threshold = Orderstat_int_pct_inplace(relevant_counts,n,OVERABUNDANCE_PCT);
-    debug(printf("overabundance threshold is %d\n",overabundance_threshold));
-    if (overabundance_threshold < OVERABUNDANCE_MIN) {
-      overabundance_threshold = OVERABUNDANCE_MIN;
-      debug(printf("  => resetting to %d\n",overabundance_threshold));
-    }
-
-    for (i = 0; i < oligospace; i++) {
-      if (counts[i] > overabundance_threshold) {
-	overabundant[i] = true;
-	counts[i] = 0;
-      } else {
-	totalcounts += counts[i];
-      }
-    }
-  }
-
-  if (totalcounts == 0) {
-    positions[0] = (Chrpos_T *) NULL;
-  } else {
-    ptr = (Chrpos_T *) CALLOC(totalcounts,sizeof(Chrpos_T));
-    for (i = 0; i < oligospace; i++) {
-      positions[i] = ptr;
-      ptr += counts[i];
-    }
-    positions[i] = ptr;		/* For positions[oligospace], used for indicating if pointer hits next position */
-    /* Does not copy positions[oligospace] */
-    memcpy((void *) pointers,positions,oligospace*sizeof(Chrpos_T *));
-  }
-
-  return totalcounts;
-}
-#endif
-
-
-#ifdef PMAP
-/* Third, run genomicuc through this procedure, to determine the genomic positions for each oligo.  */
-/* Logic of this procedure should match that of allocate_positions */
-static int
-store_positions (Chrpos_T **pointers, bool *overabundant, 
-#ifdef HAVE_SSE2
-		 Count_T *inquery,
-#else
-		 bool *inquery,
-#endif
-		 Oligospace_T oligospace, int indexsize,
-#ifdef PMAP
-		 Shortoligomer_T msb,
-#else
-		 Shortoligomer_T mask,
-#endif
-		 char *sequence, int seqlength, int sequencepos) {
-#ifdef PMAP
-  int index;
-  int frame = 2;
-  Storedoligomer_T aaindex0 = 0U, aaindex1 = 0U, aaindex2 = 0U;
-  int in_counter_0 = 0, in_counter_1 = 0, in_counter_2 = 0;
-#endif
-  int nstored = 0;
-  int i = 0;
-  int in_counter = 0;
-  Shortoligomer_T oligo = 0U, masked;
-  char *p;
-
-#ifdef DEBUG
-#ifdef PMAP
-  char *aa;
-#else
-  char *nt;
-#endif
-#endif
-
-  sequencepos -= indexsize;
-  for (i = 0, p = sequence; i < seqlength; i++, p++) {
-#ifdef PMAP
-    in_counter_0++;
-    in_counter_1++;
-    in_counter_2++;
-#else
-    in_counter++;
-#endif
-    sequencepos++;
-
-    debug(printf("At genomicpos %u, char is %c\n",sequencepos,*p));
-
-    switch (*p) {
-    case 'A':
-#ifdef EXTRACT_GENOMICSEG
-    case 'N':
-#endif
-      oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; 
-#ifdef PMAP
-      in_counter_0 = in_counter_1 = in_counter_2 = 0; 
-#else
-      in_counter = 0;
-#endif
-    }
-
-#ifdef PMAP
-    index = get_last_codon(oligo);
-    /* debug(printf("%d %d %d => %d\n",oligo&CHAR1,oligo&CHAR2,oligo&CHAR3,index)); */
-    if (frame == 0) {
-      frame = 1;
-      if (index < 0) {
-	aaindex1 = 0;
-	in_counter = in_counter_1 = 0;
-      } else {
-	aaindex1 = aaindex1 % msb;
-	masked = aaindex1 = aaindex1 * NAMINOACIDS_STAGE2 + index;
-	in_counter = in_counter_1;
-      }
-    } else if (frame == 1) {
-      frame = 2;
-      if (index < 0) {
-	aaindex2 = 0;
-	in_counter = in_counter_2 = 0;
-      } else {
-	aaindex2 = aaindex2 % msb;
-	masked = aaindex2 = aaindex2 * NAMINOACIDS_STAGE2 + index;
-	in_counter = in_counter_2;
-      }
-    } else {
-      frame = 0;
-      if (index < 0) {
-	aaindex0 = 0;
-	in_counter = in_counter_0 = 0;
-      } else {
-	aaindex0 = aaindex0 % msb;
-	masked = aaindex0 = aaindex0 * NAMINOACIDS_STAGE2 + index;
-	in_counter = in_counter_0;
-      }
-    }
-    debug(printf("frame = %d, masked = %d, in_counters = %d/%d/%d\n",frame,masked,in_counter_0,in_counter_1,in_counter_2));
-#endif
-
-    if (in_counter == indexsize) {
-#ifndef PMAP
-      masked = oligo & mask;
-#endif
-      if (overabundant[masked] == true) {
-	/* Don't bother */
-
-#ifdef HAVE_SSE2
-      } else if (inquery[masked] == /*false*/0x00) {
-	/* Don't bother, because it's not in the query sequence */
-#else
-      } else if (inquery[masked] == false) {
-	/* Don't bother, because it's not in the query sequence */
-#endif
-
-      } else {
-	if (masked >= oligospace) {
-	  abort();
-	}
-	pointers[masked][0] = (Chrpos_T) sequencepos;
-	pointers[masked]++;
-	nstored++;
-      }
-#ifndef PMAP
-      in_counter--;
-#endif
-    }
-#ifdef PMAP
-    if (in_counter_0 == indexsize) {
-      in_counter_0--;
-    }
-    if (in_counter_1 == indexsize) {
-      in_counter_1--;
-    }
-    if (in_counter_2 == indexsize) {
-      in_counter_2--;
-    }
-#endif
-  }
-
-  return nstored;
-}
-#endif
-
-
-#ifdef DEBUG9
-static void
-dump_positions (Chrpos_T **positions, Count_T *counts, int oligospace, int indexsize) {
-  int i;
-#ifdef PMAP
-  char *aa;
-#else
-  char *nt;
-#endif
-
-#ifdef PMAP
-  for (i = 0; i < oligospace; i++) {
-    aa = aaindex_aa(i,indexsize/3);
-    if (counts[i] >= 1) {
-      printf("AA %s => %d entries: %u...%u\n",
-	     aa,counts[i],positions[i][0],positions[i][counts[i]-1]);
-    }
-    FREE(aa);
-  }
-#else
-  for (i = 0; i < oligospace; i++) {
-    nt = shortoligo_nt(i,indexsize);
-    if (counts[i] >= 1) {
-      printf("Oligo %s => %d entries: %u...%u\n",
-	     nt,counts[i],positions[i][0],positions[i][counts[i]-1]);
-    }
-    FREE(nt);
-  }
-#endif
-
-  return;
-}
-#endif
-
-
-#ifndef PMAP
-#define POLY_A 0x0000
-#define POLY_C 0x5555
-#define POLY_G 0xAAAA
-#define POLY_T 0xFFFF
-#endif
-
-#ifdef PMAP
-void
-Oligoindex_tally (T this, char *genomicuc_trimptr, int genomicuc_trimlength,
-		  char *queryuc_ptr, int querylength, int sequencepos) {
-  int badoligos, repoligos, trimoligos, trim_start, trim_end;
-  int nallocated, nstored;
-
-  Oligoindex_set_inquery(&badoligos,&repoligos,&trimoligos,&trim_start,&trim_end,this,
-			 queryuc_ptr,querylength,/*trimp*/false);
-
-  memset((void *) this->counts,0,this->oligospace*sizeof(Count_T));
-  memset((void *) this->overabundant,false,this->oligospace*sizeof(bool));
-#if 0
-  /* Test for thread safety */
-  for (i = 0; i < this->oligospace; i++) {
-    if (this->counts[i] != 0) {
-      abort();
-    }
-  }
-  for (i = 0; i < this->oligospace; i++) {
-    if (this->overabundant[i] != false) {
-      abort();
-    }
-  }
-#endif
-
-#ifndef PMAP
-  /* These values will prevent oligoindex from getting mappings later */
-  this->overabundant[POLY_A & this->mask] = true;
-  this->overabundant[POLY_C & this->mask] = true;
-  this->overabundant[POLY_G & this->mask] = true;
-  this->overabundant[POLY_T & this->mask] = true;
-#endif
-
-  debug9(printf("sequencepos is %d\n",sequencepos));
-  if ((nallocated = allocate_positions(this->pointers,this->positions,this->overabundant,
-				       this->inquery,this->counts,this->relevant_counts,this->oligospace,
-#ifdef PMAP
-				       3*this->indexsize_aa,this->msb,
-#else
-				       this->indexsize,this->mask,
-#endif
-				       &(genomicuc_trimptr[sequencepos]),genomicuc_trimlength,
-				       sequencepos)) > 0) {
-
-    nstored = store_positions(this->pointers,this->overabundant,this->inquery,this->oligospace,
-#ifdef PMAP
-			      3*this->indexsize_aa,this->msb,
-#else
-			      this->indexsize,this->mask,
-#endif
-			      &(genomicuc_trimptr[sequencepos]),genomicuc_trimlength,
-			      sequencepos);
-
-#ifdef PMAP
-    debug9(dump_positions(this->positions,this->counts,this->oligospace,3*this->indexsize_aa));
-#else
-    debug9(dump_positions(this->positions,this->counts,this->oligospace,this->indexsize));
-#endif
-
-    if (nstored != nallocated) {
-      fprintf(stderr,"Bug in Oligoindex_tally: %d allocated, but %d stored\n",
-	      nallocated,nstored);
-      abort();
-    }
-  }
-
-  return;
-}
-#endif
-  
-void
-Oligoindex_clear_inquery (T this) {
-
-  this->query_evaluated_p = false;
-  return;
-}
-
-void
-Oligoindex_untally (T this) {
-
-  /* The following line is necessary */
-  Oligoindex_clear_inquery(this);
-  if (this->positions[0] != NULL) {
-    FREE(this->positions[0]);
-  }
-
-  return;
-}
-
-
-
-static void
-Oligoindex_free (T *old) {
-  if (*old) {
-    FREE((*old)->pointers);
-    FREE((*old)->positions);
-#ifdef PMAP
-    FREE((*old)->relevant_counts);
-    FREE((*old)->overabundant);
-#endif
-#ifdef HAVE_SSE2
-    _mm_free((*old)->counts_allocated);
-    _mm_free((*old)->inquery_allocated);
-#else
-    FREE((*old)->counts);
-    FREE((*old)->inquery);
-#endif
-    FREE(*old);
-  }
-  return;
-}
-
-void
-Oligoindex_free_array (T **oligoindices, int noligoindices) {
-  int source;
-
-  for (source = 0; source < noligoindices; source++) {
-    Oligoindex_free(&((*oligoindices)[source]));
-  }
-  FREE(*oligoindices);
-  return;
-}
-
-
-static Chrpos_T *
-lookup (int *nhits, T this, Shortoligomer_T masked) {
-#ifdef DEBUG
-  char *aa, *nt;
-#endif
-
-  if ((*nhits = this->counts[masked]) >= 1) {
-#ifdef PMAP
-    debug(aa = aaindex_aa(masked,this->indexsize_aa);
-	  printf("masked %s => %d entries: %u...%u\n",
-		 aa,*nhits,this->positions[masked][0],this->positions[masked][*nhits-1]);
-	  FREE(aa));
-#else
-    debug(nt = shortoligo_nt(masked,this->indexsize);
-	  printf("masked %s => %d entries: %u...%u\n",
-		 nt,*nhits,this->positions[masked][0],this->positions[masked][*nhits-1]);
-	  FREE(nt));
-#endif
-    return this->positions[masked];
-  } else {
-#ifdef PMAP
-    debug(aa = aaindex_aa(masked,this->indexsize_aa);
-	  printf("masked %s not found\n",aa);
-	  FREE(aa));
-#else
-    debug(nt = shortoligo_nt(masked,this->indexsize);
-	  printf("masked %s not found\n",nt);
-	  FREE(nt));
-#endif
-    /* Warning: *nhits might be -1 here, but shouldn't affect anything */
-    return NULL;
-  }
-}
-
-
-#if 0
-static bool
-consecutivep (int prev_querypos, unsigned int *prev_mappings, int prev_nhits,
-	      int cur_querypos, unsigned int *cur_mappings, int cur_nhits) {
-  int genomicdist, i, j;
-
-  if (prev_nhits > 0 && cur_nhits > 0) {
-    j = i = 0;
-    genomicdist = NT_PER_MATCH*(cur_querypos - prev_querypos);
-    while (j < prev_nhits && i < cur_nhits) {
-      /* printf("Comparing %u with %u + %d\n",cur_mappings[i],prev_mappings[j],NT_PER_MATCH); */
-      if (cur_mappings[i] == prev_mappings[j] + genomicdist) {
-	/* printf("true\n"); */
-	return true;
-      } else if (cur_mappings[i] < prev_mappings[j] + genomicdist) {
-	i++;
-      } else {
-	j++;
-      }
-    }
-  }
-  /* printf("false\n"); */
-  return false;
-}
-#endif
-
-
-struct Genomicdiag_T {
-  int i;
-  int querypos;
-  int best_nconsecutive;
-  int nconsecutive;
-  int best_consecutive_start;
-  int consecutive_start;
-  int best_consecutive_end;
-};
-typedef struct Genomicdiag_T *Genomicdiag_T;
-
-
-
-/* Third, retrieves appropriate oligo information for a given querypos and
-   copies it to that querypos */
-/* Note: Be careful on totalpositions, because nhits may be < 0 */
-List_T
-Oligoindex_get_mappings (List_T diagonals,
-			 bool *coveredp, Chrpos_T **mappings, int *npositions,
-			 int *totalpositions, bool *oned_matrix_p, int *maxnconsecutive, 
-			 T this, char *queryuc_ptr, int querylength,
-			 Chrpos_T chrstart, Chrpos_T chrend,
-			 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
-			 Diagpool_T diagpool) {
-  int nhits, hit, diagi_adjustment, i;
-  Chrpos_T diagi;
-  int diag_lookback, suffnconsecutive;
-#ifdef PREV_MAXCONSECUTIVE
-  int prev_querypos, prev_nhits;
-  Chrpos_T *prev_mappings;
-  int ngoodconsecutive;
-#endif
-#ifndef PMAP
-  Shortoligomer_T oligo = 0U;
-#endif
-
-  char *p;
-  int in_counter = 0, querypos;
-  Shortoligomer_T masked;
-  Chrpos_T genomiclength, chrinit;
-
-  void *item;
-  struct Genomicdiag_T *genomicdiag;
-  Genomicdiag_T ptr;
-  List_T good_genomicdiags = NULL;
-
-#ifdef PMAP
-  int indexsize = this->indexsize_aa, index;
-  Storedoligomer_T aaindex = 0U;
-#else
-  int indexsize = this->indexsize;
-#endif
-
-  diag_lookback = this->diag_lookback;
-  suffnconsecutive = this->suffnconsecutive;
-  genomiclength = chrend - chrstart;
-  if (plusp == true) {
-    chrinit = chrstart;
-  } else {
-    chrinit = (chrhigh - chroffset) - chrend;
-  }
-
-#ifdef PMAP
-  genomicdiag = (struct Genomicdiag_T *) CALLOC(3*querylength+genomiclength+1,sizeof(struct Genomicdiag_T));
-#else
-  genomicdiag = (struct Genomicdiag_T *) CALLOC(querylength+genomiclength+1,sizeof(struct Genomicdiag_T));
-#endif
-
-#if 0
-  /* Too time consuming.  Just initialize when we see [diagi] for the first time. */
-#ifdef PMAP
-  for (diagi = 0; diagi < 3*querylength+genomiclength; diagi++) {
-    genomicdiag[diagi].i = diagi;
-    genomicdiag[diagi].querypos = -diag_lookback; /* guarantees first check won't be consecutive */
-  }
-#else
-  for (diagi = 0; diagi < querylength+genomiclength; diagi++) {
-    genomicdiag[diagi].i = diagi;
-    genomicdiag[diagi].querypos = -diag_lookback; /* guarantees first check won't be consecutive */
-  }
-#endif
-#endif
-
-
-  querypos = -indexsize;
-  *oned_matrix_p = true;
-  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
-    in_counter++;
-    querypos++;
-    
-#ifdef PMAP
-    if ((index = aa_index_table[(int) *p]) < 0) {
-      aaindex = 0U;
-      in_counter = 0;
-    } else {
-      aaindex = aaindex % this->msb;
-      aaindex = aaindex * NAMINOACIDS_STAGE2 + index;
-    }
-#else
-    switch (*p) {
-    case 'A':
-#ifdef EXTRACT_GENOMICSEG
-    case 'N':
-#endif
-      oligo = (oligo << 2); break;
-    case 'C': oligo = (oligo << 2) | 1; break;
-    case 'G': oligo = (oligo << 2) | 2; break;
-    case 'T': oligo = (oligo << 2) | 3; break;
-    default: oligo = 0U; in_counter = 0; break;
-    }
-#endif
-
-    if (in_counter == indexsize) {
-#ifdef PMAP
-      masked = aaindex;
-#else
-      masked = oligo & this->mask;
-#endif
-      if (coveredp[querypos] == false) {
-	mappings[querypos] = lookup(&nhits,this,masked);
-	npositions[querypos] = nhits;
-	if (nhits > 0) {
-	  *totalpositions += nhits;
-	  if (*totalpositions < 0) {
-	    /* fprintf(stderr,"totalpositions %d is negative for masked oligo %u\n",*totalpositions,masked); */
-	    *oned_matrix_p = false;
-	  }
-
-#ifdef PMAP
-	  /* diagonal is (position - 3*querypos); diagi is (position - 3*querypos) + 3*querylength */
-	  diagi_adjustment = 3*(querylength - querypos);
-#else
-	  /* diagonal is (position - querypos); diagi is (position - querypos) + querylength */
-	  diagi_adjustment = querylength - querypos;
-#endif
-	  for (hit = 0; hit < nhits; hit++) {
-	    diagi = mappings[querypos][hit] + diagi_adjustment - chrinit;
-	    ptr = &(genomicdiag[diagi]);
-
-#ifdef PMAP
-	    assert(diagi <= 3*querylength+genomiclength);
-#else
-	    assert(diagi <= querylength+genomiclength);
-#endif
-
-	    if (ptr->i == 0) {
-	      /* Initialize */
-	      ptr->i = diagi;
-	      ptr->querypos = -diag_lookback; /* guarantees first check won't be consecutive */
-	    }
-
-	    /* Must use >= here, so querypos 0 - (-diag_lookback) will fail */
-	    if (querypos - ptr->querypos >= diag_lookback) {
-	      debug3(printf("At diagi %d (checking querypos %d to %d), no consecutive\n",diagi,ptr->querypos,querypos));
-	      ptr->nconsecutive = 0;
-	      ptr->consecutive_start = querypos;
-	      
-	    } else if (++ptr->nconsecutive > ptr->best_nconsecutive) {
-	      ptr->best_consecutive_start = ptr->consecutive_start;
-	      ptr->best_consecutive_end = querypos;
-	      ptr->best_nconsecutive = ptr->nconsecutive;
-	      debug3(printf("At diagi %d (checking querypos %d to %d), best consecutive of %d from %d to %d\n",
-			    diagi,ptr->querypos,querypos,ptr->best_nconsecutive,
-			    ptr->best_consecutive_start,ptr->best_consecutive_end));
-	      if (ptr->best_nconsecutive == suffnconsecutive) {
-		/* Need to check for ==, not >=, because this will store the ptr once */
-		good_genomicdiags = List_push(good_genomicdiags,(void *) ptr);
-	      }
-	      if (ptr->best_nconsecutive > *maxnconsecutive) {
-		*maxnconsecutive = ptr->best_nconsecutive;
-	      }
-	    }
-	    ptr->querypos = querypos;
-	  }
-	}
-      }
-      in_counter--;
-    }
-  }
-
-  while (good_genomicdiags != NULL) {
-    good_genomicdiags = List_pop(good_genomicdiags,&item);
-    ptr = (Genomicdiag_T) item;
-#ifdef USE_DIAGPOOL
-#ifdef PMAP
-    diagonals = Diagpool_push(diagonals,diagpool,/*diagonal*/(ptr->i - 3*querylength),
-			      ptr->best_consecutive_start,ptr->best_consecutive_end,
-			      ptr->best_nconsecutive+1);
-#else
-    diagonals = Diagpool_push(diagonals,diagpool,/*diagonal*/(ptr->i - querylength),
-			      ptr->best_consecutive_start,ptr->best_consecutive_end,
-			      ptr->best_nconsecutive+1);
-#endif
-#else
-#ifdef PMAP
-    diagonals = List_push(diagonals,(void *) Diag_new(/*diagonal*/(ptr->i - 3*querylength),
-						      ptr->best_consecutive_start,ptr->best_consecutive_end,
-						      ptr->best_nconsecutive+1));
-#else
-    diagonals = List_push(diagonals,(void *) Diag_new(/*diagonal*/(ptr->i - querylength),
-						      ptr->best_consecutive_start,ptr->best_consecutive_end,
-						      ptr->best_nconsecutive+1));
-#endif
-#endif
-  }
-
-  FREE(genomicdiag);
-
-  return diagonals;
-}
-
-
diff --git a/src/oligoindex.h b/src/oligoindex.h
deleted file mode 100644
index d73f38c..0000000
--- a/src/oligoindex.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* $Id: oligoindex.h 99737 2013-06-27 19:33:03Z twu $ */
-#ifndef OLIGOINDEX_INCLUDED
-#define OLIGOINDEX_INCLUDED
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "bool.h"
-#include "types.h"
-#include "genomicpos.h"
-#include "list.h"
-#include "intlist.h"
-#include "diagpool.h"
-#ifdef HAVE_SSE2
-#include <emmintrin.h>
-#endif
-
-#define OVERABUNDANCE_CHECK 50
-#define OVERABUNDANCE_PCT 0.97
-#define OVERABUNDANCE_MIN 200
-
-typedef UINT4 Shortoligomer_T;
-typedef unsigned char Count_T;
-
-#define T Oligoindex_T
-typedef struct T *T;
-struct T {
-
-#ifdef PMAP
-  int indexsize_aa;
-  Shortoligomer_T msb;
-#else
-  int indexsize;
-  Shortoligomer_T mask;
-#endif
-
-  int diag_lookback;
-  int suffnconsecutive;
-
-  bool query_evaluated_p;
-  Oligospace_T oligospace;
-#ifdef HAVE_SSE2
-  __m128i *inquery_allocated;
-  __m128i *counts_allocated;
-  Count_T *inquery;
-#else
-  bool *inquery;
-#endif
-  Count_T *counts;
-#ifdef PMAP
-  int *relevant_counts;
-  bool *overabundant;
-#endif
-  Chrpos_T **positions;
-  Chrpos_T **pointers;
-};
-
-extern int
-Oligoindex_indexsize (T this);
-
-extern Count_T *
-Oligoindex_counts_copy (T this);
-
-extern void
-Oligoindex_dump (T this);
-
-extern void
-Oligoindex_counts_dump (T this, Count_T *counts);
-
-extern bool
-Oligoindex_counts_equal (T this, Count_T *counts);
-
-extern T *
-Oligoindex_new_major (int *noligoindices);
-
-extern T *
-Oligoindex_new_minor (int *noligoindices);
-
-extern int
-Oligoindex_indexsize (T this);
-
-extern double
-Oligoindex_set_inquery (int *badoligos, int *repoligos, int *trimoligos, int *trim_start, int *trim_end,
-			T this, char *queryuc_ptr, int querylength, bool trimp);
-#ifdef PMAP
-extern void
-Oligoindex_tally (T this, char *genomicuc_trimptr, int genomicuc_trimlength,
-		  char *queryuc_ptr, int querylength, int sequencepos);
-#endif
-extern void
-Oligoindex_untally (T this);
-extern void
-Oligoindex_clear_inquery (T this);
-extern void
-Oligoindex_free_array (T **oligoindices, int noligoindices);
-
-extern List_T
-Oligoindex_get_mappings (List_T diagonals, bool *coveredp, Chrpos_T **mappings, int *npositions,
-			 int *totalpositions, bool *oned_matrix_p, int *maxnconsecutive, 
-			 T this, char *queryuc_ptr, int querylength,
-			 Chrpos_T chrstart, Chrpos_T chrend,
-			 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
-			 Diagpool_T diagpool);
-
-#undef T
-#endif
-
diff --git a/src/oligoindex_hr.c b/src/oligoindex_hr.c
index 67b1b9d..fe8361a 100644
--- a/src/oligoindex_hr.c
+++ b/src/oligoindex_hr.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: oligoindex_hr.c 101727 2013-07-16 23:42:52Z twu $";
+static char rcsid[] = "$Id: oligoindex_hr.c 133760 2014-04-20 05:16:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -13,15 +13,87 @@ static char rcsid[] = "$Id: oligoindex_hr.c 101727 2013-07-16 23:42:52Z twu $";
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>		/* For memcpy and memset */
+#include "assert.h"
 #include "mem.h"
 #include "orderstat.h"
 #include "cmet.h"
+
+#ifndef USE_DIAGPOOL
+#include "diag.h"
+#endif
+
 #ifdef HAVE_SSE2
 #include <emmintrin.h>
 #endif
+#ifdef HAVE_SSE4_1
+#include <smmintrin.h>
+#endif
+
+
+#ifdef HAVE_SSE2
+#define USE_SIMD_FOR_COUNTS 1
+#endif
 
+#define THETADIFF1 20.0
+#define THETADIFF2 20.0
+#define REPOLIGOCOUNT 8
+
+
+struct Genomicdiag_T {
+  int i;
+  int querypos;
+  int best_nconsecutive;
+  int nconsecutive;
+  int best_consecutive_start;
+  int consecutive_start;
+  int best_consecutive_end;
+};
+typedef struct Genomicdiag_T *Genomicdiag_T;
 
 #define T Oligoindex_T
+struct T {
+
+#ifdef PMAP
+  int indexsize_aa;
+  Shortoligomer_T msb;
+#else
+  int indexsize;
+  Shortoligomer_T mask;
+#endif
+
+  int diag_lookback;
+  int suffnconsecutive;
+
+  bool query_evaluated_p;
+  Oligospace_T oligospace;
+#ifdef HAVE_SSE2
+  __m128i *inquery_allocated;
+  __m128i *counts_allocated;
+  Count_T *inquery;
+#else
+  bool *inquery;
+#endif
+  Count_T *counts;
+#ifdef PMAP
+  int *relevant_counts;
+  bool *overabundant;
+#endif
+  Chrpos_T **positions;
+  Chrpos_T **pointers;
+
+};
+
+struct Oligoindex_array_T {
+  T *array;
+  int length;
+
+  /* Permanent storage space to avoid allocating/deallocating memory in Oligoindex_get_mappings */
+  int max_querylength;
+  int max_genomiclength;
+  bool *genomicdiag_init_p;
+  struct Genomicdiag_T *genomicdiag;
+  int *cum_nohits_allocated;
+};
 
 
 #ifdef DEBUG
@@ -30,12 +102,25 @@ static char rcsid[] = "$Id: oligoindex_hr.c 101727 2013-07-16 23:42:52Z twu $";
 #define debug(x)
 #endif
 
+#ifdef DEBUG0
+#define debug0(x) x
+#else
+#define debug0(x)
+#endif
+
 #ifdef DEBUG1
 #define debug1(x) x
 #else
 #define debug1(x)
 #endif
 
+/* Diagonals */
+#ifdef DEBUG3
+#define debug3(x) x
+#else
+#define debug3(x)
+#endif
+
 /* dump_positions */
 #ifdef DEBUG9
 #define debug9(x) x
@@ -43,6 +128,13 @@ static char rcsid[] = "$Id: oligoindex_hr.c 101727 2013-07-16 23:42:52Z twu $";
 #define debug9(x)
 #endif
 
+/* compare SIMD with standard */
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
+
 
 static const Genomecomp_T reverse_nt[] = 
 {0x0000,0x4000,0x8000,0xC000,0x1000,0x5000,0x9000,0xD000,
@@ -8241,10 +8333,68 @@ static const Genomecomp_T reverse_nt[] =
 
 
 
+/* Code starts here */
 
+#define STRAIGHT_MASK_2  0x0000000F /* 2-mer: 1111 */
+#define STRAIGHT_MASK_3  0x0000003F /* 3-mer: 11 1111 */
+#define STRAIGHT_MASK_4  0x000000FF /* 4-mer: 1111 1111 */
+#define STRAIGHT_MASK_5  0x000003FF /* 5-mer: 11 1111 1111 */
+#define STRAIGHT_MASK_6  0x00000FFF /* 6-mer: 1111 1111 1111 */
+#define STRAIGHT_MASK_7  0x00003FFF /* 7-mer: 11 1111 1111 1111 */
+#define STRAIGHT_MASK_8  0x0000FFFF /* 8-mer: 1111 1111 1111 1111 */
+#define STRAIGHT_MASK_9  0x0003FFFF /* 9-mer: 11 1111 1111 1111 1111 */
+#define STRAIGHT_MASK_10 0x000FFFFF /* 10-mer: 1111 1111 1111 1111 1111 */
+#define STRAIGHT_MASK_11 0x003FFFFF /* 11-mer: 11 1111 1111 1111 1111 1111 */
+
+#define WOBBLE_MASK_2  0x0000000F /* 2-mer: 1111 */
+#define WOBBLE_MASK_3  0x0000003C /* 3-mer: 11 1100 */
+#define WOBBLE_MASK_4  0x000000F3 /* 4-mer: 1111 0011 */
+#define WOBBLE_MASK_5  0x000003CF /* 5-mer: 11 1100 1111 */
+#define WOBBLE_MASK_6  0x00000F3C /* 6-mer: 1111 0011 1100 */
+#define WOBBLE_MASK_7  0x00003CF3 /* 7-mer: 11 1100 1111 0011 */
+#define WOBBLE_MASK_8  0x0000F3CF /* 8-mer: 1111 0011 1100 1111 */
+#define WOBBLE_MASK_9  0x0003CF3C /* 9-mer: 11 1100 1111 0011 1100 */
+#define WOBBLE_MASK_10 0x000F3CF3 /* 10-mer: 1111 0011 1100 1111 0011 */
+#define WOBBLE_MASK_11 0x003CF3CF /* 11-mer: 11 1100 1111 0011 1100 1111 */
+
+
+#if defined(GSNAP)
+
+/* Have fewer to enable speedup.  Note: Including 7-mers causes an 8x
+   increase in run-time for score_querypos, and including 6-mers causes a
+   30x increase. */
+#define NOLIGOINDICES_MAJOR 1
+static int indexsizes_major[NOLIGOINDICES_MAJOR] = {8};
+static Shortoligomer_T masks_major[NOLIGOINDICES_MAJOR] = {STRAIGHT_MASK_8};
+static int diag_lookbacks_major[NOLIGOINDICES_MAJOR] = {120};
+static int suffnconsecutives_major[NOLIGOINDICES_MAJOR] = {20};
+
+#define NOLIGOINDICES_MINOR 3
+static int indexsizes_minor[NOLIGOINDICES_MINOR] = {8, 7, 6};
+static Shortoligomer_T masks_minor[NOLIGOINDICES_MINOR] = {STRAIGHT_MASK_8, STRAIGHT_MASK_7, STRAIGHT_MASK_6};
+static int diag_lookbacks_minor[NOLIGOINDICES_MINOR] = {120, 60, 30};
+static int suffnconsecutives_minor[NOLIGOINDICES_MINOR] = {10, 10, 10};
+/* previously was 20, 15, 10, but with limit of 256 hits, need to be equal */
+
+#else
+
+#define NOLIGOINDICES_MAJOR 3
+static int indexsizes_major[NOLIGOINDICES_MAJOR] = {8, 7, 6};
+static Shortoligomer_T masks_major[NOLIGOINDICES_MAJOR] = {STRAIGHT_MASK_8, STRAIGHT_MASK_7, STRAIGHT_MASK_6};
+static int diag_lookbacks_major[NOLIGOINDICES_MAJOR] = {120, 60, 30};
+static int suffnconsecutives_major[NOLIGOINDICES_MAJOR] = {10, 10, 10};
+/* previously was 20, 15, 10, but with limit of 256 hits, need to be equal */
+
+#define NOLIGOINDICES_MINOR 3
+static int indexsizes_minor[NOLIGOINDICES_MINOR] = {8, 7, 6};
+static Shortoligomer_T masks_minor[NOLIGOINDICES_MINOR] = {STRAIGHT_MASK_8, STRAIGHT_MASK_7, STRAIGHT_MASK_6};
+static int diag_lookbacks_minor[NOLIGOINDICES_MINOR] = {120, 60, 30};
+static int suffnconsecutives_minor[NOLIGOINDICES_MINOR] = {10, 10, 10};
+/* previously was 20, 15, 10, but with limit of 256 hits, need to be equal */
+
+#endif
 
 
-/* Code starts here */
 
 #define MASK8 0x0000FFFF
 #define MASK7 0x00003FFF
@@ -8254,15 +8404,166 @@ static const Genomecomp_T reverse_nt[] =
 static Genomecomp_T *ref_blocks;
 static Mode_T mode;
 
+
+#ifdef USE_SIMD_FOR_COUNTS
+static __m128i mask8;
+static __m128i mask7;
+static __m128i mask6;
+static __m128i mask5;
+#endif
+
+
 void
 Oligoindex_hr_setup (Genomecomp_T *ref_blocks_in, Mode_T mode_in) {
   ref_blocks = ref_blocks_in;
   mode = mode_in;
+#ifdef USE_SIMD_FOR_COUNTS
+  mask8 = _mm_set1_epi32(65535U);
+  mask7 = _mm_set1_epi32(16383U);
+  mask6 = _mm_set1_epi32(4095U);
+  mask5 = _mm_set1_epi32(1023U);
+#endif
   return;
 }
 
 
+int
+Oligoindex_indexsize (T this) {
+  return this->indexsize;
+}
+
+
+static int
+power (int base, int exponent) {
+  int result = 1, i;
+
+  for (i = 0; i < exponent; i++) {
+    result *= base;
+  }
+  return result;
+}
+
+
+static T
+Oligoindex_new (int indexsize, int diag_lookback, int suffnconsecutive
+#ifndef PMAP
+		, Shortoligomer_T mask
+#endif
+		) {
+  T new = (T) MALLOC(sizeof(*new));
+
+#ifdef PMAP
+  new->indexsize_aa = indexsize;
+  new->msb = power(NAMINOACIDS_STAGE2,indexsize-1);
+  debug(printf("msb for indexsize %d is %u\n",indexsize,new->msb));
+  new->oligospace = power(NAMINOACIDS_STAGE2,indexsize);
+#else
+  new->indexsize = indexsize;
+  new->mask = mask;
+  new->oligospace = power(4,indexsize);
+#endif
+
+  new->diag_lookback = diag_lookback;
+  new->suffnconsecutive = suffnconsecutive;
+
+  new->query_evaluated_p = false;
+#ifdef HAVE_SSE2
+  new->inquery_allocated = (__m128i *) _mm_malloc(new->oligospace * sizeof(Count_T),16);
+  new->counts_allocated = (__m128i *) _mm_malloc(new->oligospace * sizeof(Count_T),16);
+  assert((long) new->inquery_allocated % 16 == 0);
+  assert((long) new->counts_allocated % 16 == 0);
+  new->inquery = (Count_T *) new->inquery_allocated;
+  new->counts = (Count_T *) new->counts_allocated;
+#else
+  new->inquery = (bool *) CALLOC(new->oligospace,sizeof(bool));
+  new->counts = (Count_T *) CALLOC(new->oligospace,sizeof(int));
+#endif
+
+#ifdef HAVE_SSE2
+  memset((void *) new->inquery,/*false*/0x00,new->oligospace*sizeof(Count_T));
+#else
+  memset((void *) new->inquery,false,new->oligospace*sizeof(bool));
+#endif
+  memset((void *) new->counts,0,new->oligospace*sizeof(Count_T));
+
+
+#ifdef PMAP
+  new->relevant_counts = (int *) CALLOC(new->oligospace,sizeof(int));
+  new->overabundant = (bool *) CALLOC(new->oligospace,sizeof(bool));
+#endif
+  new->positions = (Chrpos_T **) CALLOC(new->oligospace+1,sizeof(Chrpos_T *));
+  new->pointers = (Chrpos_T **) CALLOC(new->oligospace,sizeof(Chrpos_T *));
+
+  return new;
+}
+
+
+int
+Oligoindex_array_length (Oligoindex_array_T oligoindices) {
+  return oligoindices->length;
+}
+
+T
+Oligoindex_array_elt (Oligoindex_array_T oligoindices, int source) {
+  return oligoindices->array[source];
+}
+
+
+Oligoindex_array_T
+Oligoindex_array_new_major (int max_querylength, int max_genomiclength) {
+  Oligoindex_array_T new = (Oligoindex_array_T) MALLOC(sizeof(*new));
+  int source;
+  int max_indexsize = 0;
+
+  new->length = NOLIGOINDICES_MAJOR;
+  new->array = (T *) CALLOC(NOLIGOINDICES_MAJOR,sizeof(T));
+  for (source = 0; source < NOLIGOINDICES_MAJOR; source++) {
+    new->array[source] = Oligoindex_new(indexsizes_major[source],diag_lookbacks_major[source],
+					suffnconsecutives_major[source],masks_major[source]);
+    if (indexsizes_major[source] > max_indexsize) {
+      max_indexsize = indexsizes_major[source];
+    }
+  }
+  
+  /* Allocate storage space for Oligoindex_get_mappings */
+  new->max_querylength = max_querylength;
+  new->max_genomiclength = max_genomiclength;
+  new->genomicdiag_init_p = (bool *) MALLOC((max_querylength+max_genomiclength+1) * sizeof(bool));
+  new->genomicdiag = (struct Genomicdiag_T *) MALLOC((max_querylength+max_genomiclength+1) * sizeof(struct Genomicdiag_T));
+  new->cum_nohits_allocated = (int *) MALLOC((max_querylength+max_indexsize+1) * sizeof(int));
+
+  return new;
+}
+
+Oligoindex_array_T
+Oligoindex_array_new_minor (int max_querylength, int max_genomiclength) {
+  Oligoindex_array_T new = (Oligoindex_array_T) MALLOC(sizeof(*new));
+  int source;
+  int max_indexsize = 0;
+
+  new->length = NOLIGOINDICES_MINOR;
+  new->array = (T *) CALLOC(NOLIGOINDICES_MINOR,sizeof(T));
+  for (source = 0; source < NOLIGOINDICES_MINOR; source++) {
+    new->array[source] = Oligoindex_new(indexsizes_minor[source],diag_lookbacks_minor[source],
+					suffnconsecutives_minor[source],masks_minor[source]);
+    if (indexsizes_minor[source] > max_indexsize) {
+      max_indexsize = indexsizes_minor[source];
+    }
+  }
+  
+  /* Allocate storage space for Oligoindex_get_mappings */
+  new->max_querylength = max_querylength;
+  new->max_genomiclength = max_genomiclength;
+  new->genomicdiag_init_p = (bool *) MALLOC((max_querylength+max_genomiclength+1) * sizeof(bool));
+  new->genomicdiag = (struct Genomicdiag_T *) MALLOC((max_querylength+max_genomiclength+1) * sizeof(struct Genomicdiag_T));
+  new->cum_nohits_allocated = (int *) MALLOC((max_querylength+max_indexsize+1) * sizeof(int));
+
+  return new;
+}
+
 
+#if 0
+/* For debugging */
 static void
 write_chars (Genomecomp_T high, Genomecomp_T low, Genomecomp_T flags) {
   char Buffer[33];
@@ -8331,6 +8632,7 @@ Genome_print_blocks (Genomecomp_T *blocks, Univcoord_T startpos, Univcoord_T end
 
   return;
 }
+#endif
 
 
 /*                87654321 */
@@ -8342,7 +8644,7 @@ Genome_print_blocks (Genomecomp_T *blocks, Univcoord_T startpos, Univcoord_T end
 /*                      87654321 */
 #define LOW_TWO_BITS  0x00000003
 
-#ifdef DEBUG9
+#if defined(DEBUG) || defined(DEBUG9)
 static char *
 shortoligo_nt (Shortoligomer_T oligo, int oligosize) {
   char *nt;
@@ -8365,28 +8667,16 @@ shortoligo_nt (Shortoligomer_T oligo, int oligosize) {
 
   return nt;
 }
+#endif
 
+#ifdef DEBUG9
 static void
 dump_positions (Chrpos_T **positions, Count_T *counts, int oligospace, int indexsize) {
   int i;
-#ifdef PMAP
-  char *aa;
-#else
   char *nt;
-#endif
 
   printf("Entered dump_positions with oligospace %d\n",oligospace);
 
-#ifdef PMAP
-  for (i = 0; i < oligospace; i++) {
-    aa = aaindex_aa(i,indexsize/3);
-    if (counts[i] >= 1) {
-      printf("AA %s => %d entries: %u...%u\n",
-	     aa,counts[i],positions[i][0],positions[i][counts[i]-1]);
-    }
-    FREE(aa);
-  }
-#else
   for (i = 0; i < oligospace; i++) {
     nt = shortoligo_nt(i,indexsize);
     if (counts[i] >= 1) {
@@ -8395,7 +8685,6 @@ dump_positions (Chrpos_T **positions, Count_T *counts, int oligospace, int index
     }
     FREE(nt);
   }
-#endif
 
   return;
 }
@@ -8433,8 +8722,8 @@ count_8mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
   while (pos <= enddiscard && pos <= 8) {
     masked = high_rev >> (16 - 2*pos);
     masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8442,16 +8731,16 @@ count_8mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = low_rev >> (48 - 2*pos);
     masked |= high_rev << (2*pos - 16);
     masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
   while (pos <= enddiscard && pos <= 24) {
     masked = low_rev >> (48 - 2*pos);
     masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
     
@@ -8459,8 +8748,8 @@ count_8mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = nexthigh_rev >> (80 - 2*pos);
     masked |= low_rev << (2*pos - 48);
     masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8551,8 +8840,8 @@ count_7mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
   while (pos <= enddiscard && pos <= 9) {
     masked = high_rev >> (18 - 2*pos);
     masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8560,16 +8849,16 @@ count_7mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = low_rev >> (50 - 2*pos);
     masked |= high_rev << (2*pos - 18);
     masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
   while (pos <= enddiscard && pos <= 25) {
     masked = low_rev >> (50 - 2*pos);
     masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
     
@@ -8577,8 +8866,8 @@ count_7mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = nexthigh_rev >> (82 - 2*pos);
     masked |= low_rev << (2*pos - 50);
     masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8665,8 +8954,8 @@ count_6mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
   while (pos <= enddiscard && pos <= 10) {
     masked = high_rev >> (20 - 2*pos);
     masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8674,16 +8963,16 @@ count_6mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = low_rev >> (52 - 2*pos);
     masked |= high_rev << (2*pos - 20);
     masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
   while (pos <= enddiscard && pos <= 26) {
     masked = low_rev >> (52 - 2*pos);
     masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
     
@@ -8691,8 +8980,8 @@ count_6mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = nexthigh_rev >> (84 - 2*pos);
     masked |= low_rev << (2*pos - 52);
     masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8780,8 +9069,8 @@ count_5mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
   while (pos <= enddiscard && pos <= 11) {
     masked = high_rev >> (22 - 2*pos);
     masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8789,16 +9078,16 @@ count_5mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = low_rev >> (54 - 2*pos);
     masked |= high_rev << (2*pos - 22);
     masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
   while (pos <= enddiscard && pos <= 27) {
     masked = low_rev >> (54 - 2*pos);
     masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
     
@@ -8806,8 +9095,8 @@ count_5mers_fwd_partial (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T lo
     masked = nexthigh_rev >> (86 - 2*pos);
     masked |= low_rev << (2*pos - 54);
     masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos++;
   }
 
@@ -8889,152 +9178,284 @@ static void
 count_8mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
   Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 16;		/* 0 */
-  debug(printf("%04X\n",masked));
+  masked = high_rev >> 16;		/* 0, No mask necessary */
   counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
   
   masked = (high_rev >> 14) & MASK8;	/* 1 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
 
   masked = (high_rev >> 12) & MASK8;	/* 2 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
   masked = (high_rev >> 10) & MASK8;	/* 3 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
   masked = (high_rev >> 8) & MASK8;	/* 4 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
 
   masked = (high_rev >> 6) & MASK8;	/* 5 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
 
   masked = (high_rev >> 4) & MASK8;	/* 6 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
 
   masked = (high_rev >> 2) & MASK8;	/* 7 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
 
   masked = high_rev & MASK8;		/* 8 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
 
 
   oligo = low_rev >> 18;		/* For 9..15 */
   oligo |= high_rev << 14;
 
   masked = (oligo >> 12) & MASK8; /* 9 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 10) & MASK8; /* 10 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 8) & MASK8; /* 11 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 6) & MASK8; /* 12 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 4) & MASK8; /* 13 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 2) & MASK8; /* 14 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
 
   masked = oligo & MASK8; /* 15 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
 
-  masked = low_rev >> 16;		/* 16 */
-  debug(printf("%04X\n",masked));
+  masked = low_rev >> 16;		/* 16, No mask necessary */
   counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
   
   masked = (low_rev >> 14) & MASK8; /* 17 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
 
   masked = (low_rev >> 12) & MASK8; /* 18 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
 
   masked = (low_rev >> 10) & MASK8; /* 19 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
 
   masked = (low_rev >> 8) & MASK8;	/* 20 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
 
   masked = (low_rev >> 6) & MASK8;	/* 21 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
 
   masked = (low_rev >> 4) & MASK8;	/* 22 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
 
   masked = (low_rev >> 2) & MASK8;	/* 23 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
 
   masked = low_rev & MASK8;	/* 24 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
 
 
   oligo = nexthigh_rev >> 18;	/* For 25..31 */
   oligo |= low_rev << 14;
 
   masked = (oligo >> 12) & MASK8; /* 25 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 10) & MASK8; /* 26 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 8) & MASK8; /* 27 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 6) & MASK8; /* 28 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 4) & MASK8; /* 29 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
 
   masked = (oligo >> 2) & MASK8; /* 30 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
 
   masked = oligo & MASK8; /* 31 */
-  debug(printf("%04X\n",masked));
   counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
 
   return;
 }
 
 
-static int
-store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
-		 Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
-  Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 16;		/* 0 */
+#ifdef USE_SIMD_FOR_COUNTS
+/* Fwd and rev procedures differ only in the order of indices */
+static void
+count_fwdrev_simd (Count_T *counts, UINT4 *array) {
+  UINT4 *ptr;
+
+  /* Fwd: Starts with 0 because we used _setr_ and not _set_ */
+  /* Rev: Starts with 63 because we used _set_ and not _setr_ */
+  ptr = &(array[0]);
+  debug(printf("Fwd:  0 %04X, 16 %04X, 32 %04X, 48 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 63 %04X, 47 %04X, 31 %04X, 15 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 0 */ /* 63 */
+  counts[*ptr++] += 1;	/* 16 */ /* 47 */
+  counts[*ptr++] += 1;	/* 32 */ /* 31 */
+  counts[*ptr++] += 1;	/* 48 */ /* 15 */
+
+  debug(printf("Fwd:  1 %04X, 17 %04X, 33 %04X, 49 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 62 %04X, 46 %04X, 30 %04X, 14 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 1 */ /* 62 */
+  counts[*ptr++] += 1;	/* 17 */ /* 46 */
+  counts[*ptr++] += 1;	/* 33 */ /* 30 */
+  counts[*ptr++] += 1;	/* 49 */ /* 14 */
+
+  debug(printf("Fwd:  2 %04X, 18 %04X, 34 %04X, 50 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 61 %04X, 45 %04X, 29 %04X, 13 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 2 */ /* 61 */
+  counts[*ptr++] += 1;	/* 18 */ /* 45 */
+  counts[*ptr++] += 1;	/* 34 */ /* 29 */
+  counts[*ptr++] += 1;	/* 50 */ /* 13 */
+
+  debug(printf("Fwd:  3 %04X, 19 %04X, 35 %04X, 51 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 60 %04X, 44 %04X, 28 %04X, 12 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 3 */ /* 60 */
+  counts[*ptr++] += 1;	/* 19 */ /* 44 */
+  counts[*ptr++] += 1;	/* 35 */ /* 28 */
+  counts[*ptr++] += 1;	/* 51 */ /* 12 */
+
+  debug(printf("Fwd:  4 %04X, 20 %04X, 36 %04X, 52 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 59 %04X, 43 %04X, 27 %04X, 11 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 4 */ /* 59 */
+  counts[*ptr++] += 1;	/* 20 */ /* 43 */
+  counts[*ptr++] += 1;	/* 36 */ /* 27 */
+  counts[*ptr++] += 1;	/* 52 */ /* 11 */
+
+  debug(printf("Fwd:  5 %04X, 21 %04X, 37 %04X, 53 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 58 %04X, 42 %04X, 26 %04X, 10 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 5 */ /* 58 */
+  counts[*ptr++] += 1;	/* 21 */ /* 42 */
+  counts[*ptr++] += 1;	/* 37 */ /* 26 */
+  counts[*ptr++] += 1;	/* 53 */ /* 10 */
+
+  debug(printf("Fwd:  6 %04X, 22 %04X, 38 %04X, 54 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 57 %04X, 41 %04X, 25 %04X,  9 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 6 */ /* 57 */
+  counts[*ptr++] += 1;	/* 22 */ /* 41 */
+  counts[*ptr++] += 1;	/* 38 */ /* 25 */
+  counts[*ptr++] += 1;	/* 54 */ /* 9 */
+
+  debug(printf("Fwd:  7 %04X, 23 %04X, 39 %04X, 55 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 56 %04X, 40 %04X, 24 %04X,  8 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 7 */ /* 56 */
+  counts[*ptr++] += 1;	/* 23 */ /* 50 */
+  counts[*ptr++] += 1;	/* 39 */ /* 24 */
+  counts[*ptr++] += 1;	/* 55 */ /* 8 */
+
+  debug(printf("Fwd:  8 %04X, 24 %04X, 40 %04X, 56 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 55 %04X, 39 %04X, 23 %04X,  7 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 8 */ /* 55 */
+  counts[*ptr++] += 1;	/* 24 */ /* 39 */
+  counts[*ptr++] += 1;	/* 40 */ /* 23 */
+  counts[*ptr++] += 1;	/* 56 */ /* 7 */
+
+  debug(printf("Fwd:  9 %04X, 25 %04X, 41 %04X, 57 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 54 %04X, 38 %04X, 22 %04X,  6 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 9 */ /* 54 */
+  counts[*ptr++] += 1;	/* 25 */ /* 38 */
+  counts[*ptr++] += 1;	/* 41 */ /* 22 */
+  counts[*ptr++] += 1;	/* 57 */ /* 6 */
+
+  debug(printf("Fwd: 10 %04X, 26 %04X, 42 %04X, 58 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 53 %04X, 37 %04X, 21 %04X,  5 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 10 */ /* 53 */
+  counts[*ptr++] += 1;	/* 26 */ /* 37 */
+  counts[*ptr++] += 1;	/* 42 */ /* 21 */
+  counts[*ptr++] += 1;	/* 58 */ /* 5 */
+
+  debug(printf("Fwd: 11 %04X, 27 %04X, 43 %04X, 59 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 52 %04X, 36 %04X, 20 %04X,  4 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 11 */ /* 52 */
+  counts[*ptr++] += 1;	/* 27 */ /* 36 */
+  counts[*ptr++] += 1;	/* 43 */ /* 20 */
+  counts[*ptr++] += 1;	/* 59 */ /* 4 */
+
+  debug(printf("Fwd: 12 %04X, 28 %04X, 44 %04X, 60 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 51 %04X, 35 %04X, 19 %04X,  3 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 12 */ /* 51 */
+  counts[*ptr++] += 1;	/* 28 */ /* 35 */
+  counts[*ptr++] += 1;	/* 44 */ /* 19 */
+  counts[*ptr++] += 1;	/* 60 */ /* 3 */
+
+  debug(printf("Fwd: 13 %04X, 29 %04X, 45 %04X, 61 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 50 %04X, 34 %04X, 18 %04X,  2 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 13 */ /* 50 */
+  counts[*ptr++] += 1;	/* 29 */ /* 34 */
+  counts[*ptr++] += 1;	/* 45 */ /* 18 */
+  counts[*ptr++] += 1;	/* 61 */ /* 2 */
+
+  debug(printf("Fwd: 14 %04X, 30 %04X, 46 %04X, 62 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 49 %04X, 33 %04X, 17 %04X,  1 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 14 */ /* 49 */
+  counts[*ptr++] += 1;	/* 30 */ /* 33 */
+  counts[*ptr++] += 1;	/* 46 */ /* 17 */
+  counts[*ptr++] += 1;	/* 62 */ /* 1 */
+
+  debug(printf("Fwd: 15 %04X, 31 %04X, 47 %04X, 63 %04X || ",ptr[0],ptr[1],ptr[2],ptr[3]));
+  debug(printf("Rev: 48 %04X, 32 %04X, 16 %04X,  0 %04X\n",ptr[0],ptr[1],ptr[2],ptr[3]));
+  counts[*ptr++] += 1;	/* 15 */ /* 48 */
+  counts[*ptr++] += 1;	/* 31 */ /* 32 */
+  counts[*ptr++] += 1;	/* 47 */ /* 16 */
+  counts[*ptr++] += 1;	/* 63 */ /* 0 */
+
+  return;
+}
+#endif
+
+
+#ifdef USE_SIMD_FOR_COUNTS
+/* Forward and reverse procedures are identical, because forward has
+   chrpos ascending from left and reverse has chrpos ascending from
+   right */
+static Chrpos_T
+store_fwdrev_simd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+		   UINT4 *array) {
+  Genomecomp_T masked;
+
+  /* Row 0 */
+  masked = array[0];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9042,8 +9463,8 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
       *(pointers[masked]++) = chrpos;
     }
   }
-  
-  masked = (high_rev >> 14) & MASK8;	/* 1 */
+
+  masked = array[4];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9052,7 +9473,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 12) & MASK8;	/* 2 */
+  masked = array[8];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9061,7 +9482,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 10) & MASK8;	/* 3 */
+  masked = array[12];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9070,7 +9491,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 8) & MASK8;	/* 4 */
+  masked = array[16];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9079,7 +9500,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 6) & MASK8;	/* 5 */
+  masked = array[20];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9088,7 +9509,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 4) & MASK8;	/* 6 */
+  masked = array[24];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9097,7 +9518,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 2) & MASK8;	/* 7 */
+  masked = array[28];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9106,7 +9527,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = high_rev & MASK8;		/* 8 */
+  masked = array[32];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9115,11 +9536,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  oligo = low_rev >> 18;		/* For 9..15 */
-  oligo |= high_rev << 14;
-
-  masked = (oligo >> 12) & MASK8; /* 9 */
+  masked = array[36];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9128,7 +9545,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 10) & MASK8; /* 10 */
+  masked = array[40];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9137,7 +9554,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 8) & MASK8; /* 11 */
+  masked = array[44];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9146,7 +9563,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK8; /* 12 */
+  masked = array[48];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9155,7 +9572,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK8; /* 13 */
+  masked = array[52];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9164,7 +9581,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK8; /* 14 */
+  masked = array[56];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9173,7 +9590,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK8; /* 15 */
+  masked = array[60];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9182,8 +9599,8 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = low_rev >> 16;		/* 16 */
+  /* Row 1 */
+  masked = array[1];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9191,8 +9608,8 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
       *(pointers[masked]++) = chrpos + 16;
     }
   }
-  
-  masked = (low_rev >> 14) & MASK8; /* 17 */
+
+  masked = array[5];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9201,7 +9618,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 12) & MASK8; /* 18 */
+  masked = array[9];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9210,7 +9627,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 10) & MASK8; /* 19 */
+  masked = array[13];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9219,7 +9636,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 8) & MASK8;	/* 20 */
+  masked = array[17];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9228,7 +9645,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 6) & MASK8;	/* 21 */
+  masked = array[21];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9237,7 +9654,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 4) & MASK8;	/* 22 */
+  masked = array[25];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9246,7 +9663,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 2) & MASK8;	/* 23 */
+  masked = array[29];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9255,7 +9672,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = low_rev & MASK8;	/* 24 */
+  masked = array[33];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9264,11 +9681,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  oligo = nexthigh_rev >> 18;	/* For 25..31 */
-  oligo |= low_rev << 14;
-
-  masked = (oligo >> 12) & MASK8; /* 25 */
+  masked = array[37];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9277,7 +9690,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 10) & MASK8; /* 26 */
+  masked = array[41];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9286,7 +9699,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 8) & MASK8; /* 27 */
+  masked = array[45];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9295,7 +9708,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK8; /* 28 */
+  masked = array[49];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9304,7 +9717,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK8; /* 29 */
+  masked = array[53];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9313,7 +9726,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK8; /* 30 */
+  masked = array[57];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9322,7 +9735,7 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK8; /* 31 */
+  masked = array[61];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9331,612 +9744,825 @@ store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  return chrpos + 32;
-}
-
 
-static void
-count_7mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
-  Genomecomp_T masked, oligo;
+  /* Row 2 */
+  masked = array[2];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 32;
+    }
+  }
 
-  masked = high_rev >> 18;		/* 0 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-  
-  masked = (high_rev >> 16) & MASK7;	/* 1 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[6];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 33;
+    }
+  }
 
-  masked = (high_rev >> 14) & MASK7;	/* 2 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[10];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 34;
+    }
+  }
 
-  masked = (high_rev >> 12) & MASK7;	/* 3 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[14];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 35;
+    }
+  }
 
-  masked = (high_rev >> 10) & MASK7;	/* 4 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[18];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 36;
+    }
+  }
 
-  masked = (high_rev >> 8) & MASK7;	/* 5 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[22];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 37;
+    }
+  }
 
-  masked = (high_rev >> 6) & MASK7;	/* 6 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[26];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 38;
+    }
+  }
 
-  masked = (high_rev >> 4) & MASK7;	/* 7 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[30];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 39;
+    }
+  }
 
-  masked = (high_rev >> 2) & MASK7; /* 8 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = high_rev & MASK7;	/* 9 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-
-  oligo = low_rev >> 20;	/* For 10..15 */
-  oligo |= high_rev << 12;
-
-  masked = (oligo >> 10) & MASK7; /* 10 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (oligo >> 8) & MASK7; /* 11 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (oligo >> 6) & MASK7; /* 12 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (oligo >> 4) & MASK7; /* 13 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (oligo >> 2) & MASK7; /* 14 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = oligo & MASK7; /* 15 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-
-  masked = low_rev >> 18;		/* 16 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-  
-  masked = (low_rev >> 16) & MASK7; /* 17 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 14) & MASK7; /* 18 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 12) & MASK7; /* 19 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 10) & MASK7;	/* 20 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 8) & MASK7;	/* 21 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 6) & MASK7;	/* 22 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 4) & MASK7;	/* 23 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (low_rev >> 2) & MASK7;	/* 24 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = low_rev & MASK7;	/* 25 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-
-  oligo = nexthigh_rev >> 20;	/* For 26..31 */
-  oligo |= low_rev << 12;
-
-  masked = (oligo >> 10) & MASK7; /* 26 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[34];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 40;
+    }
+  }
 
-  masked = (oligo >> 8) & MASK7; /* 27 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[38];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 41;
+    }
+  }
 
-  masked = (oligo >> 6) & MASK7; /* 28 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[42];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 42;
+    }
+  }
 
-  masked = (oligo >> 4) & MASK7; /* 29 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[46];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 43;
+    }
+  }
 
-  masked = (oligo >> 2) & MASK7; /* 30 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[50];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 44;
+    }
+  }
 
-  masked = oligo & MASK7; /* 31 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  masked = array[54];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 45;
+    }
+  }
 
-  return;
-}
+  masked = array[58];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 46;
+    }
+  }
 
+  masked = array[62];
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 47;
+    }
+  }
 
-static int
-store_7mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
-		 Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
-  Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 18;		/* 0 */
+  /* Row 3 */
+  masked = array[3];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos;
+      *(pointers[masked]++) = chrpos + 48;
     }
   }
-  
-  masked = (high_rev >> 16) & MASK7;	/* 1 */
+
+  masked = array[7];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 1;
+      *(pointers[masked]++) = chrpos + 49;
     }
   }
 
-  masked = (high_rev >> 14) & MASK7;	/* 2 */
+  masked = array[11];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 2;
+      *(pointers[masked]++) = chrpos + 50;
     }
   }
 
-  masked = (high_rev >> 12) & MASK7;	/* 3 */
+  masked = array[15];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 3;
+      *(pointers[masked]++) = chrpos + 51;
     }
   }
 
-  masked = (high_rev >> 10) & MASK7;	/* 4 */
+  masked = array[19];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 4;
+      *(pointers[masked]++) = chrpos + 52;
     }
   }
 
-  masked = (high_rev >> 8) & MASK7;	/* 5 */
+  masked = array[23];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 5;
+      *(pointers[masked]++) = chrpos + 53;
     }
   }
 
-  masked = (high_rev >> 6) & MASK7;	/* 6 */
+  masked = array[27];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 6;
+      *(pointers[masked]++) = chrpos + 54;
     }
   }
 
-  masked = (high_rev >> 4) & MASK7;	/* 7 */
+  masked = array[31];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 7;
+      *(pointers[masked]++) = chrpos + 55;
     }
   }
 
-  masked = (high_rev >> 2) & MASK7; /* 8 */
+  masked = array[35];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 8;
+      *(pointers[masked]++) = chrpos + 56;
     }
   }
 
-  masked = high_rev & MASK7;	/* 9 */
+  masked = array[39];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 9;
+      *(pointers[masked]++) = chrpos + 57;
     }
   }
 
-
-  oligo = low_rev >> 20;	/* For 10..15 */
-  oligo |= high_rev << 12;
-
-  masked = (oligo >> 10) & MASK7; /* 10 */
+  masked = array[43];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 10;
+      *(pointers[masked]++) = chrpos + 58;
     }
   }
 
-  masked = (oligo >> 8) & MASK7; /* 11 */
+  masked = array[47];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 11;
+      *(pointers[masked]++) = chrpos + 59;
     }
   }
 
-  masked = (oligo >> 6) & MASK7; /* 12 */
+  masked = array[51];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 12;
+      *(pointers[masked]++) = chrpos + 60;
     }
   }
 
-  masked = (oligo >> 4) & MASK7; /* 13 */
+  masked = array[55];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 13;
+      *(pointers[masked]++) = chrpos + 61;
     }
   }
 
-  masked = (oligo >> 2) & MASK7; /* 14 */
+  masked = array[59];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 14;
+      *(pointers[masked]++) = chrpos + 62;
     }
   }
 
-  masked = oligo & MASK7; /* 15 */
+  masked = array[63];
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 15;
+      *(pointers[masked]++) = chrpos + 63;
     }
   }
 
+  return chrpos + 64;
+}
+#endif
+
+
+
+/* Expecting current to have {high0_rev, low0_rev, high1_rev,
+   low1_rev}, and next to have {low0_rev, high1_rev, low1_rev, and
+   high2_rev} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_8mers_fwd_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,16)); /* No mask necessary */
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask8));
+  _mm_store_si128(out++, _mm_and_si128( current, mask8));
+
+  oligo = _mm_or_si128( _mm_srli_epi32(next,18), _mm_slli_epi32(current,14));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,12), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,10), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,8), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask8));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask8));
+
+  return;
+}
+#endif
+
 
-  masked = low_rev >> 18;		/* 16 */
+static int
+store_8mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+		 Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
+  Genomecomp_T masked, oligo;
+
+  masked = high_rev >> 16;		/* 0, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 16;
+      *(pointers[masked]++) = chrpos;
     }
   }
   
-  masked = (low_rev >> 16) & MASK7; /* 17 */
+  masked = (high_rev >> 14) & MASK8;	/* 1 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 17;
+      *(pointers[masked]++) = chrpos + 1;
     }
   }
 
-  masked = (low_rev >> 14) & MASK7; /* 18 */
+  masked = (high_rev >> 12) & MASK8;	/* 2 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 18;
+      *(pointers[masked]++) = chrpos + 2;
     }
   }
 
-  masked = (low_rev >> 12) & MASK7; /* 19 */
+  masked = (high_rev >> 10) & MASK8;	/* 3 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 19;
+      *(pointers[masked]++) = chrpos + 3;
     }
   }
 
-  masked = (low_rev >> 10) & MASK7;	/* 20 */
+  masked = (high_rev >> 8) & MASK8;	/* 4 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 20;
+      *(pointers[masked]++) = chrpos + 4;
     }
   }
 
-  masked = (low_rev >> 8) & MASK7;	/* 21 */
+  masked = (high_rev >> 6) & MASK8;	/* 5 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 21;
+      *(pointers[masked]++) = chrpos + 5;
     }
   }
 
-  masked = (low_rev >> 6) & MASK7;	/* 22 */
+  masked = (high_rev >> 4) & MASK8;	/* 6 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 22;
+      *(pointers[masked]++) = chrpos + 6;
     }
   }
 
-  masked = (low_rev >> 4) & MASK7;	/* 23 */
+  masked = (high_rev >> 2) & MASK8;	/* 7 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 23;
+      *(pointers[masked]++) = chrpos + 7;
     }
   }
 
-  masked = (low_rev >> 2) & MASK7;	/* 24 */
+  masked = high_rev & MASK8;		/* 8 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 24;
+      *(pointers[masked]++) = chrpos + 8;
     }
   }
 
-  masked = low_rev & MASK7;	/* 25 */
+
+  oligo = low_rev >> 18;		/* For 9..15 */
+  oligo |= high_rev << 14;
+
+  masked = (oligo >> 12) & MASK8; /* 9 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 25;
+      *(pointers[masked]++) = chrpos + 9;
     }
   }
 
-
-  oligo = nexthigh_rev >> 20;	/* For 26..31 */
-  oligo |= low_rev << 12;
-
-  masked = (oligo >> 10) & MASK7; /* 26 */
+  masked = (oligo >> 10) & MASK8; /* 10 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 26;
+      *(pointers[masked]++) = chrpos + 10;
     }
   }
 
-  masked = (oligo >> 8) & MASK7; /* 27 */
+  masked = (oligo >> 8) & MASK8; /* 11 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 27;
+      *(pointers[masked]++) = chrpos + 11;
     }
   }
 
-  masked = (oligo >> 6) & MASK7; /* 28 */
+  masked = (oligo >> 6) & MASK8; /* 12 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 28;
+      *(pointers[masked]++) = chrpos + 12;
     }
   }
 
-  masked = (oligo >> 4) & MASK7; /* 29 */
+  masked = (oligo >> 4) & MASK8; /* 13 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 29;
+      *(pointers[masked]++) = chrpos + 13;
     }
   }
 
-  masked = (oligo >> 2) & MASK7; /* 30 */
+  masked = (oligo >> 2) & MASK8; /* 14 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 30;
+      *(pointers[masked]++) = chrpos + 14;
     }
   }
 
-  masked = oligo & MASK7; /* 31 */
+  masked = oligo & MASK8; /* 15 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 31;
+      *(pointers[masked]++) = chrpos + 15;
     }
   }
 
-  return chrpos + 32;
-}
-
 
-static void
-count_6mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
+  masked = low_rev >> 16;		/* 16, No mask necessary */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 16;
+    }
+  }
+  
+  masked = (low_rev >> 14) & MASK8; /* 17 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 17;
+    }
+  }
+
+  masked = (low_rev >> 12) & MASK8; /* 18 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 18;
+    }
+  }
+
+  masked = (low_rev >> 10) & MASK8; /* 19 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 19;
+    }
+  }
+
+  masked = (low_rev >> 8) & MASK8;	/* 20 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 20;
+    }
+  }
+
+  masked = (low_rev >> 6) & MASK8;	/* 21 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 21;
+    }
+  }
+
+  masked = (low_rev >> 4) & MASK8;	/* 22 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 22;
+    }
+  }
+
+  masked = (low_rev >> 2) & MASK8;	/* 23 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 23;
+    }
+  }
+
+  masked = low_rev & MASK8;	/* 24 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 24;
+    }
+  }
+
+
+  oligo = nexthigh_rev >> 18;	/* For 25..31 */
+  oligo |= low_rev << 14;
+
+  masked = (oligo >> 12) & MASK8; /* 25 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 25;
+    }
+  }
+
+  masked = (oligo >> 10) & MASK8; /* 26 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 26;
+    }
+  }
+
+  masked = (oligo >> 8) & MASK8; /* 27 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 27;
+    }
+  }
+
+  masked = (oligo >> 6) & MASK8; /* 28 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 28;
+    }
+  }
+
+  masked = (oligo >> 4) & MASK8; /* 29 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 29;
+    }
+  }
+
+  masked = (oligo >> 2) & MASK8; /* 30 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 30;
+    }
+  }
+
+  masked = oligo & MASK8; /* 31 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 31;
+    }
+  }
+
+  return chrpos + 32;
+}
+
+
+
+static void
+count_7mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
   Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 20;		/* 0 */
-  debug(printf("%04X\n",masked));
+  masked = high_rev >> 18;		/* 0, No mask necessary */
   counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
   
-  masked = (high_rev >> 18) & MASK6;	/* 1 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 16) & MASK7;	/* 1 */
   counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 16) & MASK6;	/* 2 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 14) & MASK7;	/* 2 */
   counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 14) & MASK6;	/* 3 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 12) & MASK7;	/* 3 */
   counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 12) & MASK6;	/* 4 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 10) & MASK7;	/* 4 */
   counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 10) & MASK6;	/* 5 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 8) & MASK7;	/* 5 */
   counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 8) & MASK6;	/* 6 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 6) & MASK7;	/* 6 */
   counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 6) & MASK6;	/* 7 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 4) & MASK7;	/* 7 */
   counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 4) & MASK6; /* 8 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 2) & MASK7; /* 8 */
   counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 2) & MASK6; /* 9 */
-  debug(printf("%04X\n",masked));
+  masked = high_rev & MASK7;	/* 9 */
   counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
 
-  masked = high_rev & MASK6;	/* 10 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  oligo = low_rev >> 20;	/* For 10..15 */
+  oligo |= high_rev << 12;
 
-  oligo = low_rev >> 22;	/* For 11..15 */
-  oligo |= high_rev << 10;
+  masked = (oligo >> 10) & MASK7; /* 10 */
+  counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 8) & MASK6; /* 11 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 8) & MASK7; /* 11 */
   counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK6; /* 12 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK7; /* 12 */
   counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK6; /* 13 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK7; /* 13 */
   counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK6; /* 14 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK7; /* 14 */
   counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK6; /* 15 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK7; /* 15 */
   counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
 
 
-  masked = low_rev >> 20;		/* 16 */
-  debug(printf("%04X\n",masked));
+  masked = low_rev >> 18;		/* 16, No mask necessary */
   counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
   
-  masked = (low_rev >> 18) & MASK6; /* 17 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 16) & MASK7; /* 17 */
   counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 16) & MASK6; /* 18 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 14) & MASK7; /* 18 */
   counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 14) & MASK6; /* 19 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 12) & MASK7; /* 19 */
   counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 12) & MASK6;	/* 20 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 10) & MASK7;	/* 20 */
   counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 10) & MASK6;	/* 21 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 8) & MASK7;	/* 21 */
   counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 8) & MASK6;	/* 22 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 6) & MASK7;	/* 22 */
   counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 6) & MASK6;	/* 23 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 4) & MASK7;	/* 23 */
   counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 4) & MASK6;	/* 24 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 2) & MASK7;	/* 24 */
   counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 2) & MASK6;	/* 25 */
-  debug(printf("%04X\n",masked));
+  masked = low_rev & MASK7;	/* 25 */
   counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
 
-  masked = low_rev & MASK6;	/* 26 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  oligo = nexthigh_rev >> 20;	/* For 26..31 */
+  oligo |= low_rev << 12;
 
-  oligo = nexthigh_rev >> 22;	/* For 27..31 */
-  oligo |= low_rev << 10;
+  masked = (oligo >> 10) & MASK7; /* 26 */
+  counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 8) & MASK6; /* 27 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 8) & MASK7; /* 27 */
   counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK6; /* 28 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK7; /* 28 */
   counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK6; /* 29 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK7; /* 29 */
   counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK6; /* 30 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK7; /* 30 */
   counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK6; /* 31 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK7; /* 31 */
   counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
+
+  return;
+}
+
+/* Expecting current to have {high0_rev, low0_rev, high1_rev,
+   low1_rev}, and next to have {low0_rev, high1_rev, low1_rev, and
+   high2_rev} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_7mers_fwd_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,18)); /* No mask necessary */
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,16), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask7));
+  _mm_store_si128(out++, _mm_and_si128( current, mask7));
+
+  oligo = _mm_or_si128( _mm_srli_epi32(next,20), _mm_slli_epi32(current,12));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,10), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,8), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask7));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask7));
 
   return;
 }
+#endif
 
 
 static int
-store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+store_7mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 		 Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
   Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 20;		/* 0 */
+  masked = high_rev >> 18;		/* 0, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9945,7 +10571,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
   
-  masked = (high_rev >> 18) & MASK6;	/* 1 */
+  masked = (high_rev >> 16) & MASK7;	/* 1 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9954,7 +10580,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 16) & MASK6;	/* 2 */
+  masked = (high_rev >> 14) & MASK7;	/* 2 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9963,7 +10589,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 14) & MASK6;	/* 3 */
+  masked = (high_rev >> 12) & MASK7;	/* 3 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9972,7 +10598,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 12) & MASK6;	/* 4 */
+  masked = (high_rev >> 10) & MASK7;	/* 4 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9981,7 +10607,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 10) & MASK6;	/* 5 */
+  masked = (high_rev >> 8) & MASK7;	/* 5 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9990,7 +10616,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 8) & MASK6;	/* 6 */
+  masked = (high_rev >> 6) & MASK7;	/* 6 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -9999,7 +10625,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 6) & MASK6;	/* 7 */
+  masked = (high_rev >> 4) & MASK7;	/* 7 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10008,7 +10634,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 4) & MASK6; /* 8 */
+  masked = (high_rev >> 2) & MASK7; /* 8 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10017,7 +10643,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 2) & MASK6; /* 9 */
+  masked = high_rev & MASK7;	/* 9 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10026,20 +10652,20 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = high_rev & MASK6;	/* 10 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
+
+  oligo = low_rev >> 20;	/* For 10..15 */
+  oligo |= high_rev << 12;
+
+  masked = (oligo >> 10) & MASK7; /* 10 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
     } else {
       *(pointers[masked]++) = chrpos + 10;
     }
   }
 
-
-  oligo = low_rev >> 22;	/* For 11..15 */
-  oligo |= high_rev << 10;
-
-  masked = (oligo >> 8) & MASK6; /* 11 */
+  masked = (oligo >> 8) & MASK7; /* 11 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10048,7 +10674,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK6; /* 12 */
+  masked = (oligo >> 6) & MASK7; /* 12 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10057,7 +10683,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK6; /* 13 */
+  masked = (oligo >> 4) & MASK7; /* 13 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10066,7 +10692,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK6; /* 14 */
+  masked = (oligo >> 2) & MASK7; /* 14 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10075,7 +10701,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK6; /* 15 */
+  masked = oligo & MASK7; /* 15 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10085,7 +10711,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
   }
 
 
-  masked = low_rev >> 20;		/* 16 */
+  masked = low_rev >> 18;		/* 16, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10094,7 +10720,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
   
-  masked = (low_rev >> 18) & MASK6; /* 17 */
+  masked = (low_rev >> 16) & MASK7; /* 17 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10103,7 +10729,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 16) & MASK6; /* 18 */
+  masked = (low_rev >> 14) & MASK7; /* 18 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10112,7 +10738,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 14) & MASK6; /* 19 */
+  masked = (low_rev >> 12) & MASK7; /* 19 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10121,7 +10747,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 12) & MASK6;	/* 20 */
+  masked = (low_rev >> 10) & MASK7;	/* 20 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10130,7 +10756,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 10) & MASK6;	/* 21 */
+  masked = (low_rev >> 8) & MASK7;	/* 21 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10139,7 +10765,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 8) & MASK6;	/* 22 */
+  masked = (low_rev >> 6) & MASK7;	/* 22 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10148,7 +10774,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 6) & MASK6;	/* 23 */
+  masked = (low_rev >> 4) & MASK7;	/* 23 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10157,7 +10783,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 4) & MASK6;	/* 24 */
+  masked = (low_rev >> 2) & MASK7;	/* 24 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10166,7 +10792,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 2) & MASK6;	/* 25 */
+  masked = low_rev & MASK7;	/* 25 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10175,7 +10801,11 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = low_rev & MASK6;	/* 26 */
+
+  oligo = nexthigh_rev >> 20;	/* For 26..31 */
+  oligo |= low_rev << 12;
+
+  masked = (oligo >> 10) & MASK7; /* 26 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10184,11 +10814,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  oligo = nexthigh_rev >> 22;	/* For 27..31 */
-  oligo |= low_rev << 10;
-
-  masked = (oligo >> 8) & MASK6; /* 27 */
+  masked = (oligo >> 8) & MASK7; /* 27 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10197,7 +10823,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK6; /* 28 */
+  masked = (oligo >> 6) & MASK7; /* 28 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10206,7 +10832,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK6; /* 29 */
+  masked = (oligo >> 4) & MASK7; /* 29 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10215,7 +10841,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK6; /* 30 */
+  masked = (oligo >> 2) & MASK7; /* 30 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10224,7 +10850,7 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK6; /* 31 */
+  masked = oligo & MASK7; /* 31 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10238,156 +10864,188 @@ store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
 
 
 static void
-count_5mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
+count_6mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
   Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 22;		/* 0 */
-  debug(printf("%04X\n",masked));
+  masked = high_rev >> 20;		/* 0, No mask necessary */
   counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
   
-  masked = (high_rev >> 20) & MASK5;	/* 1 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 18) & MASK6;	/* 1 */
   counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 18) & MASK5;	/* 2 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 16) & MASK6;	/* 2 */
   counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 16) & MASK5;	/* 3 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 14) & MASK6;	/* 3 */
   counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 14) & MASK5;	/* 4 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 12) & MASK6;	/* 4 */
   counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 12) & MASK5;	/* 5 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 10) & MASK6;	/* 5 */
   counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 10) & MASK5;	/* 6 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 8) & MASK6;	/* 6 */
   counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 8) & MASK5;	/* 7 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 6) & MASK6;	/* 7 */
   counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 6) & MASK5; /* 8 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 4) & MASK6; /* 8 */
   counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 4) & MASK5; /* 9 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rev >> 2) & MASK6; /* 9 */
   counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rev >> 2) & MASK5; /* 10 */
-  debug(printf("%04X\n",masked));
+  masked = high_rev & MASK6;	/* 10 */
   counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
 
-  masked = high_rev & MASK5;	/* 11 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  oligo = low_rev >> 22;	/* For 11..15 */
+  oligo |= high_rev << 10;
 
-  oligo = low_rev >> 24;	/* For 12..15 */
-  oligo |= high_rev << 8;
+  masked = (oligo >> 8) & MASK6; /* 11 */
+  counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK5; /* 12 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK6; /* 12 */
   counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK5; /* 13 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK6; /* 13 */
   counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK5; /* 14 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK6; /* 14 */
   counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK5; /* 15 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK6; /* 15 */
   counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
 
 
-  masked = low_rev >> 22;		/* 16 */
-  debug(printf("%04X\n",masked));
+  masked = low_rev >> 20;	/* 16, No mask necessary */
   counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
   
-  masked = (low_rev >> 20) & MASK5; /* 17 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 18) & MASK6; /* 17 */
   counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 18) & MASK5; /* 18 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 16) & MASK6; /* 18 */
   counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 16) & MASK5; /* 19 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 14) & MASK6; /* 19 */
   counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 14) & MASK5;	/* 20 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 12) & MASK6;	/* 20 */
   counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 12) & MASK5;	/* 21 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 10) & MASK6;	/* 21 */
   counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 10) & MASK5;	/* 22 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 8) & MASK6;	/* 22 */
   counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 8) & MASK5;	/* 23 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 6) & MASK6;	/* 23 */
   counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 6) & MASK5;	/* 24 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 4) & MASK6;	/* 24 */
   counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 4) & MASK5;	/* 25 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rev >> 2) & MASK6;	/* 25 */
   counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rev >> 2) & MASK5;	/* 26 */
-  debug(printf("%04X\n",masked));
+  masked = low_rev & MASK6;	/* 26 */
   counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
 
-  masked = low_rev & MASK5;	/* 27 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  oligo = nexthigh_rev >> 22;	/* For 27..31 */
+  oligo |= low_rev << 10;
 
-  oligo = nexthigh_rev >> 24;	/* For 28..31 */
-  oligo |= low_rev << 8;
+  masked = (oligo >> 8) & MASK6; /* 27 */
+  counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK5; /* 28 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK6; /* 28 */
   counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK5; /* 29 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK6; /* 29 */
   counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK5; /* 30 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK6; /* 30 */
   counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK5; /* 31 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK6; /* 31 */
   counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
+
+  return;
+}
+
+
+/* Expecting current to have {high0_rev, low0_rev, high1_rev,
+   low1_rev}, and next to have {low0_rev, high1_rev, low1_rev, and
+   high2_rev} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_6mers_fwd_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,20)); /* No mask necessary */;
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,18), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,16), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask6));
+  _mm_store_si128(out++, _mm_and_si128( current, mask6));
+
+  oligo = _mm_or_si128( _mm_srli_epi32(next,22), _mm_slli_epi32(current,10));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,8), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask6));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask6));
 
   return;
 }
+#endif
 
 
 static int
-store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+store_6mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 		 Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
   Genomecomp_T masked, oligo;
 
-  masked = high_rev >> 22;		/* 0 */
+  masked = high_rev >> 20;		/* 0, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10396,7 +11054,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
   
-  masked = (high_rev >> 20) & MASK5;	/* 1 */
+  masked = (high_rev >> 18) & MASK6;	/* 1 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10405,7 +11063,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 18) & MASK5;	/* 2 */
+  masked = (high_rev >> 16) & MASK6;	/* 2 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10414,7 +11072,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 16) & MASK5;	/* 3 */
+  masked = (high_rev >> 14) & MASK6;	/* 3 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10423,7 +11081,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 14) & MASK5;	/* 4 */
+  masked = (high_rev >> 12) & MASK6;	/* 4 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10432,7 +11090,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 12) & MASK5;	/* 5 */
+  masked = (high_rev >> 10) & MASK6;	/* 5 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10441,7 +11099,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 10) & MASK5;	/* 6 */
+  masked = (high_rev >> 8) & MASK6;	/* 6 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10450,7 +11108,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 8) & MASK5;	/* 7 */
+  masked = (high_rev >> 6) & MASK6;	/* 7 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10459,7 +11117,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 6) & MASK5; /* 8 */
+  masked = (high_rev >> 4) & MASK6; /* 8 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10468,7 +11126,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 4) & MASK5; /* 9 */
+  masked = (high_rev >> 2) & MASK6; /* 9 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10477,7 +11135,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rev >> 2) & MASK5; /* 10 */
+  masked = high_rev & MASK6;	/* 10 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10486,7 +11144,11 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = high_rev & MASK5;	/* 11 */
+
+  oligo = low_rev >> 22;	/* For 11..15 */
+  oligo |= high_rev << 10;
+
+  masked = (oligo >> 8) & MASK6; /* 11 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10495,11 +11157,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  oligo = low_rev >> 24;	/* For 12..15 */
-  oligo |= high_rev << 8;
-
-  masked = (oligo >> 6) & MASK5; /* 12 */
+  masked = (oligo >> 6) & MASK6; /* 12 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10508,7 +11166,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK5; /* 13 */
+  masked = (oligo >> 4) & MASK6; /* 13 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10517,7 +11175,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK5; /* 14 */
+  masked = (oligo >> 2) & MASK6; /* 14 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10526,7 +11184,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK5; /* 15 */
+  masked = oligo & MASK6; /* 15 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10536,7 +11194,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
   }
 
 
-  masked = low_rev >> 22;		/* 16 */
+  masked = low_rev >> 20;	/* 16, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10545,7 +11203,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
   
-  masked = (low_rev >> 20) & MASK5; /* 17 */
+  masked = (low_rev >> 18) & MASK6; /* 17 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10554,7 +11212,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 18) & MASK5; /* 18 */
+  masked = (low_rev >> 16) & MASK6; /* 18 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10563,7 +11221,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 16) & MASK5; /* 19 */
+  masked = (low_rev >> 14) & MASK6; /* 19 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10572,7 +11230,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 14) & MASK5;	/* 20 */
+  masked = (low_rev >> 12) & MASK6;	/* 20 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10581,7 +11239,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 12) & MASK5;	/* 21 */
+  masked = (low_rev >> 10) & MASK6;	/* 21 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10590,7 +11248,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 10) & MASK5;	/* 22 */
+  masked = (low_rev >> 8) & MASK6;	/* 22 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10599,7 +11257,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 8) & MASK5;	/* 23 */
+  masked = (low_rev >> 6) & MASK6;	/* 23 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10608,7 +11266,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 6) & MASK5;	/* 24 */
+  masked = (low_rev >> 4) & MASK6;	/* 24 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10617,7 +11275,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 4) & MASK5;	/* 25 */
+  masked = (low_rev >> 2) & MASK6;	/* 25 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10626,7 +11284,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rev >> 2) & MASK5;	/* 26 */
+  masked = low_rev & MASK6;	/* 26 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10635,7 +11293,11 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = low_rev & MASK5;	/* 27 */
+
+  oligo = nexthigh_rev >> 22;	/* For 27..31 */
+  oligo |= low_rev << 10;
+
+  masked = (oligo >> 8) & MASK6; /* 27 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10644,11 +11306,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  oligo = nexthigh_rev >> 24;	/* For 28..31 */
-  oligo |= low_rev << 8;
-
-  masked = (oligo >> 6) & MASK5; /* 28 */
+  masked = (oligo >> 6) & MASK6; /* 28 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10657,7 +11315,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK5; /* 29 */
+  masked = (oligo >> 4) & MASK6; /* 29 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10666,7 +11324,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK5; /* 30 */
+  masked = (oligo >> 2) & MASK6; /* 30 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10675,7 +11333,7 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK5; /* 31 */
+  masked = oligo & MASK6; /* 31 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -10688,40 +11346,1319 @@ store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
 }
 
 
-
 static void
-count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord_T left_plus_length,
-		     int genestrand) {
-  int startdiscard, enddiscard;
-  Genomecomp_T ptr, startptr, endptr, high_rev, low_rev, nexthigh_rev,
-    low, high, nextlow;
+count_5mers_fwd (Count_T *counts, Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
+  Genomecomp_T masked, oligo;
 
+  masked = high_rev >> 22;		/* 0, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
+  
+  masked = (high_rev >> 20) & MASK5;	/* 1 */
+  counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
 
-  left_plus_length -= indexsize;
-#if 0
-  left_plus_length += 1;	/* Needed to get last oligomer to match */
-#endif
+  masked = (high_rev >> 18) & MASK5;	/* 2 */
+  counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
-  ptr = startptr = left/32U*3;
-  endptr = left_plus_length/32U*3;
-  startdiscard = left % 32; /* (left+pos5) % 32 */
-  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
-  
-  if (left_plus_length <= left) {
-    /* Skip */
+  masked = (high_rev >> 16) & MASK5;	/* 3 */
+  counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
-  } else if (startptr == endptr) {
-#ifdef WORDS_BIGENDIAN
-    high = Bigendian_convert_uint(ref_blocks[ptr]);
-    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
-#else
-    high = ref_blocks[ptr];
-    low = ref_blocks[ptr+1];
-    nextlow = ref_blocks[ptr+4];
-#endif
-    if (mode == CMET_STRANDED) {
-      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+  masked = (high_rev >> 14) & MASK5;	/* 4 */
+  counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rev >> 12) & MASK5;	/* 5 */
+  counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rev >> 10) & MASK5;	/* 6 */
+  counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rev >> 8) & MASK5;	/* 7 */
+  counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rev >> 6) & MASK5; /* 8 */
+  counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rev >> 4) & MASK5; /* 9 */
+  counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rev >> 2) & MASK5; /* 10 */
+  counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
+
+  masked = high_rev & MASK5;	/* 11 */
+  counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
+
+
+  oligo = low_rev >> 24;	/* For 12..15 */
+  oligo |= high_rev << 8;
+
+  masked = (oligo >> 6) & MASK5; /* 12 */
+  counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 4) & MASK5; /* 13 */
+  counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 2) & MASK5; /* 14 */
+  counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
+
+  masked = oligo & MASK5; /* 15 */
+  counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
+
+
+  masked = low_rev >> 22;		/* 16, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
+  
+  masked = (low_rev >> 20) & MASK5; /* 17 */
+  counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 18) & MASK5; /* 18 */
+  counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 16) & MASK5; /* 19 */
+  counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 14) & MASK5;	/* 20 */
+  counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 12) & MASK5;	/* 21 */
+  counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 10) & MASK5;	/* 22 */
+  counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 8) & MASK5;	/* 23 */
+  counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 6) & MASK5;	/* 24 */
+  counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 4) & MASK5;	/* 25 */
+  counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rev >> 2) & MASK5;	/* 26 */
+  counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
+
+  masked = low_rev & MASK5;	/* 27 */
+  counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
+
+
+  oligo = nexthigh_rev >> 24;	/* For 28..31 */
+  oligo |= low_rev << 8;
+
+  masked = (oligo >> 6) & MASK5; /* 28 */
+  counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 4) & MASK5; /* 29 */
+  counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 2) & MASK5; /* 30 */
+  counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
+
+  masked = oligo & MASK5; /* 31 */
+  counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
+
+  return;
+}
+
+
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_5mers_fwd_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,22)); /* No mask necessary */
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,20), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,18), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,16), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask5));
+  _mm_store_si128(out++, _mm_and_si128( current, mask5));
+
+  oligo = _mm_or_si128( _mm_srli_epi32(next,24), _mm_slli_epi32(current,8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask5));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask5));
+
+  return;
+}
+#endif
+
+
+static int
+store_5mers_fwd (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+		 Genomecomp_T high_rev, Genomecomp_T low_rev, Genomecomp_T nexthigh_rev) {
+  Genomecomp_T masked, oligo;
+
+  masked = high_rev >> 22;		/* 0, No mask necessary */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos;
+    }
+  }
+  
+  masked = (high_rev >> 20) & MASK5;	/* 1 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 1;
+    }
+  }
+
+  masked = (high_rev >> 18) & MASK5;	/* 2 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 2;
+    }
+  }
+
+  masked = (high_rev >> 16) & MASK5;	/* 3 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 3;
+    }
+  }
+
+  masked = (high_rev >> 14) & MASK5;	/* 4 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 4;
+    }
+  }
+
+  masked = (high_rev >> 12) & MASK5;	/* 5 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 5;
+    }
+  }
+
+  masked = (high_rev >> 10) & MASK5;	/* 6 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 6;
+    }
+  }
+
+  masked = (high_rev >> 8) & MASK5;	/* 7 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 7;
+    }
+  }
+
+  masked = (high_rev >> 6) & MASK5; /* 8 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 8;
+    }
+  }
+
+  masked = (high_rev >> 4) & MASK5; /* 9 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 9;
+    }
+  }
+
+  masked = (high_rev >> 2) & MASK5; /* 10 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 10;
+    }
+  }
+
+  masked = high_rev & MASK5;	/* 11 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 11;
+    }
+  }
+
+
+  oligo = low_rev >> 24;	/* For 12..15 */
+  oligo |= high_rev << 8;
+
+  masked = (oligo >> 6) & MASK5; /* 12 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 12;
+    }
+  }
+
+  masked = (oligo >> 4) & MASK5; /* 13 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 13;
+    }
+  }
+
+  masked = (oligo >> 2) & MASK5; /* 14 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 14;
+    }
+  }
+
+  masked = oligo & MASK5; /* 15 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 15;
+    }
+  }
+
+
+  masked = low_rev >> 22;		/* 16, No mask necessary */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 16;
+    }
+  }
+  
+  masked = (low_rev >> 20) & MASK5; /* 17 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 17;
+    }
+  }
+
+  masked = (low_rev >> 18) & MASK5; /* 18 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 18;
+    }
+  }
+
+  masked = (low_rev >> 16) & MASK5; /* 19 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 19;
+    }
+  }
+
+  masked = (low_rev >> 14) & MASK5;	/* 20 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 20;
+    }
+  }
+
+  masked = (low_rev >> 12) & MASK5;	/* 21 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 21;
+    }
+  }
+
+  masked = (low_rev >> 10) & MASK5;	/* 22 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 22;
+    }
+  }
+
+  masked = (low_rev >> 8) & MASK5;	/* 23 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 23;
+    }
+  }
+
+  masked = (low_rev >> 6) & MASK5;	/* 24 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 24;
+    }
+  }
+
+  masked = (low_rev >> 4) & MASK5;	/* 25 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 25;
+    }
+  }
+
+  masked = (low_rev >> 2) & MASK5;	/* 26 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 26;
+    }
+  }
+
+  masked = low_rev & MASK5;	/* 27 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 27;
+    }
+  }
+
+
+  oligo = nexthigh_rev >> 24;	/* For 28..31 */
+  oligo |= low_rev << 8;
+
+  masked = (oligo >> 6) & MASK5; /* 28 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 28;
+    }
+  }
+
+  masked = (oligo >> 4) & MASK5; /* 29 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 29;
+    }
+  }
+
+  masked = (oligo >> 2) & MASK5; /* 30 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 30;
+    }
+  }
+
+  masked = oligo & MASK5; /* 31 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 31;
+    }
+  }
+
+  return chrpos + 32;
+}
+
+
+#if (!defined(USE_SIMD_FOR_COUNTS) || defined(DEBUG14))
+static void
+count_positions_fwd_std (Count_T *counts, int indexsize, Univcoord_T left, Univcoord_T left_plus_length,
+			 int genestrand) {
+  int startdiscard, enddiscard;
+  Genomecomp_T ptr, startptr, endptr, high_rev, low_rev, nexthigh_rev,
+    low, high, nextlow;
+
+  debug(printf("Starting count_positions_fwd_std\n"));
+
+  left_plus_length -= indexsize;
+#if 0
+  /* No.  Extends past end. */
+  left_plus_length += 1;	/* Needed to get last oligomer to match */
+#endif
+
+  ptr = startptr = left/32U*3;
+  endptr = left_plus_length/32U*3;
+  startdiscard = left % 32; /* (left+pos5) % 32 */
+  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
+  
+  if (left_plus_length <= left) {
+    /* Skip */
+
+  } else if (startptr == endptr) {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
+
+    high_rev = reverse_nt[low >> 16];
+    high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+    low_rev = reverse_nt[high >> 16];
+    low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+    nexthigh_rev = reverse_nt[nextlow >> 16];
+    nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+    if (indexsize == 8) {
+      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else {
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
+
+  } else {
+    /* Genome_print_blocks(ref_blocks,left,left+16); */
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
+
+    high_rev = reverse_nt[low >> 16];
+    high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+    low_rev = reverse_nt[high >> 16];
+    low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+    nexthigh_rev = reverse_nt[nextlow >> 16];
+    nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+    if (indexsize == 8) {
+      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 7) {
+      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 6) {
+      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 5) {
+      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else {
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
+
+    ptr += 3;
+
+    if (indexsize == 8) {
+      while (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = reverse_nt[low >> 16];
+	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_8mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+    } else if (indexsize == 7) {
+      while (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = reverse_nt[low >> 16];
+	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_7mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+    } else if (indexsize == 6) {
+      while (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = reverse_nt[low >> 16];
+	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_6mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+    } else if (indexsize == 5) {
+      while (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = reverse_nt[low >> 16];
+	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_5mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+    } else {
+      abort();
+    }
+
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
+
+    high_rev = reverse_nt[low >> 16];
+    high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+    low_rev = reverse_nt[high >> 16];
+    low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+    nexthigh_rev = reverse_nt[nextlow >> 16];
+    nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+    if (indexsize == 8) {
+      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else {
+      abort();
+    }
+
+  }
+  
+  return;
+}
+#endif
+
+
+#if 0
+/* For debugging of SIMD procedures*/
+static void
+print_vector (__m128i x, char *label) {
+  __m128i a[1];
+  unsigned int *s = a;
+
+  _mm_store_si128(a,x);
+  _mm_mfence();
+  printf("%s: %u %u %u %u\n",label,s[0],s[1],s[2],s[3]);
+  return;
+}
+#endif
+
+
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+count_positions_fwd_simd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord_T left_plus_length,
+			  int genestrand) {
+  int startdiscard, enddiscard;
+  Genomecomp_T ptr, startptr, endptr, high_rev, low_rev, nexthigh_rev,
+    low, high, nextlow;
+  Genomecomp_T high0_rev, low0_rev, high1_rev, low1_rev, /*low0,*/ high0, low1, high1;
+  __m128i current, next;
+  __m128i array[16];
+#ifdef HAVE_SSE4_1
+  __m128i temp;
+#endif
+
+
+  debug(printf("Starting count_positions_fwd_simd\n"));
+
+  left_plus_length -= indexsize;
+#if 0
+  /* No.  Extends past end. */
+  left_plus_length += 1;	/* Needed to get last oligomer to match */
+#endif
+
+  ptr = startptr = left/32U*3;
+  endptr = left_plus_length/32U*3;
+  startdiscard = left % 32; /* (left+pos5) % 32 */
+  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
+  
+  if (left_plus_length <= left) {
+    /* Skip */
+
+  } else if (startptr == endptr) {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
+
+    high_rev = reverse_nt[low >> 16];
+    high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+    low_rev = reverse_nt[high >> 16];
+    low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+    nexthigh_rev = reverse_nt[nextlow >> 16];
+    nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+    if (indexsize == 8) {
+      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+    } else {
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
+
+  } else {
+    /* Genome_print_blocks(ref_blocks,left,left+16); */
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
+
+    high_rev = reverse_nt[low >> 16];
+    high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+    low_rev = reverse_nt[high >> 16];
+    low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+    nexthigh_rev = reverse_nt[nextlow >> 16];
+    nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+    if (indexsize == 8) {
+      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 7) {
+      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 6) {
+      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 5) {
+      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+    } else {
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
+
+    ptr += 3;
+
+    if (indexsize == 8) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_8mers_fwd_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	/* low = ref_blocks[ptr+1]; */
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = nexthigh_rev; /* depended on low */
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_8mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+
+    } else if (indexsize == 7) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_7mers_fwd_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	/* low = ref_blocks[ptr+1]; */
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = nexthigh_rev; /* depended on low */
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_7mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+
+    } else if (indexsize == 6) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_6mers_fwd_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	/* low = ref_blocks[ptr+1]; */
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = nexthigh_rev; /* depended on low */
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_6mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+
+    } else if (indexsize == 5) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_5mers_fwd_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	/* low = ref_blocks[ptr+1]; */
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = nexthigh_rev; /* depended on low */
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	count_5mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+
+    } else {
+      abort();
+    }
+
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    /* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    /* low = ref_blocks[ptr+1]; */
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
+
+    high_rev = nexthigh_rev;	/* depended on low */
+    low_rev = reverse_nt[high >> 16];
+    low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+    nexthigh_rev = reverse_nt[nextlow >> 16];
+    nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+    if (indexsize == 8) {
+      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+    } else {
+      abort();
+    }
+
+  }
+  
+  return;
+}
+#endif
+
+
+#if (!defined(USE_SIMD_FOR_COUNTS) || defined(DEBUG14))
+static void
+store_positions_fwd_std (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts, int indexsize,
+			 Univcoord_T left, Univcoord_T left_plus_length, Chrpos_T chrpos,
+			 int genestrand) {
+  int startdiscard, enddiscard;
+  Genomecomp_T ptr, startptr, endptr, high_rev, low_rev, nexthigh_rev,
+    low, high, nextlow;
+
+
+  left_plus_length -= indexsize;
+#if 0
+  /* No.  Extends past end. */
+  left_plus_length += 1;	/* Needed to get last oligomer to match */
+#endif
+
+  ptr = startptr = left/32U*3;
+  endptr = left_plus_length/32U*3;
+  startdiscard = left % 32; /* (left+pos5) % 32 */
+  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
+  
+  if (left_plus_length <= left) {
+    /* Skip */
+
+  } else if (startptr == endptr) {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
     } else if (mode == CMET_NONSTRANDED) {
       if (genestrand > 0) {
 	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
@@ -10738,13 +12675,13 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
     nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
     if (indexsize == 8) {
-      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+      chrpos = store_8mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
     } else if (indexsize == 7) {
-      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+      chrpos = store_7mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
     } else if (indexsize == 6) {
-      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+      chrpos = store_6mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
     } else if (indexsize == 5) {
-      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
+      chrpos = store_5mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,enddiscard);
     } else {
       fprintf(stderr,"indexsize %d not supported\n",indexsize);
       abort();
@@ -10780,13 +12717,13 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
     nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
     if (indexsize == 8) {
-      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+      chrpos = store_8mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
     } else if (indexsize == 7) {
-      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+      chrpos = store_7mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
     } else if (indexsize == 6) {
-      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+      chrpos = store_6mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
     } else if (indexsize == 5) {
-      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
+      chrpos = store_5mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,startdiscard,/*enddiscard*/31);
     } else {
       fprintf(stderr,"indexsize %d not supported\n",indexsize);
       abort();
@@ -10822,9 +12759,10 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	nexthigh_rev = reverse_nt[nextlow >> 16];
 	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
-	count_8mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	chrpos = store_8mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
+
     } else if (indexsize == 7) {
       while (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
@@ -10853,9 +12791,10 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	nexthigh_rev = reverse_nt[nextlow >> 16];
 	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
-	count_7mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	chrpos = store_7mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
+
     } else if (indexsize == 6) {
       while (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
@@ -10884,9 +12823,10 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	nexthigh_rev = reverse_nt[nextlow >> 16];
 	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
-	count_6mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	chrpos = store_6mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
+
     } else if (indexsize == 5) {
       while (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
@@ -10915,7 +12855,7 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	nexthigh_rev = reverse_nt[nextlow >> 16];
 	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
-	count_5mers_fwd(counts,high_rev,low_rev,nexthigh_rev);
+	chrpos = store_5mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
     } else {
@@ -10950,13 +12890,13 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
     nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
     if (indexsize == 8) {
-      count_8mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+      chrpos = store_8mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
     } else if (indexsize == 7) {
-      count_7mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+      chrpos = store_7mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
     } else if (indexsize == 6) {
-      count_6mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+      chrpos = store_6mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
     } else if (indexsize == 5) {
-      count_5mers_fwd_partial(counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
+      chrpos = store_5mers_fwd_partial(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev,/*startdiscard*/0,enddiscard);
     } else {
       abort();
     }
@@ -10965,19 +12905,30 @@ count_positions_fwd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
   
   return;
 }
+#endif
 
 
+#ifdef USE_SIMD_FOR_COUNTS
 static void
-store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts, int indexsize,
-		     Univcoord_T left, Univcoord_T left_plus_length, Chrpos_T chrpos,
-		     int genestrand) {
+store_positions_fwd_simd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts, int indexsize,
+			  Univcoord_T left, Univcoord_T left_plus_length, Chrpos_T chrpos,
+			  int genestrand) {
   int startdiscard, enddiscard;
   Genomecomp_T ptr, startptr, endptr, high_rev, low_rev, nexthigh_rev,
     low, high, nextlow;
+  Genomecomp_T high0_rev, low0_rev, high1_rev, low1_rev, /* low0, */ high0, low1, high1;
+  __m128i current, next;
+  __m128i array[16];
+#ifdef HAVE_SSE4_1
+  __m128i temp;
+#endif
 
 
+  debug(printf("Starting store_positions_fwd_simd\n"));
+
   left_plus_length -= indexsize;
 #if 0
+  /* No.  Extends past end. */
   left_plus_length += 1;	/* Needed to get last oligomer to match */
 #endif
 
@@ -11074,28 +13025,80 @@ store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
     ptr += 3;
 
     if (indexsize == 8) {
-      while (ptr < endptr) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_8mers_fwd_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
 	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
 	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
 #else
 	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
+	/* low = ref_blocks[ptr+1]; */
 	nextlow = ref_blocks[ptr+4];
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
 	  }
 	}
 
-	high_rev = reverse_nt[low >> 16];
-	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	high_rev = nexthigh_rev; /* depended on low */
 	low_rev = reverse_nt[high >> 16];
 	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
 	nexthigh_rev = reverse_nt[nextlow >> 16];
@@ -11104,29 +13107,82 @@ store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 	chrpos = store_8mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
+
     } else if (indexsize == 7) {
-      while (ptr < endptr) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_7mers_fwd_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
 	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
 	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
 #else
 	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
+	/* low = ref_blocks[ptr+1]; */
 	nextlow = ref_blocks[ptr+4];
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
 	  }
 	}
 
-	high_rev = reverse_nt[low >> 16];
-	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	high_rev = nexthigh_rev; /* depended on low */
 	low_rev = reverse_nt[high >> 16];
 	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
 	nexthigh_rev = reverse_nt[nextlow >> 16];
@@ -11135,60 +13191,166 @@ store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 	chrpos = store_7mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
+
     } else if (indexsize == 6) {
-      while (ptr < endptr) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_6mers_fwd_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+	ptr += 6;
+      }
+
+      if (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
 	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
 	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
 #else
 	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
+	/* low = ref_blocks[ptr+1]; */
 	nextlow = ref_blocks[ptr+4];
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
+
+	high_rev = nexthigh_rev; /* depended on low */
+	low_rev = reverse_nt[high >> 16];
+	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	nexthigh_rev = reverse_nt[nextlow >> 16];
+	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
+
+	chrpos = store_6mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
+	ptr += 3;
+      }
+
+    } else if (indexsize == 5) {
+      while (ptr + 3 < endptr) {
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	/* low0 = Bigendian_convert_uint(ref_blocks[ptr+1]); */
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]);
+#else
+	high0 = ref_blocks[ptr];
+	/* low0 = ref_blocks[ptr+1]; */
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	nextlow = ref_blocks[ptr+7];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	  high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	  nextlow = Cmet_reduce_ct(nextlow);
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high0 = Cmet_reduce_ct(high0); /* low0 = Cmet_reduce_ct(low0); */
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    nextlow = Cmet_reduce_ct(nextlow);
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high0 = Cmet_reduce_ga(high0); /* low0 = Cmet_reduce_ga(low0); */
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    nextlow = Cmet_reduce_ga(nextlow);
 	  }
 	}
 
-	high_rev = reverse_nt[low >> 16];
-	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
-	low_rev = reverse_nt[high >> 16];
-	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
+	high0_rev = nexthigh_rev; /* depended on low0 */
+	low0_rev = reverse_nt[high0 >> 16];
+	low0_rev |= (reverse_nt[high0 & 0x0000FFFF] << 16);
+	high1_rev = reverse_nt[low1 >> 16];
+	high1_rev |= (reverse_nt[low1 & 0x0000FFFF] << 16);
+	low1_rev = reverse_nt[high1 >> 16];
+	low1_rev |= (reverse_nt[high1 & 0x0000FFFF] << 16);
 	nexthigh_rev = reverse_nt[nextlow >> 16];
 	nexthigh_rev |= (reverse_nt[nextlow & 0x0000FFFF] << 16);
 
-	chrpos = store_6mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
-	ptr += 3;
+	current = _mm_setr_epi32(high0_rev,low0_rev,high1_rev,low1_rev);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nexthigh_rev,0x00);
+	next = _mm_shuffle_epi32(temp,0x39);
+#else
+	next = _mm_setr_epi32(low0_rev,high1_rev,low1_rev,nexthigh_rev);
+#endif
+
+	extract_5mers_fwd_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+	ptr += 6;
       }
-    } else if (indexsize == 5) {
-      while (ptr < endptr) {
+
+      if (ptr < endptr) {
 #ifdef WORDS_BIGENDIAN
 	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	/* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
 	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
 #else
 	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
+	/* low = ref_blocks[ptr+1]; */
 	nextlow = ref_blocks[ptr+4];
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
 	  }
 	}
 
-	high_rev = reverse_nt[low >> 16];
-	high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+	high_rev = nexthigh_rev; /* depended on low */
 	low_rev = reverse_nt[high >> 16];
 	low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
 	nexthigh_rev = reverse_nt[nextlow >> 16];
@@ -11197,6 +13359,7 @@ store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 	chrpos = store_5mers_fwd(chrpos,pointers,positions,counts,high_rev,low_rev,nexthigh_rev);
 	ptr += 3;
       }
+
     } else {
       abort();
     }
@@ -11204,25 +13367,24 @@ store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 
 #ifdef WORDS_BIGENDIAN
     high = Bigendian_convert_uint(ref_blocks[ptr]);
-    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    /* low = Bigendian_convert_uint(ref_blocks[ptr+1]); */
     nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
 #else
     high = ref_blocks[ptr];
-    low = ref_blocks[ptr+1];
+    /* low = ref_blocks[ptr+1]; */
     nextlow = ref_blocks[ptr+4];
 #endif
     if (mode == CMET_STRANDED) {
-      high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
     } else if (mode == CMET_NONSTRANDED) {
       if (genestrand > 0) {
-	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	high = Cmet_reduce_ct(high); /* low = Cmet_reduce_ct(low); */ nextlow = Cmet_reduce_ct(nextlow);
       } else {
-	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	high = Cmet_reduce_ga(high); /* low = Cmet_reduce_ga(low); */ nextlow = Cmet_reduce_ga(nextlow);
       }
     }
 
-    high_rev = reverse_nt[low >> 16];
-    high_rev |= (reverse_nt[low & 0x0000FFFF] << 16);
+    high_rev = nexthigh_rev;	/* depended on low */
     low_rev = reverse_nt[high >> 16];
     low_rev |= (reverse_nt[high & 0x0000FFFF] << 16);
     nexthigh_rev = reverse_nt[nextlow >> 16];
@@ -11244,6 +13406,7 @@ store_positions_fwd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
   
   return;
 }
+#endif
 
 
 /************************************************************************
@@ -11258,37 +13421,271 @@ count_8mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high
 
   pos = enddiscard;
 
-  while (pos >= startdiscard && pos >= 25) {
+  while (pos >= startdiscard && pos >= 25) {
+    masked = high_rc >> (2*pos - 32);
+    masked |= nextlow_rc << (64 - 2*pos);
+    masked &= MASK8;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 16) {
+    masked = high_rc >> (2*pos - 32);
+    masked &= MASK8;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 9) {
+    masked = low_rc >> 2*pos;
+    masked |= high_rc << (32 - 2*pos);
+    masked &= MASK8;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  while (pos >= startdiscard) {
+    masked = low_rc >> 2*pos;
+    masked &= MASK8;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  return;
+}
+
+
+static int
+store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+			 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
+			 int startdiscard, int enddiscard) {
+  Genomecomp_T masked;
+  int pos;
+
+  pos = enddiscard;
+
+  while (pos >= startdiscard && pos >= 25) {
+    masked = high_rc >> (2*pos - 32);
+    masked |= nextlow_rc << (64 - 2*pos);
+    masked &= MASK8;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 16) {
+    masked = high_rc >> (2*pos - 32);
+    masked &= MASK8;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 9) {
+    masked = low_rc >> 2*pos;
+    masked |= high_rc << (32 - 2*pos);
+    masked &= MASK8;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard) {
+    masked = low_rc >> 2*pos;
+    masked &= MASK8;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  return chrpos;
+}
+
+
+static void
+count_7mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
+			 int startdiscard, int enddiscard) {
+  Genomecomp_T masked;
+  int pos;
+
+  pos = enddiscard;
+
+  while (pos >= startdiscard && pos >= 26) {
+    masked = high_rc >> (2*pos - 32);
+    masked |= nextlow_rc << (64 - 2*pos);
+    masked &= MASK7;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 16) {
+    masked = high_rc >> (2*pos - 32);
+    masked &= MASK7;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 10) {
+    masked = low_rc >> 2*pos;
+    masked |= high_rc << (32 - 2*pos);
+    masked &= MASK7;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  while (pos >= startdiscard) {
+    masked = low_rc >> 2*pos;
+    masked &= MASK7;
+    counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
+    pos--;
+  }
+
+  return;
+}
+
+
+static int
+store_7mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+			 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
+			 int startdiscard, int enddiscard) {
+  Genomecomp_T masked;
+  int pos;
+
+  pos = enddiscard;
+
+  while (pos >= startdiscard && pos >= 26) {
+    masked = high_rc >> (2*pos - 32);
+    masked |= nextlow_rc << (64 - 2*pos);
+    masked &= MASK7;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 16) {
+    masked = high_rc >> (2*pos - 32);
+    masked &= MASK7;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 10) {
+    masked = low_rc >> 2*pos;
+    masked |= high_rc << (32 - 2*pos);
+    masked &= MASK7;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard) {
+    masked = low_rc >> 2*pos;
+    masked &= MASK7;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  return chrpos;
+}
+
+
+static void
+count_6mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
+			 int startdiscard, int enddiscard) {
+  Genomecomp_T masked;
+  int pos;
+
+  pos = enddiscard;
+
+  while (pos >= startdiscard && pos >= 27) {
     masked = high_rc >> (2*pos - 32);
     masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK6;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
   while (pos >= startdiscard && pos >= 16) {
     masked = high_rc >> (2*pos - 32);
-    masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK6;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
-  while (pos >= startdiscard && pos >= 9) {
+  while (pos >= startdiscard && pos >= 11) {
     masked = low_rc >> 2*pos;
     masked |= high_rc << (32 - 2*pos);
-    masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK6;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
   while (pos >= startdiscard) {
     masked = low_rc >> 2*pos;
-    masked &= MASK8;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK6;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
@@ -11297,7 +13694,7 @@ count_8mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high
 
 
 static int
-store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+store_6mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 			 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
 			 int startdiscard, int enddiscard) {
   Genomecomp_T masked;
@@ -11305,10 +13702,10 @@ store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 
   pos = enddiscard;
 
-  while (pos >= startdiscard && pos >= 25) {
+  while (pos >= startdiscard && pos >= 27) {
     masked = high_rc >> (2*pos - 32);
     masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK8;
+    masked &= MASK6;
     if (counts[masked]) {
       if (pointers[masked] == positions[masked/*+1*/]) {
 	counts[masked] = 0;
@@ -11322,7 +13719,7 @@ store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 
   while (pos >= startdiscard && pos >= 16) {
     masked = high_rc >> (2*pos - 32);
-    masked &= MASK8;
+    masked &= MASK6;
     if (counts[masked]) {
       if (pointers[masked] == positions[masked/*+1*/]) {
 	counts[masked] = 0;
@@ -11334,10 +13731,10 @@ store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
     pos--;
   }
 
-  while (pos >= startdiscard && pos >= 9) {
+  while (pos >= startdiscard && pos >= 11) {
     masked = low_rc >> 2*pos;
     masked |= high_rc << (32 - 2*pos);
-    masked &= MASK8;
+    masked &= MASK6;
     if (counts[masked]) {
       if (pointers[masked] == positions[masked/*+1*/]) {
 	counts[masked] = 0;
@@ -11351,7 +13748,7 @@ store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 
   while (pos >= startdiscard) {
     masked = low_rc >> 2*pos;
-    masked &= MASK8;
+    masked &= MASK6;
     if (counts[masked]) {
       if (pointers[masked] == positions[masked/*+1*/]) {
 	counts[masked] = 0;
@@ -11368,44 +13765,44 @@ store_8mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 
 
 static void
-count_7mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
+count_5mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
 			 int startdiscard, int enddiscard) {
   Genomecomp_T masked;
   int pos;
 
   pos = enddiscard;
 
-  while (pos >= startdiscard && pos >= 26) {
+  while (pos >= startdiscard && pos >= 28) {
     masked = high_rc >> (2*pos - 32);
     masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK5;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
   while (pos >= startdiscard && pos >= 16) {
     masked = high_rc >> (2*pos - 32);
-    masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK5;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
-  while (pos >= startdiscard && pos >= 10) {
+  while (pos >= startdiscard && pos >= 12) {
     masked = low_rc >> 2*pos;
     masked |= high_rc << (32 - 2*pos);
-    masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK5;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
   while (pos >= startdiscard) {
     masked = low_rc >> 2*pos;
-    masked &= MASK7;
-    debug(printf("%d %04X\n",pos,masked));
+    masked &= MASK5;
     counts[masked] += 1;
+    debug(printf("%d %04X => %d\n",pos,masked,counts[masked]));
     pos--;
   }
 
@@ -11414,7 +13811,7 @@ count_7mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high
 
 
 static int
-store_7mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+store_5mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 			 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
 			 int startdiscard, int enddiscard) {
   Genomecomp_T masked;
@@ -11422,10 +13819,10 @@ store_7mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 
   pos = enddiscard;
 
-  while (pos >= startdiscard && pos >= 26) {
+  while (pos >= startdiscard && pos >= 28) {
     masked = high_rc >> (2*pos - 32);
     masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK7;
+    masked &= MASK5;
     if (counts[masked]) {
       if (pointers[masked] == positions[masked/*+1*/]) {
 	counts[masked] = 0;
@@ -11439,7 +13836,36 @@ store_7mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 
   while (pos >= startdiscard && pos >= 16) {
     masked = high_rc >> (2*pos - 32);
-    masked &= MASK7;
+    masked &= MASK5;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard && pos >= 12) {
+    masked = low_rc >> 2*pos;
+    masked |= high_rc << (32 - 2*pos);
+    masked &= MASK5;
+    if (counts[masked]) {
+      if (pointers[masked] == positions[masked/*+1*/]) {
+	counts[masked] = 0;
+      } else {
+	*(pointers[masked]++) = chrpos;
+      }
+    }
+    chrpos++;
+    pos--;
+  }
+
+  while (pos >= startdiscard) {
+    masked = low_rc >> 2*pos;
+    masked &= MASK5;
     if (counts[masked]) {
       if (pointers[masked] == positions[masked/*+1*/]) {
 	counts[masked] = 0;
@@ -11447,432 +13873,687 @@ store_7mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positi
 	*(pointers[masked]++) = chrpos;
       }
     }
-    chrpos++;
-    pos--;
+    chrpos++;
+    pos--;
+  }
+
+  return chrpos;
+}
+
+
+static void
+count_8mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
+  Genomecomp_T masked, oligo;
+
+  oligo = high_rc >> 18;	/* For 31..25 */
+  oligo |= nextlow_rc << 14;
+
+  masked = (oligo >> 12) & MASK8; /* 31 */
+  counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 10) & MASK8; /* 30 */
+  counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 8) & MASK8; /* 29 */
+  counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 6) & MASK8; /* 28 */
+  counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 4) & MASK8; /* 27 */
+  counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 2) & MASK8; /* 26 */
+  counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
+
+  masked = oligo & MASK8; /* 25 */
+  counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
+
+
+  masked = high_rc >> 16;	/* 24, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 14) & MASK8; /* 23 */
+  counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 12) & MASK8; /* 22 */
+  counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 10) & MASK8; /* 21 */
+  counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 8) & MASK8; /* 20 */
+  counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 6) & MASK8; /* 19 */
+  counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 4) & MASK8; /* 18 */
+  counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
+
+  masked = (high_rc >> 2) & MASK8; /* 17 */
+  counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
+
+  masked = high_rc & MASK8;	/* 16 */
+  counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
+
+
+  oligo = low_rc >> 18;		/* For 15..9 */
+  oligo |= high_rc << 14;
+
+  masked = (oligo >> 12) & MASK8; /* 15 */
+  counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 10) & MASK8; /* 14 */
+  counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 8) & MASK8; /* 13 */
+  counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 6) & MASK8; /* 12 */
+  counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 4) & MASK8; /* 11 */
+  counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
+
+  masked = (oligo >> 2) & MASK8; /* 10 */
+  counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
+
+  masked = oligo & MASK8; /* 9 */
+  counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
+
+
+  masked = low_rc >> 16;	/* 8, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 14) & MASK8; /* 7 */
+  counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 12) & MASK8; /* 6 */
+  counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 10) & MASK8; /* 5 */
+  counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 8) & MASK8; /* 4 */
+  counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 6) & MASK8; /* 3 */
+  counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 4) & MASK8; /* 2 */
+  counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
+
+  masked = (low_rc >> 2) & MASK8; /* 1 */
+  counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
+
+  masked = low_rc & MASK8;	/* 0 */
+  counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
+
+
+  return;
+}
+
+
+
+/* Expecting current to have {low0_rc, high0_rc, low1_rc, high1_rc},
+   and next to have {high0_rc, low1_rc, high1_rc, nextlow_rc} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_8mers_rev_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  oligo = _mm_or_si128( _mm_srli_epi32(current,18), _mm_slli_epi32(next,14));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,12), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,10), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,8), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask8));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask8));
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,16)); /* No mask necessary */;
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask8));
+  _mm_store_si128(out++, _mm_and_si128( current, mask8));
+
+  return;
+}
+#endif
+
+
+
+
+static int
+store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+		 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
+  Genomecomp_T masked, oligo;
+
+  oligo = high_rc >> 18;	/* For 31..25 */
+  oligo |= nextlow_rc << 14;
+
+  masked = (oligo >> 12) & MASK8; /* 31 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos;
+    }
+  }
+
+  masked = (oligo >> 10) & MASK8; /* 30 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 1;
+    }
+  }
+
+  masked = (oligo >> 8) & MASK8; /* 29 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 2;
+    }
+  }
+
+  masked = (oligo >> 6) & MASK8; /* 28 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 3;
+    }
   }
 
-  while (pos >= startdiscard && pos >= 10) {
-    masked = low_rc >> 2*pos;
-    masked |= high_rc << (32 - 2*pos);
-    masked &= MASK7;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (oligo >> 4) & MASK8; /* 27 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 4;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard) {
-    masked = low_rc >> 2*pos;
-    masked &= MASK7;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (oligo >> 2) & MASK8; /* 26 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 5;
     }
-    chrpos++;
-    pos--;
   }
 
-  return chrpos;
-}
+  masked = oligo & MASK8; /* 25 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 6;
+    }
+  }
 
 
-static void
-count_6mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
-			 int startdiscard, int enddiscard) {
-  Genomecomp_T masked;
-  int pos;
+  masked = high_rc >> 16;	/* 24, No mask necessary */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 7;
+    }
+  }
 
-  pos = enddiscard;
+  masked = (high_rc >> 14) & MASK8; /* 23 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 8;
+    }
+  }
 
-  while (pos >= startdiscard && pos >= 27) {
-    masked = high_rc >> (2*pos - 32);
-    masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = (high_rc >> 12) & MASK8; /* 22 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 9;
+    }
   }
 
-  while (pos >= startdiscard && pos >= 16) {
-    masked = high_rc >> (2*pos - 32);
-    masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = (high_rc >> 10) & MASK8; /* 21 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 10;
+    }
   }
 
-  while (pos >= startdiscard && pos >= 11) {
-    masked = low_rc >> 2*pos;
-    masked |= high_rc << (32 - 2*pos);
-    masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = (high_rc >> 8) & MASK8; /* 20 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 11;
+    }
   }
 
-  while (pos >= startdiscard) {
-    masked = low_rc >> 2*pos;
-    masked &= MASK6;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = (high_rc >> 6) & MASK8; /* 19 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 12;
+    }
   }
 
-  return;
-}
+  masked = (high_rc >> 4) & MASK8; /* 18 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 13;
+    }
+  }
 
+  masked = (high_rc >> 2) & MASK8; /* 17 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 14;
+    }
+  }
 
-static int
-store_6mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
-			 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
-			 int startdiscard, int enddiscard) {
-  Genomecomp_T masked;
-  int pos;
+  masked = high_rc & MASK8;	/* 16 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 15;
+    }
+  }
 
-  pos = enddiscard;
 
-  while (pos >= startdiscard && pos >= 27) {
-    masked = high_rc >> (2*pos - 32);
-    masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK6;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  oligo = low_rc >> 18;		/* For 15..9 */
+  oligo |= high_rc << 14;
+
+  masked = (oligo >> 12) & MASK8; /* 15 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 16;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard && pos >= 16) {
-    masked = high_rc >> (2*pos - 32);
-    masked &= MASK6;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (oligo >> 10) & MASK8; /* 14 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 17;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard && pos >= 11) {
-    masked = low_rc >> 2*pos;
-    masked |= high_rc << (32 - 2*pos);
-    masked &= MASK6;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (oligo >> 8) & MASK8; /* 13 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 18;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard) {
-    masked = low_rc >> 2*pos;
-    masked &= MASK6;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (oligo >> 6) & MASK8; /* 12 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 19;
     }
-    chrpos++;
-    pos--;
   }
 
-  return chrpos;
-}
-
-
-static void
-count_5mers_rev_partial (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
-			 int startdiscard, int enddiscard) {
-  Genomecomp_T masked;
-  int pos;
-
-  pos = enddiscard;
-
-  while (pos >= startdiscard && pos >= 28) {
-    masked = high_rc >> (2*pos - 32);
-    masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = (oligo >> 4) & MASK8; /* 11 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 20;
+    }
   }
 
-  while (pos >= startdiscard && pos >= 16) {
-    masked = high_rc >> (2*pos - 32);
-    masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = (oligo >> 2) & MASK8; /* 10 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 21;
+    }
   }
 
-  while (pos >= startdiscard && pos >= 12) {
-    masked = low_rc >> 2*pos;
-    masked |= high_rc << (32 - 2*pos);
-    masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+  masked = oligo & MASK8; /* 9 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 22;
+    }
   }
 
-  while (pos >= startdiscard) {
-    masked = low_rc >> 2*pos;
-    masked &= MASK5;
-    debug(printf("%d %04X\n",pos,masked));
-    counts[masked] += 1;
-    pos--;
+
+  masked = low_rc >> 16;	/* 8, No mask necessary */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 23;
+    }
   }
 
-  return;
-}
+  masked = (low_rc >> 14) & MASK8; /* 7 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 24;
+    }
+  }
 
+  masked = (low_rc >> 12) & MASK8; /* 6 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 25;
+    }
+  }
 
-static int
-store_5mers_rev_partial (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
-			 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc,
-			 int startdiscard, int enddiscard) {
-  Genomecomp_T masked;
-  int pos;
+  masked = (low_rc >> 10) & MASK8; /* 5 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 26;
+    }
+  }
 
-  pos = enddiscard;
+  masked = (low_rc >> 8) & MASK8; /* 4 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 27;
+    }
+  }
 
-  while (pos >= startdiscard && pos >= 28) {
-    masked = high_rc >> (2*pos - 32);
-    masked |= nextlow_rc << (64 - 2*pos);
-    masked &= MASK5;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (low_rc >> 6) & MASK8; /* 3 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 28;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard && pos >= 16) {
-    masked = high_rc >> (2*pos - 32);
-    masked &= MASK5;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (low_rc >> 4) & MASK8; /* 2 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 29;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard && pos >= 12) {
-    masked = low_rc >> 2*pos;
-    masked |= high_rc << (32 - 2*pos);
-    masked &= MASK5;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = (low_rc >> 2) & MASK8; /* 1 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 30;
     }
-    chrpos++;
-    pos--;
   }
 
-  while (pos >= startdiscard) {
-    masked = low_rc >> 2*pos;
-    masked &= MASK5;
-    if (counts[masked]) {
-      if (pointers[masked] == positions[masked/*+1*/]) {
-	counts[masked] = 0;
-      } else {
-	*(pointers[masked]++) = chrpos;
-      }
+  masked = low_rc & MASK8;	/* 0 */
+  if (counts[masked]) {
+    if (pointers[masked] == positions[masked/*+1*/]) {
+      counts[masked] = 0;
+    } else {
+      *(pointers[masked]++) = chrpos + 31;
     }
-    chrpos++;
-    pos--;
   }
 
-  return chrpos;
+  return chrpos + 32;
 }
 
 
+
 static void
-count_8mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
+count_7mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
   Genomecomp_T masked, oligo;
 
-  oligo = high_rc >> 18;	/* For 31..25 */
-  oligo |= nextlow_rc << 14;
+  oligo = high_rc >> 20;	/* For 31..26 */
+  oligo |= nextlow_rc << 12;
 
-  masked = (oligo >> 12) & MASK8; /* 31 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 10) & MASK7; /* 31 */
   counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 10) & MASK8; /* 30 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 8) & MASK7; /* 30 */
   counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 8) & MASK8; /* 29 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK7; /* 29 */
   counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK8; /* 28 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK7; /* 28 */
   counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK8; /* 27 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK7; /* 27 */
   counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK8; /* 26 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK7; /* 26 */
   counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK8; /* 25 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  masked = high_rc >> 18;	/* 25, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 16) & MASK8; /* 24 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 16) & MASK7; /* 24 */
   counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 14) & MASK8; /* 23 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 14) & MASK7; /* 23 */
   counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 12) & MASK8; /* 22 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 12) & MASK7; /* 22 */
   counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 10) & MASK8; /* 21 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 10) & MASK7; /* 21 */
   counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 8) & MASK8; /* 20 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 8) & MASK7; /* 20 */
   counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 6) & MASK8; /* 19 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 6) & MASK7; /* 19 */
   counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 4) & MASK8; /* 18 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 4) & MASK7; /* 18 */
   counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 2) & MASK8; /* 17 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 2) & MASK7; /* 17 */
   counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
 
-  masked = high_rc & MASK8;	/* 16 */
-  debug(printf("%04X\n",masked));
+  masked = high_rc & MASK7;	/* 16 */
   counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
 
 
-  oligo = low_rc >> 18;		/* For 15..9 */
-  oligo |= high_rc << 14;
+  oligo = low_rc >> 20;		/* For 15..10 */
+  oligo |= high_rc << 12;
 
-  masked = (oligo >> 12) & MASK8; /* 15 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 10) & MASK7; /* 15 */
   counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 10) & MASK8; /* 14 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 8) & MASK7; /* 14 */
   counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 8) & MASK8; /* 13 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK7; /* 13 */
   counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK8; /* 12 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK7; /* 12 */
   counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK8; /* 11 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK7; /* 11 */
   counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK8; /* 10 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK7; /* 10 */
   counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK8; /* 9 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  masked = low_rc >> 18;	/* 9, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 16) & MASK8; /* 8 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 16) & MASK7; /* 8 */
   counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 14) & MASK8; /* 7 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 14) & MASK7; /* 7 */
   counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 12) & MASK8; /* 6 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 12) & MASK7; /* 6 */
   counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 10) & MASK8; /* 5 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 10) & MASK7; /* 5 */
   counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 8) & MASK8; /* 4 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 8) & MASK7; /* 4 */
   counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 6) & MASK8; /* 3 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 6) & MASK7; /* 3 */
   counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 4) & MASK8; /* 2 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 4) & MASK7; /* 2 */
   counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 2) & MASK8; /* 1 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 2) & MASK7; /* 1 */
   counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
 
-  masked = low_rc & MASK8;	/* 0 */
-  debug(printf("%04X\n",masked));
+  masked = low_rc & MASK7;	/* 0 */
   counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
 
 
   return;
 }
 
 
-static int
-store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+/* Expecting current to have {low0_rc, high0_rc, low1_rc, high1_rc},
+   and next to have {high0_rc, low1_rc, high1_rc, nextlow_rc} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_7mers_rev_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  oligo = _mm_or_si128( _mm_srli_epi32(current,20), _mm_slli_epi32(next,12));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,10), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,8), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask7));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask7));
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,18)); /* No mask necessary */
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,16), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask7));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask7));
+  _mm_store_si128(out++, _mm_and_si128( current, mask7));
+
+  return;
+}
+#endif
+
+
+static Chrpos_T
+store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 		 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
   Genomecomp_T masked, oligo;
 
-  oligo = high_rc >> 18;	/* For 31..25 */
-  oligo |= nextlow_rc << 14;
+  oligo = high_rc >> 20;	/* For 31..26 */
+  oligo |= nextlow_rc << 12;
 
-  masked = (oligo >> 12) & MASK8; /* 31 */
+  masked = (oligo >> 10) & MASK7; /* 31 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11881,7 +14562,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 10) & MASK8; /* 30 */
+  masked = (oligo >> 8) & MASK7; /* 30 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11890,7 +14571,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 8) & MASK8; /* 29 */
+  masked = (oligo >> 6) & MASK7; /* 29 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11899,7 +14580,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK8; /* 28 */
+  masked = (oligo >> 4) & MASK7; /* 28 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11908,7 +14589,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK8; /* 27 */
+  masked = (oligo >> 2) & MASK7; /* 27 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11917,7 +14598,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK8; /* 26 */
+  masked = oligo & MASK7; /* 26 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11926,7 +14607,8 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK8; /* 25 */
+
+  masked = high_rc >> 18;	/* 25, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11935,8 +14617,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = (high_rc >> 16) & MASK8; /* 24 */
+  masked = (high_rc >> 16) & MASK7; /* 24 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11945,7 +14626,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 14) & MASK8; /* 23 */
+  masked = (high_rc >> 14) & MASK7; /* 23 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11954,7 +14635,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 12) & MASK8; /* 22 */
+  masked = (high_rc >> 12) & MASK7; /* 22 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11963,7 +14644,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 10) & MASK8; /* 21 */
+  masked = (high_rc >> 10) & MASK7; /* 21 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11972,7 +14653,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 8) & MASK8; /* 20 */
+  masked = (high_rc >> 8) & MASK7; /* 20 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11981,7 +14662,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 6) & MASK8; /* 19 */
+  masked = (high_rc >> 6) & MASK7; /* 19 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11990,7 +14671,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 4) & MASK8; /* 18 */
+  masked = (high_rc >> 4) & MASK7; /* 18 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -11999,7 +14680,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 2) & MASK8; /* 17 */
+  masked = (high_rc >> 2) & MASK7; /* 17 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12008,7 +14689,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = high_rc & MASK8;	/* 16 */
+  masked = high_rc & MASK7;	/* 16 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12018,10 +14699,10 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
   }
 
 
-  oligo = low_rc >> 18;		/* For 15..9 */
-  oligo |= high_rc << 14;
+  oligo = low_rc >> 20;		/* For 15..10 */
+  oligo |= high_rc << 12;
 
-  masked = (oligo >> 12) & MASK8; /* 15 */
+  masked = (oligo >> 10) & MASK7; /* 15 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12030,7 +14711,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 10) & MASK8; /* 14 */
+  masked = (oligo >> 8) & MASK7; /* 14 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12039,7 +14720,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 8) & MASK8; /* 13 */
+  masked = (oligo >> 6) & MASK7; /* 13 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12048,7 +14729,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK8; /* 12 */
+  masked = (oligo >> 4) & MASK7; /* 12 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12057,7 +14738,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK8; /* 11 */
+  masked = (oligo >> 2) & MASK7; /* 11 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12066,7 +14747,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK8; /* 10 */
+  masked = oligo & MASK7; /* 10 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12075,7 +14756,8 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK8; /* 9 */
+
+  masked = low_rc >> 18;	/* 9, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12084,8 +14766,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = (low_rc >> 16) & MASK8; /* 8 */
+  masked = (low_rc >> 16) & MASK7; /* 8 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12094,7 +14775,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 14) & MASK8; /* 7 */
+  masked = (low_rc >> 14) & MASK7; /* 7 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12103,7 +14784,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 12) & MASK8; /* 6 */
+  masked = (low_rc >> 12) & MASK7; /* 6 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12112,7 +14793,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 10) & MASK8; /* 5 */
+  masked = (low_rc >> 10) & MASK7; /* 5 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12121,7 +14802,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 8) & MASK8; /* 4 */
+  masked = (low_rc >> 8) & MASK7; /* 4 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12130,7 +14811,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 6) & MASK8; /* 3 */
+  masked = (low_rc >> 6) & MASK7; /* 3 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12139,7 +14820,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 4) & MASK8; /* 2 */
+  masked = (low_rc >> 4) & MASK7; /* 2 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12148,7 +14829,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 2) & MASK8; /* 1 */
+  masked = (low_rc >> 2) & MASK7; /* 1 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12157,7 +14838,7 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = low_rc & MASK8;	/* 0 */
+  masked = low_rc & MASK7;	/* 0 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12170,162 +14851,191 @@ store_8mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
 }
 
 
-
 static void
-count_7mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
+count_6mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
   Genomecomp_T masked, oligo;
 
-  oligo = high_rc >> 20;	/* For 31..26 */
-  oligo |= nextlow_rc << 12;
+  oligo = high_rc >> 22;	/* For 31..27 */
+  oligo |= nextlow_rc << 10;
 
-  masked = (oligo >> 10) & MASK7; /* 31 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 8) & MASK6; /* 31 */
   counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 8) & MASK7; /* 30 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK6; /* 30 */
   counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK7; /* 29 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK6; /* 29 */
   counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK7; /* 28 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK6; /* 28 */
   counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK7; /* 27 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK6; /* 27 */
   counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK7; /* 26 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  masked = high_rc >> 20;	/* 26, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 18) & MASK7; /* 25 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 18) & MASK6; /* 25 */
   counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 16) & MASK7; /* 24 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 16) & MASK6; /* 24 */
   counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 14) & MASK7; /* 23 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 14) & MASK6; /* 23 */
   counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 12) & MASK7; /* 22 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 12) & MASK6; /* 22 */
   counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 10) & MASK7; /* 21 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 10) & MASK6; /* 21 */
   counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 8) & MASK7; /* 20 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 8) & MASK6; /* 20 */
   counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 6) & MASK7; /* 19 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 6) & MASK6; /* 19 */
   counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 4) & MASK7; /* 18 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 4) & MASK6; /* 18 */
   counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 2) & MASK7; /* 17 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 2) & MASK6; /* 17 */
   counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
 
-  masked = high_rc & MASK7;	/* 16 */
-  debug(printf("%04X\n",masked));
+  masked = high_rc & MASK6;	/* 16 */
   counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
 
 
-  oligo = low_rc >> 20;		/* For 15..10 */
-  oligo |= high_rc << 12;
+  oligo = low_rc >> 22;		/* For 15..11 */
+  oligo |= high_rc << 10;
 
-  masked = (oligo >> 10) & MASK7; /* 15 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 8) & MASK6; /* 15 */
   counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 8) & MASK7; /* 14 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK6; /* 14 */
   counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 6) & MASK7; /* 13 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK6; /* 13 */
   counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK7; /* 12 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK6; /* 12 */
   counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK7; /* 11 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK6; /* 11 */
   counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK7; /* 10 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
+  masked = low_rc >> 20;	/* 10, No mask necessary */
+  counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 18) & MASK7; /* 9 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 18) & MASK6; /* 9 */
   counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 16) & MASK7; /* 8 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 16) & MASK6; /* 8 */
   counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 14) & MASK7; /* 7 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 14) & MASK6; /* 7 */
   counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 12) & MASK7; /* 6 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 12) & MASK6; /* 6 */
   counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 10) & MASK7; /* 5 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 10) & MASK6; /* 5 */
   counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 8) & MASK7; /* 4 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 8) & MASK6; /* 4 */
   counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 6) & MASK7; /* 3 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 6) & MASK6; /* 3 */
   counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 4) & MASK7; /* 2 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 4) & MASK6; /* 2 */
   counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 2) & MASK7; /* 1 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 2) & MASK6; /* 1 */
   counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
 
-  masked = low_rc & MASK7;	/* 0 */
-  debug(printf("%04X\n",masked));
+  masked = low_rc & MASK6;	/* 0 */
   counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
+
+
+  return;
+}
 
+/* Expecting current to have {low0_rc, high0_rc, low1_rc, high1_rc},
+   and next to have {high0_rc, low1_rc, high1_rc, nextlow_rc} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_6mers_rev_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  oligo = _mm_or_si128( _mm_srli_epi32(current,22), _mm_slli_epi32(next,10));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,8), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask6));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask6));
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,20));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,18), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,16), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask6));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask6));
+  _mm_store_si128(out++, _mm_and_si128( current, mask6));
 
   return;
 }
+#endif
 
 
 static int
-store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 		 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
   Genomecomp_T masked, oligo;
 
-  oligo = high_rc >> 20;	/* For 31..26 */
-  oligo |= nextlow_rc << 12;
+  oligo = high_rc >> 22;	/* For 31..27 */
+  oligo |= nextlow_rc << 10;
 
-  masked = (oligo >> 10) & MASK7; /* 31 */
+  masked = (oligo >> 8) & MASK6; /* 31 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12334,7 +15044,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 8) & MASK7; /* 30 */
+  masked = (oligo >> 6) & MASK6; /* 30 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12343,7 +15053,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK7; /* 29 */
+  masked = (oligo >> 4) & MASK6; /* 29 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12352,7 +15062,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK7; /* 28 */
+  masked = (oligo >> 2) & MASK6; /* 28 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12361,7 +15071,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK7; /* 27 */
+  masked = oligo & MASK6; /* 27 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12370,7 +15080,8 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK7; /* 26 */
+
+  masked = high_rc >> 20;	/* 26, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12379,8 +15090,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = (high_rc >> 18) & MASK7; /* 25 */
+  masked = (high_rc >> 18) & MASK6; /* 25 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12389,7 +15099,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 16) & MASK7; /* 24 */
+  masked = (high_rc >> 16) & MASK6; /* 24 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12398,7 +15108,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 14) & MASK7; /* 23 */
+  masked = (high_rc >> 14) & MASK6; /* 23 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12407,7 +15117,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 12) & MASK7; /* 22 */
+  masked = (high_rc >> 12) & MASK6; /* 22 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12416,7 +15126,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 10) & MASK7; /* 21 */
+  masked = (high_rc >> 10) & MASK6; /* 21 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12425,7 +15135,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 8) & MASK7; /* 20 */
+  masked = (high_rc >> 8) & MASK6; /* 20 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12434,7 +15144,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 6) & MASK7; /* 19 */
+  masked = (high_rc >> 6) & MASK6; /* 19 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12443,7 +15153,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 4) & MASK7; /* 18 */
+  masked = (high_rc >> 4) & MASK6; /* 18 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12452,7 +15162,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 2) & MASK7; /* 17 */
+  masked = (high_rc >> 2) & MASK6; /* 17 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12461,7 +15171,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = high_rc & MASK7;	/* 16 */
+  masked = high_rc & MASK6;	/* 16 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12471,10 +15181,10 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
   }
 
 
-  oligo = low_rc >> 20;		/* For 15..10 */
-  oligo |= high_rc << 12;
+  oligo = low_rc >> 22;		/* For 15..11 */
+  oligo |= high_rc << 10;
 
-  masked = (oligo >> 10) & MASK7; /* 15 */
+  masked = (oligo >> 8) & MASK6; /* 15 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12483,7 +15193,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 8) & MASK7; /* 14 */
+  masked = (oligo >> 6) & MASK6; /* 14 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12492,7 +15202,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK7; /* 13 */
+  masked = (oligo >> 4) & MASK6; /* 13 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12501,7 +15211,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK7; /* 12 */
+  masked = (oligo >> 2) & MASK6; /* 12 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12510,7 +15220,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK7; /* 11 */
+  masked = oligo & MASK6; /* 11 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12519,7 +15229,8 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK7; /* 10 */
+
+  masked = low_rc >> 20;	/* 10, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12528,8 +15239,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = (low_rc >> 18) & MASK7; /* 9 */
+  masked = (low_rc >> 18) & MASK6; /* 9 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12538,7 +15248,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 16) & MASK7; /* 8 */
+  masked = (low_rc >> 16) & MASK6; /* 8 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12547,7 +15257,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 14) & MASK7; /* 7 */
+  masked = (low_rc >> 14) & MASK6; /* 7 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12556,7 +15266,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 12) & MASK7; /* 6 */
+  masked = (low_rc >> 12) & MASK6; /* 6 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12565,7 +15275,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 10) & MASK7; /* 5 */
+  masked = (low_rc >> 10) & MASK6; /* 5 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12574,7 +15284,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 8) & MASK7; /* 4 */
+  masked = (low_rc >> 8) & MASK6; /* 4 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12583,7 +15293,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 6) & MASK7; /* 3 */
+  masked = (low_rc >> 6) & MASK6; /* 3 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12592,7 +15302,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 4) & MASK7; /* 2 */
+  masked = (low_rc >> 4) & MASK6; /* 2 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12601,7 +15311,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 2) & MASK7; /* 1 */
+  masked = (low_rc >> 2) & MASK6; /* 1 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12610,7 +15320,7 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = low_rc & MASK7;	/* 0 */
+  masked = low_rc & MASK6;	/* 0 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12624,160 +15334,190 @@ store_7mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
 
 
 static void
-count_6mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
+count_5mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
   Genomecomp_T masked, oligo;
 
-  oligo = high_rc >> 22;	/* For 31..27 */
-  oligo |= nextlow_rc << 10;
-
-  masked = (oligo >> 8) & MASK6; /* 31 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  oligo = high_rc >> 24;	/* For 31..28 */
+  oligo |= nextlow_rc << 8;
 
-  masked = (oligo >> 6) & MASK6; /* 30 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK5; /* 31 */
   counts[masked] += 1;
+  debug(printf("31 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK6; /* 29 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK5; /* 30 */
   counts[masked] += 1;
+  debug(printf("30 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK6; /* 28 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK5; /* 29 */
   counts[masked] += 1;
+  debug(printf("29 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK6; /* 27 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK5; /* 28 */
   counts[masked] += 1;
+  debug(printf("28 %04X => %d\n",masked,counts[masked]));
 
 
-  masked = (high_rc >> 20) & MASK6; /* 26 */
-  debug(printf("%04X\n",masked));
+  masked = high_rc >> 22;	/* 27, No mask necessary */
   counts[masked] += 1;
+  debug(printf("27 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 18) & MASK6; /* 25 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 20) & MASK5; /* 26 */
   counts[masked] += 1;
+  debug(printf("26 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 16) & MASK6; /* 24 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 18) & MASK5; /* 25 */
   counts[masked] += 1;
+  debug(printf("25 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 14) & MASK6; /* 23 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 16) & MASK5; /* 24 */
   counts[masked] += 1;
+  debug(printf("24 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 12) & MASK6; /* 22 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 14) & MASK5; /* 23 */
   counts[masked] += 1;
+  debug(printf("23 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 10) & MASK6; /* 21 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 12) & MASK5; /* 22 */
   counts[masked] += 1;
+  debug(printf("22 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 8) & MASK6; /* 20 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 10) & MASK5; /* 21 */
   counts[masked] += 1;
+  debug(printf("21 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 6) & MASK6; /* 19 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 8) & MASK5; /* 20 */
   counts[masked] += 1;
+  debug(printf("20 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 4) & MASK6; /* 18 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 6) & MASK5; /* 19 */
   counts[masked] += 1;
+  debug(printf("19 %04X => %d\n",masked,counts[masked]));
 
-  masked = (high_rc >> 2) & MASK6; /* 17 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 4) & MASK5; /* 18 */
   counts[masked] += 1;
+  debug(printf("18 %04X => %d\n",masked,counts[masked]));
 
-  masked = high_rc & MASK6;	/* 16 */
-  debug(printf("%04X\n",masked));
+  masked = (high_rc >> 2) & MASK5; /* 17 */
   counts[masked] += 1;
+  debug(printf("17 %04X => %d\n",masked,counts[masked]));
 
+  masked = high_rc & MASK5;	/* 16 */
+  counts[masked] += 1;
+  debug(printf("16 %04X => %d\n",masked,counts[masked]));
 
-  oligo = low_rc >> 22;		/* For 15..11 */
-  oligo |= high_rc << 10;
 
-  masked = (oligo >> 8) & MASK6; /* 15 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  oligo = low_rc >> 24;		/* For 15..12 */
+  oligo |= high_rc << 8;
 
-  masked = (oligo >> 6) & MASK6; /* 14 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 6) & MASK5; /* 15 */
   counts[masked] += 1;
+  debug(printf("15 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 4) & MASK6; /* 13 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 4) & MASK5; /* 14 */
   counts[masked] += 1;
+  debug(printf("14 %04X => %d\n",masked,counts[masked]));
 
-  masked = (oligo >> 2) & MASK6; /* 12 */
-  debug(printf("%04X\n",masked));
+  masked = (oligo >> 2) & MASK5; /* 13 */
   counts[masked] += 1;
+  debug(printf("13 %04X => %d\n",masked,counts[masked]));
 
-  masked = oligo & MASK6; /* 11 */
-  debug(printf("%04X\n",masked));
+  masked = oligo & MASK5; /* 12 */
   counts[masked] += 1;
+  debug(printf("12 %04X => %d\n",masked,counts[masked]));
 
 
-  masked = (low_rc >> 20) & MASK6; /* 10 */
-  debug(printf("%04X\n",masked));
+  masked = low_rc >> 22;	/* 11, No mask necessary */
   counts[masked] += 1;
+  debug(printf("11 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 18) & MASK6; /* 9 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 20) & MASK5; /* 10 */
   counts[masked] += 1;
+  debug(printf("10 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 16) & MASK6; /* 8 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 18) & MASK5; /* 9 */
   counts[masked] += 1;
+  debug(printf("9 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 14) & MASK6; /* 7 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 16) & MASK5; /* 8 */
   counts[masked] += 1;
+  debug(printf("8 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 12) & MASK6; /* 6 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 14) & MASK5; /* 7 */
   counts[masked] += 1;
+  debug(printf("7 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 10) & MASK6; /* 5 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 12) & MASK5; /* 6 */
   counts[masked] += 1;
+  debug(printf("6 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 8) & MASK6; /* 4 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 10) & MASK5; /* 5 */
   counts[masked] += 1;
+  debug(printf("5 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 6) & MASK6; /* 3 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 8) & MASK5; /* 4 */
   counts[masked] += 1;
+  debug(printf("4 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 4) & MASK6; /* 2 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 6) & MASK5; /* 3 */
   counts[masked] += 1;
+  debug(printf("3 %04X => %d\n",masked,counts[masked]));
 
-  masked = (low_rc >> 2) & MASK6; /* 1 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 4) & MASK5; /* 2 */
   counts[masked] += 1;
+  debug(printf("2 %04X => %d\n",masked,counts[masked]));
 
-  masked = low_rc & MASK6;	/* 0 */
-  debug(printf("%04X\n",masked));
+  masked = (low_rc >> 2) & MASK5; /* 1 */
+  counts[masked] += 1;
+  debug(printf("1 %04X => %d\n",masked,counts[masked]));
+
+  masked = low_rc & MASK5;	/* 0 */
   counts[masked] += 1;
+  debug(printf("0 %04X => %d\n",masked,counts[masked]));
+
+
+  return;
+}
 
+/* Expecting current to have {low0_rc, high0_rc, low1_rc, high1_rc},
+   and next to have {high0_rc, low1_rc, high1_rc, nextlow_rc} */
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+extract_5mers_rev_simd (__m128i *out, __m128i current, __m128i next) {
+  __m128i oligo;
+
+  oligo = _mm_or_si128( _mm_srli_epi32(current,24), _mm_slli_epi32(next,8));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,6), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,4), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(oligo,2), mask5));
+  _mm_store_si128(out++, _mm_and_si128( oligo, mask5));
+
+  _mm_store_si128(out++, _mm_srli_epi32(current,22));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,20), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,18), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,16), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,14), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,12), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,10), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,8), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,6), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,4), mask5));
+  _mm_store_si128(out++, _mm_and_si128( _mm_srli_epi32(current,2), mask5));
+  _mm_store_si128(out++, _mm_and_si128( current, mask5));
 
   return;
 }
+#endif
 
 
 static int
-store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
+store_5mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 		 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
   Genomecomp_T masked, oligo;
 
-  oligo = high_rc >> 22;	/* For 31..27 */
-  oligo |= nextlow_rc << 10;
+  oligo = high_rc >> 24;	/* For 31..28 */
+  oligo |= nextlow_rc << 8;
 
-  masked = (oligo >> 8) & MASK6; /* 31 */
+  masked = (oligo >> 6) & MASK5; /* 31 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12786,7 +15526,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK6; /* 30 */
+  masked = (oligo >> 4) & MASK5; /* 30 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12795,7 +15535,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK6; /* 29 */
+  masked = (oligo >> 2) & MASK5; /* 29 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12804,7 +15544,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK6; /* 28 */
+  masked = oligo & MASK5; /* 28 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12813,7 +15553,8 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK6; /* 27 */
+
+  masked = high_rc >> 22;	/* 27, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12822,8 +15563,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = (high_rc >> 20) & MASK6; /* 26 */
+  masked = (high_rc >> 20) & MASK5; /* 26 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12832,7 +15572,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 18) & MASK6; /* 25 */
+  masked = (high_rc >> 18) & MASK5; /* 25 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12841,7 +15581,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 16) & MASK6; /* 24 */
+  masked = (high_rc >> 16) & MASK5; /* 24 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12850,7 +15590,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 14) & MASK6; /* 23 */
+  masked = (high_rc >> 14) & MASK5; /* 23 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12859,7 +15599,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 12) & MASK6; /* 22 */
+  masked = (high_rc >> 12) & MASK5; /* 22 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12868,7 +15608,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 10) & MASK6; /* 21 */
+  masked = (high_rc >> 10) & MASK5; /* 21 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12877,7 +15617,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 8) & MASK6; /* 20 */
+  masked = (high_rc >> 8) & MASK5; /* 20 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12886,7 +15626,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 6) & MASK6; /* 19 */
+  masked = (high_rc >> 6) & MASK5; /* 19 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12895,7 +15635,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 4) & MASK6; /* 18 */
+  masked = (high_rc >> 4) & MASK5; /* 18 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12904,7 +15644,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (high_rc >> 2) & MASK6; /* 17 */
+  masked = (high_rc >> 2) & MASK5; /* 17 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12913,7 +15653,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = high_rc & MASK6;	/* 16 */
+  masked = high_rc & MASK5;	/* 16 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12923,10 +15663,10 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
   }
 
 
-  oligo = low_rc >> 22;		/* For 15..11 */
-  oligo |= high_rc << 10;
+  oligo = low_rc >> 24;		/* For 15..12 */
+  oligo |= high_rc << 8;
 
-  masked = (oligo >> 8) & MASK6; /* 15 */
+  masked = (oligo >> 6) & MASK5; /* 15 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12935,7 +15675,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 6) & MASK6; /* 14 */
+  masked = (oligo >> 4) & MASK5; /* 14 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12944,7 +15684,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 4) & MASK6; /* 13 */
+  masked = (oligo >> 2) & MASK5; /* 13 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12953,7 +15693,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (oligo >> 2) & MASK6; /* 12 */
+  masked = oligo & MASK5; /* 12 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12962,7 +15702,8 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = oligo & MASK6; /* 11 */
+
+  masked = low_rc >> 22;	/* 11, No mask necessary */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12971,8 +15712,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-
-  masked = (low_rc >> 20) & MASK6; /* 10 */
+  masked = (low_rc >> 20) & MASK5; /* 10 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12981,7 +15721,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 18) & MASK6; /* 9 */
+  masked = (low_rc >> 18) & MASK5; /* 9 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12990,7 +15730,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 16) & MASK6; /* 8 */
+  masked = (low_rc >> 16) & MASK5; /* 8 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -12999,7 +15739,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 14) & MASK6; /* 7 */
+  masked = (low_rc >> 14) & MASK5; /* 7 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13008,7 +15748,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 12) & MASK6; /* 6 */
+  masked = (low_rc >> 12) & MASK5; /* 6 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13017,7 +15757,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 10) & MASK6; /* 5 */
+  masked = (low_rc >> 10) & MASK5; /* 5 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13026,7 +15766,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 8) & MASK6; /* 4 */
+  masked = (low_rc >> 8) & MASK5; /* 4 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13035,7 +15775,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 6) & MASK6; /* 3 */
+  masked = (low_rc >> 6) & MASK5; /* 3 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13044,7 +15784,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 4) & MASK6; /* 2 */
+  masked = (low_rc >> 4) & MASK5; /* 2 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13053,7 +15793,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = (low_rc >> 2) & MASK6; /* 1 */
+  masked = (low_rc >> 2) & MASK5; /* 1 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13062,7 +15802,7 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
     }
   }
 
-  masked = low_rc & MASK6;	/* 0 */
+  masked = low_rc & MASK5;	/* 0 */
   if (counts[masked]) {
     if (pointers[masked] == positions[masked/*+1*/]) {
       counts[masked] = 0;
@@ -13075,461 +15815,763 @@ store_6mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Cou
 }
 
 
+#if (!defined(USE_SIMD_FOR_COUNTS) || defined(DEBUG14))
 static void
-count_5mers_rev (Count_T *counts, Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
-  Genomecomp_T masked, oligo;
-
-  oligo = high_rc >> 24;	/* For 31..28 */
-  oligo |= nextlow_rc << 8;
-
-  masked = (oligo >> 6) & MASK5; /* 31 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (oligo >> 4) & MASK5; /* 30 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (oligo >> 2) & MASK5; /* 29 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = oligo & MASK5; /* 28 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-
-  masked = (high_rc >> 22) & MASK5; /* 27 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 20) & MASK5; /* 26 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 18) & MASK5; /* 25 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 16) & MASK5; /* 24 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 14) & MASK5; /* 23 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 12) & MASK5; /* 22 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 10) & MASK5; /* 21 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 8) & MASK5; /* 20 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
-
-  masked = (high_rc >> 6) & MASK5; /* 19 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+count_positions_rev_std (Count_T *counts, int indexsize, Univcoord_T left, Univcoord_T left_plus_length,
+			 int genestrand) {
+  int startdiscard, enddiscard;
+  Genomecomp_T ptr, startptr, endptr, low_rc, high_rc, nextlow_rc,
+    low, high, nextlow;
 
-  masked = (high_rc >> 4) & MASK5; /* 18 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  debug(printf("Starting count_positions_rev_std\n"));
 
-  masked = (high_rc >> 2) & MASK5; /* 17 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+#if 0
+  /* No.  This extends past the query */
+  if (left != 0U) {
+    left -= 1;	/* Needed to get last oligomer to match */
+  }
+#endif
+  left_plus_length -= indexsize;
 
-  masked = high_rc & MASK5;	/* 16 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  startptr = left/32U*3;
+  ptr = endptr = left_plus_length/32U*3;
+  startdiscard = left % 32; /* (left+pos5) % 32 */
+  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
+  
+  if (left_plus_length <= left) {
+    /* Skip */
 
+  } else if (startptr == endptr) {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
 
-  oligo = low_rc >> 24;		/* For 15..12 */
-  oligo |= high_rc << 8;
+    low_rc = ~low;
+    high_rc = ~high;
+    nextlow_rc = ~nextlow;
 
-  masked = (oligo >> 6) & MASK5; /* 15 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+    if (indexsize == 8) {
+      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else {
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
 
-  masked = (oligo >> 4) & MASK5; /* 14 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+  } else {
+    /* Genome_print_blocks(ref_blocks,left,left+16); */
 
-  masked = (oligo >> 2) & MASK5; /* 13 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
 
-  masked = oligo & MASK5; /* 12 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+    low_rc = ~low;
+    high_rc = ~high;
+    nextlow_rc = ~nextlow;
 
+    if (indexsize == 8) {
+      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else {
+      abort();
+    }
 
-  masked = (low_rc >> 22) & MASK5; /* 11 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+    ptr -= 3;
 
-  masked = (low_rc >> 20) & MASK5; /* 10 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+    if (indexsize == 8) {
+      while (ptr > startptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
 
-  masked = (low_rc >> 18) & MASK5; /* 9 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	low_rc = ~low;
+	high_rc = ~high;
+	nextlow_rc = ~nextlow;
 
-  masked = (low_rc >> 16) & MASK5; /* 8 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	count_8mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	ptr -= 3;
+      }
+    } else if (indexsize == 7) {
+      while (ptr > startptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
 
-  masked = (low_rc >> 14) & MASK5; /* 7 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	low_rc = ~low;
+	high_rc = ~high;
+	nextlow_rc = ~nextlow;
 
-  masked = (low_rc >> 12) & MASK5; /* 6 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	count_7mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	ptr -= 3;
+      }
+    } else if (indexsize == 6) {
+      while (ptr > startptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
 
-  masked = (low_rc >> 10) & MASK5; /* 5 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	low_rc = ~low;
+	high_rc = ~high;
+	nextlow_rc = ~nextlow;
 
-  masked = (low_rc >> 8) & MASK5; /* 4 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	count_6mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	ptr -= 3;
+      }
+    } else if (indexsize == 5) {
+      while (ptr > startptr) {
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+	high = ref_blocks[ptr];
+	low = ref_blocks[ptr+1];
+	nextlow = ref_blocks[ptr+4];
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  }
+	}
 
-  masked = (low_rc >> 6) & MASK5; /* 3 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	low_rc = ~low;
+	high_rc = ~high;
+	nextlow_rc = ~nextlow;
 
-  masked = (low_rc >> 4) & MASK5; /* 2 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+	count_5mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	ptr -= 3;
+      }
+    } else {
+      abort();
+    }
 
-  masked = (low_rc >> 2) & MASK5; /* 1 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
 
-  masked = low_rc & MASK5;	/* 0 */
-  debug(printf("%04X\n",masked));
-  counts[masked] += 1;
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
+    }
 
+    low_rc = ~low;
+    high_rc = ~high;
+    nextlow_rc = ~nextlow;
 
+    if (indexsize == 8) {
+      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 7) {
+      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 6) {
+      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 5) {
+      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else {
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
+  }
+  
   return;
 }
+#endif
+ 
 
+#ifdef USE_SIMD_FOR_COUNTS
+static void
+count_positions_rev_simd (Count_T *counts, int indexsize, Univcoord_T left, Univcoord_T left_plus_length,
+			  int genestrand) {
+  int startdiscard, enddiscard;
+  Genomecomp_T ptr, startptr, endptr, low_rc, high_rc, nextlow_rc,
+    low, high, nextlow;
+  Genomecomp_T low1_rc, high1_rc, low0, high0, low1, high1;
+  __m128i current, next;
+  __m128i array[16];
+#ifdef HAVE_SSE4_1
+  __m128i temp;
+#endif
 
-static int
-store_5mers_rev (Chrpos_T chrpos, Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
-		 Genomecomp_T low_rc, Genomecomp_T high_rc, Genomecomp_T nextlow_rc) {
-  Genomecomp_T masked, oligo;
+  debug(printf("Starting count_positions_rev_simd\n"));
 
-  oligo = high_rc >> 24;	/* For 31..28 */
-  oligo |= nextlow_rc << 8;
+#if 0
+  /* No.  This extends past the query */
+  if (left != 0U) {
+    left -= 1;	/* Needed to get last oligomer to match */
+  }
+#endif
+  left_plus_length -= indexsize;
 
-  masked = (oligo >> 6) & MASK5; /* 31 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos;
+  startptr = left/32U*3;
+  ptr = endptr = left_plus_length/32U*3;
+  startdiscard = left % 32; /* (left+pos5) % 32 */
+  enddiscard = left_plus_length % 32; /* (left+pos3) % 32 */
+  
+  if (left_plus_length <= left) {
+    /* Skip */
+
+  } else if (startptr == endptr) {
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
     }
-  }
 
-  masked = (oligo >> 4) & MASK5; /* 30 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
+    low_rc = ~low;
+    high_rc = ~high;
+    nextlow_rc = ~nextlow;
+
+    if (indexsize == 8) {
+      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
     } else {
-      *(pointers[masked]++) = chrpos + 1;
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
+    }
+
+  } else {
+    /* Genome_print_blocks(ref_blocks,left,left+16); */
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    nextlow = ref_blocks[ptr+4];
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      }
     }
-  }
 
-  masked = (oligo >> 2) & MASK5; /* 29 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 2;
-    }
-  }
+    low_rc = ~low;
+    high_rc = ~high;
+    nextlow_rc = ~nextlow;
 
-  masked = oligo & MASK5; /* 28 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
+    if (indexsize == 8) {
+      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 7) {
+      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 6) {
+      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+    } else if (indexsize == 5) {
+      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
     } else {
-      *(pointers[masked]++) = chrpos + 3;
+      abort();
     }
-  }
 
+    if (indexsize == 8) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
 
-  masked = (high_rc >> 22) & MASK5; /* 27 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 4;
-    }
-  }
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  masked = (high_rc >> 20) & MASK5; /* 26 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 5;
-    }
-  }
+	nextlow_rc = low_rc; /* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
 
-  masked = (high_rc >> 18) & MASK5; /* 25 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 6;
-    }
-  }
+	extract_8mers_rev_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+      }
 
-  masked = (high_rc >> 16) & MASK5; /* 24 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 7;
-    }
-  }
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr;		/* ptr -= 6; */
 
-  masked = (high_rc >> 14) & MASK5; /* 23 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 8;
-    }
-  }
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  masked = (high_rc >> 12) & MASK5; /* 22 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 9;
-    }
-  }
+	nextlow_rc = low_rc;	/* depended on nextlow; */
+	low_rc = ~low;
+	high_rc = ~high;
 
-  masked = (high_rc >> 10) & MASK5; /* 21 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 10;
-    }
-  }
+	count_8mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	/* ptr already at startptr */
+      }
 
-  masked = (high_rc >> 8) & MASK5; /* 20 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 11;
-    }
-  }
+    } else if (indexsize == 7) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
 
-  masked = (high_rc >> 6) & MASK5; /* 19 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 12;
-    }
-  }
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  masked = (high_rc >> 4) & MASK5; /* 18 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 13;
-    }
-  }
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
 
-  masked = (high_rc >> 2) & MASK5; /* 17 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 14;
-    }
-  }
+	extract_7mers_rev_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+      }
 
-  masked = high_rc & MASK5;	/* 16 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 15;
-    }
-  }
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr; /* ptr -= 6; */
 
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  oligo = low_rc >> 24;		/* For 15..12 */
-  oligo |= high_rc << 8;
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low;
+	high_rc = ~high;
 
-  masked = (oligo >> 6) & MASK5; /* 15 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 16;
-    }
-  }
+	count_7mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	/* ptr already at startptr */
+      }
 
-  masked = (oligo >> 4) & MASK5; /* 14 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 17;
-    }
-  }
+    } else if (indexsize == 6) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
 
-  masked = (oligo >> 2) & MASK5; /* 13 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 18;
-    }
-  }
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  masked = oligo & MASK5; /* 12 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 19;
-    }
-  }
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
 
+	extract_6mers_rev_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+      }
 
-  masked = (low_rc >> 22) & MASK5; /* 11 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 20;
-    }
-  }
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr; /* ptr -= 6; */
 
-  masked = (low_rc >> 20) & MASK5; /* 10 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 21;
-    }
-  }
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
+
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low;
+	high_rc = ~high;
+
+	count_6mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	/* ptr already at startptr */
+      }
 
-  masked = (low_rc >> 18) & MASK5; /* 9 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 22;
-    }
-  }
+    } else if (indexsize == 5) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
 
-  masked = (low_rc >> 16) & MASK5; /* 8 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 23;
-    }
-  }
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  masked = (low_rc >> 14) & MASK5; /* 7 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 24;
-    }
-  }
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
 
-  masked = (low_rc >> 12) & MASK5; /* 6 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 25;
-    }
-  }
+	extract_5mers_rev_simd(array,current,next);
+	count_fwdrev_simd(counts,(Genomecomp_T *) array);
+      }
 
-  masked = (low_rc >> 10) & MASK5; /* 5 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 26;
-    }
-  }
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr; /* ptr -= 6; */
+	
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
 
-  masked = (low_rc >> 8) & MASK5; /* 4 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 27;
-    }
-  }
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low;
+	high_rc = ~high;
 
-  masked = (low_rc >> 6) & MASK5; /* 3 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 28;
-    }
-  }
+	count_5mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	/* ptr already at startptr */
+      }
 
-  masked = (low_rc >> 4) & MASK5; /* 2 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
     } else {
-      *(pointers[masked]++) = chrpos + 29;
+      abort();
     }
-  }
 
-  masked = (low_rc >> 2) & MASK5; /* 1 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
-    } else {
-      *(pointers[masked]++) = chrpos + 30;
+
+#ifdef WORDS_BIGENDIAN
+    high = Bigendian_convert_uint(ref_blocks[ptr]);
+    low = Bigendian_convert_uint(ref_blocks[ptr+1]);
+    /* nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]); */
+#else
+    high = ref_blocks[ptr];
+    low = ref_blocks[ptr+1];
+    /* nextlow = ref_blocks[ptr+4]; */
+#endif
+    if (mode == CMET_STRANDED) {
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+    } else if (mode == CMET_NONSTRANDED) {
+      if (genestrand > 0) {
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+      } else {
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+      }
     }
-  }
 
-  masked = low_rc & MASK5;	/* 0 */
-  if (counts[masked]) {
-    if (pointers[masked] == positions[masked/*+1*/]) {
-      counts[masked] = 0;
+    nextlow_rc = low_rc;	/* depended on nextlow */
+    low_rc = ~low;
+    high_rc = ~high;
+
+    if (indexsize == 8) {
+      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 7) {
+      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 6) {
+      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+    } else if (indexsize == 5) {
+      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
     } else {
-      *(pointers[masked]++) = chrpos + 31;
+      fprintf(stderr,"indexsize %d not supported\n",indexsize);
+      abort();
     }
   }
-
-  return chrpos + 32;
+  
+  return;
 }
+#endif
+ 
 
-
+#if (!defined(USE_SIMD_FOR_COUNTS) || defined(DEBUG14))
 static void
-count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord_T left_plus_length,
-		     int genestrand) {
+store_positions_rev_std (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts, int indexsize,
+			 Univcoord_T left, Univcoord_T left_plus_length, Chrpos_T chrpos,
+			 int genestrand) {
   int startdiscard, enddiscard;
   Genomecomp_T ptr, startptr, endptr, low_rc, high_rc, nextlow_rc,
     low, high, nextlow;
@@ -13576,13 +16618,13 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
     nextlow_rc = ~nextlow;
 
     if (indexsize == 8) {
-      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+      chrpos = store_8mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
     } else if (indexsize == 7) {
-      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+      chrpos = store_7mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
     } else if (indexsize == 6) {
-      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+      chrpos = store_6mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
     } else if (indexsize == 5) {
-      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
+      chrpos = store_5mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,enddiscard);
     } else {
       fprintf(stderr,"indexsize %d not supported\n",indexsize);
       abort();
@@ -13615,13 +16657,13 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
     nextlow_rc = ~nextlow;
 
     if (indexsize == 8) {
-      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+      chrpos = store_8mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
     } else if (indexsize == 7) {
-      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+      chrpos = store_7mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
     } else if (indexsize == 6) {
-      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+      chrpos = store_6mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
     } else if (indexsize == 5) {
-      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
+      chrpos = store_5mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,/*startdiscard*/0,enddiscard);
     } else {
       abort();
     }
@@ -13653,9 +16695,10 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	high_rc = ~high;
 	nextlow_rc = ~nextlow;
 
-	count_8mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	chrpos = store_8mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
 	ptr -= 3;
       }
+
     } else if (indexsize == 7) {
       while (ptr > startptr) {
 #ifdef WORDS_BIGENDIAN
@@ -13681,9 +16724,10 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	high_rc = ~high;
 	nextlow_rc = ~nextlow;
 
-	count_7mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	chrpos = store_7mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
 	ptr -= 3;
       }
+
     } else if (indexsize == 6) {
       while (ptr > startptr) {
 #ifdef WORDS_BIGENDIAN
@@ -13709,9 +16753,10 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	high_rc = ~high;
 	nextlow_rc = ~nextlow;
 
-	count_6mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	chrpos = store_6mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
 	ptr -= 3;
       }
+
     } else if (indexsize == 5) {
       while (ptr > startptr) {
 #ifdef WORDS_BIGENDIAN
@@ -13737,7 +16782,7 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
 	high_rc = ~high;
 	nextlow_rc = ~nextlow;
 
-	count_5mers_rev(counts,low_rc,high_rc,nextlow_rc);
+	chrpos = store_5mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
 	ptr -= 3;
       }
     } else {
@@ -13769,13 +16814,13 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
     nextlow_rc = ~nextlow;
 
     if (indexsize == 8) {
-      count_8mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+      chrpos = store_8mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
     } else if (indexsize == 7) {
-      count_7mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+      chrpos = store_7mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
     } else if (indexsize == 6) {
-      count_6mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+      chrpos = store_6mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
     } else if (indexsize == 5) {
-      count_5mers_rev_partial(counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
+      chrpos = store_5mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
     } else {
       fprintf(stderr,"indexsize %d not supported\n",indexsize);
       abort();
@@ -13784,15 +16829,22 @@ count_positions_rev (Count_T *counts, int indexsize, Univcoord_T left, Univcoord
   
   return;
 }
- 
+#endif
 
+#ifdef USE_SIMD_FOR_COUNTS
 static void
-store_positions_rev (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts, int indexsize,
-		     Univcoord_T left, Univcoord_T left_plus_length, Chrpos_T chrpos,
-		     int genestrand) {
+store_positions_rev_simd (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts, int indexsize,
+			  Univcoord_T left, Univcoord_T left_plus_length, Chrpos_T chrpos,
+			  int genestrand) {
   int startdiscard, enddiscard;
   Genomecomp_T ptr, startptr, endptr, low_rc, high_rc, nextlow_rc,
     low, high, nextlow;
+  Genomecomp_T low1_rc, high1_rc, low0, high0, low1, high1;
+  __m128i current, next;
+  __m128i array[16];
+#ifdef HAVE_SSE4_1
+  __m128i temp;
+#endif
 
 
 #if 0
@@ -13886,120 +16938,342 @@ store_positions_rev (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
       abort();
     }
 
-    ptr -= 3;
-
     if (indexsize == 8) {
-      while (ptr > startptr) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
+
 #ifdef WORDS_BIGENDIAN
-	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
 #else
-	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
-	nextlow = ref_blocks[ptr+4];
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
+
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
+
+	extract_8mers_rev_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+      }
+
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */ 		/* ptr is now startptr */
+      } else {
+	ptr = startptr; /* ptr -= 6; */
+
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
 	  }
 	}
 
+	nextlow_rc = low_rc;	/* depended on nextlow */
 	low_rc = ~low;
 	high_rc = ~high;
-	nextlow_rc = ~nextlow;
 
 	chrpos = store_8mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
-	ptr -= 3;
+	/* ptr already at startptr */
       }
+
     } else if (indexsize == 7) {
-      while (ptr > startptr) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
+
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
+
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
+
+	extract_7mers_rev_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+      }
+
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr; /* ptr -= 6; */
+
+#ifdef WORDS_BIGENDIAN
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
+
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low;
+	high_rc = ~high;
+
+	chrpos = store_7mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
+	/* ptr already at startptr */
+      }
+
+    } else if (indexsize == 6) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
+
+#ifdef WORDS_BIGENDIAN
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
+#else
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
+#endif
+	if (mode == CMET_STRANDED) {
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
+	} else if (mode == CMET_NONSTRANDED) {
+	  if (genestrand > 0) {
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
+	  } else {
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
+	  }
+	}
+
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
+
+	extract_6mers_rev_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
+      }
+
+      if (ptr == startptr + 3) {
+	ptr = startptr; /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr; /* ptr -= 6; */
+
 #ifdef WORDS_BIGENDIAN
-	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
 #else
-	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
-	nextlow = ref_blocks[ptr+4];
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
 	  }
 	}
 
+	nextlow_rc = low_rc;	/* depended on nextlow */
 	low_rc = ~low;
 	high_rc = ~high;
-	nextlow_rc = ~nextlow;
 
-	chrpos = store_7mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
-	ptr -= 3;
+	chrpos = store_6mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
+	/* ptr already at startptr */
       }
-    } else if (indexsize == 6) {
-      while (ptr > startptr) {
+
+    } else if (indexsize == 5) {
+      while (ptr > startptr + 6) {
+	ptr -= 6;
+
 #ifdef WORDS_BIGENDIAN
-	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	high0 = Bigendian_convert_uint(ref_blocks[ptr]);
+	low0 = Bigendian_convert_uint(ref_blocks[ptr+1]);
+	high1 = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low1 = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
 #else
-	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
-	nextlow = ref_blocks[ptr+4];
+	high0 = ref_blocks[ptr];
+	low0 = ref_blocks[ptr+1];
+	high1 = ref_blocks[ptr+3];
+	low1 = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	  high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	  /* nextlow = Cmet_reduce_ga(nextlow); */
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high0 = Cmet_reduce_ct(high0); low0 = Cmet_reduce_ct(low0);
+	    high1 = Cmet_reduce_ct(high1); low1 = Cmet_reduce_ct(low1);
+	    /* nextlow = Cmet_reduce_ct(nextlow); */
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high0 = Cmet_reduce_ga(high0); low0 = Cmet_reduce_ga(low0);
+	    high1 = Cmet_reduce_ga(high1); low1 = Cmet_reduce_ga(low1);
+	    /* nextlow = Cmet_reduce_ga(nextlow); */
 	  }
 	}
 
-	low_rc = ~low;
-	high_rc = ~high;
-	nextlow_rc = ~nextlow;
+	nextlow_rc = low_rc;	/* depended on nextlow */
+	low_rc = ~low0;
+	high_rc = ~high0;
+	low1_rc = ~low1;
+	high1_rc = ~high1;
+
+	/* Use _set_ and not _setr_ */
+	current = _mm_set_epi32(low_rc,high_rc,low1_rc,high1_rc);
+#ifdef HAVE_SSE4_1
+	temp = _mm_insert_epi32(current,nextlow_rc,0x03);
+	next = _mm_shuffle_epi32(temp,0x93);
+#else
+	next = _mm_set_epi32(high_rc,low1_rc,high1_rc,nextlow_rc);
+#endif
 
-	chrpos = store_6mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
-	ptr -= 3;
+	extract_5mers_rev_simd(array,current,next);
+	chrpos = store_fwdrev_simd(chrpos,pointers,positions,counts,(Genomecomp_T *) array);
       }
-    } else if (indexsize == 5) {
-      while (ptr > startptr) {
+
+      if (ptr == startptr + 3) {
+	ptr = startptr;  /* ptr -= 3; */		/* ptr is now startptr */
+      } else {
+	ptr = startptr;  /* ptr -= 6; */
+
 #ifdef WORDS_BIGENDIAN
-	high = Bigendian_convert_uint(ref_blocks[ptr]);
-	low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-	nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	high = Bigendian_convert_uint(ref_blocks[ptr+3]);
+	low = Bigendian_convert_uint(ref_blocks[ptr+4]);
+	/* nextlow = Bigendian_convert_uint(ref_blocks[ptr+7]); */
 #else
-	high = ref_blocks[ptr];
-	low = ref_blocks[ptr+1];
-	nextlow = ref_blocks[ptr+4];
+	high = ref_blocks[ptr+3];
+	low = ref_blocks[ptr+4];
+	/* nextlow = ref_blocks[ptr+7]; */
 #endif
 	if (mode == CMET_STRANDED) {
-	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	  high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
 	} else if (mode == CMET_NONSTRANDED) {
 	  if (genestrand > 0) {
-	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	    high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
 	  } else {
-	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	    high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
 	  }
 	}
 
+	nextlow_rc = low_rc;	/* depended on nextlow */
 	low_rc = ~low;
 	high_rc = ~high;
-	nextlow_rc = ~nextlow;
 
 	chrpos = store_5mers_rev(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc);
-	ptr -= 3;
+	/* ptr already at startptr */
       }
+
     } else {
       abort();
     }
@@ -14008,25 +17282,25 @@ store_positions_rev (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
 #ifdef WORDS_BIGENDIAN
     high = Bigendian_convert_uint(ref_blocks[ptr]);
     low = Bigendian_convert_uint(ref_blocks[ptr+1]);
-    nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]);
+    /* nextlow = Bigendian_convert_uint(ref_blocks[ptr+4]); */
 #else
     high = ref_blocks[ptr];
     low = ref_blocks[ptr+1];
-    nextlow = ref_blocks[ptr+4];
+    /* nextlow = ref_blocks[ptr+4]; */
 #endif
     if (mode == CMET_STRANDED) {
-      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+      high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
     } else if (mode == CMET_NONSTRANDED) {
       if (genestrand > 0) {
-	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); nextlow = Cmet_reduce_ct(nextlow);
+	high = Cmet_reduce_ct(high); low = Cmet_reduce_ct(low); /* nextlow = Cmet_reduce_ct(nextlow); */
       } else {
-	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); nextlow = Cmet_reduce_ga(nextlow);
+	high = Cmet_reduce_ga(high); low = Cmet_reduce_ga(low); /* nextlow = Cmet_reduce_ga(nextlow); */
       }
     }
 
+    nextlow_rc = low_rc;	/* depended on nextlow */
     low_rc = ~low;
     high_rc = ~high;
-    nextlow_rc = ~nextlow;
 
     if (indexsize == 8) {
       chrpos = store_8mers_rev_partial(chrpos,pointers,positions,counts,low_rc,high_rc,nextlow_rc,startdiscard,/*enddiscard*/31);
@@ -14044,6 +17318,8 @@ store_positions_rev (Chrpos_T **pointers, Chrpos_T **positions, Count_T *counts,
   
   return;
 }
+#endif
+
 
 
 #if 0
@@ -14108,27 +17384,11 @@ allocate_positions_check (Chrpos_T **pointers, Chrpos_T **positions,
 #endif
 
 
-#ifndef PMAP
 #define POLY_A 0x0000
 #define POLY_C 0x5555
 #define POLY_G 0xAAAA
 #define POLY_T 0xFFFF
-#endif
-
-#ifdef HAVE_SSE2
-
-#if 0
-/* For debugging of SIMD procedures*/
-static void
-print_vector (__m128i x, char *label) {
-  __m128i a[1];
-  unsigned int *s = a;
 
-  _mm_store_si128(a,x);
-  printf("%s: %u %u %u %u\n",label,s[0],s[1],s[2],s[3]);
-  return;
-}
-#endif
 
 #define ONE_CHAR 1
 #define TWO_CHARS 2
@@ -14138,13 +17398,12 @@ print_vector (__m128i x, char *label) {
 #define TWO_INTS 8
 #define SIMD_NINTS 4
 
+
+#ifdef HAVE_SSE2
 static int
 allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
-		    Count_T *inquery, Count_T *counts, int oligospace
-#ifndef PMAP
-		    , Shortoligomer_T mask
-#endif
-		    ) {
+		    Count_T *inquery, Count_T *counts, int oligospace,
+		    Shortoligomer_T mask) {
   /* int totalcounts_old; */
   int totalcounts = 0;
   Chrpos_T *p;
@@ -14157,14 +17416,13 @@ allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
   int *nskip, *nskip_ptr;
 
 
-#ifndef PMAP
   counts[POLY_A & mask] = 0;
   counts[POLY_C & mask] = 0;
   counts[POLY_G & mask] = 0;
   counts[POLY_T & mask] = 0;
-#endif
 
-  nskip_ptr = nskip = (int *) CALLOC(oligospace/SIMD_NCHARS + 1,sizeof(int));
+  nskip_ptr = nskip = (int *) MALLOC((oligospace/SIMD_NCHARS + 1) * sizeof(int));
+  *nskip_ptr = 0;
 
   inquery_ptr = (__m128i *) inquery;
   counts_ptr = (__m128i *) counts;
@@ -14174,7 +17432,13 @@ allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
   while (counts_ptr < end_ptr) {
     vec = _mm_and_si128(*counts_ptr,*inquery_ptr++);
     _mm_store_si128(counts_ptr++,vec);
-    if (/*cmp*/_mm_movemask_epi8(_mm_cmpeq_epi8(vec,zero)) == 0xFFFF) {
+    if (
+#ifdef HAVE_SSE4_1
+	_mm_testz_si128(vec,vec)
+#else
+	/*cmp*/_mm_movemask_epi8(_mm_cmpeq_epi8(vec,zero)) == 0xFFFF
+#endif
+	) {
       /* All counts are zero, so incrementing nskip */
       (*nskip_ptr) += SIMD_NCHARS;
     } else {
@@ -14182,7 +17446,7 @@ allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
       _mm_store_si128(terms_ptr,vec);
       totalcounts += terms[0] + terms[1] + terms[2] + terms[3] + terms[4] + terms[5] + terms[6] + terms[7] +
 	terms[8] + terms[9] + terms[10] + terms[11] + terms[12] + terms[13] + terms[14] + terms[15];
-      nskip_ptr++;
+      *(++nskip_ptr) = 0;	/* Advance ptr and initialize */
     }
   }
 
@@ -14205,108 +17469,763 @@ allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
     positions[0] = (Chrpos_T *) NULL;
   } else {
     /* Need to assign positions[0] so we can free the space */
-    positions[0] = p = (Chrpos_T *) CALLOC(totalcounts,sizeof(Chrpos_T));
+    /* pointers[0] = */ positions[0] = p = (Chrpos_T *) CALLOC(totalcounts,sizeof(Chrpos_T));
 
     nskip_ptr = nskip;
     i = *nskip_ptr++;
     while (i < oligospace) {
-      positions[i] = p;	/* 0 */
+      /* starti = i; */
+      pointers[i] = positions[i] = p;	/* 0 */
       p += counts[i++];
-      positions[i] = p;	/* 1 */
+      pointers[i] = positions[i] = p;	/* 1 */
       p += counts[i++];
-      positions[i] = p;	/* 2 */
+      pointers[i] = positions[i] = p;	/* 2 */
       p += counts[i++];
-      positions[i] = p;	/* 3 */
+      pointers[i] = positions[i] = p;	/* 3 */
       p += counts[i++];
-      positions[i] = p;	/* 4 */
+      pointers[i] = positions[i] = p;	/* 4 */
       p += counts[i++];
-      positions[i] = p;	/* 5 */
+      pointers[i] = positions[i] = p;	/* 5 */
       p += counts[i++];
-      positions[i] = p;	/* 6 */
+      pointers[i] = positions[i] = p;	/* 6 */
       p += counts[i++];
-      positions[i] = p;	/* 7 */
+      pointers[i] = positions[i] = p;	/* 7 */
       p += counts[i++];
-      positions[i] = p;	/* 8 */
+      pointers[i] = positions[i] = p;	/* 8 */
       p += counts[i++];
-      positions[i] = p;	/* 9 */
+      pointers[i] = positions[i] = p;	/* 9 */
       p += counts[i++];
-      positions[i] = p;	/* 10 */
+      pointers[i] = positions[i] = p;	/* 10 */
       p += counts[i++];
-      positions[i] = p;	/* 11 */
+      pointers[i] = positions[i] = p;	/* 11 */
       p += counts[i++];
-      positions[i] = p;	/* 12 */
+      pointers[i] = positions[i] = p;	/* 12 */
       p += counts[i++];
-      positions[i] = p;	/* 13 */
+      pointers[i] = positions[i] = p;	/* 13 */
       p += counts[i++];
-      positions[i] = p;	/* 14 */
+      pointers[i] = positions[i] = p;	/* 14 */
       p += counts[i++];
-      positions[i] = p;	/* 15 */
+      pointers[i] = positions[i] = p;	/* 15 */
       p += counts[i++];
-      positions[i] = p;	/* 16, used for indicating if pointer hits next position */
+      positions[i] = p;	/* 16, used for indicating if pointer hits next position.  Do not need to copy to pointers[i] */
+
+#if 0
+      /* Incremental call.  Turns out to be slightly slower than the individual assignments above. */
+      memcpy((void *) &(pointers[starti]),&(positions[starti]),16*sizeof(Chrpos_T *));
+#endif
+
+      i += *nskip_ptr++;
+    }
+#if 0
+    /* Single call replaced by incremental calls above */
+    /* Does not copy position[oligospace] */
+    memcpy((void *) pointers,positions,oligospace*sizeof(Chrpos_T *));
+#endif
+  }
+
+  FREE(nskip);
+
+  return totalcounts;
+}
+
+#else
+
+static int
+allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
+		    bool *inquery, Count_T *counts, int oligospace,
+		    Shortoligomer_T mask) {
+  int totalcounts;
+  Chrpos_T *p;
+  int i;
+
+  counts[POLY_A & mask] = 0;
+  counts[POLY_C & mask] = 0;
+  counts[POLY_G & mask] = 0;
+  counts[POLY_T & mask] = 0;
+
+  for (i = 0; i < oligospace; i++) {
+    if (inquery[i] == false) {
+      counts[i] = 0;
+    } else {
+      debug(printf("%04X is in query, with counts of %d\n",i,counts[i]));
+    }
+  }
+
+  totalcounts = 0;
+  for (i = 0; i < oligospace; i++) {
+    totalcounts += counts[i];
+  }
+
+
+  if (totalcounts == 0) {
+    positions[0] = (Chrpos_T *) NULL;
+  } else {
+    p = (Chrpos_T *) CALLOC(totalcounts,sizeof(Chrpos_T));
+    /* First iteration sets positions[0] so we can free the memory */
+    for (i = 0; i < oligospace; i++) {
+      positions[i] = p;
+      p += counts[i];
+    }
+    positions[i] = p;		/* For positions[oligospace], used for indicating if pointer hits next position */
+    /* Does not copy positions[oligospace] */
+    memcpy((void *) pointers,positions,oligospace*sizeof(Chrpos_T *));
+  }
+
+  return totalcounts;
+}
+
+#endif
+
+
+#ifdef DEBUG14
+static void
+counts_compare (Count_T *counts1, Count_T *counts2, Oligospace_T oligospace) {
+  Oligospace_T i;
+
+  for (i = 0; i < oligospace; i++) {
+    if (counts1[i] != counts2[i]) {
+      printf("At oligo %lu, counts1 %d != counts2 %d\n",i,counts1[i],counts2[i]);
+      abort();
+    }
+  }
+  return;
+}
+
+static void
+positions_compare (Chrpos_T **positions1, Chrpos_T **positions2, Count_T *counts, int oligospace) {
+  Oligospace_T i;
+  int hit;
+
+  for (i = 0; i < oligospace; i++) {
+    /* nt = shortoligo_nt(i,indexsize); */
+    for (hit = 0; hit < counts[i]; hit++) {
+      if (positions1[i][hit] != positions2[i][hit]) {
+	printf("At oligo %lu, hit %d, positions1 %u != positions2 %u\n",
+	       i,hit,positions1[i][hit],positions2[i][hit]);
+	abort();
+      }
+    }
+  }
+
+  return;
+}
+#endif
+
+
+
+#define NPSEUDO 0.0
+
+/* -1 means edge is on 5', +1 means edge is on 3'  0 means no edge found. */
+static int
+edge_detect (int *edge, int *sumx, int *sumxx, int length) {
+  int side = 0;
+  int pos, sumx_left, sumxx_left, sumx_right, sumxx_right, n_left, n_right;
+  double theta, sumx_pseudo, theta_left, theta_right, rss_left, rss_right, rss_sep;
+  double min_rss_sep;
+#ifdef DEBUG1
+  double fscore;
+#endif
+
+  debug1(printf("\n*** Start of edge_detect\n"));
+
+  sumx_right = sumx[length] - sumx[0];
+  sumxx_right = sumxx[length] - sumxx[0];
+
+  theta = (double) sumx_right/(double) length;
+  sumx_pseudo = NPSEUDO * theta;
+  min_rss_sep = sumxx_right - sumx_right*theta;
+  debug1(printf("theta: %d/%d = %f\n",sumx_right,length,theta));
+  debug1(printf("rss: %f\n",rss)); 
+
+  debug1(printf("%s %s %s %s %s %s %s %s %s %s %s\n",
+		"pos","x","sumx.left","n.left","sumx.right","n.right",
+		"theta.left","theta.right","rss.left","rss.right","fscore"));
+
+  n_left = 1;
+  n_right = length-1;
+  for (pos = 1; pos < length; pos++) {
+    sumx_left = sumx[pos] - sumx[0];
+    sumxx_left = sumxx[pos] - sumxx[0];
+    sumx_right = sumx[length] - sumx[pos];
+    sumxx_right = sumxx[length] - sumxx[pos];
+
+    theta_left = ((double) sumx_left + sumx_pseudo)/((double) n_left + NPSEUDO);
+    theta_right = ((double) sumx_right + sumx_pseudo)/((double) n_right + NPSEUDO);
+    rss_left = sumxx_left - sumx_left*theta_left;
+    rss_right = sumxx_right - sumx_right*theta_right;
+    rss_sep = rss_left + rss_right;
+
+    debug1(
+	   if (rss_sep > 0.0) {
+	     fscore = ((double) (length - 2))*(rss - rss_sep)/rss_sep;
+	     printf("%d %d %d %d %d %d %f %f %f %f %f\n",
+		    pos,sumx[pos]-sumx[pos-1],sumx_left,n_left,sumx_right,n_right,
+		    theta_left,theta_right,rss_left,rss_right,fscore);
+	   } else {
+	     printf("%d %d %d %d %d %d %f %f %f %f NA\n",
+		    pos,sumx[pos]-sumx[pos-1],sumx_left,n_left,sumx_right,n_right,
+		    theta_left,theta_right,rss_left,rss_right);
+	   });
+    /* fscore = (n-2)*(rss - rss_sep)/rss_sep = (n-2)*(rss/rss_sep -
+       1) is maximized when rss_sep is minimized */
+
+    if (theta_left > theta_right + THETADIFF1) {
+      if (rss_sep < min_rss_sep) {
+	min_rss_sep = rss_sep;
+	*edge = pos;
+	side = -1;
+	debug1(printf("Set edge to %d\n",pos));
+      }
+    } else if (theta_right > theta_left + THETADIFF1) {
+      if (rss_sep < min_rss_sep) {
+	min_rss_sep = rss_sep;
+	*edge = pos;
+	side = +1;
+	debug1(printf("Set edge to %d\n",pos));
+      }
+    }
+
+    n_left += 1;
+    n_right -= 1;
+  }
+
+  debug1(printf("*** End of edge_detect.  Returning %d\n\n",side));
+
+  return side;
+}
+
+
+static int
+trim_start_detect (int start, int end, int *sumx, int *sumxx) {
+  int edge = -1;
+  int pos, sumx_left, sumxx_left, sumx_right, sumxx_right, n_left, n_right;
+  double theta, sumx_pseudo, theta_left, theta_right, rss_left, rss_right, rss_sep;
+  double min_rss_sep;
+#ifdef DEBUG1
+  double fscore;
+#endif
+
+  debug1(printf("\n*** Start of trim_start_detect\n"));
+
+  sumx_right = sumx[end] - sumx[start];
+  sumxx_right = sumxx[end] - sumxx[start];
+
+  if (end <= start) {
+    return -1;
+  }
+  theta = (double) sumx_right/(double) (end - start);
+  sumx_pseudo = NPSEUDO * theta;
+  min_rss_sep = sumxx_right - sumx_right*theta;
+  debug1(printf("%d/%d = %f\n",sumx_right,end-start,theta));
+  
+  debug1(printf("%s %s %s %s %s %s %s %s %s %s %s\n",
+		"pos","counts","sumx.left","n.left","sumx.right","n.right",
+		"theta.left","theta.right","rss.left","rss.right","fscore"));
+
+  n_left = 1;
+  n_right = end - (start+1);
+  for (pos = start+1; pos < end; pos++) {
+    sumx_left = sumx[pos] - sumx[start];
+    sumxx_left = sumxx[pos] - sumxx[start];
+    sumx_right = sumx[end] - sumx[pos];
+    sumxx_right = sumxx[end] - sumxx[pos];
+
+    theta_left = ((double) sumx_left + sumx_pseudo)/((double) n_left + NPSEUDO);
+    theta_right = ((double) sumx_right + sumx_pseudo)/((double) n_right + NPSEUDO);
+    rss_left = sumxx_left - sumx_left*theta_left;
+    rss_right = sumxx_right - sumx_right*theta_right;
+    rss_sep = rss_left + rss_right;
+
+    debug1(
+	   if (rss_sep > 0.0) {
+	     fscore = ((double) (end - start - 2))*(rss - rss_sep)/rss_sep;
+	     printf("%d %d %d %d %d %f %f %f %f %f\n",
+		    pos,sumx_left,n_left,sumx_right,n_right,
+		    theta_left,theta_right,rss_left,rss_right,fscore);
+	   } else {
+	     printf("%d %d %d %d %d %f %f %f %f NA\n",
+		    pos,sumx_left,n_left,sumx_right,n_right,
+		    theta_left,theta_right,rss_left,rss_right);
+	   });
+    /* fscore = (n-2)*(rss - rss_sep)/rss_sep = (n-2)*(rss/rss_sep -
+       1) is maximized when rss_sep is minimized */
+
+    if (theta_left < theta_right) {
+      debug1(printf("trim_detect aborting early with edge=%d\n",edge));
+      return edge;
+    } else if (theta_left > theta_right + THETADIFF2) {
+      if (rss_sep < min_rss_sep) {
+	min_rss_sep = rss_sep;
+	edge = pos;
+	debug1(printf("Set trim_start to %d\n",pos));      
+      }
+    }
+
+    n_left += 1;
+    n_right -= 1;
+  }
+
+  debug1(printf("trim_start_detect returning %d\n",edge));
+  return edge;
+}
+
+
+static int
+trim_end_detect (int start, int end, int *sumx, int *sumxx) {
+  int edge = -1;
+  int pos, sumx_left, sumxx_left, sumx_right, sumxx_right, n_left, n_right;
+  double theta, sumx_pseudo, theta_left, theta_right, rss_left, rss_right, rss_sep;
+  double min_rss_sep;
+#ifdef DEBUG1
+  double fscore;
+#endif
+
+  debug1(printf("\n*** Start of trim_end_detect\n"));
+
+  sumx_right = sumx[end] - sumx[start];
+  sumxx_right = sumxx[end] - sumxx[start];
+
+  if (end <= start) {
+    return -1;
+  }
+  theta = (double) sumx_right/(double) (end - start);
+  sumx_pseudo = NPSEUDO * theta;
+  min_rss_sep = sumxx_right - sumx_right*theta;
+  debug1(printf("%d/%d = %f\n",sumx_right,end-start,theta));
+  
+  debug1(printf("%s %s %s %s %s %s %s %s %s %s %s\n",
+		"pos","counts","sumx.left","n.left","sumx.right","n.right",
+		"theta.left","theta.right","rss.left","rss.right","fscore"));
+
+  n_left = end - (start+1);
+  n_right = 1;
+  for (pos = end-1; pos > start; --pos) {
+    sumx_left = sumx[pos] - sumx[start];
+    sumxx_left = sumxx[pos] - sumxx[start];
+    sumx_right = sumx[end] - sumx[pos];
+    sumxx_right = sumxx[end] - sumxx[pos];
+
+    theta_left = ((double) sumx_left + sumx_pseudo)/((double) n_left + NPSEUDO);
+    theta_right = ((double) sumx_right + sumx_pseudo)/((double) n_right + NPSEUDO);
+    rss_left = sumxx_left - sumx_left*theta_left;
+    rss_right = sumxx_right - sumx_right*theta_right;
+    rss_sep = rss_left + rss_right;
+
+    debug1(
+	   if (rss_sep == 0) {
+	     printf("%d %d %d %d %d %f %f %f %f NA\n",
+		    pos,sumx_left,n_left,sumx_right,n_right,
+		    theta_left,theta_right,rss_left,rss_right);
+	   } else {
+	     fscore = ((double) (end - start - 2))*(rss - rss_sep)/rss_sep;
+	     printf("%d %d %d %d %d %f %f %f %f %f\n",
+		    pos,sumx_left,n_left,sumx_right,n_right,
+		    theta_left,theta_right,rss_left,rss_right,fscore);
+	   });
+    /* fscore = (n-2)*(rss - rss_sep)/rss_sep = (n-2)*(rss/rss_sep -
+       1) is maximized when rss_sep is minimized */
+
+    if (theta_right < theta_left) {
+      debug1(printf("trim_detect aborting early with edge=%d\n",edge));
+      return edge;
+    } else if (theta_right > theta_left + THETADIFF2) {
+      if (rss_sep < min_rss_sep) {
+	min_rss_sep = rss_sep;
+	edge = pos;
+	debug1(printf("Set trim_end to %d\n",pos));      
+      }
+    }
+
+    n_left -= 1;
+    n_right += 1;
+  }
+
+  debug1(printf("trim_end_detect returning %d\n",edge));
+  return edge;
+}
+
+
+
+/* Run query sequence through this procedure.  First, we count occurrences
+ * of each oligo in queryuc (upper case version of queryseq).  This
+ * allows us to scan genomicseg intelligently, because then we know
+ * whether to store positions for that oligo. */
+
+double
+Oligoindex_set_inquery (int *badoligos, int *repoligos, int *trimoligos, int *trim_start, int *trim_end,
+			T this, char *queryuc_ptr, int querylength, bool trimp) {
+  double oligodepth;
+  int ngoodoligos, nrepoligos, x, *sumx, *sumxx, sumx0 = 0, sumxx0 = 0;
+  int edge, side;
+  int querypos;
+  Shortoligomer_T oligo = 0U;
+  char *ptr;
+
+  int nunique = 0;
+  int i, noligos = 0;
+  int in_counter = 0;
+  Shortoligomer_T masked;
+  char *p;
+
+  int indexsize = this->indexsize;
+
+#ifdef DEBUG
+  char *nt;
+#endif
+
+  if (this->query_evaluated_p == true) {
+    return 1.0;
+  } else {
+    this->query_evaluated_p = true; /* Set this flag so we don't redo this part */
+  }
+
+  if (querylength <= indexsize) {
+    *badoligos = 0;
+    *trim_start = 0;
+    *trim_end = querylength;
+    return 1.0;
+  }
+    
+  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
+    in_counter++;
+
+    switch (*p) {
+    case 'A': oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    default: oligo = 0U; in_counter = 0; break;
+    }
+
+    if (in_counter == indexsize) {
+      masked = oligo & this->mask;
+      noligos++;
+      debug(nt = shortoligo_nt(oligo,indexsize);
+	    printf("At querypos %d, oligo %s seen\n",i,nt);
+	    FREE(nt));
+
+      this->counts[masked] += 1;
+#ifdef HAVE_SSE2
+      if (this->inquery[masked] == /*false*/0x00) {
+	nunique += 1;
+	this->inquery[masked] = /*true*/0xFF;
+      }
+#else
+      if (this->inquery[masked] == false) {
+	nunique += 1;
+	this->inquery[masked] = true;
+      }
+#endif
+      in_counter--;
+    }
+  }
+
+  if (trimp == false) {
+    *badoligos = (querylength + 1 - indexsize) - noligos;
+    *trim_start = 0;
+    *trim_end = querylength;
+    return 1.0;
+  } else {
+    /* Determine where to trim using a changepoint analysis */
+    sumx = (int *) CALLOC(querylength - indexsize + 1,sizeof(int));
+    sumxx = (int *) CALLOC(querylength - indexsize + 1,sizeof(int));
+
+    in_counter = 0;
+    querypos = -indexsize;
+    for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
+      in_counter++;
+      querypos++;
+
+      switch (*p) {
+      case 'A': oligo = (oligo << 2); break;
+      case 'C': oligo = (oligo << 2) | 1; break;
+      case 'G': oligo = (oligo << 2) | 2; break;
+      case 'T': oligo = (oligo << 2) | 3; break;
+      default: oligo = 0U; in_counter = 0; break;
+      }
+
+      if (in_counter == indexsize) {
+	x = this->counts[oligo & this->mask];
+	in_counter--;
+      } else {
+	x = 1;
+      } 
+
+      if (querypos >= 0) {
+	sumx0 += x;
+	sumxx0 += x*x;
+	sumx[querypos] = sumx0;
+	sumxx[querypos] = sumxx0;
+      }
+    }
+    sumx[querylength-indexsize] = sumx0;
+    sumxx[querylength-indexsize] = sumxx0;
+
+
+    *trim_start = 0;
+    *trim_end = querylength-1;
+    if ((side = edge_detect(&edge,sumx,sumxx,querylength-indexsize)) == -1) {
+      *trim_start = edge+1;
+      if ((edge = trim_end_detect(*trim_start,querylength-indexsize,sumx,sumxx)) >= 0) {
+	*trim_end = edge+1;
+      }
+    } else if (side == +1) {
+      *trim_end = edge+1;
+      if ((edge = trim_start_detect(0,*trim_end,sumx,sumxx)) >= 0) {
+	*trim_start = edge;
+      }
+    }
 
-      i += *nskip_ptr++;
+    FREE(sumxx);
+    FREE(sumx);
+
+    debug1(printf("trim_start = %d, trim_end = %d\n",*trim_start,*trim_end));
+  }
+
+  /* Count good oligos in trimmed region */
+  ngoodoligos = nrepoligos = 0;
+  in_counter = 0;
+  ptr = queryuc_ptr;
+  p = &(ptr[*trim_start]);
+  for (querypos = (*trim_start)-indexsize; querypos < (*trim_end)-indexsize;
+       querypos++, p++) {
+    in_counter++;
+
+    switch (*p) {
+    case 'A': oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    default: oligo = 0U; in_counter = 0; break;
+    }
+
+    if (in_counter == indexsize) {
+      ngoodoligos++;
+      if (this->counts[oligo & this->mask] >= REPOLIGOCOUNT) {
+	nrepoligos++;
+      }
+      in_counter--;
     }
-    /* Does not copy position[oligospace] */
-    memcpy((void *) pointers,positions,oligospace*sizeof(Chrpos_T *));
   }
 
-  FREE(nskip);
+  *trimoligos = (*trim_end - indexsize) - (*trim_start) + 1;
+  *badoligos = (*trimoligos) - ngoodoligos;
+  *repoligos = nrepoligos;
 
-  return totalcounts;
+  if (nunique == 0) {
+    return 1000000.0;
+  } else {
+    /* trimlength = *trim_end - *trim_start; */
+    oligodepth = (double) noligos/(double) nunique;
+    return oligodepth;
+  }
 }
 
-#else
 
+#if 0
+/* Old code, no longer used for GMAP/GSNAP, but kept for PMAP in oligoindex_pmap.c */
+/* Second, run genomicuc through this procedure, to determine the genomic positions for each oligo.  */
 static int
-allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
-		    bool *inquery, Count_T *counts, int oligospace
-#ifndef PMAP
-		    , Shortoligomer_T mask
+allocate_positions (Chrpos_T **pointers, Chrpos_T **positions, bool *overabundant,
+#ifdef HAVE_SSE2		    
+		    Count_T *inquery,
+#else
+		    bool *inquery,
 #endif
-		    ) {
+		    Count_T *counts, int *relevant_counts, int oligospace, int indexsize,
+		    Shortoligomer_T mask, char *sequence, int seqlength, int sequencepos) {
+  int i = 0, n;
+  int in_counter = 0;
+  Shortoligomer_T oligo = 0U, masked;
+  char *p;
+  Chrpos_T *ptr;
   int totalcounts;
-  Chrpos_T *p;
-  int i;
+  int overabundance_threshold;
 
-#ifndef PMAP
-  counts[POLY_A & mask] = 0;
-  counts[POLY_C & mask] = 0;
-  counts[POLY_G & mask] = 0;
-  counts[POLY_T & mask] = 0;
+#ifdef DEBUG
+  char *nt;
 #endif
 
-  for (i = 0; i < oligospace; i++) {
-    if (inquery[i] == false) {
-      counts[i] = 0;
+  sequencepos -= indexsize;
+  for (i = 0, p = sequence; i < seqlength; i++, p++) {
+    in_counter++;
+    sequencepos++;
+
+    switch (*p) {
+    case 'A':
+#ifdef EXTRACT_GENOMICSEG
+    case 'N':
+#endif
+      oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    default: oligo = 0U; in_counter = 0;
+    }
+
+    debug(printf("At genomicpos %u, char is %c, oligo is %04X\n",
+		 sequencepos,*p,oligo));
+
+    if (in_counter == indexsize) {
+      masked = oligo & mask;
+      debug(printf("%04X\n",masked));
+      if (overabundant[masked] == true) {
+	/* Don't bother */
+	debug(nt = shortoligo_nt(masked,indexsize);
+	      printf("At genomicpos %u, oligo %s is overabundant\n",sequencepos,nt);
+	      FREE(nt));
+
+#ifdef HAVE_SSE2
+      } else if (inquery[masked] == /*false*/0x00) {
+	/* Don't bother, because it's not in the query sequence */
+	debug(nt = shortoligo_nt(masked,indexsize);
+	      printf("At genomicpos %u, oligo %s wasn't seen in querypos\n",sequencepos,nt);
+	      FREE(nt));
+#else
+      } else if (inquery[masked] == false) {
+	/* Don't bother, because it's not in the query sequence */
+	debug(nt = shortoligo_nt(masked,indexsize);
+	      printf("At genomicpos %u, oligo %s wasn't seen in querypos\n",sequencepos,nt);
+	      FREE(nt));
+#endif
+
+      } else {
+	counts[masked] += 1;
+	debug(nt = shortoligo_nt(masked,indexsize);
+	      printf("At genomicpos %u, oligo %s seen, counts is now %d\n",sequencepos,nt,counts[masked]);
+	      FREE(nt));
+
+      }
+      in_counter--;
     }
   }
 
-  totalcounts = 0;
+  n = 0;
   for (i = 0; i < oligospace; i++) {
-    totalcounts += counts[i];
+    if (counts[i] > 0) {
+      relevant_counts[n++] = counts[i];
+    }
   }
 
+  totalcounts = 0;
+  if (n < OVERABUNDANCE_CHECK) {
+    debug(printf("only %d entries => don't use orderstat\n",n));
+
+    for (i = 0; i < oligospace; i++) {
+      totalcounts += counts[i];
+    }
+
+  } else {
+    overabundance_threshold = Orderstat_int_pct_inplace(relevant_counts,n,OVERABUNDANCE_PCT);
+    debug(printf("overabundance threshold is %d\n",overabundance_threshold));
+    if (overabundance_threshold < OVERABUNDANCE_MIN) {
+      overabundance_threshold = OVERABUNDANCE_MIN;
+      debug(printf("  => resetting to %d\n",overabundance_threshold));
+    }
+
+    for (i = 0; i < oligospace; i++) {
+      if (counts[i] > overabundance_threshold) {
+	overabundant[i] = true;
+	counts[i] = 0;
+      } else {
+	totalcounts += counts[i];
+      }
+    }
+  }
 
   if (totalcounts == 0) {
     positions[0] = (Chrpos_T *) NULL;
   } else {
-    p = (Chrpos_T *) CALLOC(totalcounts,sizeof(Chrpos_T));
-    /* First iteration sets positions[0] so we can free the memory */
+    ptr = (Chrpos_T *) CALLOC(totalcounts,sizeof(Chrpos_T));
     for (i = 0; i < oligospace; i++) {
-      positions[i] = p;
-      p += counts[i];
+      positions[i] = ptr;
+      ptr += counts[i];
     }
-    positions[i] = p;		/* For positions[oligospace], used for indicating if pointer hits next position */
+    positions[i] = ptr;		/* For positions[oligospace], used for indicating if pointer hits next position */
     /* Does not copy positions[oligospace] */
     memcpy((void *) pointers,positions,oligospace*sizeof(Chrpos_T *));
   }
 
   return totalcounts;
 }
+#endif
+
+
+#if 0
+/* Old code, no longer used for GMAP/GSNAP, but kept for PMAP in oligoindex_pmap.c */
+
+/* Third, run genomicuc through this procedure, to determine the genomic positions for each oligo.  */
+/* Logic of this procedure should match that of allocate_positions */
+static int
+store_positions (Chrpos_T **pointers, bool *overabundant, 
+#ifdef HAVE_SSE2
+		 Count_T *inquery,
+#else
+		 bool *inquery,
+#endif
+		 Oligospace_T oligospace, int indexsize, Shortoligomer_T mask,
+		 char *sequence, int seqlength, int sequencepos) {
+  int nstored = 0;
+  int i = 0;
+  int in_counter = 0;
+  Shortoligomer_T oligo = 0U, masked;
+  char *p;
+
+#ifdef DEBUG
+  char *nt;
+#endif
+
+  sequencepos -= indexsize;
+  for (i = 0, p = sequence; i < seqlength; i++, p++) {
+    in_counter++;
+    sequencepos++;
+
+    debug(printf("At genomicpos %u, char is %c\n",sequencepos,*p));
+
+    switch (*p) {
+    case 'A':
+#ifdef EXTRACT_GENOMICSEG
+    case 'N':
+#endif
+      oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    default: oligo = 0U; in_counter = 0;
+    }
+
+    if (in_counter == indexsize) {
+      masked = oligo & mask;
+      if (overabundant[masked] == true) {
+	/* Don't bother */
 
+#ifdef HAVE_SSE2
+      } else if (inquery[masked] == /*false*/0x00) {
+	/* Don't bother, because it's not in the query sequence */
+#else
+      } else if (inquery[masked] == false) {
+	/* Don't bother, because it's not in the query sequence */
+#endif
+
+      } else {
+	if (masked >= oligospace) {
+	  abort();
+	}
+	pointers[masked][0] = (Chrpos_T) sequencepos;
+	pointers[masked]++;
+	nstored++;
+      }
+      in_counter--;
+    }
+  }
+
+  return nstored;
+}
 #endif
 
 
+
+
 /* Notes: genomicstart and genomicend define the region for alignment.
    Within that interval, mappingstart and mappingend define the region
    for allowable mappings.  This allows GSNAP to define a larger
@@ -14314,11 +18233,16 @@ allocate_positions (Chrpos_T **pointers, Chrpos_T **positions,
    running stage 2 */
 
 
+/* chrpos is sequencepos */
 void
-Oligoindex_hr_tally (T this, 
-		     Univcoord_T mappingstart, Univcoord_T mappingend, bool plusp,
+Oligoindex_hr_tally (T this, Univcoord_T mappingstart, Univcoord_T mappingend, bool plusp,
 		     char *queryuc_ptr, int querylength, Chrpos_T chrpos, int genestrand) {
   int badoligos, repoligos, trimoligos, trim_start, trim_end;
+#ifdef DEBUG14
+  Count_T *counts_std;
+  Chrpos_T **pointers_std;
+  Chrpos_T **positions_std;
+#endif
 
   Oligoindex_set_inquery(&badoligos,&repoligos,&trimoligos,&trim_start,&trim_end,this,
 			 queryuc_ptr,querylength,/*trimp*/false);
@@ -14338,65 +18262,461 @@ Oligoindex_hr_tally (T this,
     }
   }
 
-#ifndef PMAP
   /* These values will prevent oligoindex from getting mappings later */
   this->overabundant[POLY_A & this->mask] = true;
   this->overabundant[POLY_C & this->mask] = true;
   this->overabundant[POLY_G & this->mask] = true;
   this->overabundant[POLY_T & this->mask] = true;
 #endif
-#endif
 
-  debug(printf("called with mapping %u..%u\n",mappingstart,mappingend));
+  debug0(printf("called with mapping %u..%u\n",mappingstart,mappingend));
 
   if (plusp == true) {
-    debug(printf("plus, first sequencepos is %u\n",chrpos));
-#ifdef PMAP
-    count_positions_fwd(this->counts,this->indexsize_aa,mappingstart,mappingend,genestrand);
-    if (allocate_positions(this->pointers,this->positions,this->inquery,this->counts,
-			   this->oligospace) > 0) {
-      /* Shift positions array by 1 so we can use positions[masked] instead of positions[masked+1] */
-      store_positions_fwd(this->pointers,&(this->positions[1]),this->counts,this->indexsize_aa,mappingstart,mappingend,
-			  chrpos,genestrand);
-    }
+    debug0(printf("plus, first sequencepos is %u\n",chrpos));
+
+#ifdef USE_SIMD_FOR_COUNTS
+    count_positions_fwd_simd(this->counts,this->indexsize,mappingstart,mappingend,genestrand);
+#ifdef DEBUG14
+    counts_std = (Count_T *) CALLOC(this->oligospace,sizeof(Count_T));
+    count_positions_fwd_std(counts_std,this->indexsize,mappingstart,mappingend,genestrand);
+    counts_compare(this->counts,counts_std,this->oligospace);
+#endif
 #else
-    count_positions_fwd(this->counts,this->indexsize,mappingstart,mappingend,genestrand);
+    count_positions_fwd_std(this->counts,this->indexsize,mappingstart,mappingend,genestrand);
+#endif
+
     if (allocate_positions(this->pointers,this->positions,this->inquery,this->counts,
 			   this->oligospace,this->mask) > 0) {
       /* Shift positions array by 1 so we can use positions[masked] instead of positions[masked+1] */
-      store_positions_fwd(this->pointers,&(this->positions[1]),this->counts,this->indexsize,mappingstart,mappingend,
-			  chrpos,genestrand);
+#ifdef USE_SIMD_FOR_COUNTS
+      store_positions_fwd_simd(this->pointers,&(this->positions[1]),this->counts,this->indexsize,mappingstart,mappingend,
+			       chrpos,genestrand);
+#ifdef DEBUG14
+      pointers_std = (Chrpos_T **) CALLOC(this->oligospace,sizeof(Chrpos_T *));
+      positions_std = (Chrpos_T **) CALLOC(this->oligospace+1,sizeof(Chrpos_T *));
+      allocate_positions(pointers_std,positions_std,this->inquery,counts_std,
+			 this->oligospace,this->mask);
+      store_positions_fwd_std(pointers_std,&(positions_std[1]),counts_std,this->indexsize,mappingstart,mappingend,
+			      chrpos,genestrand);
+      positions_compare(this->positions,positions_std,counts_std,this->oligospace);
+      FREE(positions_std);
+      FREE(pointers_std);
+#endif
+
+#else
+      store_positions_fwd_std(this->pointers,&(this->positions[1]),this->counts,this->indexsize,mappingstart,mappingend,
+			      chrpos,genestrand);
+#endif
     }
+
+#ifdef DEBUG14
+    FREE(counts_std);
 #endif
 
   } else {
-    debug(printf("minus, first sequencepos is %u\n",chrpos));
-#ifdef PMAP
-    count_positions_rev(this->counts,this->indexsize_aa,mappingstart,mappingend,genestrand);
-    if (allocate_positions(this->pointers,this->positions,this->inquery,this->counts,
-			   this->oligospace) > 0) {
-      /* Shift positions array by 1 so we can use positions[masked] instead of positions[masked+1] */
-      store_positions_rev(this->pointers,&(this->positions[1]),this->counts,this->indexsize_aa,mappingstart,mappingend,
-			  chrpos,genestrand);
-    }
+    debug0(printf("minus, first sequencepos is %u\n",chrpos));
+
+#ifdef USE_SIMD_FOR_COUNTS
+    count_positions_rev_simd(this->counts,this->indexsize,mappingstart,mappingend,genestrand);
+#ifdef DEBUG14
+    counts_std = (Count_T *) CALLOC(this->oligospace,sizeof(Count_T));
+    count_positions_rev_std(counts_std,this->indexsize,mappingstart,mappingend,genestrand);
+    counts_compare(this->counts,counts_std,this->oligospace);
+#endif
 #else
-    count_positions_rev(this->counts,this->indexsize,mappingstart,mappingend,genestrand);
+    count_positions_rev_std(this->counts,this->indexsize,mappingstart,mappingend,genestrand);
+#endif
+
     if (allocate_positions(this->pointers,this->positions,this->inquery,this->counts,
 			   this->oligospace,this->mask) > 0) {
       /* Shift positions array by 1 so we can use positions[masked] instead of positions[masked+1] */
-      store_positions_rev(this->pointers,&(this->positions[1]),this->counts,this->indexsize,mappingstart,mappingend,
-			  chrpos,genestrand);
+#ifdef USE_SIMD_FOR_COUNTS
+      store_positions_rev_simd(this->pointers,&(this->positions[1]),this->counts,this->indexsize,mappingstart,mappingend,
+			       chrpos,genestrand);
+#ifdef DEBUG14
+      pointers_std = (Chrpos_T **) CALLOC(this->oligospace,sizeof(Chrpos_T *));
+      positions_std = (Chrpos_T **) CALLOC(this->oligospace+1,sizeof(Chrpos_T *));
+      allocate_positions(pointers_std,positions_std,this->inquery,counts_std,
+			 this->oligospace,this->mask);
+      store_positions_rev_std(pointers_std,&(positions_std[1]),counts_std,this->indexsize,mappingstart,mappingend,
+			      chrpos,genestrand);
+      positions_compare(this->positions,positions_std,counts_std,this->oligospace);
+      FREE(positions_std);
+      FREE(pointers_std);
+#endif
+
+#else
+      store_positions_rev_std(this->pointers,&(this->positions[1]),this->counts,this->indexsize,mappingstart,mappingend,
+			      chrpos,genestrand);
+#endif
     }
+
+#ifdef DEBUG14
+    FREE(counts_std);
 #endif
+
   }
 
+  debug9(dump_positions(this->positions,this->counts,this->oligospace,this->indexsize));
 
-#ifdef PMAP
-  debug9(dump_positions(this->positions,this->counts,this->oligospace,3*this->indexsize_aa));
+  return;
+}
+  
+
+void
+Oligoindex_clear_inquery (T this, char *queryuc_ptr, int querylength) {
+  int in_counter = 0, i;
+  char *p;
+  Shortoligomer_T oligo = 0U;
+  Shortoligomer_T masked;
+  int indexsize = this->indexsize;
+
+
+  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
+    in_counter++;
+
+    switch (*p) {
+    case 'A': oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    default: oligo = 0U; in_counter = 0; break;
+    }
+
+    if (in_counter == indexsize) {
+      masked = oligo & this->mask;
+      debug(nt = shortoligo_nt(oligo,indexsize);
+	    printf("At querypos %d, oligo %s seen\n",i,nt);
+	    FREE(nt));
+
+      this->counts[masked] = 0;
+#ifdef HAVE_SSE2
+      this->inquery[masked] = /*false*/0x00;
 #else
-  debug9(dump_positions(this->positions,this->counts,this->oligospace,this->indexsize));
+      this->inquery[masked] = false;
 #endif
+      in_counter--;
+    }
+  }
+
+  this->query_evaluated_p = false;
 
   return;
 }
-  
+
+void
+Oligoindex_untally (T this, char *queryuc_ptr, int querylength) {
+
+  if (this->query_evaluated_p == true) {
+#ifdef GSNAP
+    Oligoindex_clear_inquery(this,queryuc_ptr,querylength);
+#else
+    if (querylength > this->oligospace) {
+      /* For very long sequences, it may be better to just clear all oligos directly */
+#ifdef HAVE_SSE2
+      memset((void *) this->inquery,/*false*/0x00,this->oligospace*sizeof(Count_T));
+#else
+      memset((void *) this->inquery,false,this->oligospace*sizeof(bool));
+#endif
+      memset((void *) this->counts,0,this->oligospace*sizeof(Count_T));
+
+    } else {
+      Oligoindex_clear_inquery(this,queryuc_ptr,querylength);
+    }
+#endif
+
+    /* This statement is critical to avoid interactions between queryseqs */
+    this->query_evaluated_p = false;
+  }
+
+  if (this->positions[0] != NULL) {
+    FREE(this->positions[0]);
+  }
+
+  return;
+}
+
+
+
+static void
+Oligoindex_free (T *old) {
+  if (*old) {
+    FREE((*old)->pointers);
+    FREE((*old)->positions);
+#ifdef HAVE_SSE2
+    _mm_free((*old)->counts_allocated);
+    _mm_free((*old)->inquery_allocated);
+#else
+    FREE((*old)->counts);
+    FREE((*old)->inquery);
+#endif
+    FREE(*old);
+  }
+  return;
+}
+
+void
+Oligoindex_array_free (Oligoindex_array_T *old) {
+  int source;
+
+  FREE((*old)->cum_nohits_allocated);
+  FREE((*old)->genomicdiag);
+  FREE((*old)->genomicdiag_init_p);
+
+  for (source = 0; source < (*old)->length; source++) {
+    Oligoindex_free(&((*old)->array[source]));
+  }
+  FREE((*old)->array);
+  FREE(*old);
+  return;
+}
+
+
+static Chrpos_T *
+lookup (int *nhits, T this, Shortoligomer_T masked) {
+#ifdef DEBUG
+  char *nt;
+#endif
+
+  if ((*nhits = this->counts[masked]) >= 1) {
+    debug(nt = shortoligo_nt(masked,this->indexsize);
+	  printf("masked %s => %d entries: %u...%u\n",
+		 nt,*nhits,this->positions[masked][0],this->positions[masked][*nhits-1]);
+	  FREE(nt));
+    return this->positions[masked];
+  } else {
+    debug(nt = shortoligo_nt(masked,this->indexsize);
+	  printf("masked %s not found\n",nt);
+	  FREE(nt));
+    /* Warning: *nhits might be -1 here, but shouldn't affect anything */
+    return NULL;
+  }
+}
+
+
+#if 0
+static bool
+consecutivep (int prev_querypos, unsigned int *prev_mappings, int prev_nhits,
+	      int cur_querypos, unsigned int *cur_mappings, int cur_nhits) {
+  int genomicdist, i, j;
+
+  if (prev_nhits > 0 && cur_nhits > 0) {
+    j = i = 0;
+    genomicdist = NT_PER_MATCH*(cur_querypos - prev_querypos);
+    while (j < prev_nhits && i < cur_nhits) {
+      /* printf("Comparing %u with %u + %d\n",cur_mappings[i],prev_mappings[j],NT_PER_MATCH); */
+      if (cur_mappings[i] == prev_mappings[j] + genomicdist) {
+	/* printf("true\n"); */
+	return true;
+      } else if (cur_mappings[i] < prev_mappings[j] + genomicdist) {
+	i++;
+      } else {
+	j++;
+      }
+    }
+  }
+  /* printf("false\n"); */
+  return false;
+}
+#endif
+
+
+/* Third, retrieves appropriate oligo information for a given querypos and
+   copies it to that querypos */
+/* Note: Be careful on totalpositions, because nhits may be < 0 */
+List_T
+Oligoindex_get_mappings (List_T diagonals, bool *coveredp, Chrpos_T **mappings, int *npositions,
+			 int *totalpositions, bool *oned_matrix_p, int *maxnconsecutive, 
+			 Oligoindex_array_T array, T this, char *queryuc_ptr, int querylength,
+			 Chrpos_T chrstart, Chrpos_T chrend,
+			 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			 Diagpool_T diagpool) {
+  int nhits, hit, diagi_adjustment, i;
+  Chrpos_T diagi;
+  int diag_lookback, suffnconsecutive;
+  int *cum_nohits, *cum_nohits_allocated;
+#ifdef PREV_MAXCONSECUTIVE
+  int prev_querypos, prev_nhits;
+  Chrpos_T *prev_mappings;
+  int ngoodconsecutive;
+#endif
+  Shortoligomer_T oligo = 0U;
+
+  char *p;
+  int in_counter = 0, querypos;
+  Shortoligomer_T masked;
+  Chrpos_T genomiclength, chrinit;
+
+  void *item;
+  struct Genomicdiag_T *genomicdiag;
+  bool *genomicdiag_init_p;
+  Genomicdiag_T ptr;
+  List_T good_genomicdiags = NULL;
+
+  int indexsize = this->indexsize;
+
+  diag_lookback = this->diag_lookback;
+  suffnconsecutive = this->suffnconsecutive;
+  genomiclength = chrend - chrstart;
+  if (plusp == true) {
+    chrinit = chrstart;
+  } else {
+    chrinit = (chrhigh - chroffset) - chrend;
+  }
+
+  if (querylength + genomiclength > array->max_querylength + array->max_genomiclength) {
+    /* Cannot use pre-allocated storage */
+    /* Needs to be CALLOC, since we depend on the value being false as a signal that genomicdiag[diagi] should be initialized */
+    genomicdiag_init_p = (bool *) CALLOC(querylength+genomiclength+1,sizeof(bool));
+    genomicdiag = (struct Genomicdiag_T *) MALLOC((querylength+genomiclength+1) * sizeof(struct Genomicdiag_T));
+  } else {
+    /* Use pre-allocated storage */
+    genomicdiag_init_p = array->genomicdiag_init_p;
+    memset(genomicdiag_init_p,(int) false,(querylength+genomiclength+1)*sizeof(bool));
+    genomicdiag = array->genomicdiag;
+    memset(genomicdiag,0,(querylength+genomiclength+1)*sizeof(struct Genomicdiag_T));
+  }
+    
+  /* We have cum_nohits_allocated, so cum_nohits[-indexsize] to cum_nohits[-1] are allowed and equal to 0 */
+  if (querylength > array->max_querylength) {
+    /* Cannot use pre-allocated storage */
+    cum_nohits_allocated = (int *) CALLOC(querylength+indexsize+1,sizeof(int));
+  } else {
+    cum_nohits_allocated = array->cum_nohits_allocated;
+    memset(cum_nohits_allocated,0,(querylength+indexsize+1)*sizeof(int));
+  }
+  cum_nohits = &(cum_nohits_allocated[indexsize+1]);
+
+
+#if 0
+  /* Too time consuming.  Just initialize when we see [diagi] for the first time. */
+  for (diagi = 0; diagi < querylength+genomiclength; diagi++) {
+    genomicdiag[diagi].i = diagi;
+    genomicdiag[diagi].querypos = -diag_lookback; /* guarantees first check won't be consecutive */
+  }
+#endif
+
+
+  querypos = -indexsize;
+  *oned_matrix_p = true;
+  for (i = 0, p = queryuc_ptr; i < querylength; i++, p++) {
+    in_counter++;
+    querypos++;
+    
+    switch (*p) {
+    case 'A':
+#ifdef EXTRACT_GENOMICSEG
+    case 'N':
+#endif
+      oligo = (oligo << 2); break;
+    case 'C': oligo = (oligo << 2) | 1; break;
+    case 'G': oligo = (oligo << 2) | 2; break;
+    case 'T': oligo = (oligo << 2) | 3; break;
+    default: oligo = 0U; in_counter = 0; break;
+    }
+
+    cum_nohits[querypos] = cum_nohits[querypos-1];
+    if (in_counter == indexsize) {
+      masked = oligo & this->mask;
+      if (coveredp[querypos] == false) {
+	mappings[querypos] = lookup(&nhits,this,masked);
+	npositions[querypos] = nhits;
+	debug3(printf("querypos %d, masked %u, nhits %d\n",querypos,masked,nhits));
+	if (nhits <= 0) {
+	  cum_nohits[querypos] += 1;
+	} else {
+	  *totalpositions += nhits;
+	  if (*totalpositions < 0) {
+	    /* fprintf(stderr,"totalpositions %d is negative for masked oligo %u\n",*totalpositions,masked); */
+	    *oned_matrix_p = false;
+	  }
+
+	  /* diagonal is (position - querypos); diagi is (position - querypos) + querylength */
+	  diagi_adjustment = querylength - querypos;
+
+	  for (hit = 0; hit < nhits; hit++) {
+	    diagi = mappings[querypos][hit] + diagi_adjustment - chrinit;
+	    ptr = &(genomicdiag[diagi]);
+
+	    assert(diagi <= querylength+genomiclength);
+
+	    if (genomicdiag_init_p[diagi] == false) {
+	      /* Initialize */
+	      genomicdiag_init_p[diagi] = true;
+	      ptr->i = diagi;
+	      ptr->querypos = -diag_lookback; /* guarantees first check won't be consecutive */
+	      ptr->best_nconsecutive = 0;
+	      ptr->nconsecutive = 0;
+	      ptr->consecutive_start = 0;
+	      /* ptr->best_consecutive_start = 0; */
+	      /* ptr->best_consecutive_end = 0; */
+	    }
+
+	    /* Must use >= here, so querypos 0 - (-diag_lookback) will fail */
+	    if (ptr->querypos < 0) {
+	      debug3(printf("At diagi %d (checking querypos %d to %d), no consecutive\n",diagi,ptr->querypos,querypos));
+	      ptr->nconsecutive = 0;
+	      ptr->consecutive_start = querypos;
+
+	    } else if (querypos - ptr->querypos >= diag_lookback + cum_nohits[querypos] - cum_nohits[ptr->querypos]) {
+	      debug3(printf("At diagi %d (checking querypos %d to %d, with %d - %d nohits in between), no consecutive\n",
+			    diagi,ptr->querypos,querypos,cum_nohits[querypos],cum_nohits[ptr->querypos]));
+	      ptr->nconsecutive = 0;
+	      ptr->consecutive_start = querypos;
+	      
+	    } else if (++ptr->nconsecutive > ptr->best_nconsecutive) {
+	      ptr->best_consecutive_start = ptr->consecutive_start;
+	      ptr->best_consecutive_end = querypos;
+	      ptr->best_nconsecutive = ptr->nconsecutive;
+	      debug3(printf("At diagi %d (checking querypos %d to %d, with %d - %d nohits in between), best consecutive of %d from %d to %d",
+			    diagi,ptr->querypos,querypos,cum_nohits[querypos],cum_nohits[ptr->querypos],
+			    ptr->best_nconsecutive,ptr->best_consecutive_start,ptr->best_consecutive_end));
+	      if (ptr->best_nconsecutive == suffnconsecutive) {
+		/* Need to check for ==, not >=, because this will store the ptr once */
+		debug3(printf(" => pushing"));
+		good_genomicdiags = List_push(good_genomicdiags,(void *) ptr);
+	      }
+	      if (ptr->best_nconsecutive > *maxnconsecutive) {
+		*maxnconsecutive = ptr->best_nconsecutive;
+	      }
+	      debug3(printf("\n"));
+	    }
+	    ptr->querypos = querypos;
+	  }
+	}
+      }
+      in_counter--;
+    }
+  }
+
+  if (querylength > array->max_querylength) {
+    FREE(cum_nohits_allocated);
+  }
+
+  while (good_genomicdiags != NULL) {
+    good_genomicdiags = List_pop(good_genomicdiags,&item);
+    ptr = (Genomicdiag_T) item;
+
+    if (ptr->i >= querylength) {
+#ifdef USE_DIAGPOOL
+      diagonals = Diagpool_push(diagonals,diagpool,/*diagonal*/(ptr->i - querylength),
+				ptr->best_consecutive_start,ptr->best_consecutive_end,
+				ptr->best_nconsecutive+1);
+#else
+      diagonals = List_push(diagonals,(void *) Diag_new(/*diagonal*/(ptr->i - querylength),
+							ptr->best_consecutive_start,ptr->best_consecutive_end,
+							ptr->best_nconsecutive+1));
+#endif
+    }
+
+  }
+
+  if (querylength + genomiclength > array->max_querylength + array->max_genomiclength) {
+    FREE(genomicdiag);
+    FREE(genomicdiag_init_p);
+  }
+
+  return diagonals;
+}
+
+
diff --git a/src/oligoindex_hr.h b/src/oligoindex_hr.h
index 6b5bc1e..4cc9184 100644
--- a/src/oligoindex_hr.h
+++ b/src/oligoindex_hr.h
@@ -1,19 +1,71 @@
+/* $Id: oligoindex_hr.h 132475 2014-04-06 04:14:11Z twu $ */
 #ifndef OLIGOINDEX_HR_INCLUDED
 #define OLIGOINDEX_HR_INCLUDED
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "bool.h"
 #include "types.h"
 #include "mode.h"
 #include "genomicpos.h"
-#include "oligoindex.h"
+#include "list.h"
+#include "diagpool.h"
+
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+
+#define OVERABUNDANCE_CHECK 50
+#define OVERABUNDANCE_PCT 0.97
+#define OVERABUNDANCE_MIN 200
+
+typedef UINT4 Shortoligomer_T;
+typedef unsigned char Count_T;
 
 #define T Oligoindex_T
+typedef struct T *T;
+
+typedef struct Oligoindex_array_T *Oligoindex_array_T;
 
 extern void
 Oligoindex_hr_setup (Genomecomp_T *ref_blocks_in, Mode_T mode_in);
 
+extern int
+Oligoindex_indexsize (T this);
+
+extern int
+Oligoindex_array_length (Oligoindex_array_T oligoindices);
+extern T
+Oligoindex_array_elt (Oligoindex_array_T oligoindices, int source);
+
+extern Oligoindex_array_T
+Oligoindex_array_new_major (int max_querylength, int max_genomiclength);
+
+extern Oligoindex_array_T
+Oligoindex_array_new_minor (int max_querylength, int max_genomiclength);
+
+extern double
+Oligoindex_set_inquery (int *badoligos, int *repoligos, int *trimoligos, int *trim_start, int *trim_end,
+			T this, char *queryuc_ptr, int querylength, bool trimp);
 extern void
 Oligoindex_hr_tally (T this, Univcoord_T mappingstart, Univcoord_T mappingend, bool plusp,
 		     char *queryuc_ptr, int querylength, Chrpos_T chrpos, int genestrand);
+extern void
+Oligoindex_untally (T this, char *queryuc_ptr, int querylength);
+extern void
+Oligoindex_clear_inquery (T this, char *queryuc_ptr, int querylength);
+extern void
+Oligoindex_array_free(Oligoindex_array_T *old);
+
+extern List_T
+Oligoindex_get_mappings (List_T diagonals, bool *coveredp, Chrpos_T **mappings, int *npositions,
+			 int *totalpositions, bool *oned_matrix_p, int *maxnconsecutive, 
+			 Oligoindex_array_T array, T this, char *queryuc_ptr, int querylength,
+			 Chrpos_T chrstart, Chrpos_T chrend,
+			 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			 Diagpool_T diagpool);
 
 #undef T
 #endif
diff --git a/src/outbuffer.c b/src/outbuffer.c
index dcc21ff..f76c780 100644
--- a/src/outbuffer.c
+++ b/src/outbuffer.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: outbuffer.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: outbuffer.c 136794 2014-05-21 18:58:14Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -18,6 +18,8 @@ static char rcsid[] = "$Id: outbuffer.c 99737 2013-06-27 19:33:03Z twu $";
 #include "assert.h"
 #include "bool.h"
 #include "mem.h"
+#include "samheader.h"
+#include "samflags.h"		/* For output types */
 
 #ifdef GSNAP
 #include "shortread.h"
@@ -147,6 +149,7 @@ struct T {
   Univ_IIT_T chromosome_iit;
 
   char *sevenway_root;
+  char *failedinput_root;
   bool appendp;
 
 #ifdef GSNAP
@@ -156,6 +159,11 @@ struct T {
   char *sam_read_group_library;
   char *sam_read_group_platform;
   int quality_shift;
+  int nworkers;
+  bool orderedp;
+  int argc;
+  char **argv;
+  int optind;
 #elif defined PMAP
 
 #else
@@ -166,29 +174,44 @@ struct T {
   char *sam_read_group_library;
   char *sam_read_group_platform;
   int quality_shift;
+  int nworkers;
+  bool orderedp;
+  int argc;
+  char **argv;
+  int optind;
 #endif
 
+  FILE *fp_failedinput_1;
+  FILE *fp_failedinput_2;
+
 #ifdef GSNAP
 
-  FILE *fp_nomapping_1;
-  FILE *fp_nomapping_2;
-  FILE *fp_halfmapping_uniq;
-  FILE *fp_halfmapping_circular;
-  FILE *fp_halfmapping_transloc;
-  FILE *fp_halfmapping_mult;
-  FILE *fp_unpaired_uniq;
-  FILE *fp_unpaired_circular;
-  FILE *fp_unpaired_transloc;
-  FILE *fp_unpaired_mult;
-  FILE *fp_paired_uniq_circular;
-  FILE *fp_paired_uniq_inv;
-  FILE *fp_paired_uniq_scr;
-  FILE *fp_paired_uniq_long;
-  FILE *fp_paired_mult;
-  FILE *fp_concordant_uniq;
-  FILE *fp_concordant_circular;
-  FILE *fp_concordant_transloc;
-  FILE *fp_concordant_mult;
+  FILE *fp_nomapping;		/* NM */
+  FILE *fp_halfmapping_uniq;	/* HU */
+  FILE *fp_halfmapping_circular; /* HC */
+  FILE *fp_halfmapping_transloc; /* HT */
+  FILE *fp_halfmapping_mult;	 /* HM */
+  FILE *fp_halfmapping_mult_xs_1; /* HX */
+  FILE *fp_halfmapping_mult_xs_2; /* HX */
+  FILE *fp_unpaired_uniq;	 /* UU */
+  FILE *fp_unpaired_circular;	 /* UC */
+  FILE *fp_unpaired_transloc;	 /* UT */
+  FILE *fp_unpaired_mult;	 /* UM */
+  FILE *fp_unpaired_mult_xs_1;	 /* UX */
+  FILE *fp_unpaired_mult_xs_2;	 /* UX */
+  FILE *fp_paired_uniq_circular; /* PC */
+  FILE *fp_paired_uniq_inv;	 /* PI */
+  FILE *fp_paired_uniq_scr;	 /* PS */
+  FILE *fp_paired_uniq_long;	 /* PL */
+  FILE *fp_paired_mult;		 /* PM */
+  FILE *fp_paired_mult_xs_1;	 /* PX */
+  FILE *fp_paired_mult_xs_2;	 /* PX */
+  FILE *fp_concordant_uniq;	 /* CU */
+  FILE *fp_concordant_circular;	 /* CC */
+  FILE *fp_concordant_transloc;	 /* CT */
+  FILE *fp_concordant_mult;	 /* CM */
+  FILE *fp_concordant_mult_xs_1; /* CX */
+  FILE *fp_concordant_mult_xs_2; /* CX */
 
   bool timingp;
   bool output_sam_p;
@@ -204,11 +227,12 @@ struct T {
 
 #else
 
-  FILE *fp_nomapping;
-  FILE *fp_uniq;
-  FILE *fp_circular;
-  FILE *fp_transloc;
-  FILE *fp_mult;
+  FILE *fp_nomapping;		/* N1 */
+  FILE *fp_uniq;		/* UU */
+  FILE *fp_circular;		/* UC */
+  FILE *fp_transloc;		/* UT */
+  FILE *fp_mult;		/* UM */
+  FILE *fp_mult_xs;		/* UX */
 
   bool chimeras_allowed_p;
 
@@ -216,7 +240,7 @@ struct T {
   Sequence_T usersegment;
 
   char *dbversion;
-  Chrsubset_T chrsubset;
+  char *chrsubset_name;
   Univ_IIT_T contig_iit;
   IIT_T altstrain_iit;
   IIT_T map_iit;
@@ -254,7 +278,6 @@ struct T {
   int maxpaths_report;
   bool nofailsp;
   bool failsonlyp;
-  bool fails_as_input_p;
   bool quiet_if_excessive_p;
 
 #ifdef HAVE_PTHREAD
@@ -279,10 +302,23 @@ struct T {
  *   File routines
  ************************************************************************/
 
+static void
+failedinput_close (T this) {
+  if (this->fp_failedinput_1 != NULL) {
+    fclose(this->fp_failedinput_1);
+  }
+  if (this->fp_failedinput_2 != NULL) {
+    fclose(this->fp_failedinput_2);
+  }
+  return;
+}
+
+
 #ifdef GSNAP
 
+/* Always open both .1 and .2 */
 static void
-sevenway_open_single (T this) {
+failedinput_open_paired (T this) {
   char *filename;
   char *write_mode;
 
@@ -292,30 +328,49 @@ sevenway_open_single (T this) {
     write_mode = "w";
   }
 
-  if (this->fails_as_input_p == true) {
-    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping.fq")+1,sizeof(char));
-    sprintf(filename,"%s.nomapping.fq",this->sevenway_root);
-    if ((this->fp_nomapping_1 = fopen(filename,write_mode)) == NULL) {
+  if (this->failedinput_root != NULL) {
+    filename = (char *) CALLOC(strlen(this->failedinput_root)+strlen(".1")+1,sizeof(char));
+    sprintf(filename,"%s.1",this->failedinput_root);
+    if ((this->fp_failedinput_1 = fopen(filename,write_mode)) == NULL) {
       fprintf(stderr,"Cannot open file %s for writing\n",filename);
       exit(9);
     }
     FREE(filename);
 
-  } else {
-    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping")+1,sizeof(char));
-    sprintf(filename,"%s.nomapping",this->sevenway_root);
-    if ((this->fp_nomapping_1 = fopen(filename,write_mode)) == NULL) {
+    filename = (char *) CALLOC(strlen(this->failedinput_root)+strlen(".2")+1,sizeof(char));
+    sprintf(filename,"%s.2",this->failedinput_root);
+    if ((this->fp_failedinput_2 = fopen(filename,write_mode)) == NULL) {
       fprintf(stderr,"Cannot open file %s for writing\n",filename);
       exit(9);
     }
     FREE(filename);
+  }
 
-    if (this->output_sam_p == true && this->sam_headers_p == true) {
-      Univ_IIT_dump_sam(this->fp_nomapping_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
-			this->sam_read_group_library,this->sam_read_group_platform);
-    }
+  return;
+}
+
+
+
+static void
+sevenway_open_single (T this) {
+  char *filename;
+  char *write_mode;
+
+  if (this->appendp == true) {
+    write_mode = "a";
+  } else {
+    write_mode = "w";
   }
 
+
+  filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping")+1,sizeof(char));
+  sprintf(filename,"%s.nomapping",this->sevenway_root);
+  if ((this->fp_nomapping = fopen(filename,write_mode)) == NULL) {
+    fprintf(stderr,"Cannot open file %s for writing\n",filename);
+    exit(9);
+  }
+  FREE(filename);
+
   filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".unpaired_uniq")+1,sizeof(char));
   sprintf(filename,"%s.unpaired_uniq",this->sevenway_root);
   if ((this->fp_unpaired_uniq = fopen(filename,write_mode)) == NULL) {
@@ -348,17 +403,69 @@ sevenway_open_single (T this) {
   }
   FREE(filename);
 
+  if (this->quiet_if_excessive_p == false) {
+    this->fp_unpaired_mult_xs_1 = (FILE *) NULL;
+
+#if 0
+  } else if (this->fails_as_input_p == true) {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".unpaired_mult_xs.1.fq")+1,sizeof(char));
+    sprintf(filename,"%s.unpaired_mult_xs.1.fq",this->sevenway_root);
+    if ((this->fp_unpaired_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+#endif
+
+  } else {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".unpaired_mult_xs")+1,sizeof(char));
+    sprintf(filename,"%s.unpaired_mult_xs",this->sevenway_root);
+    if ((this->fp_unpaired_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    if (this->output_sam_p == true && this->sam_headers_p == true) {
+      SAM_header_print_HD(this->fp_unpaired_mult_xs_1,this->nworkers,this->orderedp);
+      SAM_header_print_PG(this->fp_unpaired_mult_xs_1,this->argc,this->argv,this->optind);
+      Univ_IIT_dump_sam(this->fp_unpaired_mult_xs_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+			this->sam_read_group_library,this->sam_read_group_platform);
+    }
+  }
+
+
   if (this->output_sam_p == true && this->sam_headers_p == true) {
+    SAM_header_print_HD(this->fp_nomapping,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_nomapping,this->argc,this->argv,this->optind);
+    Univ_IIT_dump_sam(this->fp_nomapping,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_unpaired_uniq,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_unpaired_uniq,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_unpaired_uniq,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_unpaired_circular,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_unpaired_circular,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_unpaired_circular,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_unpaired_transloc,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_unpaired_transloc,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_unpaired_transloc,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_unpaired_mult,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_unpaired_mult,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_unpaired_mult,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
   }
 
+  if (this->output_sam_p == true) {
+    SAM_file_setup_single(this->fp_failedinput_1,this->fp_nomapping,this->fp_unpaired_uniq,this->fp_unpaired_circular,
+			  this->fp_unpaired_transloc,this->fp_unpaired_mult,this->fp_unpaired_mult_xs_1);
+  } else {
+    Stage3hr_file_setup_single(this->fp_failedinput_1,this->fp_nomapping,this->fp_unpaired_uniq,this->fp_unpaired_circular,
+			       this->fp_unpaired_transloc,this->fp_unpaired_mult,this->fp_unpaired_mult_xs_1);
+  }
+
   return;
 }
 
@@ -374,42 +481,51 @@ sevenway_open_paired (T this) {
     write_mode = "w";
   }
 
-  if (this->fails_as_input_p == true) {
-    if (this->fp_nomapping_1 == NULL) {
-      filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping.1.fq")+1,sizeof(char));
-      sprintf(filename,"%s.nomapping.1.fq",this->sevenway_root);
-      if ((this->fp_nomapping_1 = fopen(filename,write_mode)) == NULL) {
+  if (this->quiet_if_excessive_p == false) {
+    this->fp_unpaired_mult_xs_1 = (FILE *) NULL;
+    this->fp_unpaired_mult_xs_2 = (FILE *) NULL;
+
+#if 0
+  } else if (this->fails_as_input_p == true) {
+    if (this->fp_unpaired_mult_xs_1 == NULL) {
+      filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".unpaired_mult_xs.1.fq")+1,sizeof(char));
+      sprintf(filename,"%s.unpaired_mult_xs.1.fq",this->sevenway_root);
+      if ((this->fp_unpaired_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
 	fprintf(stderr,"Cannot open file %s for writing\n",filename);
 	exit(9);
       }
       FREE(filename);
     }
 
-    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping.2.fq")+1,sizeof(char));
-    sprintf(filename,"%s.nomapping.2.fq",this->sevenway_root);
-    if ((this->fp_nomapping_2 = fopen(filename,write_mode)) == NULL) {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".unpaired_mult_xs.2.fq")+1,sizeof(char));
+    sprintf(filename,"%s.unpaired_mult_xs.2.fq",this->sevenway_root);
+    if ((this->fp_unpaired_mult_xs_2 = fopen(filename,write_mode)) == NULL) {
       fprintf(stderr,"Cannot open file %s for writing\n",filename);
       exit(9);
     }
     FREE(filename);
+#endif
 
   } else {
-    if (this->fp_nomapping_1 == NULL) {
-      filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping")+1,sizeof(char));
-      sprintf(filename,"%s.nomapping",this->sevenway_root);
-      if ((this->fp_nomapping_1 = fopen(filename,write_mode)) == NULL) {
+    if (this->fp_unpaired_mult_xs_1 == NULL) {
+      filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".unpaired_mult_xs")+1,sizeof(char));
+      sprintf(filename,"%s.unpaired_mult_xs",this->sevenway_root);
+      if ((this->fp_unpaired_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
 	fprintf(stderr,"Cannot open file %s for writing\n",filename);
 	exit(9);
       }
       FREE(filename);
 
       if (this->output_sam_p == true && this->sam_headers_p == true) {
-	Univ_IIT_dump_sam(this->fp_nomapping_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+	SAM_header_print_HD(this->fp_unpaired_mult_xs_1,this->nworkers,this->orderedp);
+	SAM_header_print_PG(this->fp_unpaired_mult_xs_1,this->argc,this->argv,this->optind);
+	Univ_IIT_dump_sam(this->fp_unpaired_mult_xs_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 			  this->sam_read_group_library,this->sam_read_group_platform);
       }
     }
   }
 
+
   filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".halfmapping_uniq")+1,sizeof(char));
   sprintf(filename,"%s.halfmapping_uniq",this->sevenway_root);
   if ((this->fp_halfmapping_uniq = fopen(filename,write_mode)) == NULL) {
@@ -442,6 +558,46 @@ sevenway_open_paired (T this) {
   }
   FREE(filename);
 
+  if (this->quiet_if_excessive_p == false) {
+    this->fp_halfmapping_mult_xs_1 = (FILE *) NULL;
+    this->fp_halfmapping_mult_xs_2 = (FILE *) NULL;
+
+#if 0
+  } else if (this->fails_as_input_p == true) {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".halfmapping_mult_xs.1.fq")+1,sizeof(char));
+    sprintf(filename,"%s.halfmapping_mult_xs.1.fq",this->sevenway_root);
+    if ((this->fp_halfmapping_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".halfmapping_mult_xs.2.fq")+1,sizeof(char));
+    sprintf(filename,"%s.halfmapping_mult_xs.2.fq",this->sevenway_root);
+    if ((this->fp_halfmapping_mult_xs_2 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+#endif
+
+  } else {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".halfmapping_mult_xs")+1,sizeof(char));
+    sprintf(filename,"%s.halfmapping_mult_xs",this->sevenway_root);
+    if ((this->fp_halfmapping_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    if (this->output_sam_p == true && this->sam_headers_p == true) {
+      SAM_header_print_HD(this->fp_halfmapping_mult_xs_1,this->nworkers,this->orderedp);
+      SAM_header_print_PG(this->fp_halfmapping_mult_xs_1,this->argc,this->argv,this->optind);
+      Univ_IIT_dump_sam(this->fp_halfmapping_mult_xs_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+			this->sam_read_group_library,this->sam_read_group_platform);
+    }
+  }
+
   filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".paired_uniq_circular")+1,sizeof(char));
   sprintf(filename,"%s.paired_uniq_circular",this->sevenway_root);
   if ((this->fp_paired_uniq_circular = fopen(filename,write_mode)) == NULL) {
@@ -482,6 +638,46 @@ sevenway_open_paired (T this) {
   }
   FREE(filename);
 
+  if (this->quiet_if_excessive_p == false) {
+    this->fp_paired_mult_xs_1 = (FILE *) NULL;
+    this->fp_paired_mult_xs_2 = (FILE *) NULL;
+     
+#if 0
+  } else if (this->fails_as_input_p == true) {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".paired_mult_xs.1.fq")+1,sizeof(char));
+    sprintf(filename,"%s.paired_mult_xs.1.fq",this->sevenway_root);
+    if ((this->fp_paired_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".paired_mult_xs.2.fq")+1,sizeof(char));
+    sprintf(filename,"%s.paired_mult_xs.2.fq",this->sevenway_root);
+    if ((this->fp_paired_mult_xs_2 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+#endif
+
+  } else {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".paired_mult_xs")+1,sizeof(char));
+    sprintf(filename,"%s.paired_mult_xs",this->sevenway_root);
+    if ((this->fp_paired_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    if (this->output_sam_p == true && this->sam_headers_p == true) {
+      SAM_header_print_HD(this->fp_paired_mult_xs_1,this->nworkers,this->orderedp);
+      SAM_header_print_PG(this->fp_paired_mult_xs_1,this->argc,this->argv,this->optind);
+      Univ_IIT_dump_sam(this->fp_paired_mult_xs_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+			this->sam_read_group_library,this->sam_read_group_platform);
+    }
+  }
+
   filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".concordant_uniq")+1,sizeof(char));
   sprintf(filename,"%s.concordant_uniq",this->sevenway_root);
   if ((this->fp_concordant_uniq = fopen(filename,write_mode)) == NULL) {
@@ -514,35 +710,125 @@ sevenway_open_paired (T this) {
   }
   FREE(filename);
 
+  if (this->quiet_if_excessive_p == false) {
+    this->fp_concordant_mult_xs_1 = (FILE *) NULL;
+    this->fp_concordant_mult_xs_2 = (FILE *) NULL;
+
+#if 0
+  } else if (this->fails_as_input_p == true) {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".concordant_mult_xs.1.fq")+1,sizeof(char));
+    sprintf(filename,"%s.concordant_mult_xs.1.fq",this->sevenway_root);
+    if ((this->fp_concordant_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".concordant_mult_xs.2.fq")+1,sizeof(char));
+    sprintf(filename,"%s.concordant_mult_xs.2.fq",this->sevenway_root);
+    if ((this->fp_concordant_mult_xs_2 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+#endif
+
+  } else {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".concordant_mult_xs")+1,sizeof(char));
+    sprintf(filename,"%s.concordant_mult_xs",this->sevenway_root);
+    if ((this->fp_concordant_mult_xs_1 = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+
+    if (this->output_sam_p == true && this->sam_headers_p == true) {
+      SAM_header_print_HD(this->fp_concordant_mult_xs_1,this->nworkers,this->orderedp);
+      SAM_header_print_PG(this->fp_concordant_mult_xs_1,this->argc,this->argv,this->optind);
+      Univ_IIT_dump_sam(this->fp_concordant_mult_xs_1,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+			this->sam_read_group_library,this->sam_read_group_platform);
+    }
+  }
+
   if (this->output_sam_p == true && this->sam_headers_p == true) {
+    SAM_header_print_HD(this->fp_halfmapping_uniq,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_halfmapping_uniq,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_halfmapping_uniq,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_halfmapping_circular,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_halfmapping_circular,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_halfmapping_circular,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_halfmapping_transloc,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_halfmapping_transloc,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_halfmapping_transloc,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_halfmapping_mult,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_halfmapping_mult,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_halfmapping_mult,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_paired_uniq_circular,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_paired_uniq_circular,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_paired_uniq_circular,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_paired_uniq_inv,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_paired_uniq_inv,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_paired_uniq_inv,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_paired_uniq_scr,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_paired_uniq_scr,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_paired_uniq_scr,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_paired_uniq_long,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_paired_uniq_long,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_paired_uniq_long,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_paired_mult,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_paired_mult,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_paired_mult,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_concordant_uniq,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_concordant_uniq,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_concordant_uniq,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_concordant_circular,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_concordant_circular,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_concordant_circular,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_concordant_transloc,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_concordant_transloc,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_concordant_transloc,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
+    SAM_header_print_HD(this->fp_concordant_mult,this->nworkers,this->orderedp);
+    SAM_header_print_PG(this->fp_concordant_mult,this->argc,this->argv,this->optind);
     Univ_IIT_dump_sam(this->fp_concordant_mult,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 		      this->sam_read_group_library,this->sam_read_group_platform);
   }
 
+  if (this->output_sam_p == true) {
+    SAM_file_setup_paired(this->fp_failedinput_1,this->fp_failedinput_2,this->fp_nomapping,
+			  this->fp_halfmapping_uniq,this->fp_halfmapping_circular,
+			  this->fp_halfmapping_transloc,this->fp_halfmapping_mult,
+			  this->fp_halfmapping_mult_xs_1,this->fp_halfmapping_mult_xs_2,
+			  this->fp_paired_uniq_circular,this->fp_paired_uniq_inv,this->fp_paired_uniq_scr,
+			  this->fp_paired_uniq_long,this->fp_paired_mult,
+			  this->fp_paired_mult_xs_1,this->fp_paired_mult_xs_2,
+			  this->fp_concordant_uniq,this->fp_concordant_circular,
+			  this->fp_concordant_transloc,this->fp_concordant_mult,
+			  this->fp_concordant_mult_xs_1,this->fp_concordant_mult_xs_2);
+  } else {
+    Stage3hr_file_setup_paired(this->fp_failedinput_1,this->fp_failedinput_2,this->fp_nomapping,
+			       this->fp_halfmapping_uniq,this->fp_halfmapping_circular,
+			       this->fp_halfmapping_transloc,this->fp_halfmapping_mult,
+			       this->fp_halfmapping_mult_xs_1,this->fp_halfmapping_mult_xs_2,
+			       this->fp_paired_uniq_circular,this->fp_paired_uniq_inv,this->fp_paired_uniq_scr,
+			       this->fp_paired_uniq_long,this->fp_paired_mult,
+			       this->fp_paired_mult_xs_1,this->fp_paired_mult_xs_2,
+			       this->fp_concordant_uniq,this->fp_concordant_circular,
+			       this->fp_concordant_transloc,this->fp_concordant_mult,
+			       this->fp_concordant_mult_xs_1,this->fp_concordant_mult_xs_2);
+  }
+
   return;
 }
 
@@ -552,13 +838,17 @@ sevenway_close (T this) {
   fclose(this->fp_unpaired_circular);
   fclose(this->fp_unpaired_transloc);
   fclose(this->fp_unpaired_mult);
-  if (this->fp_nomapping_2 != NULL) {
-    fclose(this->fp_nomapping_2);
+  if (this->quiet_if_excessive_p == true) {
+    fclose(this->fp_unpaired_mult_xs_1);
+    if (this->fp_unpaired_mult_xs_2 != NULL) {
+      fclose(this->fp_unpaired_mult_xs_2);
+    }
   }
-  if (this->fp_nomapping_1 != NULL) {
-    fclose(this->fp_nomapping_1);
+  if (this->fp_nomapping != NULL) {
+    fclose(this->fp_nomapping);
   }
   if (this->fp_halfmapping_uniq != NULL) {
+    /* Paired output */
     fclose(this->fp_halfmapping_uniq);
     fclose(this->fp_halfmapping_circular);
     fclose(this->fp_halfmapping_transloc);
@@ -572,6 +862,21 @@ sevenway_close (T this) {
     fclose(this->fp_concordant_circular);
     fclose(this->fp_concordant_transloc);
     fclose(this->fp_concordant_mult);
+
+    if (this->quiet_if_excessive_p == true) {
+      fclose(this->fp_halfmapping_mult_xs_1);
+      fclose(this->fp_paired_mult_xs_1);
+      fclose(this->fp_concordant_mult_xs_1);
+      if (this->fp_halfmapping_mult_xs_2 != NULL) {
+	fclose(this->fp_halfmapping_mult_xs_2);
+      }
+      if (this->fp_paired_mult_xs_2 != NULL) {
+	fclose(this->fp_paired_mult_xs_2);
+      }
+      if (this->fp_concordant_mult_xs_2 != NULL) {
+	fclose(this->fp_concordant_mult_xs_2);
+      }
+    }
   }
 
   return;
@@ -623,9 +928,8 @@ dump_sam_usersegment (FILE *fp, Sequence_T usersegment,
 }
 
 
-
 static void
-sevenway_open (T this, int argc, char **argv, int optind) {
+failedinput_open (T this) {
   char *filename;
   char *write_mode;
 
@@ -635,38 +939,38 @@ sevenway_open (T this, int argc, char **argv, int optind) {
     write_mode = "w";
   }
 
-  if (this->fails_as_input_p == true) {
-    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping.fa")+1,sizeof(char));
-    sprintf(filename,"%s.nomapping.fa",this->sevenway_root);
-    if ((this->fp_nomapping = fopen(filename,write_mode)) == NULL) {
+  if (this->failedinput_root != NULL) {
+    filename = (char *) CALLOC(strlen(this->failedinput_root)+1,sizeof(char));
+    sprintf(filename,"%s",this->failedinput_root);
+    if ((this->fp_failedinput_1 = fopen(filename,write_mode)) == NULL) {
       fprintf(stderr,"Cannot open file %s for writing\n",filename);
       exit(9);
     }
     FREE(filename);
+  }
+
+  return;
+}
 
+
+static void
+sevenway_open (T this, int argc, char **argv, int optind) {
+  char *filename;
+  char *write_mode;
+
+  if (this->appendp == true) {
+    write_mode = "a";
   } else {
-    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping")+1,sizeof(char));
-    sprintf(filename,"%s.nomapping",this->sevenway_root);
-    if ((this->fp_nomapping = fopen(filename,write_mode)) == NULL) {
-      fprintf(stderr,"Cannot open file %s for writing\n",filename);
-      exit(9);
-    }
-    FREE(filename);
+    write_mode = "w";
+  }
 
-    if (this->printtype == GFF3_GENE || this->printtype == GFF3_MATCH_CDNA || this->printtype == GFF3_MATCH_EST) {
-      print_gff_header(this->fp_nomapping,argc,argv,optind);
-#ifndef PMAP
-    } else if (this->printtype == SAM && this->sam_headers_p == true) {
-      if (this->usersegment != NULL) {
-	dump_sam_usersegment(this->fp_nomapping,this->usersegment,this->sam_read_group_id,this->sam_read_group_name,
-			     this->sam_read_group_library,this->sam_read_group_platform);
-      } else {
-	Univ_IIT_dump_sam(this->fp_nomapping,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
-			  this->sam_read_group_library,this->sam_read_group_platform);
-      }
-#endif
-    }
+  filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".nomapping")+1,sizeof(char));
+  sprintf(filename,"%s.nomapping",this->sevenway_root);
+  if ((this->fp_nomapping = fopen(filename,write_mode)) == NULL) {
+    fprintf(stderr,"Cannot open file %s for writing\n",filename);
+    exit(9);
   }
+  FREE(filename);
 
   filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".uniq")+1,sizeof(char));
   sprintf(filename,"%s.uniq",this->sevenway_root);
@@ -702,14 +1006,33 @@ sevenway_open (T this, int argc, char **argv, int optind) {
   }
   FREE(filename);
 
+  if (this->quiet_if_excessive_p == false) {
+    this->fp_mult_xs = (FILE *) NULL;
+  } else {
+    filename = (char *) CALLOC(strlen(this->sevenway_root)+strlen(".mult_xs")+1,sizeof(char));
+    sprintf(filename,"%s.mult_xs",this->sevenway_root);
+    if ((this->fp_mult_xs = fopen(filename,write_mode)) == NULL) {
+      fprintf(stderr,"Cannot open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+  }
+
   if (this->printtype == GFF3_GENE || this->printtype == GFF3_MATCH_CDNA || this->printtype == GFF3_MATCH_EST) {
+    print_gff_header(this->fp_nomapping,argc,argv,optind);
     print_gff_header(this->fp_uniq,argc,argv,optind);
     print_gff_header(this->fp_circular,argc,argv,optind);
     print_gff_header(this->fp_mult,argc,argv,optind);
+    if (this->quiet_if_excessive_p == true) {
+      print_gff_header(this->fp_mult_xs,argc,argv,optind);
+    }
 
 #ifndef PMAP
   } else if (this->printtype == SAM && this->sam_headers_p == true) {
     if (this->usersegment != NULL) {
+      dump_sam_usersegment(this->fp_nomapping,this->usersegment,
+			   this->sam_read_group_id,this->sam_read_group_name,
+			   this->sam_read_group_library,this->sam_read_group_platform);
       dump_sam_usersegment(this->fp_uniq,this->usersegment,
 			   this->sam_read_group_id,this->sam_read_group_name,
 			   this->sam_read_group_library,this->sam_read_group_platform);
@@ -719,13 +1042,25 @@ sevenway_open (T this, int argc, char **argv, int optind) {
       dump_sam_usersegment(this->fp_mult,this->usersegment,
 			   this->sam_read_group_id,this->sam_read_group_name,
 			   this->sam_read_group_library,this->sam_read_group_platform);
+      if (this->quiet_if_excessive_p == true) {
+	dump_sam_usersegment(this->fp_mult_xs,this->usersegment,
+			     this->sam_read_group_id,this->sam_read_group_name,
+			     this->sam_read_group_library,this->sam_read_group_platform);
+      }
+
     } else {
+      Univ_IIT_dump_sam(this->fp_nomapping,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+			this->sam_read_group_library,this->sam_read_group_platform);
       Univ_IIT_dump_sam(this->fp_uniq,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 			this->sam_read_group_library,this->sam_read_group_platform);
       Univ_IIT_dump_sam(this->fp_circular,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 			this->sam_read_group_library,this->sam_read_group_platform);
       Univ_IIT_dump_sam(this->fp_mult,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
 			this->sam_read_group_library,this->sam_read_group_platform);
+      if (this->quiet_if_excessive_p == true) {
+	Univ_IIT_dump_sam(this->fp_mult_xs,this->chromosome_iit,this->sam_read_group_id,this->sam_read_group_name,
+			  this->sam_read_group_library,this->sam_read_group_platform);
+      }
     }
 #endif
   }
@@ -735,6 +1070,9 @@ sevenway_open (T this, int argc, char **argv, int optind) {
 
 static void
 sevenway_close (T this) {
+  if (this->quiet_if_excessive_p == true) {
+    fclose(this->fp_mult_xs);
+  }
   fclose(this->fp_mult);
   fclose(this->fp_circular);
   fclose(this->fp_uniq);
@@ -752,39 +1090,52 @@ sevenway_close (T this) {
 #ifdef GSNAP
 
 T
-Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, bool appendp, Univ_IIT_T chromosome_iit,
+Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, char *failedinput_root,
+	       bool appendp, Univ_IIT_T chromosome_iit,
 	       bool timingp, bool output_sam_p, bool sam_headers_p, char *sam_read_group_id, char *sam_read_group_name,
 	       char *sam_read_group_library, char *sam_read_group_platform,
-	       Gobywriter_T gobywriter, bool nofailsp, bool failsonlyp, bool fails_as_input_p,
+	       int nworkers, bool orderedp, Gobywriter_T gobywriter, bool nofailsp, bool failsonlyp,
 	       bool fastq_format_p, bool clip_overlap_p, bool merge_samechr_p,
 	       int maxpaths_report, bool quiet_if_excessive_p, int quality_shift,
-	       bool invert_first_p, bool invert_second_p, Chrpos_T pairmax) {
+	       bool invert_first_p, bool invert_second_p, Chrpos_T pairmax,
+	       int argc, char **argv, int optind) {
   T new = (T) MALLOC(sizeof(*new));
   FILE *fp_capture = NULL, *fp_ignore = NULL;
 
   new->chromosome_iit = chromosome_iit;
 
-  new->fp_nomapping_1 = NULL;
-  new->fp_nomapping_2 = NULL;
+  new->fp_failedinput_1 = NULL;
+  new->fp_failedinput_2 = NULL;
+
+  new->fp_nomapping = NULL;
   new->fp_halfmapping_uniq = NULL;
   new->fp_halfmapping_circular = NULL;
   new->fp_halfmapping_transloc = NULL;
   new->fp_halfmapping_mult = NULL;
+  new->fp_halfmapping_mult_xs_1 = NULL;
+  new->fp_halfmapping_mult_xs_2 = NULL;
   new->fp_unpaired_uniq = NULL;
   new->fp_unpaired_circular = NULL;
   new->fp_unpaired_transloc = NULL;
   new->fp_unpaired_mult = NULL;
+  new->fp_unpaired_mult_xs_1 = NULL;
+  new->fp_unpaired_mult_xs_2 = NULL;
   new->fp_paired_uniq_circular = NULL;
   new->fp_paired_uniq_inv = NULL;
   new->fp_paired_uniq_scr = NULL;
   new->fp_paired_uniq_long = NULL;
   new->fp_paired_mult = NULL;
+  new->fp_paired_mult_xs_1 = NULL;
+  new->fp_paired_mult_xs_2 = NULL;
   new->fp_concordant_uniq = NULL;
   new->fp_concordant_circular = NULL;
   new->fp_concordant_transloc = NULL;
   new->fp_concordant_mult = NULL;
+  new->fp_concordant_mult_xs_1 = NULL;
+  new->fp_concordant_mult_xs_2 = NULL;
   
   new->sevenway_root = sevenway_root;
+  new->failedinput_root = failedinput_root;
   new->appendp = appendp;
 
   new->timingp = timingp;
@@ -794,12 +1145,16 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
   new->sam_read_group_name = sam_read_group_name;
   new->sam_read_group_library = sam_read_group_library;
   new->sam_read_group_platform = sam_read_group_platform;
+  new->nworkers = nworkers;
+  new->orderedp = orderedp;
+  new->argc = argc;
+  new->argv = argv;
+  new->optind = optind;
 
   new->gobywriter = gobywriter;
 
   new->nofailsp = nofailsp;
   new->failsonlyp = failsonlyp;
-  new->fails_as_input_p = fails_as_input_p;
   new->fastq_format_p = fastq_format_p;
   new->clip_overlap_p = clip_overlap_p;
   new->merge_samechr_p = merge_samechr_p;
@@ -831,54 +1186,132 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
   /* Initialize output streams */
   if (new->gobywriter != NULL) {
     Goby_file_handles(&fp_capture,&fp_ignore,new->gobywriter);
-    new->fp_nomapping_1 = fp_ignore;
-    new->fp_nomapping_2 = fp_ignore;
+    new->fp_nomapping = fp_ignore;
     new->fp_halfmapping_uniq = fp_capture;
     new->fp_halfmapping_circular = fp_capture;
     new->fp_halfmapping_transloc = fp_capture;
     new->fp_halfmapping_mult = fp_capture;
+    new->fp_halfmapping_mult_xs_1 = fp_capture;
+    new->fp_halfmapping_mult_xs_2 = fp_capture;
     new->fp_unpaired_uniq = fp_capture;
     new->fp_unpaired_circular = fp_capture;
     new->fp_unpaired_transloc = fp_capture;
     new->fp_unpaired_mult = fp_capture;
+    new->fp_unpaired_mult_xs_1 = fp_capture;
+    new->fp_unpaired_mult_xs_2 = fp_capture;
     new->fp_paired_uniq_circular = fp_capture;
     new->fp_paired_uniq_inv = fp_capture;
     new->fp_paired_uniq_scr = fp_capture;
     new->fp_paired_uniq_long = fp_capture;
     new->fp_paired_mult = fp_capture;
+    new->fp_paired_mult_xs_1 = fp_capture;
+    new->fp_paired_mult_xs_2 = fp_capture;
     new->fp_concordant_uniq = fp_capture;
     new->fp_concordant_circular = fp_capture;
     new->fp_concordant_transloc = fp_capture;
     new->fp_concordant_mult = fp_capture;
-
-  } else if (sevenway_root != NULL) {
-    sevenway_open_single(new);
+    new->fp_concordant_mult_xs_1 = fp_capture;
+    new->fp_concordant_mult_xs_2 = fp_capture;
+
+    if (output_sam_p == true) {
+      SAM_file_setup_all(new->fp_failedinput_1,new->fp_failedinput_2,new->fp_nomapping,
+			 new->fp_unpaired_uniq,new->fp_unpaired_circular,
+			 new->fp_unpaired_transloc,new->fp_unpaired_mult,
+			 new->fp_unpaired_mult_xs_1,new->fp_unpaired_mult_xs_2,
+			 new->fp_halfmapping_uniq,new->fp_halfmapping_circular,
+			 new->fp_halfmapping_transloc,new->fp_halfmapping_mult,
+			 new->fp_halfmapping_mult_xs_1,new->fp_halfmapping_mult_xs_2,
+			 new->fp_paired_uniq_circular,new->fp_paired_uniq_inv,new->fp_paired_uniq_scr,
+			 new->fp_paired_uniq_long,new->fp_paired_mult,
+			 new->fp_paired_mult_xs_1,new->fp_paired_mult_xs_2,
+			 new->fp_concordant_uniq,new->fp_concordant_circular,
+			 new->fp_concordant_transloc,new->fp_concordant_mult,
+			 new->fp_concordant_mult_xs_1,new->fp_concordant_mult_xs_2);
+    } else {
+      Stage3hr_file_setup_all(new->fp_failedinput_1,new->fp_failedinput_2,new->fp_nomapping,
+			      new->fp_unpaired_uniq,new->fp_unpaired_circular,
+			      new->fp_unpaired_transloc,new->fp_unpaired_mult,
+			      new->fp_unpaired_mult_xs_1,new->fp_unpaired_mult_xs_2,
+			      new->fp_halfmapping_uniq,new->fp_halfmapping_circular,
+			      new->fp_halfmapping_transloc,new->fp_halfmapping_mult,
+			      new->fp_halfmapping_mult_xs_1,new->fp_halfmapping_mult_xs_2,
+			      new->fp_paired_uniq_circular,new->fp_paired_uniq_inv,new->fp_paired_uniq_scr,
+			      new->fp_paired_uniq_long,new->fp_paired_mult,
+			      new->fp_paired_mult_xs_1,new->fp_paired_mult_xs_2,
+			      new->fp_concordant_uniq,new->fp_concordant_circular,
+			      new->fp_concordant_transloc,new->fp_concordant_mult,
+			      new->fp_concordant_mult_xs_1,new->fp_concordant_mult_xs_2);
+    }
 
   } else {
-    new->fp_nomapping_1 = stdout;
-    new->fp_nomapping_2 = stdout;
-    new->fp_halfmapping_uniq = stdout;
-    new->fp_halfmapping_circular = stdout;
-    new->fp_halfmapping_transloc = stdout;
-    new->fp_halfmapping_mult = stdout;
-    new->fp_unpaired_uniq = stdout;
-    new->fp_unpaired_circular = stdout;
-    new->fp_unpaired_transloc = stdout;
-    new->fp_unpaired_mult = stdout;
-    new->fp_paired_uniq_circular = stdout;
-    new->fp_paired_uniq_inv = stdout;
-    new->fp_paired_uniq_scr = stdout;
-    new->fp_paired_uniq_long = stdout;
-    new->fp_paired_mult = stdout;
-    new->fp_concordant_uniq = stdout;
-    new->fp_concordant_circular = stdout;
-    new->fp_concordant_transloc = stdout;
-    new->fp_concordant_mult = stdout;
-
-    if (output_sam_p == true && sam_headers_p == true) {
-      if (fails_as_input_p == true) {
-	/* Don't print chromosomes */
+    if (failedinput_root != NULL) {
+      failedinput_open_paired(new);
+    }
+
+    if (sevenway_root != NULL) {
+      sevenway_open_single(new);
+      
+    } else {
+      new->fp_nomapping = stdout;
+      new->fp_halfmapping_uniq = stdout;
+      new->fp_halfmapping_circular = stdout;
+      new->fp_halfmapping_transloc = stdout;
+      new->fp_halfmapping_mult = stdout;
+      new->fp_halfmapping_mult_xs_1 = stdout;
+      new->fp_halfmapping_mult_xs_2 = stdout;
+      new->fp_unpaired_uniq = stdout;
+      new->fp_unpaired_circular = stdout;
+      new->fp_unpaired_transloc = stdout;
+      new->fp_unpaired_mult = stdout;
+      new->fp_unpaired_mult_xs_1 = stdout;
+      new->fp_unpaired_mult_xs_2 = stdout;
+      new->fp_paired_uniq_circular = stdout;
+      new->fp_paired_uniq_inv = stdout;
+      new->fp_paired_uniq_scr = stdout;
+      new->fp_paired_uniq_long = stdout;
+      new->fp_paired_mult = stdout;
+      new->fp_paired_mult_xs_1 = stdout;
+      new->fp_paired_mult_xs_2 = stdout;
+      new->fp_concordant_uniq = stdout;
+      new->fp_concordant_circular = stdout;
+      new->fp_concordant_transloc = stdout;
+      new->fp_concordant_mult = stdout;
+      new->fp_concordant_mult_xs_1 = stdout;
+      new->fp_concordant_mult_xs_2 = stdout;
+
+      if (output_sam_p == true) {
+	SAM_file_setup_all(new->fp_failedinput_1,new->fp_failedinput_2,new->fp_nomapping,
+			   new->fp_unpaired_uniq,new->fp_unpaired_circular,
+			   new->fp_unpaired_transloc,new->fp_unpaired_mult,
+			   new->fp_unpaired_mult_xs_1,new->fp_unpaired_mult_xs_2,
+			   new->fp_halfmapping_uniq,new->fp_halfmapping_circular,
+			   new->fp_halfmapping_transloc,new->fp_halfmapping_mult,
+			   new->fp_halfmapping_mult_xs_1,new->fp_halfmapping_mult_xs_2,
+			   new->fp_paired_uniq_circular,new->fp_paired_uniq_inv,new->fp_paired_uniq_scr,
+			   new->fp_paired_uniq_long,new->fp_paired_mult,
+			   new->fp_paired_mult_xs_1,new->fp_paired_mult_xs_2,
+			   new->fp_concordant_uniq,new->fp_concordant_circular,
+			   new->fp_concordant_transloc,new->fp_concordant_mult,
+			   new->fp_concordant_mult_xs_1,new->fp_concordant_mult_xs_2);
       } else {
+	Stage3hr_file_setup_all(new->fp_failedinput_1,new->fp_failedinput_2,new->fp_nomapping,
+				new->fp_unpaired_uniq,new->fp_unpaired_circular,
+				new->fp_unpaired_transloc,new->fp_unpaired_mult,
+				new->fp_unpaired_mult_xs_1,new->fp_unpaired_mult_xs_2,
+				new->fp_halfmapping_uniq,new->fp_halfmapping_circular,
+				new->fp_halfmapping_transloc,new->fp_halfmapping_mult,
+				new->fp_halfmapping_mult_xs_1,new->fp_halfmapping_mult_xs_2,
+				new->fp_paired_uniq_circular,new->fp_paired_uniq_inv,new->fp_paired_uniq_scr,
+				new->fp_paired_uniq_long,new->fp_paired_mult,
+				new->fp_paired_mult_xs_1,new->fp_paired_mult_xs_2,
+				new->fp_concordant_uniq,new->fp_concordant_circular,
+				new->fp_concordant_transloc,new->fp_concordant_mult,
+				new->fp_concordant_mult_xs_1,new->fp_concordant_mult_xs_2);
+      }
+
+      if (output_sam_p == true && sam_headers_p == true) {
+	SAM_header_print_HD(stdout,nworkers,orderedp);
+	SAM_header_print_PG(stdout,argc,argv,optind);
 	Univ_IIT_dump_sam(stdout,chromosome_iit,sam_read_group_id,sam_read_group_name,
 			  sam_read_group_library,sam_read_group_platform);
       }
@@ -891,17 +1324,18 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
 #else
 
 T
-Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, bool appendp,
-	       bool chimeras_allowed_p, char *user_genomicseg, Sequence_T usersegment,
+Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, char *failedinput_root,
+	       bool appendp, bool chimeras_allowed_p, char *user_genomicseg, Sequence_T usersegment,
 	       char *dbversion, Genome_T genome, Univ_IIT_T chromosome_iit,
-	       Chrsubset_T chrsubset, Univ_IIT_T contig_iit, IIT_T altstrain_iit, IIT_T map_iit,
+	       char *chrsubset_name, Univ_IIT_T contig_iit, IIT_T altstrain_iit, IIT_T map_iit,
 	       int *map_divint_crosstable, Printtype_T printtype, bool checksump, int chimera_margin,
 #ifndef PMAP
 	       bool sam_headers_p, int quality_shift, bool sam_paired_p,
 	       char *sam_read_group_id, char *sam_read_group_name,
 	       char *sam_read_group_library, char *sam_read_group_platform,
+	       int nworkers, bool orderedp,
 #endif
-	       bool nofailsp, bool failsonlyp, bool fails_as_input_p, int maxpaths_report, bool quiet_if_excessive_p,
+	       bool nofailsp, bool failsonlyp, int maxpaths_report, bool quiet_if_excessive_p,
 	       bool map_exons_p, bool map_bothstrands_p, bool print_comment_p, int nflanking,
 	       int proteinmode, int invertmode, bool nointronlenp, int wraplength,
 	       int ngap, int cds_startpos,
@@ -919,7 +1353,7 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
   new->dbversion = dbversion;
   new->genome = genome;
   new->chromosome_iit = chromosome_iit;
-  new->chrsubset = chrsubset;
+  new->chrsubset_name = chrsubset_name;
   new->contig_iit = contig_iit;
   new->altstrain_iit = altstrain_iit;
   new->map_iit = map_iit;
@@ -930,13 +1364,18 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
   new->chimera_margin = chimera_margin;
 
   new->sevenway_root = sevenway_root;
+  new->failedinput_root = failedinput_root;
   new->appendp = appendp;
 
+  new->fp_failedinput_1 = NULL;
+  new->fp_failedinput_2 = NULL;
+
   new->fp_nomapping = NULL;
   new->fp_uniq = NULL;
   new->fp_circular = NULL;
   new->fp_transloc = NULL;
   new->fp_mult = NULL;
+  new->fp_mult_xs = NULL;
   
 #ifndef PMAP
   new->sam_headers_p = sam_headers_p;
@@ -946,11 +1385,15 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
   new->sam_read_group_name = sam_read_group_name;
   new->sam_read_group_library = sam_read_group_library;
   new->sam_read_group_platform = sam_read_group_platform;
+  new->nworkers = nworkers;
+  new->orderedp = orderedp;
+  new->argc = argc;
+  new->argv = argv;
+  new->optind = optind;
 #endif
 
   new->nofailsp = nofailsp;
   new->failsonlyp = failsonlyp;
-  new->fails_as_input_p = fails_as_input_p;
   new->maxpaths_report = maxpaths_report;
   new->quiet_if_excessive_p = quiet_if_excessive_p;
 
@@ -994,6 +1437,10 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
 #endif
 
   /* Initialize output streams */
+  if (failedinput_root != NULL) {
+    failedinput_open(new);
+  }
+
   if (sevenway_root != NULL) {
     sevenway_open(new,argc,argv,optind);
 
@@ -1003,15 +1450,16 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
     new->fp_circular = stdout;
     new->fp_transloc = stdout;
     new->fp_mult = stdout;
+    new->fp_mult_xs = stdout;
 
 #ifndef PMAP
     if (printtype == SAM && sam_headers_p == true) {
-      if (fails_as_input_p == true) {
-	/* Don't print chromosomes */
-      } else if (usersegment != NULL) {
+      if (usersegment != NULL) {
 	dump_sam_usersegment(stdout,usersegment,sam_read_group_id,sam_read_group_name,
 			     sam_read_group_library,sam_read_group_platform);
       } else {
+	SAM_header_print_HD(stdout,nworkers,orderedp);
+	SAM_header_print_PG(stdout,argc,argv,optind);
 	Univ_IIT_dump_sam(stdout,chromosome_iit,sam_read_group_id,sam_read_group_name,
 			  sam_read_group_library,sam_read_group_platform);
       }
@@ -1028,6 +1476,7 @@ Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenw
 void
 Outbuffer_free (T *old) {
   if (*old) {
+    failedinput_close(*old);
     if ((*old)->sevenway_root != NULL) {
       sevenway_close(*old);
     }
@@ -1108,21 +1557,6 @@ Outbuffer_put_result (T this, Result_T result, Request_T request) {
  ************************************************************************/
 
 static void
-print_query_singleend (T this, FILE *fp, Request_T request) {
-  Shortread_T queryseq1;
-
-  queryseq1 = Request_queryseq1(request);
-
-  if (this->fastq_format_p == true) {
-    Shortread_print_query_singleend_fastq(fp,queryseq1);
-  } else {
-    Shortread_print_query_singleend_fasta(fp,queryseq1);
-  }
-
-  return;
-}
-
-static void
 print_header_singleend (T this, FILE *fp, Request_T request, bool translocationp, int npaths) {
   Shortread_T queryseq1;
 
@@ -1159,6 +1593,7 @@ print_result_sam (T this, Result_T result, Request_T request) {
   int ignore = 0;
   int npaths, pathnum, first_absmq, second_absmq;
   FILE *fp;
+  char *abbrev;
 
   resulttype = Result_resulttype(result);
 
@@ -1166,14 +1601,18 @@ print_result_sam (T this, Result_T result, Request_T request) {
     if (this->nofailsp == true) {
       /* Skip */
     } else {
-      if (this->fails_as_input_p == true) {
-	print_query_singleend(this,this->fp_nomapping_1,request);
-      } else {
-	queryseq1 = Request_queryseq1(request);
-	SAM_print_nomapping(this->fp_nomapping_1,queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
-			    /*acc2*/NULL,this->chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*nhits_mate*/0,/*mate_chrpos*/0U,
-			    this->quality_shift,this->sam_read_group_id,this->invert_first_p,this->invert_second_p);
+      queryseq1 = Request_queryseq1(request);
+      SAM_print_nomapping(this->fp_nomapping,ABBREV_NOMAPPING_1,
+			  queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
+			  /*acc2*/NULL,this->chromosome_iit,resulttype,
+			  /*first_read_p*/true,/*nhits_mate*/0,/*mate_chrpos*/0U,
+			  this->quality_shift,this->sam_read_group_id,this->invert_first_p,this->invert_second_p);
+      if (this->failedinput_root != NULL) {
+	if (this->fastq_format_p == true) {
+	  Shortread_print_query_singleend_fastq(this->fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
+	} else {
+	  Shortread_print_query_singleend_fasta(this->fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
+	}
       }
     }
 
@@ -1187,14 +1626,17 @@ print_result_sam (T this, Result_T result, Request_T request) {
       /* Stage3end_eval_and_sort(stage3array,npaths,this->maxpaths_report,queryseq1); */
 
       stage3 = stage3array[0];
-      chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&ignore,stage3,
-				  Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
+      chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&ignore,
+				  /*clipdir*/0,/*hardclip5*/0,/*hardclip3*/0,/*first_read_p*/true,
+				  stage3,Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
       if (Stage3end_circularpos(stage3) > 0) {
 	fp = this->fp_unpaired_circular;
+	abbrev = ABBREV_UNPAIRED_CIRCULAR;
       } else {
 	fp = this->fp_unpaired_uniq;
+	abbrev = ABBREV_UNPAIRED_UNIQ;
       }
-      SAM_print(fp,stage3,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),/*acc2*/NULL,
+      SAM_print(fp,abbrev,stage3,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),/*acc2*/NULL,
 		/*pathnum*/1,npaths,Stage3end_absmq_score(stage3array[0]),first_absmq,second_absmq,
 		Stage3end_mapq_score(stage3array[0]),
 		this->chromosome_iit,queryseq1,/*queryseq2*/NULL,
@@ -1214,7 +1656,8 @@ print_result_sam (T this, Result_T result, Request_T request) {
     } else if (this->quiet_if_excessive_p && npaths > this->maxpaths_report) {
       queryseq1 = Request_queryseq1(request);
       /* Stage3end_eval_and_sort(stage3array,npaths,this->maxpaths_report,queryseq1); */
-      SAM_print_nomapping(this->fp_unpaired_transloc,queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
+      SAM_print_nomapping(this->fp_unpaired_transloc,ABBREV_UNPAIRED_TRANSLOC,
+			  queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 			  /*acc2*/NULL,this->chromosome_iit,resulttype,
 			  /*first_read_p*/true,/*nhits_mate*/0,/*mate_chrpos*/0U,
 			  this->quality_shift,this->sam_read_group_id,this->invert_first_p,this->invert_second_p);
@@ -1225,9 +1668,11 @@ print_result_sam (T this, Result_T result, Request_T request) {
       for (pathnum = 1; pathnum <= npaths && pathnum <= this->maxpaths_report; pathnum++) {
 
 	stage3 = stage3array[pathnum-1];
-	chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&ignore,stage3,
-				    Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
-	SAM_print(this->fp_unpaired_transloc,stage3,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
+	chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&ignore,
+				    /*clipdir*/0,/*hardclip5*/0,/*hardclip3*/0,/*first_read_p*/true,
+				    stage3,Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
+	SAM_print(this->fp_unpaired_transloc,ABBREV_UNPAIRED_TRANSLOC,
+		  stage3,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 		  /*acc2*/NULL,pathnum,npaths,
 		  Stage3end_absmq_score(stage3array[pathnum-1]),first_absmq,second_absmq,
 		  Stage3end_mapq_score(stage3array[pathnum-1]),
@@ -1249,7 +1694,8 @@ print_result_sam (T this, Result_T result, Request_T request) {
     } else if (this->quiet_if_excessive_p && npaths > this->maxpaths_report) {
       queryseq1 = Request_queryseq1(request);
       /* Stage3end_eval_and_sort(stage3array,npaths,this->maxpaths_report,queryseq1); */
-      SAM_print_nomapping(this->fp_unpaired_mult,queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
+      SAM_print_nomapping(this->fp_unpaired_mult_xs_1,ABBREV_UNPAIRED_MULT_XS,
+			  queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 			  /*acc2*/NULL,this->chromosome_iit,resulttype,
 			  /*first_read_p*/true,/*nhits_mate*/0,/*mate_chrpos*/0U,
 			  this->quality_shift,this->sam_read_group_id,this->invert_first_p,this->invert_second_p);
@@ -1260,9 +1706,11 @@ print_result_sam (T this, Result_T result, Request_T request) {
       for (pathnum = 1; pathnum <= npaths && pathnum <= this->maxpaths_report; pathnum++) {
 
 	stage3 = stage3array[pathnum-1];
-	chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&ignore,stage3,
-				    Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
-	SAM_print(this->fp_unpaired_mult,stage3,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
+	chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&ignore,
+				    /*clipdir*/0,/*hardclip5*/0,/*hardclip3*/0,/*first_read_p*/true,
+				    stage3,Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
+	SAM_print(this->fp_unpaired_mult,ABBREV_UNPAIRED_MULT,
+		  stage3,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 		  /*acc2*/NULL,pathnum,npaths,
 		  Stage3end_absmq_score(stage3array[pathnum-1]),first_absmq,second_absmq,
 		  Stage3end_mapq_score(stage3array[pathnum-1]),
@@ -1282,17 +1730,8 @@ print_result_sam (T this, Result_T result, Request_T request) {
     SAM_print_paired(result,resulttype,this->chromosome_iit,
 		     Request_queryseq1(request),Request_queryseq2(request),
 		     this->invert_first_p,this->invert_second_p,
-		     this->nofailsp,this->failsonlyp,this->fails_as_input_p,this->fastq_format_p,
-		     this->clip_overlap_p,this->merge_samechr_p,this->quality_shift,this->sam_read_group_id,
-		     this->fp_nomapping_1,this->fp_nomapping_2,
-		     this->fp_unpaired_uniq,this->fp_unpaired_circular,
-		     this->fp_unpaired_transloc,this->fp_unpaired_mult,
-		     this->fp_halfmapping_uniq,this->fp_halfmapping_circular,
-		     this->fp_halfmapping_transloc,this->fp_halfmapping_mult,
-		     this->fp_paired_uniq_circular,this->fp_paired_uniq_inv,this->fp_paired_uniq_scr,
-		     this->fp_paired_uniq_long,this->fp_paired_mult,
-		     this->fp_concordant_uniq,this->fp_concordant_circular,
-		     this->fp_concordant_transloc,this->fp_concordant_mult);
+		     this->nofailsp,this->failsonlyp,this->clip_overlap_p,
+		     this->merge_samechr_p,this->quality_shift,this->sam_read_group_id);
   }
 
   return;
@@ -1313,11 +1752,17 @@ print_result_gsnap (T this, Result_T result, Request_T request) {
     if (this->nofailsp == true) {
       /* Skip */
     } else {
-      if (this->fails_as_input_p == true) {
-	print_query_singleend(this,this->fp_nomapping_1,request);
-      } else {
-	print_header_singleend(this,this->fp_nomapping_1,request,/*translocationp*/false,/*npaths*/0);
-	fprintf(this->fp_nomapping_1,"\n");
+      print_header_singleend(this,this->fp_nomapping,request,/*translocationp*/false,/*npaths*/0);
+      fprintf(this->fp_nomapping,"\n");
+
+      if (this->failedinput_root != NULL) {
+	if (this->fastq_format_p == true) {
+	  queryseq1 = Request_queryseq1(request);
+	  Shortread_print_query_singleend_fastq(this->fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
+	} else {
+	  queryseq1 = Request_queryseq1(request);
+	  Shortread_print_query_singleend_fasta(this->fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
+	}
       }
     }
 
@@ -1383,8 +1828,8 @@ print_result_gsnap (T this, Result_T result, Request_T request) {
       /* Skip */
 
     } else if (this->quiet_if_excessive_p && npaths > this->maxpaths_report) {
-      print_header_singleend(this,this->fp_unpaired_mult,request,/*translocationp*/false,npaths);
-      fprintf(this->fp_unpaired_mult,"\n");
+      print_header_singleend(this,this->fp_unpaired_mult_xs_1,request,/*translocationp*/false,npaths);
+      fprintf(this->fp_unpaired_mult_xs_1,"\n");
 
     } else {
       print_header_singleend(this,this->fp_unpaired_mult,request,/*translocationp*/false,npaths);
@@ -1414,17 +1859,8 @@ print_result_gsnap (T this, Result_T result, Request_T request) {
 #if 0
 		     this->invert_first_p,this->invert_second_p,
 #endif
-		     this->nofailsp,this->failsonlyp,this->fails_as_input_p,
-		     this->fastq_format_p,this->quality_shift,
-		     this->fp_nomapping_1,this->fp_nomapping_2,
-		     this->fp_unpaired_uniq,this->fp_unpaired_circular,
-		     this->fp_unpaired_transloc,this->fp_unpaired_mult,
-		     this->fp_halfmapping_uniq,this->fp_halfmapping_circular,
-		     this->fp_halfmapping_transloc,this->fp_halfmapping_mult,
-		     this->fp_paired_uniq_circular,this->fp_paired_uniq_inv,this->fp_paired_uniq_scr,
-		     this->fp_paired_uniq_long,this->fp_paired_mult,
-		     this->fp_concordant_uniq,this->fp_concordant_circular,
-		     this->fp_concordant_transloc,this->fp_concordant_mult);
+		     this->nofailsp,this->failsonlyp,this->fastq_format_p,
+		     this->quality_shift);
   }
 
   return;
@@ -1523,7 +1959,7 @@ Outbuffer_print_result (T this, Result_T result, Request_T request
 
 #ifdef MEMUSAGE
   printf("Memusage of IN: %ld.  Memusage of OUT: %ld.  Entries in outbuffer: %d = %d processed - %u output\n",
-	 Mem_usage_in_report(),Mem_usage_out_report(),this->nprocessed - noutput,this->nprocessed,noutput);
+	 Mem_usage_report_in(),Mem_usage_report_out(),this->nprocessed - noutput,this->nprocessed,noutput);
 #endif
 
   return;
@@ -1537,7 +1973,7 @@ Outbuffer_print_result (T this, Result_T result, Request_T request
 
 static void
 print_npaths (T this, FILE *fp, int npaths, Diagnostic_T diagnostic,
-	      Chrsubset_T chrsubset, bool mergedp, Chimera_T chimera, Failure_T failuretype) {
+	      char *chrsubset_name, bool mergedp, Chimera_T chimera, Failure_T failuretype) {
 
   if (this->diagnosticp == true) {
     Diagnostic_print(diagnostic);
@@ -1550,7 +1986,9 @@ print_npaths (T this, FILE *fp, int npaths, Diagnostic_T diagnostic,
   } else {
     fprintf(fp,"Paths (%d):",npaths);
   }
-  Chrsubset_print(chrsubset);
+  if (chrsubset_name != NULL) {
+    printf("  [chrsubset: %s]",chrsubset_name);
+  }
   if (failuretype == NO_FAILURE) {
     if (chimera != NULL) {
       Chimera_print(fp,chimera);
@@ -1579,6 +2017,7 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
 #endif
 			) {
   FILE *fp;
+  char *abbrev;
   Sequence_T queryseq;
   Diagnostic_T diagnostic;
   Stage3_T *stage3array;
@@ -1625,14 +2064,10 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
   if (npaths == 0) {
     effective_maxpaths = 0;
     fp = this->fp_nomapping;
+    abbrev = ABBREV_NOMAPPING_1;
 
     if (this->nofailsp == true) {
       printp = false;
-      if (this->fails_as_input_p == true) {
-	putc('>',fp);
-	Sequence_print_header(fp,headerseq,this->checksump);
-	Sequence_print(fp,queryseq,/*uppercasep*/false,this->wraplength,/*trimmedp*/false);
-      }
     } else {
       printp = true;
     }
@@ -1648,8 +2083,10 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
   } else if ((mergedp = Result_mergedp(result)) == true) {
     if (Stage3_circularpos(stage3array[0]) > 0) {
       fp = this->fp_circular;
+      abbrev = ABBREV_UNPAIRED_CIRCULAR;
     } else {
       fp = this->fp_uniq;
+      abbrev = ABBREV_UNPAIRED_UNIQ;
     }
     effective_maxpaths = 1;
 
@@ -1676,6 +2113,7 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
       effective_maxpaths = 0;
     }
     fp = this->fp_transloc;
+    abbrev = ABBREV_UNPAIRED_TRANSLOC;
 
     if (this->failsonlyp == true) {
       printp = false;
@@ -1708,10 +2146,13 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
     effective_maxpaths = 1;
     if (npaths > 1) {
       fp = this->fp_mult;
+      abbrev = ABBREV_UNPAIRED_MULT;
     } else if (Stage3_circularpos(stage3array[0]) > 0) {
       fp = this->fp_circular;
+      abbrev = ABBREV_UNPAIRED_CIRCULAR;
     } else {
       fp = this->fp_uniq;
+      abbrev = ABBREV_UNPAIRED_UNIQ;
     }
 
     if (this->failsonlyp == true) {
@@ -1733,10 +2174,13 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
   } else {
     if (npaths > 1) {
       fp = this->fp_mult;
+      abbrev = ABBREV_UNPAIRED_MULT;
     } else if (Stage3_circularpos(stage3array[0]) > 0) {
       fp = this->fp_circular;
+      abbrev = ABBREV_UNPAIRED_CIRCULAR;
     } else {
       fp = this->fp_uniq;
+      abbrev = ABBREV_UNPAIRED_UNIQ;
     }
 
     if (npaths < this->maxpaths_report) {
@@ -1766,238 +2210,250 @@ Outbuffer_print_result (T this, Result_T result, Request_T request, Sequence_T h
 
   /* Printing */
   if (this->debug_graphic_p == true) {
-    /* No output */
+    printf("q()\n");
 
   } else if (printp == false) {
-    /* No output */
+    /* No output, either because of --nofails or --quiet-if-excessive */
 
-  } else if (this->printtype == SIMPLE || this->printtype == SUMMARY || this->printtype == ALIGNMENT) {
-    /* Print header, even if no alignment is found */
-    putc('>',fp);
-    Sequence_print_header(fp,headerseq,this->checksump);
+  } else {
+    if (this->failedinput_root != NULL &&
+	(npaths == 0 || (this->quiet_if_excessive_p && npaths > this->maxpaths_report))) {
+      putc('>',this->fp_failedinput_1);
+      Sequence_print_header(this->fp_failedinput_1,headerseq,this->checksump);
+      Sequence_print(this->fp_failedinput_1,queryseq,/*uppercasep*/false,this->wraplength,/*trimmedp*/false);
+    }
 
-    diagnostic = Result_diagnostic(result);
-    if (npaths == 0) {
-      print_npaths(this,fp,0,diagnostic,this->chrsubset,/*mergedp*/false,/*chimera*/NULL,Result_failuretype(result));
-    } else {
-      print_npaths(this,fp,npaths,diagnostic,this->chrsubset,mergedp,chimera,NO_FAILURE);
+    if (this->printtype == SIMPLE || this->printtype == SUMMARY || this->printtype == ALIGNMENT) {
+      /* Print header, even if no alignment is found */
+      putc('>',fp);
+      Sequence_print_header(fp,headerseq,this->checksump);
+
+      diagnostic = Result_diagnostic(result);
+      if (npaths == 0) {
+	print_npaths(this,fp,0,diagnostic,this->chrsubset_name,
+		     /*mergedp*/false,/*chimera*/NULL,Result_failuretype(result));
+
+
+      } else {
+	print_npaths(this,fp,npaths,diagnostic,this->chrsubset_name,mergedp,chimera,NO_FAILURE);
+	for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	  Stage3_print_pathsummary(fp,stage3array[pathnum-1],pathnum,
+				   this->chromosome_iit,this->contig_iit,
+				   this->altstrain_iit,queryseq,
+				   this->dbversion,/*maxmutations*/1000000,
+				   this->diagnosticp,this->maponlyp);
+	}
+      }
+
+      if (this->printtype != SIMPLE) {
+	fprintf(fp,"Alignments:\n");
+	for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	  fprintf(fp,"  Alignment for path %d:\n\n",pathnum);
+	  Stage3_print_alignment(fp,stage3array[pathnum-1],
+				 this->genome,this->chromosome_iit,this->printtype,
+				 /*continuousp*/false,/*continuous_by_exon_p*/false,
+				 this->diagnosticp,/*flipgenomep*/true,
+				 this->invertmode,this->nointronlenp,
+				 this->wraplength);
+	}
+      }
+
+      if (this->map_iit != NULL) {
+	fprintf(fp,"Maps:\n");
+	for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	  Stage3_print_map(fp,stage3array[pathnum-1],this->map_iit,this->map_divint_crosstable,
+			   this->chromosome_iit,pathnum,this->map_exons_p,this->map_bothstrands_p,
+			   this->nflanking,this->print_comment_p);
+	}
+      }
+
+    } else if (this->printtype == COMPRESSED) {
       for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-	Stage3_print_pathsummary(fp,stage3array[pathnum-1],pathnum,
+	Stage3_print_compressed(fp,stage3array[pathnum-1],queryseq,this->chromosome_iit,
+				this->dbversion,this->usersegment,pathnum,npaths,
+				this->checksump,chimerapos,chimeraequivpos,
+				donor_prob,acceptor_prob,chimera_cdna_direction);
+      }
+
+    } else if (this->printtype == CONTINUOUS) {
+      putc('>',fp);
+      Sequence_print_header(fp,headerseq,this->checksump);
+      if (npaths == 0) {
+	fprintf(fp,"\n\n\n");
+      } else {
+	Stage3_print_alignment(fp,stage3array[0],this->genome,this->chromosome_iit,this->printtype,
+			       /*continuousp*/true,/*continuous_by_exon_p*/false,
+			       this->diagnosticp,/*flipgenomep*/true,
+			       this->invertmode,this->nointronlenp,
+			       this->wraplength);
+      }
+
+    } else if (this->printtype == CONTINUOUS_BY_EXON) {
+      diagnostic = Result_diagnostic(result);
+
+      putc('>',fp);
+      Sequence_print_header(fp,headerseq,this->checksump);
+      print_npaths(this,fp,npaths,diagnostic,this->chrsubset_name,mergedp,chimera,NO_FAILURE);
+      if (npaths == 0) {
+	fprintf(fp,"\n\n\n");
+      } else {
+	Stage3_print_pathsummary(fp,stage3array[0],/*pathnum*/1,
 				 this->chromosome_iit,this->contig_iit,
 				 this->altstrain_iit,queryseq,
 				 this->dbversion,/*maxmutations*/1000000,
 				 this->diagnosticp,this->maponlyp);
-      }
-    }
-
-    if (this->printtype != SIMPLE) {
-      fprintf(fp,"Alignments:\n");
-      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-	fprintf(fp,"  Alignment for path %d:\n\n",pathnum);
-	Stage3_print_alignment(fp,stage3array[pathnum-1],
-			       this->genome,this->chromosome_iit,this->printtype,
-			       /*continuousp*/false,/*continuous_by_exon_p*/false,
+	fprintf(fp,"Alignments:\n");
+	fprintf(fp,"  Alignment for path %d:\n\n",/*pathnum*/1);
+	Stage3_print_alignment(fp,stage3array[0],this->genome,this->chromosome_iit,this->printtype,
+			       /*continuousp*/false,/*continuous_by_exon_p*/true,
 			       this->diagnosticp,/*flipgenomep*/true,
 			       this->invertmode,this->nointronlenp,
 			       this->wraplength);
       }
-    }
 
-    if (this->map_iit != NULL) {
-      fprintf(fp,"Maps:\n");
+    } else if (this->printtype == EXONS_CDNA) {
+      putc('>',fp);
+      Sequence_print_header(fp,headerseq,this->checksump);
       for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-	Stage3_print_map(fp,stage3array[pathnum-1],this->map_iit,this->map_divint_crosstable,
-			 this->chromosome_iit,pathnum,this->map_exons_p,this->map_bothstrands_p,
-			 this->nflanking,this->print_comment_p);
+	fprintf(fp,"<path %d>\n",pathnum);
+	Pair_print_exons(fp,Stage3_pairarray(stage3array[0]),Stage3_npairs(stage3array[0]),
+			 this->wraplength,this->ngap,/*cdna*/true);
+	fprintf(fp,"</path>\n");
       }
-    }
-
-  } else if (this->printtype == COMPRESSED) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      Stage3_print_compressed(fp,stage3array[pathnum-1],queryseq,this->chromosome_iit,
-			      this->dbversion,this->usersegment,pathnum,npaths,
-			      this->checksump,chimerapos,chimeraequivpos,
-			      donor_prob,acceptor_prob,chimera_cdna_direction);
-    }
-
-  } else if (this->printtype == CONTINUOUS) {
-    putc('>',fp);
-    Sequence_print_header(fp,headerseq,this->checksump);
-    if (npaths == 0) {
-      fprintf(fp,"\n\n\n");
-    } else {
-      Stage3_print_alignment(fp,stage3array[0],this->genome,this->chromosome_iit,this->printtype,
-			     /*continuousp*/true,/*continuous_by_exon_p*/false,
-			     this->diagnosticp,/*flipgenomep*/true,
-			     this->invertmode,this->nointronlenp,
-			     this->wraplength);
-    }
-
-  } else if (this->printtype == CONTINUOUS_BY_EXON) {
-    diagnostic = Result_diagnostic(result);
 
-    putc('>',fp);
-    Sequence_print_header(fp,headerseq,this->checksump);
-    print_npaths(this,fp,npaths,diagnostic,this->chrsubset,mergedp,chimera,NO_FAILURE);
-    if (npaths == 0) {
-      fprintf(fp,"\n\n\n");
-    } else {
-      Stage3_print_pathsummary(fp,stage3array[0],/*pathnum*/1,
-			       this->chromosome_iit,this->contig_iit,
-			       this->altstrain_iit,queryseq,
-			       this->dbversion,/*maxmutations*/1000000,
-			       this->diagnosticp,this->maponlyp);
-      fprintf(fp,"Alignments:\n");
-      fprintf(fp,"  Alignment for path %d:\n\n",/*pathnum*/1);
-      Stage3_print_alignment(fp,stage3array[0],this->genome,this->chromosome_iit,this->printtype,
-			     /*continuousp*/false,/*continuous_by_exon_p*/true,
-			     this->diagnosticp,/*flipgenomep*/true,
-			     this->invertmode,this->nointronlenp,
-			     this->wraplength);
-    }
-
-  } else if (this->printtype == EXONS_CDNA) {
-    putc('>',fp);
-    Sequence_print_header(fp,headerseq,this->checksump);
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      fprintf(fp,"<path %d>\n",pathnum);
-      Pair_print_exons(fp,Stage3_pairarray(stage3array[0]),Stage3_npairs(stage3array[0]),
-		       this->wraplength,this->ngap,/*cdna*/true);
-      fprintf(fp,"</path>\n");
-    }
-
-  } else if (this->printtype == EXONS_GENOMIC) {
-    putc('>',fp);
-    Sequence_print_header(fp,headerseq,this->checksump);
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      fprintf(fp,"<path %d>\n",pathnum);
-      Pair_print_exons(fp,Stage3_pairarray(stage3array[0]),Stage3_npairs(stage3array[0]),
-		       this->wraplength,this->ngap,/*cdna*/false);
-      fprintf(fp,"</path>\n");
-    }
-
-  } else if (this->printtype == CDNA) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+    } else if (this->printtype == EXONS_GENOMIC) {
       putc('>',fp);
       Sequence_print_header(fp,headerseq,this->checksump);
-      Stage3_print_cdna(fp,stage3array[pathnum-1],this->wraplength);
-    }
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	fprintf(fp,"<path %d>\n",pathnum);
+	Pair_print_exons(fp,Stage3_pairarray(stage3array[0]),Stage3_npairs(stage3array[0]),
+			 this->wraplength,this->ngap,/*cdna*/false);
+	fprintf(fp,"</path>\n");
+      }
 
-  } else if (this->printtype == PROTEIN_GENOMIC) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      putc('>',fp);
-      Sequence_print_header(fp,headerseq,this->checksump);
-      Stage3_print_protein_genomic(fp,stage3array[pathnum-1],this->wraplength);
-    }
+    } else if (this->printtype == CDNA) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	putc('>',fp);
+	Sequence_print_header(fp,headerseq,this->checksump);
+	Stage3_print_cdna(fp,stage3array[pathnum-1],this->wraplength);
+      }
 
-  } else if (this->printtype == PSL_NT) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      Stage3_print_pslformat_nt(fp,stage3array[pathnum-1],
-				this->chromosome_iit,this->usersegment,queryseq);
-    }
+    } else if (this->printtype == PROTEIN_GENOMIC) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	putc('>',fp);
+	Sequence_print_header(fp,headerseq,this->checksump);
+	Stage3_print_protein_genomic(fp,stage3array[pathnum-1],this->wraplength);
+      }
+
+    } else if (this->printtype == PSL_NT) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	Stage3_print_pslformat_nt(fp,stage3array[pathnum-1],
+				  this->chromosome_iit,this->usersegment,queryseq);
+      }
 
 #ifdef PMAP
-  } else if (this->printtype == PSL_PRO) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      Stage3_print_pslformat_pro(fp,stage3array[pathnum-1],
-				 this->chromosome_iit,this->usersegment,queryseq,this->strictp);
-    }
+    } else if (this->printtype == PSL_PRO) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	Stage3_print_pslformat_pro(fp,stage3array[pathnum-1],
+				   this->chromosome_iit,this->usersegment,queryseq,this->strictp);
+      }
 #endif
 
-  } else if (this->printtype == GFF3_GENE || this->printtype == GFF3_MATCH_CDNA ||
-	     this->printtype == GFF3_MATCH_EST) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      Stage3_print_gff3(fp,stage3array[pathnum-1],pathnum,
-			this->chromosome_iit,this->usersegment,queryseq,querylength,this->printtype,
-			/*sourcename*/this->usersegment ? this->user_genomicseg : this->dbversion);
-    }
+    } else if (this->printtype == GFF3_GENE || this->printtype == GFF3_MATCH_CDNA ||
+	       this->printtype == GFF3_MATCH_EST) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	Stage3_print_gff3(fp,stage3array[pathnum-1],pathnum,
+			  this->chromosome_iit,this->usersegment,queryseq,querylength,this->printtype,
+			  /*sourcename*/this->usersegment ? this->user_genomicseg : this->dbversion);
+      }
 
 #ifndef PMAP
-  } else if (this->printtype == SAM) {
-    if (npaths == 0) {
-      Pair_print_sam_nomapping(fp,/*acc1*/Sequence_accession(headerseq),/*acc2*/NULL,
-			       Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
-			       Sequence_fulllength(queryseq),this->quality_shift,
-			       Sequence_firstp(queryseq),this->sam_paired_p,this->sam_read_group_id);
-
-    } else if (this->quiet_if_excessive_p && npaths > this->maxpaths_report) {
-      Pair_print_sam_nomapping(fp,/*acc1*/Sequence_accession(headerseq),/*acc2*/NULL,
-			       Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
-			       Sequence_fulllength(queryseq),this->quality_shift,
-			       Sequence_firstp(queryseq),this->sam_paired_p,this->sam_read_group_id);
-
-    } else if (mergedp == true) {
-      Stage3_print_sam(fp,stage3array[0],/*pathnum*/1,/*npaths*/1,
-		       Stage3_absmq_score(stage3array[0]),first_absmq,second_absmq,
-		       Stage3_mapq_score(stage3array[0]),
-		       this->chromosome_iit,this->usersegment,queryseq,
-		       /*chimera_part*/0,/*chimera*/NULL,this->quality_shift,this->sam_paired_p,
-		       this->sam_read_group_id);
-
-    } else if (chimera != NULL) {
-      Stage3_print_sam(fp,stage3array[0],/*pathnum*/1,npaths,
-		       Stage3_absmq_score(stage3array[0]),first_absmq,second_absmq,
-		       Stage3_mapq_score(stage3array[0]),
-		       this->chromosome_iit,this->usersegment,queryseq,
-		       /*chimera_part*/-1,chimera,this->quality_shift,this->sam_paired_p,
-		       this->sam_read_group_id);
-      Stage3_print_sam(fp,stage3array[1],/*pathnum*/1,npaths,
-		       Stage3_absmq_score(stage3array[0]),first_absmq,second_absmq,
-		       Stage3_mapq_score(stage3array[0]),
-		       this->chromosome_iit,this->usersegment,queryseq,
-		       /*chimera_part*/+1,chimera,this->quality_shift,this->sam_paired_p,
-		       this->sam_read_group_id);
-
-    } else {
-      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-	Stage3_print_sam(fp,stage3array[pathnum-1],pathnum,npaths,
-			 Stage3_absmq_score(stage3array[pathnum-1]),first_absmq,second_absmq,
-			 Stage3_mapq_score(stage3array[pathnum-1]),
+    } else if (this->printtype == SAM) {
+      if (npaths == 0) {
+	Pair_print_sam_nomapping(fp,abbrev,/*acc1*/Sequence_accession(headerseq),/*acc2*/NULL,
+				 Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
+				 Sequence_fulllength(queryseq),this->quality_shift,
+				 Sequence_firstp(queryseq),this->sam_paired_p,this->sam_read_group_id);
+
+      } else if (this->quiet_if_excessive_p && npaths > this->maxpaths_report) {
+	Pair_print_sam_nomapping(fp,abbrev,/*acc1*/Sequence_accession(headerseq),/*acc2*/NULL,
+				 Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
+				 Sequence_fulllength(queryseq),this->quality_shift,
+				 Sequence_firstp(queryseq),this->sam_paired_p,this->sam_read_group_id);
+
+      } else if (mergedp == true) {
+	Stage3_print_sam(fp,abbrev,stage3array[0],/*pathnum*/1,/*npaths*/1,
+			 Stage3_absmq_score(stage3array[0]),first_absmq,second_absmq,
+			 Stage3_mapq_score(stage3array[0]),
 			 this->chromosome_iit,this->usersegment,queryseq,
 			 /*chimera_part*/0,/*chimera*/NULL,this->quality_shift,this->sam_paired_p,
 			 this->sam_read_group_id);
+
+      } else if (chimera != NULL) {
+	Stage3_print_sam(fp,abbrev,stage3array[0],/*pathnum*/1,npaths,
+			 Stage3_absmq_score(stage3array[0]),first_absmq,second_absmq,
+			 Stage3_mapq_score(stage3array[0]),
+			 this->chromosome_iit,this->usersegment,queryseq,
+			 /*chimera_part*/-1,chimera,this->quality_shift,this->sam_paired_p,
+			 this->sam_read_group_id);
+	Stage3_print_sam(fp,abbrev,stage3array[1],/*pathnum*/1,npaths,
+			 Stage3_absmq_score(stage3array[0]),first_absmq,second_absmq,
+			 Stage3_mapq_score(stage3array[0]),
+			 this->chromosome_iit,this->usersegment,queryseq,
+			 /*chimera_part*/+1,chimera,this->quality_shift,this->sam_paired_p,
+			 this->sam_read_group_id);
+
+      } else {
+	for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	  Stage3_print_sam(fp,abbrev,stage3array[pathnum-1],pathnum,npaths,
+			   Stage3_absmq_score(stage3array[pathnum-1]),first_absmq,second_absmq,
+			   Stage3_mapq_score(stage3array[pathnum-1]),
+			   this->chromosome_iit,this->usersegment,queryseq,
+			   /*chimera_part*/0,/*chimera*/NULL,this->quality_shift,this->sam_paired_p,
+			   this->sam_read_group_id);
+	}
       }
-    }
 #endif
 
-  } else if (this->printtype == COORDS) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      fprintf(fp,">");
-      Sequence_print_header(fp,headerseq,this->checksump);
-      Stage3_print_coordinates(fp,stage3array[pathnum-1],this->chromosome_iit,this->invertmode);
-    }
+    } else if (this->printtype == COORDS) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	fprintf(fp,">");
+	Sequence_print_header(fp,headerseq,this->checksump);
+	Stage3_print_coordinates(fp,stage3array[pathnum-1],this->chromosome_iit,this->invertmode);
+      }
 
-  } else if (this->printtype == SPLICESITES) {
-    /* Print only best path */
-    if (npaths > 0) {
-      Stage3_print_splicesites(fp,stage3array[0],this->chromosome_iit,queryseq);
-    }
+    } else if (this->printtype == SPLICESITES) {
+      /* Print only best path */
+      if (npaths > 0) {
+	Stage3_print_splicesites(fp,stage3array[0],this->chromosome_iit,queryseq);
+      }
 
-  } else if (this->printtype == INTRONS) {
-    /* Print only best path */
-    if (npaths > 0) {
-      Stage3_print_introns(fp,stage3array[0],this->chromosome_iit,queryseq);
-    }
+    } else if (this->printtype == INTRONS) {
+      /* Print only best path */
+      if (npaths > 0) {
+	Stage3_print_introns(fp,stage3array[0],this->chromosome_iit,queryseq);
+      }
 
-  } else if (this->printtype == MAP_RANGES) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      Stage3_print_iit_map(fp,stage3array[pathnum-1],this->chromosome_iit,queryseq);
-    }
+    } else if (this->printtype == MAP_RANGES) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	Stage3_print_iit_map(fp,stage3array[pathnum-1],this->chromosome_iit,queryseq);
+      }
       
-  } else if (this->printtype == MAP_EXONS) {
-    for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
-      Stage3_print_iit_exon_map(fp,stage3array[pathnum-1],this->chromosome_iit,queryseq);
-    }
+    } else if (this->printtype == MAP_EXONS) {
+      for (pathnum = 1; pathnum <= effective_maxpaths; pathnum++) {
+	Stage3_print_iit_exon_map(fp,stage3array[pathnum-1],this->chromosome_iit,queryseq);
+      }
 
-  } else {
-    fprintf(stderr,"Unexpected printtype %d\n",this->printtype);
-    abort();
+    } else {
+      fprintf(stderr,"Unexpected printtype %d\n",this->printtype);
+      abort();
 
+    }
   }
 
 #ifdef MEMUSAGE
-  comma1 = Genomicpos_commafmt(Mem_usage_report());
-  comma2 = Genomicpos_commafmt(Mem_max_usage_report());
+  comma1 = Genomicpos_commafmt(Mem_usage_report_std());
+  comma2 = Genomicpos_commafmt(Mem_max_usage_report_std());
   printf("Memusage: %s.  Peak: %s.\n",comma1,comma2);
   FREE(comma2);
   FREE(comma1);
diff --git a/src/outbuffer.h b/src/outbuffer.h
index 51e4ade..6b667e0 100644
--- a/src/outbuffer.h
+++ b/src/outbuffer.h
@@ -1,4 +1,4 @@
-/* $Id: outbuffer.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: outbuffer.h 136794 2014-05-21 18:58:14Z twu $ */
 #ifndef OUTBUFFER_INCLUDED
 #define OUTBUFFER_INCLUDED
 
@@ -19,7 +19,6 @@
 #else
 #include "stage3.h"		/* Has Printtype_T */
 #include "result.h"
-#include "chrsubset.h"
 #include "genome.h"
 
 #endif
@@ -31,28 +30,31 @@ typedef struct T *T;
 #ifdef GSNAP
 
 extern T
-Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, bool appendp, Univ_IIT_T chromosome_iit,
+Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, char *failedinput_root,
+	       bool appendp, Univ_IIT_T chromosome_iit,
 	       bool timingp, bool output_sam_p, bool sam_headers_p, char *sam_read_group_id, char *sam_read_group_name,
 	       char *sam_read_group_library, char *sam_read_group_platform,
-	       Gobywriter_T gobywriter, bool nofailsp, bool failsonlyp, bool fails_as_input_p,
+	       int nworkers, bool orderedp, Gobywriter_T gobywriter, bool nofailsp, bool failsonlyp,
 	       bool fastq_format_p, bool clip_overlap_p, bool merge_samechr_p,
 	       int maxpaths_report, bool quiet_if_excessive_p, int quality_shift,
-	       bool invert_first_p, bool invert_second_p, Chrpos_T pairmax);
+	       bool invert_first_p, bool invert_second_p, Chrpos_T pairmax,
+	       int argc, char **argv, int optind);
 
 #else
 
 extern T
-Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, bool appendp,
-	       bool chimeras_allowed_p, char *user_genomicseg, Sequence_T usersegment,
-	       char *dbversion, Genome_T genome, Univ_IIT_T chromosome_iit,
-	       Chrsubset_T chrsubset, Univ_IIT_T contig_iit, IIT_T altstrain_iit, IIT_T map_iit,
+Outbuffer_new (unsigned int output_buffer_size, unsigned int nread, char *sevenway_root, char *failedinput_root,
+	       bool appendp, bool chimeras_allowed_p, char *user_genomicseg, Sequence_T usersegment,
+	       char *dbversion, Genome_T genome, Univ_IIT_T chromosome_iit, char *chrsubset_name,
+	       Univ_IIT_T contig_iit, IIT_T altstrain_iit, IIT_T map_iit,
 	       int *map_divint_crosstable, Printtype_T printtype, bool checksump, int chimera_margin,
 #ifndef PMAP
 	       bool sam_headers_p, int quality_shift, bool sam_paired_p,
 	       char *sam_read_group_id, char *sam_read_group_name,
 	       char *sam_read_group_library, char *sam_read_group_platform,
+	       int nworkers, bool orderedp,
 #endif
-	       bool nofailsp, bool failsonlyp, bool fails_as_input_p, int maxpaths_report, bool quiet_if_excessive_p,
+	       bool nofailsp, bool failsonlyp, int maxpaths_report, bool quiet_if_excessive_p,
 	       bool map_exons_p, bool map_bothstrands_p, bool print_comment_p, int nflanking,
 	       int proteinmode, int invertmode, bool nointronlenp, int wraplength,
 	       int ngap, int cds_startpos,
diff --git a/src/pair.c b/src/pair.c
index 9fc7902..09e0f19 100644
--- a/src/pair.c
+++ b/src/pair.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: pair.c 99755 2013-06-27 21:19:12Z twu $";
+static char rcsid[] = "$Id: pair.c 135239 2014-05-06 16:12:15Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -63,7 +63,7 @@ static char rcsid[] = "$Id: pair.c 99755 2013-06-27 21:19:12Z twu $";
 #define debug(x)
 #endif
 
-/* Phase information */
+/* Print pointer information in Pair_dump_one */
 #ifdef DEBUG1
 #define debug1(x) x
 #else
@@ -91,6 +91,13 @@ static char rcsid[] = "$Id: pair.c 99755 2013-06-27 21:19:12Z twu $";
 #define debug4(x)
 #endif
 
+/* Phase information */
+#ifdef DEBUG5
+#define debug5(x) x
+#else
+#define debug5(x)
+#endif
+
 /* trimming */
 #ifdef DEBUG8
 #define debug8(x) x
@@ -98,6 +105,12 @@ static char rcsid[] = "$Id: pair.c 99755 2013-06-27 21:19:12Z twu $";
 #define debug8(x)
 #endif
 
+/* end_bound and start_bound */
+#ifdef DEBUG9
+#define debug9(x) x
+#else
+#define debug9(x)
+#endif
 
 /* binary search */
 #ifdef DEBUG10
@@ -319,6 +332,21 @@ Pair_protect_end3 (List_T pairs, Pairpool_T pairpool) {
 }
 
 
+void
+Pair_protect_list (List_T pairs) {
+  List_T p;
+  T pair;
+
+  for (p = pairs; p != NULL; p = p->rest) {
+    pair = (T) p->first;
+    pair->protectedp = true;
+  }
+
+  return;
+}
+
+
+
 /* Pairs now made in pairpool.c */
 /*
 T
@@ -1010,8 +1038,7 @@ Pair_print_pathsummary (FILE *fp, int pathnum, T start, T end, Chrnum_T chrnum,
 			bool watsonp, int cdna_direction,
 			int translation_start, int translation_end, int translation_length,
 			int relaastart, int relaaend, bool maponlyp,
-			bool diagnosticp, int stage2_source, int stage2_indexsize,
-			double stage3_defectrate) {
+			bool diagnosticp, int stage2_source, int stage2_indexsize) {
   int querypos1, querypos2, den;
   double fracidentity, coverage, trimmed_coverage;
   Univcoord_T position1, position2;
@@ -1058,7 +1085,7 @@ Pair_print_pathsummary (FILE *fp, int pathnum, T start, T end, Chrnum_T chrnum,
       fprintf(fp,"    Stage 2 source: %d\n",stage2_source);
       fprintf(fp,"    Stage 2 indexsize: %d\n",stage2_indexsize);
       /* fprintf(fp,"    Stage 3 runtime: %.3f sec\n",stage3_runtime); */
-      fprintf(fp,"    Stage 3 defectrate: %f\n",stage3_defectrate);
+      /* fprintf(fp,"    Stage 3 defectrate: %f\n",stage3_defectrate); */
       fprintf(fp,"    Goodness: %d\n",goodness);
     }
 
@@ -1226,7 +1253,7 @@ Pair_print_coordinates (FILE *fp, struct T *pairs, int npairs, Chrnum_T chrnum,
   for (i = 0; i < npairs; i++) {
     this = pairs++;
     if (this->gapp == false) {
-#ifdef DEBUG1
+#ifdef DEBUG5
       fprintf(fp,"%d %d %c\t",this->aapos,this->aaphase_e,this->aa_e);
 #else
       if (this->aaphase_e != 0) {
@@ -1250,7 +1277,7 @@ Pair_print_coordinates (FILE *fp, struct T *pairs, int npairs, Chrnum_T chrnum,
 	fprintf(fp," %c",this->genomealt);
       }
 
-#ifdef DEBUG1
+#ifdef DEBUG5
       fprintf(fp,"\t%d %c",this->aaphase_g,this->aa_g);
 #else
       if (this->aaphase_g != 0) {
@@ -1275,7 +1302,9 @@ Pair_print_coordinates (FILE *fp, struct T *pairs, int npairs, Chrnum_T chrnum,
 
 void
 Pair_dump_one (T this, bool zerobasedp) {
-  printf("%p ",this);
+
+  debug1(printf("%p ",this));
+
   if (this->gapp == true && this->extraexonp == false) {
     printf("*** Gap: queryjump = %d, genomejump = %d, type: ",this->queryjump,this->genomejump);
     switch (this->comp) {
@@ -2005,7 +2034,7 @@ static void
 print_gff3_mrna (FILE *fp, int pathnum, T start, T end,
 		 char *sourcename, char *accession, char *chrstring, Chrpos_T start_genomepos, 
 		 Chrpos_T end_genomepos, int querylength_given, int skiplength,
-		 int matches, int mismatches, int qindels, int tindels, 
+		 int matches, int mismatches, int qindels, int tindels, int unknowns,
 		 bool watsonp, int cdna_direction) {
   int den;
   int querypos1, querypos2;
@@ -2061,7 +2090,9 @@ print_gff3_mrna (FILE *fp, int pathnum, T start, T end,
   } else {
     fracidentity = (double) matches/(double) den;
   }
-  fprintf(fp,"identity=%.1f",((double) rint(1000.0*fracidentity))/10.0);
+  fprintf(fp,"identity=%.1f;",((double) rint(1000.0*fracidentity))/10.0);
+  fprintf(fp,"matches=%d;mismatches=%d;indels=%d;unknowns=%d",
+	  matches,mismatches,qindels+tindels,unknowns);
 
   putc('\n',fp);
 
@@ -2201,7 +2232,7 @@ strand_char (int strand) {
   switch (strand) {
     case  1: return '+';
     case -1: return '-';
-    case  0: return '?';
+      /* case  0: return '?'; -- Now returning '.' for unknown strand */
     default: return '.';
   }
 }
@@ -2213,7 +2244,7 @@ print_gff3_est_match (FILE *fp, int pathnum, T start, T end,
 		      int exon_genomestart, int exon_genomeend,
 		      int exon_querystart, int exon_queryend,
 		      int querylength_given, int skiplength, int matches, int mismatches, int qindels, int tindels,
-		      bool watsonp, int cdna_direction, int pctidentity, List_T tokens) {
+		      int unknowns, bool watsonp, int cdna_direction, int pctidentity, List_T tokens) {
   int feature_strand, target_strand;
   double coverage, fracidentity;
   int den;
@@ -2263,6 +2294,8 @@ print_gff3_est_match (FILE *fp, int pathnum, T start, T end,
     fracidentity = (double) matches/(double) den;
   }
   fprintf(fp,";identity=%.1f",((double) rint(1000.0*fracidentity))/10.0);
+  fprintf(fp,";matches=%d;mismatches=%d;indels=%d;unknowns=%d",
+	  matches,mismatches,qindels+tindels,unknowns);
 
   putc('\n',fp);
 }
@@ -2272,7 +2305,7 @@ static void
 print_gff3_exons_forward (FILE *fp, struct T *pairs, int npairs, int pathnum, T start, T end,
 			  char *sourcename, char *accession, char *chrstring,
 			  int querylength_given, int skiplength, int matches, int mismatches,
-			  int qindels, int tindels, bool watsonp, int cdna_direction,
+			  int qindels, int tindels, int unknowns, bool watsonp, int cdna_direction,
 			  bool gff_introns_p, bool gff_gene_format_p, bool gff_estmatch_format_p) {
   bool in_exon = false;
   struct T *ptr, *prev, *this = NULL;
@@ -2483,7 +2516,7 @@ print_gff3_exons_forward (FILE *fp, struct T *pairs, int npairs, int pathnum, T
       print_gff3_est_match(fp,pathnum,start,end,sourcename,accession,chrstring,
 			   estmatch_genomestart,estmatch_genomeend,
 			   estmatch_querystart,estmatch_queryend,
-			   querylength_given,skiplength,matches,mismatches,qindels,tindels,
+			   querylength_given,skiplength,matches,mismatches,qindels,tindels,unknowns,
 			   watsonp,cdna_direction,pctidentity,tokens);
     } else {
       tokens = List_reverse(tokens);
@@ -2806,7 +2839,7 @@ Pair_print_gff3 (FILE *fp, struct T *pairs, int npairs, int pathnum, char *acces
 		 T start, T end, Chrnum_T chrnum, Univ_IIT_T chromosome_iit, Sequence_T usersegment,
 		 int translation_end,
 		 int querylength_given, int skiplength, int matches, int mismatches, 
-		 int qindels, int tindels, bool watsonp, int cdna_direction,
+		 int qindels, int tindels, int unknowns, bool watsonp, int cdna_direction,
 		 bool gff_gene_format_p, bool gff_estmatch_format_p, char *sourcename) {
   char *chrstring = NULL;
   Chrpos_T chrpos1, chrpos2;
@@ -2827,12 +2860,12 @@ Pair_print_gff3 (FILE *fp, struct T *pairs, int npairs, int pathnum, char *acces
 
     print_gff3_gene(fp,pathnum,sourcename,accession,chrstring,chrpos1+1,chrpos2+1,watsonp,cdna_direction);
     print_gff3_mrna(fp,pathnum,start,end,sourcename,accession,chrstring,chrpos1+1,chrpos2+1,
-		    querylength_given,skiplength,matches,mismatches,qindels,tindels,
+		    querylength_given,skiplength,matches,mismatches,qindels,tindels,unknowns,
 		    watsonp,cdna_direction);
 
     if (cdna_direction >= 0) {
       print_gff3_exons_forward(fp,pairs,npairs,pathnum,start,end,sourcename,accession,chrstring,
-			       querylength_given,skiplength,matches,mismatches,qindels,tindels,
+			       querylength_given,skiplength,matches,mismatches,qindels,tindels,unknowns,
 			       watsonp,cdna_direction,/*gff_introns_p*/false,/*gff_gene_format_p*/true,
 			       /*gff_estmatch_format_p*/false);
       if (translation_end > 0) {
@@ -2851,7 +2884,7 @@ Pair_print_gff3 (FILE *fp, struct T *pairs, int npairs, int pathnum, char *acces
     fprintf(fp,"###\n");		/* Terminates gene format */
   } else {
     print_gff3_exons_forward(fp,pairs,npairs,pathnum,start,end,sourcename,accession,chrstring,
-			     querylength_given,skiplength,matches,mismatches,qindels,tindels,
+			     querylength_given,skiplength,matches,mismatches,qindels,tindels,unknowns,
 			     watsonp,cdna_direction,/*gff_introns_p*/false,/*gff_gene_format_p*/false,
 			     gff_estmatch_format_p);
   }
@@ -2865,34 +2898,54 @@ Pair_print_gff3 (FILE *fp, struct T *pairs, int npairs, int pathnum, char *acces
 
 
 int
-Pair_circularpos (struct T *pairs, int npairs, Chrpos_T chrlength, bool plusp, int querylength) {
+Pair_circularpos (int *alias, struct T *pairs, int npairs, Chrpos_T chrlength, bool plusp, int querylength) {
   int i;
   struct T *ptr;
 
   if (plusp == true) {
     i = 0;
     ptr = pairs;
-    while (i < npairs && ptr->genomepos < chrlength) {
-      i++;
-      ptr++;
-    }
-    if (i >= npairs) {
+    if (ptr->genomepos >= chrlength) {
+      /* All of read after trimming is in circular alias */
+      *alias = +1;
       return -1;
     } else {
-      return ptr->querypos;
+      while (i < npairs && ptr->genomepos < chrlength) {
+	i++;
+	ptr++;
+      }
+      if (i >= npairs) {
+	/* All of read after trimming is in circular proper */
+	*alias = -1;
+	return -1;
+      } else {
+	/* Some of read is in circular proper and some is in circular alias */
+	*alias = 0;
+	return ptr->querypos;
+      }
     }
 
   } else {
     i = npairs - 1;
     ptr = &(pairs[i]);
-    while (i >= 0 && ptr->genomepos < chrlength) {
-      i--;
-      ptr--;
-    }
-    if (i < 0) {
+    if (ptr->genomepos >= chrlength) {
+      /* All of read after trimming is in circular alias */
+      *alias = +1;
       return -1;
     } else {
-      return (querylength - ptr->querypos - 1);
+      while (i >= 0 && ptr->genomepos < chrlength) {
+	i--;
+	ptr--;
+      }
+      if (i < 0) {
+	/* All of read after trimming is in circular proper */
+	*alias = -1;
+	return -1;
+      } else {
+	/* Some of read is in circular proper and some is in circular alias */
+	*alias = 0;
+	return (querylength - ptr->querypos - 1);
+      }
     }
   }
 }
@@ -2948,7 +3001,7 @@ print_endtypes (FILE *fp,
 		Endtype_T endtype2, int ntrim2, int nindels2, Chrpos_T splice_dist,
 		int nmatches, int nmismatches_refdiff, int nmismatches_bothdiff,
 		Chrnum_T chrnum, Univcoord_T chroffset,
-		int exon_genomestart, int exon_genomeend,
+		Chrpos_T exon_genomestart, Chrpos_T exon_genomeend,
 		bool watsonp, int cdna_direction,
 		IIT_T splicesites_iit, int *splicesites_divint_crosstable,
 		int donor_typeint, int acceptor_typeint) {
@@ -3701,8 +3754,8 @@ Pair_guess_cdna_direction_array (int *sensedir, struct T *pairs_querydir, int np
 	    this = ptr++;
 	    i++;
 	  }
-	  ptr--;
-	  i--;
+	  /* ptr--; */
+	  /* i--; */
 
 	  splice_site_probs(&sense_prob,&antisense_prob,
 			    prev_splicesitep,splicesitep,chroffset,
@@ -3721,8 +3774,8 @@ Pair_guess_cdna_direction_array (int *sensedir, struct T *pairs_querydir, int np
 	    this = ptr++;
 	    i++;
 	  }
-	  ptr--;
-	  i--;
+	  /* ptr--; */
+	  /* i--; */
 
 	  splice_site_probs(&sense_prob,&antisense_prob,
 			    prev_splicesitep,splicesitep,chroffset,
@@ -3952,6 +4005,27 @@ print_tokens_sam (FILE *fp, List_T tokens) {
   return;
 }
 
+/* Derived from print_tokens_gff3 */
+static int
+tokens_cigarlength (List_T tokens) {
+  int length = 0, tokenlength;
+  List_T p;
+  char *token;
+  char type;
+  
+  for (p = tokens; p != NULL; p = List_next(p)) {
+    token = (char *) List_head(p);
+    type = token[strlen(token)-1];
+    /* Should include 'H', but that gets added according to hardclip_low and hardclip_high */
+    if (type == 'S' || type == 'I' || type == 'M') {
+      sscanf(token,"%d",&tokenlength);
+      length += tokenlength;
+    }
+  }
+
+  return length;
+}
+
 
 
 /* Only for GMAP program */
@@ -4073,7 +4147,7 @@ sensedir_from_cdna_direction (int cdna_direction) {
 /* Derived from print_gff3_cdna_match */
 /* Assumes pairarray has been hard clipped already */
 static void
-print_sam_line (FILE *fp, bool firstp, char *acc1, char *acc2, char *chrstring,
+print_sam_line (FILE *fp, char *abbrev, bool firstp, char *acc1, char *acc2, char *chrstring,
 		bool watsonp, int cdna_direction, List_T cigar_tokens, List_T md_tokens,
 		int nmismatches_refdiff, int nmismatches_bothdiff, int nindels,
 		bool intronp, char *queryseq_ptr, char *quality_string,
@@ -4089,6 +4163,8 @@ print_sam_line (FILE *fp, bool firstp, char *acc1, char *acc2, char *chrstring,
 		char *sam_read_group_id, bool invertp) {
   int sensedir;
 
+  assert(tokens_cigarlength(cigar_tokens) + hardclip_low + hardclip_high == querylength);
+
   /* 1. QNAME or Accession */
   if (acc2 == NULL) {
     fprintf(fp,"%s\t",acc1);
@@ -4212,6 +4288,10 @@ print_sam_line (FILE *fp, bool firstp, char *acc1, char *acc2, char *chrstring,
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   /* 12. TAGS: XS */
   if (intronp == true) {
 #ifdef GSNAP
@@ -5147,10 +5227,10 @@ compute_md_string (int *nmismatches_refdiff, int *nmismatches_bothdiff, int *nin
 
 
 void
-Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
+Pair_print_sam (FILE *fp, char *abbrev, struct T *pairs, int npairs,
 		char *acc1, char *acc2, Chrnum_T chrnum, Univ_IIT_T chromosome_iit, Sequence_T usersegment,
 		char *queryseq_ptr, char *quality_string,
-		int hardclip5, int hardclip3, int querylength_given,
+		int clipdir, int hardclip5, int hardclip3, int querylength_given,
 		bool watsonp, int cdna_direction, int chimera_part, Chimera_T chimera,
 		int quality_shift, bool firstp, int pathnum, int npaths,
 		int absmq_score, int first_absmq, int second_absmq, Chrpos_T chrpos,
@@ -5205,6 +5285,8 @@ Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
   flag = compute_sam_flag_nomate(pathnum,npaths,firstp,watsonp,sam_paired_p);
 #endif
 
+  debug4(printf("Entered Pair_print_sam with clipdir %d, watsonp %d, firstp %d, hardclip5 %d, and hardclip3 %d\n",
+		clipdir,watsonp,firstp,hardclip5,hardclip3));
 
   if (circularp == true) {
     if (watsonp == true) {
@@ -5216,14 +5298,45 @@ Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
     }
   } else {
     /* Incoming hardclip5 and hardclip3 are due to overlaps, not chimera */
-    if (firstp == true) {
-      hardclip_low = 0;
-      hardclip_high = hardclip5;
+    if (clipdir >= 0) {
+      if (watsonp == true) {
+	if (firstp == true) {
+	  hardclip_high = hardclip5;
+	  hardclip_low = 0;
+	} else {
+	  hardclip_high = 0;
+	  hardclip_low = hardclip3;
+	}
+      } else {
+	if (firstp == true) {
+	  hardclip_low = hardclip5;
+	  hardclip_high = 0;
+	} else {
+	  hardclip_low = 0;
+	  hardclip_high = hardclip3;
+	}
+      }
     } else {
-      hardclip_low = hardclip3;
-      hardclip_high = 0;
+      if (watsonp == true) {
+	if (firstp == true) {
+	  hardclip_low = hardclip5;
+	  hardclip_high = 0;
+	} else {
+	  hardclip_low = 0;
+	  hardclip_high = hardclip3;
+	}
+      } else {
+	if (firstp == true) {
+	  hardclip_high = hardclip5;
+	  hardclip_low = 0;
+	} else {
+	  hardclip_high = 0;
+	  hardclip_low = hardclip3;
+	}
+      }
     }
   }
+  debug4(printf("hardclip_low %d, hardclip_high %d\n",hardclip_low,hardclip_high));
 
   /* Get CIGAR and intronp for entire read */
   cigar_tokens = compute_cigar(&intronp,&hardclip_low_zero,&hardclip_high_zero,pairs,npairs,querylength_given,
@@ -5231,11 +5344,12 @@ Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
   if (hardclip5 == 0 && hardclip3 == 0) {
     clipped_pairs = pairs;
     clipped_npairs = npairs;
-    tokens_free(&cigar_tokens);
   } else {
     clipped_pairs = hardclip_pairs(&clipped_npairs,&hardclip_low,&hardclip_high,
 				   pairs,npairs,querylength_given);
   }
+  tokens_free(&cigar_tokens);
+
   /* Cigar updates hardclip5 and hardclip3 for chimeras */
   cigar_tokens = compute_cigar(&ignore_intronp,&hardclip_low,&hardclip_high,clipped_pairs,clipped_npairs,querylength_given,
 			       watsonp,cdna_direction,chimera_part);
@@ -5243,7 +5357,7 @@ Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
   md_tokens = compute_md_string(&nmismatches_refdiff,&nmismatches_bothdiff,&nindels,
 				clipped_pairs,clipped_npairs,watsonp,cigar_tokens);
 
-  print_sam_line(fp,firstp,acc1,acc2,chrstring,
+  print_sam_line(fp,abbrev,firstp,acc1,acc2,chrstring,
 		 watsonp,cdna_direction,cigar_tokens,md_tokens,
 		 nmismatches_refdiff,nmismatches_bothdiff,nindels,
 		 intronp,queryseq_ptr,quality_string,hardclip_low,hardclip_high,
@@ -5275,7 +5389,7 @@ Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
 
 
 void
-Pair_print_sam_nomapping (FILE *fp, char *acc1, char *acc2, char *queryseq_ptr,
+Pair_print_sam_nomapping (FILE *fp, char *abbrev, char *acc1, char *acc2, char *queryseq_ptr,
 			  char *quality_string, int querylength, int quality_shift,
 			  bool firstp, bool sam_paired_p, char *sam_read_group_id) {
   unsigned int flag;
@@ -5326,6 +5440,10 @@ Pair_print_sam_nomapping (FILE *fp, char *acc1, char *acc2, char *queryseq_ptr,
     fprintf(fp,"RG:Z:%s",sam_read_group_id);
   }
   
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   putc('\n',fp);
 
   return;
@@ -6472,6 +6590,7 @@ void
 Pair_pathscores (bool *gapp, int *pathscores, struct T *ptr, int npairs, 
 		 int cdna_direction, int querylength, cDNAEnd_T cdnaend) {
   int querypos, querystart, queryend;
+  int basescore;
   bool in_intron = false;
   T this, prev = NULL;
   int i;
@@ -6481,6 +6600,22 @@ Pair_pathscores (bool *gapp, int *pathscores, struct T *ptr, int npairs,
   querystart = this->querypos;
   this = &(ptr[npairs-1]);
   queryend = this->querypos;
+  /* printf("Entered Pair_pathscores with querystart %d and queryend %d\n",querystart,queryend); */
+
+  /* Disallow transitions outside of the alignments.  Previously
+     allowed slop, but (1) not necessary, and (2) gave missed
+     merges. */
+  for (querypos = 0; querypos < querystart; querypos++) {
+    gapp[querypos] = true;
+  }
+  for (querypos = queryend + 1; querypos < querylength; querypos++) {
+    gapp[querypos] = true;
+  }
+
+  /* Initialize to cover the ends that aren't aligned */
+  for (querypos = 0; querypos < querylength; querypos++) {
+    pathscores[querypos] = QINDEL;
+  }
 
   for (i = 0; i < npairs; i++) {
     this = ptr++;
@@ -6556,8 +6691,9 @@ Pair_pathscores (bool *gapp, int *pathscores, struct T *ptr, int npairs,
     prev = this;
   }
 
+#if 0
   /* Gets querystart to queryend inclusive */
-  if (querystart == 0) {
+  if (0 && querystart == 0) {
     for (i = 1; i <= queryend; i++) {
       pathscores[i] += pathscores[i-1];
     }
@@ -6566,7 +6702,9 @@ Pair_pathscores (bool *gapp, int *pathscores, struct T *ptr, int npairs,
       pathscores[i] += pathscores[i-1];
     }
   }
+#endif
 
+#if 0
   if (cdnaend == FIVE) {
     for (i = queryend + 1; i < querylength; i++) {
       pathscores[i] = pathscores[i-1] + QINDEL;
@@ -6579,6 +6717,23 @@ Pair_pathscores (bool *gapp, int *pathscores, struct T *ptr, int npairs,
       pathscores[i] = pathscores[i-1];
     }
   }
+#endif
+
+  if (cdnaend == FIVE) {
+    for (i = 1; i < querylength; i++) {
+      pathscores[i] += pathscores[i-1];
+    }
+    basescore = pathscores[querystart];
+  } else if (cdnaend == THREE) {
+    for (i = querylength-2; i >= 0; --i) {
+      pathscores[i] += pathscores[i+1];
+    }
+    basescore = pathscores[queryend];
+  }
+
+  for (i = 0; i < querylength; i++) {
+    pathscores[i] -= basescore;
+  }
 
   return;
 }
@@ -7338,7 +7493,7 @@ Pair_print_introns (FILE *fp, struct T *pairs, int npairs, char *accession,
 
 
 /* goal_start < goal_end */
-int
+Chrpos_T
 Pair_binary_search_ascending (int *querypos, int lowi, int highi, struct T *pairarray,
 			      Chrpos_T goal_start, Chrpos_T goal_end) {
   int middlei;
@@ -7347,13 +7502,13 @@ Pair_binary_search_ascending (int *querypos, int lowi, int highi, struct T *pair
 		 lowi,highi,goal_start,goal_end));
 
   while (lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     while (middlei < highi && pairarray[middlei].cdna == ' ') {
       /* Go forward past pairs corresponding to gaps */
       middlei++;
     }
     if (middlei >= highi) {
-      middlei = (lowi+highi)/2;
+      middlei = lowi + ((highi - lowi) / 2);
       while (middlei >= lowi && pairarray[middlei].cdna == ' ') {
 	/* Go backward past pairs corresponding to gaps */
 	middlei--;
@@ -7388,7 +7543,7 @@ Pair_binary_search_ascending (int *querypos, int lowi, int highi, struct T *pair
 }
 
 /* goal_start > goal_end */
-int
+Chrpos_T
 Pair_binary_search_descending (int *querypos, int lowi, int highi, struct T *pairarray,
 			       Chrpos_T goal_start, Chrpos_T goal_end) {
   int middlei;
@@ -7397,13 +7552,13 @@ Pair_binary_search_descending (int *querypos, int lowi, int highi, struct T *pai
 		 lowi,highi,goal_start,goal_end));
 
   while (lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     while (middlei < highi && pairarray[middlei].cdna == ' ') {
       /* Go forward past pairs corresponding to gaps */
       middlei++;
     }
     if (middlei >= highi) {
-      middlei = (lowi+highi)/2;
+      middlei = lowi + ((highi - lowi) / 2);
       while (middlei >= lowi && pairarray[middlei].cdna == ' ') {
 	/* Go backward past pairs corresponding to gaps */
 	middlei--;
@@ -7441,20 +7596,70 @@ Pair_binary_search_descending (int *querypos, int lowi, int highi, struct T *pai
 #ifndef PMAP
 
 Chrpos_T
-Pair_genomicpos_low (int *hardclip_low, int *hardclip_high, struct T *pairarray, int npairs,
-		     int querylength, bool watsonp) {
+Pair_genomicpos_low (int clipdir, int hardclip5, int hardclip3,
+		     struct T *pairarray, int npairs, int querylength,
+		     bool watsonp, bool firstp, bool hide_soft_clips_p) {
   struct T *clipped_pairs;
   int clipped_npairs;
+  int hardclip_low, hardclip_high;
   T pair;
 
-  clipped_pairs = hardclip_pairs(&clipped_npairs,&(*hardclip_low),&(*hardclip_high),
+  if (clipdir >= 0) {
+    if (watsonp == true) {
+      if (firstp == true) {
+	hardclip_high = hardclip5;
+	hardclip_low = 0;
+      } else {
+	hardclip_high = 0;
+	hardclip_low = hardclip3;
+      }
+    } else {
+      if (firstp == true) {
+	hardclip_low = hardclip5;
+	hardclip_high = 0;
+      } else {
+	hardclip_low = 0;
+	hardclip_high = hardclip3;
+      }
+    }
+  } else {
+    if (watsonp == true) {
+      if (firstp == true) {
+	hardclip_low = hardclip5;
+	hardclip_high = 0;
+      } else {
+	hardclip_low = 0;
+	hardclip_high = hardclip3;
+      }
+    } else {
+      if (firstp == true) {
+	hardclip_high = hardclip5;
+	hardclip_low = 0;
+      } else {
+	hardclip_high = 0;
+	hardclip_low = hardclip3;
+      }
+    }
+  }
+
+  clipped_pairs = hardclip_pairs(&clipped_npairs,&hardclip_low,&hardclip_high,
 				 pairarray,npairs,querylength);
   if (watsonp == true) {
     pair = &(clipped_pairs[0]);
-    return pair->genomepos + 1U;
+    if (hide_soft_clips_p == true) {
+      assert(pair->querypos == 0);
+      return pair->genomepos + 1U - pair->querypos;
+    } else {
+      return pair->genomepos + 1U;
+    }
   } else {
     pair = &(clipped_pairs[clipped_npairs-1]);
-    return pair->genomepos + 1U;
+    if (hide_soft_clips_p == true) {
+      assert(pair->querypos == querylength - 1);
+      return pair->genomepos + 1U + (querylength - 1 - pair->querypos);
+    } else {
+      return pair->genomepos + 1U;
+    }
   }
 }
 
@@ -7534,6 +7739,8 @@ Pair_start_bound (int *cdna_direction, List_T pairs, int breakpoint) {
   bool in_intron = false;
   List_T p;
 
+  debug9(printf("Entering Pair_start_bound with breakpoint %d\n",breakpoint));
+
   *cdna_direction = 0;
 
   if ((p = pairs) != NULL) {
@@ -7542,13 +7749,18 @@ Pair_start_bound (int *cdna_direction, List_T pairs, int breakpoint) {
 
   while (p != NULL) {
     this = (T) p->first;
-    if (this->querypos < 0) {
-      /* Skip gap */
+    debug9(Pair_dump_one(this,true));
+    debug9(printf("\n"));
+
 
+    if (this->gapp == true) {
+      /* Skip */
     } else if (this->querypos > breakpoint) {
       while (p != NULL) {
 	this = (T) List_head(p);
+
 	if (this->gapp) {
+	  debug9(printf("For start bound, saw gap with comp %c\n",this->comp));
 	  if (!in_intron) {
 	    if (this->comp == FWD_CANONICAL_INTRON_COMP) {
 	      *cdna_direction += 1;
@@ -7562,6 +7774,7 @@ Pair_start_bound (int *cdna_direction, List_T pairs, int breakpoint) {
 	    in_intron = false;
 	  }
 	}
+
 	p = p->rest;
       }
 
@@ -7570,16 +7783,17 @@ Pair_start_bound (int *cdna_direction, List_T pairs, int breakpoint) {
       } else if (*cdna_direction < 0) {
 	*cdna_direction = -1;
       }
-
       return start;
 
     } else {
       start = this;
     }
+
     p = p->rest;
   }
 
 #if 0
+  /* Found no gap beyond start */
   if (*cdna_direction > 0) {
     *cdna_direction = +1;
   } else if (*cdna_direction < 0) {
@@ -7598,6 +7812,8 @@ Pair_end_bound (int *cdna_direction, List_T pairs, int breakpoint) {
   bool in_intron = false;
   List_T p;
 
+  debug9(printf("Entering Pair_end_bound with breakpoint %d\n",breakpoint));
+
   *cdna_direction = 0;
 
   if ((p = pairs) != NULL) {
@@ -7606,36 +7822,38 @@ Pair_end_bound (int *cdna_direction, List_T pairs, int breakpoint) {
 
   while (p != NULL) {
     this = (T) p->first;
-    if (this->querypos < 0) {
-      /* Skip gap */
-
-    } else if (this->querypos > breakpoint) {
+    debug9(Pair_dump_one(this,true));
+    debug9(printf("\n"));
+    if (this->gapp) {
+      debug9(printf("For end bound, saw gap with comp %c\n",this->comp));
+      if (!in_intron) {
+	if (this->comp == FWD_CANONICAL_INTRON_COMP) {
+	  *cdna_direction += 1;
+	} else if (this->comp == REV_CANONICAL_INTRON_COMP) {
+	  *cdna_direction -= 1;
+	}
+	in_intron = true;
+      }
 
-      if (*cdna_direction > 0) {
-	*cdna_direction = +1;
-      } else if (*cdna_direction < 0) {
-	*cdna_direction = -1;
+    } else {
+      if (in_intron) {
+	in_intron = false;
       }
 
-      return end;
+      if (this->querypos > breakpoint) {
 
-    } else {
-      if (this->gapp) {
-	if (!in_intron) {
-	  if (this->comp == FWD_CANONICAL_INTRON_COMP) {
-	    *cdna_direction += 1;
-	  } else if (this->comp == REV_CANONICAL_INTRON_COMP) {
-	    *cdna_direction -= 1;
-	  }
-	  in_intron = true;
+	if (*cdna_direction > 0) {
+	  *cdna_direction = +1;
+	} else if (*cdna_direction < 0) {
+	  *cdna_direction = -1;
 	}
+	return end;
+
       } else {
-	if (in_intron) {
-	  in_intron = false;
-	}
+	end = this;
       }
-      end = this;
     }
+
     p = p->rest;
   }
 
@@ -7644,7 +7862,6 @@ Pair_end_bound (int *cdna_direction, List_T pairs, int breakpoint) {
   } else if (*cdna_direction < 0) {
     *cdna_direction = -1;
   }
-
   return end;
 }
 
@@ -7662,11 +7879,17 @@ Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs) {
   bool in_indelp;
 
   debug8(printf("Entered trim_ends\n"));
+  if (pairs == NULL) {
+    *trim5p = *trim3p = 0;
+    return (List_T) NULL;
+  }
+
 
   /* Find trim_right */
   bestscore = 0;
   score = 0;
   in_indelp = false;
+  this = (T) NULL;
   for (p = pairs, pairi = 0; p != NULL; p = p->rest, pairi++) {
     this = p->first;
 
@@ -7713,7 +7936,10 @@ Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs) {
 		  pairi,this->querypos,this->genomepos,this->comp,score,trim_right,this->protectedp));
   }
 
-  if (this->protectedp == true) {
+  if (this == NULL) {
+    fprintf(stderr,"check for trim_right yields this == NULL\n");
+    abort();
+  } else if (this->protectedp == true) {
     debug8(printf("Protected against trim_right\n"));
     trim_right = 0;
   } else {
@@ -7728,6 +7954,7 @@ Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs) {
   bestscore = 0;
   score = 0;
   in_indelp = false;
+  this = (T) NULL;
   for (p = pairs, pairi = 0; p != NULL; p = p->rest, pairi++) {
     this = p->first;
 
@@ -7775,7 +8002,10 @@ Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs) {
 		  pairi,this->querypos,this->genomepos,this->comp,score,trim_left,this->protectedp));
   }
 
-  if (this->protectedp == true) {
+  if (this == NULL) {
+    fprintf(stderr,"check for trim_left yields this == NULL\n");
+    abort();
+  } else if (this->protectedp == true) {
     debug8(printf("Protected against trim_left\n"));
     trim_left = pairi - 1;
   } else {
@@ -7791,6 +8021,12 @@ Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs) {
     *trim3p = true;
   }
 
+  if (trim_left == 0) {
+    *trim5p = false;
+  } else {
+    *trim5p = true;
+  }
+
   i = 0;
   while (i < trim_right) {
     pairs = Pairpool_pop(pairs,&this);
@@ -7808,12 +8044,6 @@ Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs) {
     i++;
   }
 
-  if (pairs == NULL) {
-    *trim5p = false;
-  } else {
-    *trim5p = true;
-  }
-
   debug8(Pair_dump_list(trimmed,/*zerobasedp*/true));
 
   return trimmed;
@@ -7825,7 +8055,7 @@ static int quality_score_adj = 33; /* Default is Sanger */
 
 /* Taken from mapq.c */
 
-static double
+static float
 mismatch_logprob[MAX_QUALITY_SCORE+1] =
   /* log(1/3*10^(-Q/10)) */
   {-1.098612,
@@ -7841,10 +8071,10 @@ mismatch_logprob[MAX_QUALITY_SCORE+1] =
 
 
 /* Look also at Substring_compute_mapq */
-double
+float
 Pair_compute_mapq (struct T *pairarray, int npairs, int trim_left, int trim_right, int querylength,
 		   char *quality_string, bool trim_terminals_p) {
-  double loglik = 0.0;
+  float loglik = 0.0;
   int Q;
   T pair;
   int querypos, i;
diff --git a/src/pair.h b/src/pair.h
index 4b175fd..d48a6a1 100644
--- a/src/pair.h
+++ b/src/pair.h
@@ -1,4 +1,4 @@
-/* $Id: pair.h 99755 2013-06-27 21:19:12Z twu $ */
+/* $Id: pair.h 133832 2014-04-21 21:34:20Z twu $ */
 #ifndef PAIR_INCLUDED
 #define PAIR_INCLUDED
 
@@ -61,6 +61,8 @@ extern List_T
 Pair_protect_end5 (List_T pairs, Pairpool_T pairpool);
 extern List_T
 Pair_protect_end3 (List_T pairs, Pairpool_T pairpool);
+extern void
+Pair_protect_list (List_T pairs);
 
 extern T
 Pair_new (int querypos, Chrpos_T genomepos, char cdna, char comp, char genome);
@@ -92,8 +94,7 @@ Pair_print_pathsummary (FILE *fp, int pathnum, T start, T end, Chrnum_T chrnum,
 			bool watsonp, int cdna_direction,
 			int translation_start, int translation_end, int translation_length,
 			int relaastart, int relaaend, bool maponlyp,
-			bool diagnosticp, int stage2_source, int stage2_indexsize,
-			double stage3_defectrate);
+			bool diagnosticp, int stage2_source, int stage2_indexsize);
 
 extern void
 Pair_print_coordinates (FILE *fp, struct T *pairs, int npairs, Chrnum_T chrnum,
@@ -126,7 +127,7 @@ Pair_print_gff3 (FILE *fp, struct T *pairs, int npairs, int pathnum, char *acces
 		 T start, T end, Chrnum_T chrnum, Univ_IIT_T chromosome_iit, Sequence_T usersegment,
 		 int translation_end, 
 		 int querylength_given, int skiplength, int matches, int mismatches, 
-		 int qindels, int tindels, bool watsonp, int cdna_direction,
+		 int qindels, int tindels, int unknowns, bool watsonp, int cdna_direction,
 		 bool gff_gene_format_p, bool gff_estmatch_format_p, char *sourcename);
 
 extern void
@@ -152,7 +153,7 @@ Pair_gsnap_nsegments (int *total_nmismatches, int *total_nindels, int *nintrons,
 
 
 extern int
-Pair_circularpos (struct T *pairs, int npairs, Chrpos_T chrlength, bool plusp, int querylength);
+Pair_circularpos (int *alias, struct T *pairs, int npairs, Chrpos_T chrlength, bool plusp, int querylength);
 extern void
 Pair_alias_circular (struct T *pairs, int npairs, Chrpos_T chrlength);
 extern void
@@ -162,10 +163,10 @@ extern List_T
 Pair_clean_cigar (List_T tokens, bool watsonp);
 
 extern void
-Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
+Pair_print_sam (FILE *fp, char *abbrev, struct T *pairs, int npairs,
 		char *acc1, char *acc2, Chrnum_T chrnum, Univ_IIT_T chromosome_iit, Sequence_T usersegment,
 		char *queryseq_ptr, char *quality_string,
-		int hardclip5, int hardclip3, int querylength_given,
+		int clipdir, int hardclip5, int hardclip3, int querylength_given,
 		bool watsonp, int cdna_direction, int chimera_part, Chimera_T chimera,
 		int quality_shift, bool firstp, int pathnum, int npaths,
 		int absmq_score, int first_absmq, int second_absmq, Chrpos_T chrpos,
@@ -179,7 +180,7 @@ Pair_print_sam (FILE *fp, struct T *pairs, int npairs,
 		char *sam_read_group_id, bool invertp, bool circularp);
 
 extern void
-Pair_print_sam_nomapping (FILE *fp, char *acc1, char *acc2, char *queryseq_ptr,
+Pair_print_sam_nomapping (FILE *fp, char *abbrev, char *acc1, char *acc2, char *queryseq_ptr,
 			  char *quality_string, int querylength, int quality_shift,
 			  bool firstp, bool sam_paired_p, char *sam_read_group_id);
 
@@ -279,16 +280,17 @@ Pair_nexons (struct T *pairs, int npairs);
 extern bool
 Pair_consistentp (int *ncanonical, struct T *pairs, int npairs, int cdna_direction);
 
-extern int
+extern Chrpos_T
 Pair_binary_search_ascending (int *querypos, int lowi, int highi, struct T *pairarray,
 			      Chrpos_T goal_start, Chrpos_T goal_end);
-extern int
+extern Chrpos_T
 Pair_binary_search_descending (int *querypos, int lowi, int highi, struct T *pairarray,
 			       Chrpos_T goal_start, Chrpos_T goal_end);
 #ifndef PMAP
 extern Chrpos_T
-Pair_genomicpos_low (int *hardclip_low, int *hardclip_high, struct T *pairarray, int npairs,
-		     int querylength, bool watsonp);
+Pair_genomicpos_low (int clipdir, int hardclip5, int hardclip3,
+		     struct T *pairarray, int npairs, int querylength,
+		     bool watsonp, bool firstp, bool hide_soft_clips_p);
 #endif
 
 extern Chrpos_T
@@ -306,7 +308,7 @@ extern List_T
 Pair_trim_ends (bool *trim5p, bool *trim3p, List_T pairs);
 
 #ifdef GSNAP
-extern double
+extern float
 Pair_compute_mapq (struct T *pairarray, int npairs, int trim_left, int trim_right,
 		   int querylength, char *quality_string, bool trim_terminals_p);
 extern Overlap_T
diff --git a/src/pairdef.h b/src/pairdef.h
index 87d191b..527768d 100644
--- a/src/pairdef.h
+++ b/src/pairdef.h
@@ -1,4 +1,4 @@
-/* $Id: pairdef.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: pairdef.h 115496 2013-11-19 01:08:40Z twu $ */
 #ifndef PAIRDEF_INCLUDED
 #define PAIRDEF_INCLUDED
 #include "bool.h"
@@ -40,7 +40,8 @@ struct T {
   State_T vstate_good;
   State_T vstate_bad;
 
-  bool protectedp;		/* Protected against trimming, because found using splicetrie */
+  bool protectedp;		/* Protected against trimming, because found using splicetrie, or
+				   protected against smoothing, because found by traverse_dual_intron */
   bool disallowedp;		/* Used when novelsplicingp is false and intron is not allowed */
 
   double donor_prob;		/* Set for an intron gap */
diff --git a/src/pairpool.c b/src/pairpool.c
index b0c4a39..ed02043 100644
--- a/src/pairpool.c
+++ b/src/pairpool.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: pairpool.c 94753 2013-05-02 18:07:51Z twu $";
+static char rcsid[] = "$Id: pairpool.c 136057 2014-05-13 20:14:15Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -13,8 +13,11 @@ static char rcsid[] = "$Id: pairpool.c 94753 2013-05-02 18:07:51Z twu $";
 #include "pairdef.h"
 #include "listdef.h"
 #include "intron.h"
+#include "complement.h"
+
 
 #define CHUNKSIZE 20000
+#define MICROINTRON_LENGTH 9	/* For Pairpool_add_genomeskip */
 
 #ifdef DEBUG
 #define debug(x) x
@@ -36,6 +39,27 @@ static char rcsid[] = "$Id: pairpool.c 94753 2013-05-02 18:07:51Z twu $";
 #define debug2(x)
 #endif
 
+/* Getting genomic nt */
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+/* joining ends */
+#ifdef DEBUG15
+#define debug15(x) x
+#else 
+#define debug15(x)
+#endif
+
+/* clean_join */
+#ifdef DEBUG16
+#define debug16(x) x
+#else 
+#define debug16(x)
+#endif
+
 
 #define T Pairpool_T
 struct T {
@@ -358,7 +382,8 @@ Pairpool_push_gapalign (List_T list, T this, int querypos, int genomepos, char c
 }
 
 List_T
-Pairpool_push_gapholder (List_T list, T this, int queryjump, int genomejump, bool knownp) {
+Pairpool_push_gapholder (List_T list, T this, int queryjump, int genomejump,
+			 Pair_T leftpair, Pair_T rightpair, bool knownp) {
   List_T listcell;
   Pair_T pair;
   List_T p;
@@ -403,6 +428,13 @@ Pairpool_push_gapholder (List_T list, T this, int queryjump, int genomejump, boo
   pair->introntype = NONINTRON;
   pair->extraexonp = false;
 
+  if (leftpair && rightpair) {
+    queryjump = rightpair->querypos - leftpair->querypos - 1;
+    genomejump = rightpair->genomepos - leftpair->genomepos - 1;
+    if (leftpair->cdna == ' ') queryjump++;
+    if (leftpair->genome == ' ') genomejump++;
+  }
+
   pair->queryjump = queryjump;
   pair->genomejump = genomejump;
 
@@ -605,11 +637,16 @@ Pairpool_clip_bounded (List_T source, int minpos, int maxpos) {
       }
     }
 
-    if (starti < 0) {
-      starti = 0;
-    }
-    if (endi < 0) {
-      endi = i;
+    if (starti < 0 && endi < 0) {
+      /* None of the pairs fall within bounds */
+      return (List_T) NULL;
+    } else {
+      if (starti < 0) {
+	starti = 0;
+      }
+      if (endi < 0) {
+	endi = i;
+      }
     }
 
     p = source;
@@ -689,9 +726,471 @@ struct Pair_T *
 Pairpool_copy_array (struct Pair_T *source, int npairs) {
   struct Pair_T *dest;
 
-  dest = (struct Pair_T *) CALLOC_OUT(npairs,sizeof(struct Pair_T));
+  dest = (struct Pair_T *) MALLOC_OUT(npairs * sizeof(struct Pair_T));
   memcpy(dest,source,npairs*sizeof(struct Pair_T));
   return dest;
 }
 
 
+void
+Pairpool_clean_join (List_T *left_path, List_T *right_pairs) {
+  Pair_T leftpair, rightpair;
+  int queryjump, genomejump;
+
+
+  debug16(printf("Entered clean_join\n"));
+  debug16(printf("left path:\n"));
+  debug16(Pair_dump_list(*left_path,true));
+  debug16(printf("right pairs:\n"));
+  debug16(Pair_dump_list(*right_pairs,true));
+
+
+  while (*left_path != NULL && ((Pair_T) (*left_path)->first)->gapp == true) {
+    debug16(printf("Clearing gap on left\n"));
+    *left_path = Pairpool_pop(*left_path,&leftpair);
+  }
+  while (*right_pairs != NULL && ((Pair_T) (*right_pairs)->first)->gapp == true) {
+    debug16(printf("Clearing gap on right\n"));
+    *right_pairs = Pairpool_pop(*right_pairs,&rightpair);
+  }
+  
+  if (*left_path != NULL && *right_pairs != NULL) {
+    leftpair = (Pair_T) (*left_path)->first;
+    rightpair = (Pair_T) (*right_pairs)->first;
+    queryjump = rightpair->querypos - leftpair->querypos - 1;
+    genomejump = rightpair->genomepos - leftpair->genomepos - 1;
+    debug16(printf("queryjump %d, genomejump %d\n",queryjump,genomejump));
+
+    /* Fix overlap */
+    while (*left_path != NULL && *right_pairs != NULL && (queryjump < 0 || genomejump < 0)) {
+      while (*left_path != NULL && ((Pair_T) (*left_path)->first)->gapp == true) {
+	debug16(printf("Clearing gap on left\n"));
+	*left_path = Pairpool_pop(*left_path,&leftpair);
+      }
+      while (*right_pairs != NULL && ((Pair_T) (*right_pairs)->first)->gapp == true) {
+	debug16(printf("Clearing gap on right\n"));
+	*right_pairs = Pairpool_pop(*right_pairs,&rightpair);
+      }
+      *left_path = Pairpool_pop(*left_path,&leftpair);
+      *right_pairs = Pairpool_pop(*right_pairs,&rightpair);
+      queryjump = rightpair->querypos - leftpair->querypos - 1;
+      genomejump = rightpair->genomepos - leftpair->genomepos - 1;
+      debug16(printf("Revising queryjump to be %d = %d - %d - 1\n",queryjump,rightpair->querypos,leftpair->querypos));
+    }
+  
+    while (*left_path != NULL && ((Pair_T) (*left_path)->first)->gapp == true) {
+      debug16(printf("Clearing gap on left\n"));
+      *left_path = Pairpool_pop(*left_path,&leftpair);
+    }
+    while (*right_pairs != NULL && ((Pair_T) (*right_pairs)->first)->gapp == true) {
+      debug16(printf("Clearing gap on right\n"));
+      *right_pairs = Pairpool_pop(*right_pairs,&rightpair);
+    }
+  }
+
+  return;
+}
+
+
+
+List_T
+Pairpool_join_end3 (List_T path_orig, List_T end3_pairs_orig, Pairpool_T pairpool,
+		    bool copy_end_p) {
+  List_T path, end3_pairs;
+  Pair_T pair, leftpair;
+  int queryjump = -1, genomejump = -1;
+  
+  path = Pairpool_copy(path_orig,pairpool);
+  if (copy_end_p == true) {
+    end3_pairs = Pairpool_copy(end3_pairs_orig,pairpool);
+  } else {
+    end3_pairs = end3_pairs_orig;
+  }
+
+  debug15(printf("Entered join_end3\n"));
+  debug15(printf("path:\n"));
+  debug15(Pair_dump_list(path,true));
+  debug15(printf("end3_pairs:\n"));
+  debug15(Pair_dump_list(end3_pairs,true));
+
+
+  leftpair = (Pair_T) path->first;
+  pair = (Pair_T) end3_pairs->first;
+  queryjump = pair->querypos - leftpair->querypos - 1;
+  genomejump = pair->genomepos - leftpair->genomepos - 1;
+  debug15(printf("queryjump %d, genomejump %d\n",queryjump,genomejump));
+
+  if (queryjump == 0 && genomejump == 0) {
+    /* Do nothing, although this is unexpected */
+  } else if (queryjump >= 0 && genomejump >= 0) {
+    /* Insert a gapholder */
+    path = Pairpool_push_gapholder(path,pairpool,queryjump,genomejump,
+				   /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+  } else {
+    /* Fix overlap */
+    while (path != NULL && end3_pairs != NULL && (queryjump < 0 || genomejump < 0)) {
+      pair = (Pair_T) end3_pairs->first;
+
+      if (path != NULL) {
+	path = Pairpool_pop(path,&leftpair);
+      }
+      if (end3_pairs != NULL) {
+	end3_pairs = Pairpool_pop(end3_pairs,&pair);
+      }
+      queryjump = pair->querypos - leftpair->querypos - 1;
+      genomejump = pair->genomepos - leftpair->genomepos - 1;
+      debug15(printf("Revising queryjump to be %d = %d - %d - 1\n",queryjump,pair->querypos,leftpair->querypos));
+    }
+
+    path = Pairpool_push_existing(path,pairpool,leftpair);
+    if (queryjump == 0 && genomejump == 0) {
+      /* No gapholder needed */
+    } else {
+      path = Pairpool_push_gapholder(path,pairpool,queryjump,genomejump,
+				     /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+    }
+    path = Pairpool_push_existing(path,pairpool,pair);
+  }
+  
+  while (end3_pairs != NULL) {
+    path = List_transfer_one(path,&end3_pairs);
+  }
+    
+  debug15(printf("joined path:\n"));
+  debug15(Pair_dump_list(path,true));
+  debug15(printf("\n"));
+
+  return path;
+}
+
+
+List_T
+Pairpool_join_end5 (List_T pairs_orig, List_T end5_path_orig, Pairpool_T pairpool,
+		    bool copy_end_p) {
+  List_T pairs, end5_path;
+  Pair_T pair, rightpair;
+  int queryjump = -1, genomejump = -1;
+  
+  pairs = Pairpool_copy(pairs_orig,pairpool);
+  if (copy_end_p == true) {
+    end5_path = Pairpool_copy(end5_path_orig,pairpool);
+  } else {
+    end5_path = end5_path_orig;
+  }
+
+  debug15(printf("Entered join_end5\n"));
+  debug15(printf("pairs:\n"));
+  debug15(Pair_dump_list(pairs,true));
+  debug15(printf("end5_path:\n"));
+  debug15(Pair_dump_list(end5_path,true));
+
+
+  rightpair = (Pair_T) pairs->first;
+  pair = (Pair_T) end5_path->first;
+  queryjump = rightpair->querypos - pair->querypos - 1;
+  genomejump = rightpair->genomepos - pair->genomepos - 1;
+  debug15(printf("queryjump %d, genomejump %d\n",queryjump,genomejump));
+
+  if (queryjump == 0 && genomejump == 0) {
+    /* Do nothing, although this is unexpected */
+  } else if (queryjump >= 0 && genomejump >= 0) {
+    /* Insert a gapholder */
+    pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+  } else {
+    /* Fix overlap */
+    while (pairs != NULL && end5_path != NULL && (queryjump < 0 || genomejump < 0)) {
+      pair = (Pair_T) end5_path->first;
+
+      if (pairs != NULL) {
+	pairs = Pairpool_pop(pairs,&rightpair);
+      }
+      if (end5_path != NULL) {
+	end5_path = Pairpool_pop(end5_path,&pair);
+      }
+      queryjump = rightpair->querypos - pair->querypos - 1;
+      genomejump = rightpair->genomepos - pair->genomepos - 1;
+      debug15(printf("Revising queryjump to be %d = %d - %d - 1\n",queryjump,pair->querypos,rightpair->querypos));
+    }
+
+    pairs = Pairpool_push_existing(pairs,pairpool,rightpair);
+    if (queryjump == 0 && genomejump == 0) {
+      /* No gapholder needed */
+    } else {
+      pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+				      /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+    }
+    pairs = Pairpool_push_existing(pairs,pairpool,pair);
+  }
+  
+  while (end5_path != NULL) {
+    pairs = List_transfer_one(pairs,&end5_path);
+  }
+    
+  debug15(printf("joined pairs:\n"));
+  debug15(Pair_dump_list(pairs,true));
+  debug15(printf("\n"));
+
+  return pairs;
+}
+
+
+List_T
+Pairpool_add_queryskip (List_T pairs, int r, int c, int dist, char *querysequence,
+			int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp, int dynprogindex) {
+  int j;
+  char c1;
+  int querycoord, genomecoord, step;
+
+  querycoord = r-1;
+  genomecoord = c-1;
+
+  if (revp == true) {
+    querycoord = -querycoord;
+    genomecoord = -genomecoord;
+    step = +1;
+  } else {
+    /* Advance to next genomepos */
+    /* genomecoord++;  -- No, this leads to bugs */
+    step = -1;
+  }
+  debug(printf("Entered Pairpool_add_genomeskip with r %d, c %d, revp %d => querycoord %d\n",r,c,revp,querycoord));
+
+  for (j = 0; j < dist; j++) {
+    c1 = querysequence[querycoord];
+    debug(printf("Pushing %d,%d [%d,%d] (%c,-), ",r,c,queryoffset+querycoord,genomeoffset+genomecoord,c1));
+    pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			  c1,INDEL_COMP,/*genome*/' ',/*genomealt*/' ',dynprogindex);
+    debug(r--);
+    querycoord += step;
+  }
+
+  return pairs;
+}
+
+
+static char complCode[128] = COMPLEMENT_LC;
+
+static char
+get_genomic_nt (char *g_alt, int genomicpos, Univcoord_T chroffset, Univcoord_T chrhigh,
+		bool watsonp) {
+  char c2, c2_alt;
+  Univcoord_T pos;
+
+#if 0
+  /* If the read has a deletion, then we will extend beyond 0 or genomiclength, so do not restrict. */
+  if (genomicpos < 0) {
+    return '*';
+
+  } else if (genomicpos >= genomiclength) {
+    return '*';
+
+  }
+#endif
+
+  if (watsonp) {
+    if ((pos = chroffset + genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char(genome,pos)));
+      return Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      debug8(printf("At %u, genomicnt is %c\n",
+		    genomicpos,Genome_get_char_blocks(&(*g_alt),pos)));
+      return Genome_get_char_blocks(&(*g_alt),pos);
+    }
+
+  } else {
+    if ((pos = chrhigh - genomicpos) < chroffset) { /* Must be <, and not <=, or dynamic programming will fail */
+      *g_alt = '*';
+      return '*';
+
+    } else if (pos >= chrhigh) {
+      *g_alt = '*';
+      return '*';
+
+#if 0
+    } else if (genome) {
+      /* Not necessary, because Genome_get_char_blocks should work */
+      c2 = Genome_get_char(genome,pos);
+#endif
+
+    } else {
+      /* GMAP with user-supplied genomic segment */
+      c2 = Genome_get_char_blocks(&c2_alt,pos);
+    }
+    debug8(printf("At %u, genomicnt is %c\n",genomicpos,complCode[(int) c2]));
+    *g_alt = complCode[(int) c2_alt];
+    return complCode[(int) c2];
+  }
+}
+
+
+List_T
+Pairpool_add_genomeskip (bool *add_dashes_p, List_T pairs, int r, int c, int dist,
+			 char *genomesequence, char *genomesequenceuc,
+			 int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			 Univcoord_T chroffset, Univcoord_T chrhigh,
+			 int cdna_direction, bool watsonp, int dynprogindex, bool use_genomicseg_p) {
+  int j;
+  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt, c2, c2_alt;
+  int introntype;
+  int querycoord, leftgenomecoord, rightgenomecoord, genomecoord, temp, step;
+
+  querycoord = r-1;
+  leftgenomecoord = c-dist;
+  rightgenomecoord = c-1;
+
+  if (revp == true) {
+    querycoord = -querycoord;
+    temp = leftgenomecoord;
+    leftgenomecoord = -rightgenomecoord;
+    rightgenomecoord = -temp;
+    step = +1;
+  } else {
+    /* Advance to next querypos */
+    /* querycoord++; -- No, this leads to bugs */
+    step = -1;
+  }
+  debug(printf("Entered Pairpool_add_genomeskip with r %d, c %d, revp %d => querycoord %d\n",r,c,revp,querycoord));
+
+  if (dist < MICROINTRON_LENGTH) {
+    *add_dashes_p = true;
+  } else {
+    /* Check for intron */
+    if (use_genomicseg_p) {
+      left1 = left1_alt = genomesequenceuc[leftgenomecoord];
+      left2 = left2_alt = genomesequenceuc[leftgenomecoord+1];
+      right2 = right2_alt = genomesequenceuc[rightgenomecoord-1];
+      right1 = right1_alt = genomesequenceuc[rightgenomecoord];
+    } else {
+      left1 = get_genomic_nt(&left1_alt,genomeoffset+leftgenomecoord,chroffset,chrhigh,watsonp);
+      left2 = get_genomic_nt(&left2_alt,genomeoffset+leftgenomecoord+1,chroffset,chrhigh,watsonp);
+      right2 = get_genomic_nt(&right2_alt,genomeoffset+rightgenomecoord-1,chroffset,chrhigh,watsonp);
+      right1 = get_genomic_nt(&right1_alt,genomeoffset+rightgenomecoord,chroffset,chrhigh,watsonp);
+    }
+#ifdef EXTRACT_GENOMICSEG
+    assert(left1 == genomesequenceuc[leftgenomecoord]);
+    assert(left2 == genomesequenceuc[leftgenomecoord+1]);
+    assert(right2 == genomesequenceuc[rightgenomecoord-1]);
+    assert(right1 == genomesequenceuc[rightgenomecoord]);
+#endif
+	
+#ifdef PMAP
+    introntype = Intron_type(left1,left2,right2,right1,
+			     left1_alt,left2_alt,right2_alt,right1_alt,
+			     /*cdna_direction*/+1);
+#else
+    introntype = Intron_type(left1,left2,right2,right1,
+			     left1_alt,left2_alt,right2_alt,right1_alt,
+			     cdna_direction);
+#endif
+
+#if 0
+    if (introntype == NONINTRON) {
+      *add_dashes_p = true;
+    } else {
+      *add_dashes_p = false;
+    }
+#endif
+    *add_dashes_p = false;
+  }
+
+  if (*add_dashes_p == true) {
+    if (revp == true) {
+      genomecoord = leftgenomecoord;
+    } else {
+      genomecoord = rightgenomecoord;
+    }
+    for (j = 0; j < dist; j++) {
+      if (use_genomicseg_p) {
+	c2 = c2_alt = genomesequence[genomecoord];
+      } else {
+	c2 = get_genomic_nt(&c2_alt,genomeoffset+genomecoord,chroffset,chrhigh,watsonp);
+      }
+#ifdef EXTRACT_GENOMICSEG
+      assert(c2 == genomesequence[genomecoord]);
+#endif
+
+      debug(printf("Pushing %d,%d [%d,%d] (-,%c),",r,c,queryoffset+querycoord,genomeoffset+genomecoord,c2));
+      pairs = Pairpool_push(pairs,pairpool,queryoffset+querycoord,genomeoffset+genomecoord,
+			    ' ',INDEL_COMP,c2,c2_alt,dynprogindex);
+      debug(c--);
+      genomecoord += step;
+    }
+  } else {
+    debug(printf("Large gap %c%c..%c%c.  Adding gap of type %d.\n",
+		 left1,left2,right2,right1,introntype));
+#ifndef NOGAPHOLDER
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/0,/*genomejump*/dist,
+				    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#endif
+  }
+  
+  return pairs;
+}
+
+
+/* Used for compacting pairs from working pairpool to final pairpool
+   (dest) at end of stage2 and stage3, so the working pairpool can be
+   re-used for the next gregion */
+List_T
+Pairpool_compact_copy (List_T list, T dest) {
+  List_T newlist = NULL, listcell;
+  Pair_T pair, orig;
+  List_T p, q;
+  int n;
+
+  for (q = list; q != NULL; q = q->rest) {
+    orig = (Pair_T) q->first;
+    
+    /* Following code taken from Pairpool_push_copy */
+    if (dest->pairctr >= dest->npairs) {
+      dest->pairptr = add_new_pairchunk(dest);
+    } else if ((dest->pairctr % CHUNKSIZE) == 0) {
+      for (n = dest->npairs - CHUNKSIZE, p = dest->pairchunks;
+	   n > dest->pairctr; p = p->rest, n -= CHUNKSIZE) ;
+      dest->pairptr = (struct Pair_T *) p->first;
+      debug1(printf("Located pair %d at %p\n",dest->pairctr,dest->pairptr));
+    }    
+    pair = dest->pairptr++;
+    dest->pairctr++;
+
+    memcpy(pair,orig,sizeof(struct Pair_T));
+
+    debug(
+	  printf("Copying %p: %d %d %c %c %c\n",
+		 pair,pair->querypos,pair->genomepos,pair->cdna,pair->comp,pair->genome);
+	  );
+
+    if (dest->listcellctr >= dest->nlistcells) {
+      dest->listcellptr = add_new_listcellchunk(dest);
+    } else if ((dest->listcellctr % CHUNKSIZE) == 0) {
+      for (n = dest->nlistcells - CHUNKSIZE, p = dest->listcellchunks;
+	   n > dest->listcellctr; p = p->rest, n -= CHUNKSIZE) ;
+      dest->listcellptr = (struct List_T *) p->first;
+      debug1(printf("Located listcell %d at %p\n",dest->listcellctr,dest->listcellptr));
+    }
+    listcell = dest->listcellptr++;
+    dest->listcellctr++;
+
+    listcell->first = (void *) pair;
+    listcell->rest = newlist;
+    newlist = listcell;
+  }
+
+  return List_reverse(newlist);
+}
+
diff --git a/src/pairpool.h b/src/pairpool.h
index b55fa85..4efa0b4 100644
--- a/src/pairpool.h
+++ b/src/pairpool.h
@@ -1,4 +1,4 @@
-/* $Id: pairpool.h 82070 2012-12-19 21:42:59Z twu $ */
+/* $Id: pairpool.h 132712 2014-04-08 20:29:38Z twu $ */
 #ifndef PAIRPOOL_INCLUDED
 #define PAIRPOOL_INCLUDED
 
@@ -24,10 +24,13 @@ extern List_T
 Pairpool_push (List_T list, T this, int querypos, int genomepos, char cdna, char comp,
 	       char genome, char genomealt, int dynprogindex);
 extern List_T
+Pairpool_push_copy (List_T list, T this, Pair_T orig);
+extern List_T
 Pairpool_push_gapalign (List_T list, T this, int querypos, int genomepos, char cdna, char comp,
 			int introntype, char genome, char genomealt, bool extraexonp);
 extern List_T
-Pairpool_push_gapholder (List_T list, T this, int queryjump, int genomejump, bool knownp);
+Pairpool_push_gapholder (List_T list, T this, int queryjump, int genomejump,
+			 Pair_T leftpair, Pair_T rightpair, bool knownp);
 extern List_T
 Pairpool_push_existing (List_T list, T this, Pair_T pair);
 extern List_T
@@ -44,6 +47,27 @@ extern List_T
 Pairpool_copy (List_T source, T this);
 extern struct Pair_T *
 Pairpool_copy_array (struct Pair_T *source, int npairs);
+extern void
+Pairpool_clean_join (List_T *left_path, List_T *right_pairs);
+extern List_T
+Pairpool_join_end3 (List_T path_orig, List_T end3_pairs_orig, Pairpool_T pairpool,
+		    bool copy_end_p);
+extern List_T
+Pairpool_join_end5 (List_T pairs_orig, List_T end5_path_orig, Pairpool_T pairpool,
+		    bool copy_end_p);
+
+extern List_T
+Pairpool_add_queryskip (List_T pairs, int r, int c, int dist, char *querysequence,
+			int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp, int dynprogindex);
+extern List_T
+Pairpool_add_genomeskip (bool *add_dashes_p, List_T pairs, int r, int c, int dist,
+			 char *genomesequence, char *genomesequenceuc,
+			 int queryoffset, int genomeoffset, Pairpool_T pairpool, bool revp,
+			 Univcoord_T chroffset, Univcoord_T chrhigh,
+			 int cdna_direction, bool watsonp, int dynprogindex, bool use_genomicseg_p);
+
+extern List_T
+Pairpool_compact_copy (List_T list, T dest);
 
 #undef T
 #endif
diff --git a/src/popcount.c b/src/popcount.c
new file mode 100644
index 0000000..75e0ae0
--- /dev/null
+++ b/src/popcount.c
@@ -0,0 +1,4116 @@
+static char rcsid[] = "$Id: popcount.c 116713 2013-11-27 19:46:01Z twu $";
+
+#ifndef HAVE_BUILTIN_CTZ
+const int mod_37_bit_position[] = 
+  {
+    32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, 11, 0, 13, 4,
+    7, 17, 0, 25, 22, 31, 15, 29, 10, 12, 6, 0, 21, 14, 9, 5,
+    20, 8, 19, 18
+  };
+#endif
+
+#ifndef HAVE_BUILTIN_POPCOUNT
+const int count_bits[] =
+{ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9,10, 7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  7, 8, 8, 9, 8, 9, 9,10, 8, 9, 9,10, 9,10,10,11, 8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  8, 9, 9,10, 9,10,10,11, 9,10,10,11,10,11,11,12, 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+  9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+ 10,11,11,12,11,12,12,13,11,12,12,13,12,13,13,14,11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,
+ 11,12,12,13,12,13,13,14,12,13,13,14,13,14,14,15,12,13,13,14,13,14,14,15,13,14,14,15,14,15,15,16,
+ };
+#endif
+
+#ifndef HAVE_BUILTIN_CLZ
+const int clz_table[] =
+{16,15,14,14,13,13,13,13,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+#endif
diff --git a/src/popcount.h b/src/popcount.h
new file mode 100644
index 0000000..fba82fd
--- /dev/null
+++ b/src/popcount.h
@@ -0,0 +1,18 @@
+/* $Id: popcount.h 116713 2013-11-27 19:46:01Z twu $ */
+#ifndef POPCOUNT_INCLUDED
+#define POPCOUNT_INCLUDED
+
+#ifndef HAVE_BUILTIN_CTZ
+extern const int mod_37_bit_position[];
+#endif
+
+#ifndef HAVE_BUILTIN_POPCOUNT
+extern const int count_bits[];
+#endif
+
+#ifndef HAVE_BUILTIN_CLZ
+extern const int clz_table[];
+#endif
+
+#endif
+
diff --git a/src/resulthr.c b/src/resulthr.c
index f973d90..9189f0d 100644
--- a/src/resulthr.c
+++ b/src/resulthr.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: resulthr.c 91116 2013-04-02 19:50:33Z twu $";
+static char rcsid[] = "$Id: resulthr.c 109569 2013-09-30 22:55:30Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -47,6 +47,7 @@ Pairtype_string (Pairtype_T pairtype) {
   case CONCORDANT: return "concordant";
   case PAIRED_UNSPECIFIED: return "paired_unspecified";
   case PAIRED_INVERSION: return "paired_scramble";
+  case PAIRED_SCRAMBLE: return "paired_scramble";
   case PAIRED_TOOLONG: return "paired_toolong";
   case CONCORDANT_TRANSLOCATIONS: return "concordant_translocations";
   case CONCORDANT_TERMINAL: return "concordant_terminal";
diff --git a/src/saca-k.c b/src/saca-k.c
new file mode 100644
index 0000000..ae76f1a
--- /dev/null
+++ b/src/saca-k.c
@@ -0,0 +1,509 @@
+#include "saca-k.h"
+#include <stdio.h>
+#include "bool.h"
+
+
+// Author: Ge Nong,  Email: issng at mail.sysu.edu.cn
+// Department of Computer Science, Sun Yat-sen University, 
+// Guangzhou, China
+// Date: December 24, 2012
+//
+// This is the demo source code for the algorithm SACA-K presented in this article:
+// G. Nong, Practical Linear-Time O(1)-Workspace Suffix Sorting for Constant Alphabets, 
+// ACM Transactions on Information Systems, Scheduled to Appear in July 2013.
+// A draft for this article can be retrieved from http://code.google.com/p/ge-nong/.
+
+#include <stdlib.h>
+
+// set only the highest bit as 1, i.e. 1000...
+const unsigned int EMPTY=((unsigned int)1)<<(sizeof(unsigned int)*8-1); 
+
+// get s[i] at a certain level
+#define chr(i) ((level==0)?((unsigned char *)s)[i]:((int *)s)[i])
+
+void getBuckets(unsigned char *s, 
+  unsigned int *bkt, unsigned int n,
+  unsigned int K, bool end) { 
+  unsigned int i, sum=0;
+  
+  // clear all buckets .
+  for(i=0; i<K; i++) bkt[i]=0; 
+  
+  // compute the size of each bucket .
+  for(i=0; i<n; i++) bkt[s[i]]++; 
+  
+  for(i=0; i<K; i++) { 
+    sum+=bkt[i]; 
+    bkt[i]=end ? sum-1 : sum-bkt[i]; 
+  }
+}
+
+void putSuffix0(unsigned int *SA, 
+  unsigned char *s, unsigned int *bkt, 
+  unsigned int n, unsigned int K, int n1) {
+  unsigned int i, j;
+
+  // find the end of each bucket.
+  getBuckets(s, bkt, n, K, true);
+
+  // put the suffixes into their buckets.
+  for(i=n1-1; i>0; i--) {
+    j=SA[i]; SA[i]=0;
+    SA[bkt[s[j]]--]=j;
+  }
+  SA[0]=n-1; // set the single sentinel suffix.
+}
+
+void induceSAl0(unsigned int *SA,
+  unsigned char *s, unsigned int *bkt,
+  unsigned int n, unsigned int K, bool suffix) {
+  unsigned int i, j;
+
+  // find the head of each bucket.
+  getBuckets(s, bkt, n, K, false);
+
+  bkt[0]++; // skip the virtual sentinel.
+  for(i=0; i<n; i++)
+    if(SA[i]>0) {
+      j=SA[i]-1;
+      if(s[j]>=s[j+1]) {
+        SA[bkt[s[j]]]=j;
+        bkt[s[j]]++;
+        if(!suffix && i>0) SA[i]=0;
+      }
+    }
+}
+
+void induceSAs0(unsigned int *SA,
+  unsigned char *s, unsigned int *bkt,
+  unsigned int n, unsigned int K, bool suffix) {
+  unsigned int i, j;
+
+  // find the end of each bucket.
+  getBuckets(s, bkt, n, K, true);
+
+  for(i=n-1; i>0; i--)
+    if(SA[i]>0) {
+      j=SA[i]-1;
+      if(s[j]<=s[j+1] && bkt[s[j]]<i) {
+        SA[bkt[s[j]]]=j;
+        bkt[s[j]]--;
+        if(!suffix) SA[i]=0;
+      }
+    }
+}
+
+void putSubstr0(unsigned int *SA,
+  unsigned char *s, unsigned int *bkt,
+  unsigned int n, unsigned int K) {
+  unsigned int i, cur_t, succ_t;
+
+  // find the end of each bucket.
+  getBuckets(s, bkt, n, K, true);
+
+  // set each item in SA as empty.
+  for(i=0; i<n; i++) SA[i]=0;
+
+  succ_t=0; // s[n-2] must be L-type.
+  for(i=n-2; i>0; i--) {
+    cur_t=(s[i-1]<s[i] ||
+           (s[i-1]==s[i] && succ_t==1)
+          )?1:0;
+    if(cur_t==0 && succ_t==1) SA[bkt[s[i]]--]=i;
+    succ_t=cur_t;
+  }
+
+  // set the single sentinel LMS-substring.
+  SA[0]=n-1;
+}
+
+void putSuffix1(int *SA, int *s, int n1) {
+  int i, j, pos, cur, pre=-1;
+  
+  for(i=n1-1; i>0; i--) {
+    j=SA[i]; SA[i]=EMPTY;
+    cur=s[j];
+    if(cur!=pre) {
+      pre=cur; pos=cur;
+    }
+    SA[pos--]=j;
+  }
+}
+
+void induceSAl1(int *SA, int *s, 
+  int n, bool suffix) {
+  int h, i, j, step=1;
+  
+  for(i=0; i<n; i+=step) {
+    step=1; j=SA[i]-1;
+    if(SA[i]<=0) continue;
+    int c=s[j], c1=s[j+1];
+    bool isL=c>=c1;
+    if(!isL) continue;
+
+    // s[j] is L-type.
+
+    int d=SA[c];
+    if(d>=0) {
+      // SA[c] is borrowed by the left
+      //   neighbor bucket.
+      // shift-left the items in the
+      //   left neighbor bucket.
+      int foo, bar;
+      foo=SA[c];
+      for(h=c-1; SA[h]>=0||SA[h]==EMPTY; h--)
+      { bar=SA[h]; SA[h]=foo; foo=bar; }
+      SA[h]=foo;
+      if(h<i) step=0;
+
+      d=EMPTY;
+    }
+
+    if(d==EMPTY) { // SA[c] is empty.
+      if(c<n-1 && SA[c+1]==EMPTY) {
+        SA[c]=-1; // init the counter.
+        SA[c+1]=j;
+      }
+      else        
+        SA[c]=j; // a size-1 bucket.
+    }
+    else { // SA[c] is reused as a counter.
+        int pos=c-d+1;
+        if(pos>n-1 || SA[pos]!=EMPTY) {
+          // we are running into the right
+          //   neighbor bucket.
+          // shift-left one step the items
+          //   of bucket(SA, S, j).
+          for(h=0; h<-d; h++)
+            SA[c+h]=SA[c+h+1];
+          pos--;
+          if(c<i) step=0;
+        }
+        else
+          SA[c]--;
+
+        SA[pos]=j;
+    }
+
+    int c2;
+    bool isL1=(j+1<n-1) && (c1>(c2=s[j+2]) || (c1==c2 && c1<i));  // is s[SA[i]] L-type?
+    if((!suffix || !isL1) && i>0) {
+      int i1=(step==0)?i-1:i;
+      SA[i1]=EMPTY;
+    }
+  }
+
+  // scan to shift-left the items in each bucket 
+  //   with its head being reused as a counter.
+  for(i=1; i<n; i++) {
+    j=SA[i];
+    if(j<0 && j!=EMPTY) { // is SA[i] a counter?
+      for(h=0; h<-j; h++)
+        SA[i+h]=SA[i+h+1];
+      SA[i+h]=EMPTY;
+    }
+  }
+}
+
+void induceSAs1(int *SA, int *s, 
+  int n, bool suffix) {
+  int h, i, j, step=1;
+  
+  for(i=n-1; i>0; i-=step) {
+    step=1; j=SA[i]-1;
+    if(SA[i]<=0) continue;
+    int c=s[j], c1=s[j+1];
+    bool isS=(c<c1) || (c==c1 && c>i);
+    if(!isS) continue;
+
+    // s[j] is S-type
+
+    int d=SA[c];
+    if(d>=0) {
+      // SA[c] is borrowed by the right
+      //   neighbor bucket.
+      // shift-right the items in the
+      //   right neighbor bucket.
+      int foo, bar;
+      foo=SA[c];
+      for(h=c+1; SA[h]>=0||SA[h]==EMPTY; h++)
+      { bar=SA[h]; SA[h]=foo; foo=bar; }
+      SA[h]=foo;
+      if(h>i) step=0;
+
+      d=EMPTY;
+    }
+
+    if(d==EMPTY) { // SA[c] is empty.
+      if(SA[c-1]==EMPTY) {
+        SA[c]=-1; // init the counter.
+        SA[c-1]=j;
+      }
+      else
+        SA[c]=j; // a size-1 bucket.
+    }
+    else { // SA[c] is reused as a counter.
+        int pos=c+d-1;
+        if(SA[pos]!=EMPTY) {
+          // we are running into the left
+          //   neighbor bucket.
+          // shift-right one step the items 
+          //   of bucket(SA, S, j).
+          for(h=0; h<-d; h++)
+            SA[c-h]=SA[c-h-1];
+          pos++;
+          if(c>i) step=0;
+        }
+        else
+          SA[c]--;
+
+        SA[pos]=j;
+    }
+
+    if(!suffix) {
+      int i1=(step==0)?i+1:i;
+      SA[i1]=EMPTY;
+    }
+  }
+
+  // scan to shift-right the items in each bucket
+  //   with its head being reused as a counter.
+  if(!suffix)
+    for(i=n-1; i>0; i--) {
+      j=SA[i];
+      if(j<0 && j!=EMPTY) { // is SA[i] a counter?
+        for(h=0; h<-j; h++)
+          SA[i-h]=SA[i-h-1];
+        SA[i-h]=EMPTY;
+      }
+    }
+}
+
+void putSubstr1(int *SA, int *s, int n) {
+  int h, i, j;
+
+  for(i=0; i<n; i++) SA[i]=EMPTY;
+
+  int c, c1, t, t1;
+  c1=s[n-2];
+  t1=0; 
+  for(i=n-2; i>0; i--) {
+    c=c1; t=t1; 
+    c1=s[i-1];
+    t1=c1<c || (c1==c && t);
+    if(t && !t1) {
+      if(SA[c]>=0) {
+        // SA[c] is borrowed by the right
+        //   neighbor bucket.
+        // shift-right the items in the
+        //   right neighbor bucket.
+        int foo, bar;
+        foo=SA[c];
+        for(h=c+1; SA[h]>=0; h++)
+        { bar=SA[h]; SA[h]=foo; foo=bar; }
+        SA[h]=foo;
+
+        SA[c]=EMPTY;
+      }
+
+      int d=SA[c];
+      if(d==EMPTY) { // SA[c] is empty.
+        if(SA[c-1]==EMPTY) {
+          SA[c]=-1; // init the counter.
+          SA[c-1]=i;
+        }
+        else
+          SA[c]=i; // a size-1 bucket.
+      }
+      else { // SA[c] is reused as a counter
+          int pos=c+d-1;
+          if(SA[pos]!=EMPTY) {
+            // we are running into the left
+            //   neighbor bucket.
+            // shift-right one step the items 
+            //   of bucket(SA, S, i).
+            for(h=0; h<-d; h++)
+              SA[c-h]=SA[c-h-1];
+            pos++;
+          }
+          else
+            SA[c]--;
+
+          SA[pos]=i;
+      }
+    }
+  }
+
+  // scan to shift-right the items in each bucket
+  //   with its head being reused as a counter.
+  for(i=n-1; i>0; i--) {
+    j=SA[i];
+    if(j<0 && j!=EMPTY) { // is SA[i] a counter?
+      for(h=0; h<-j; h++)
+        SA[i-h]=SA[i-h-1];
+      SA[i-h]=EMPTY;
+    }
+  }
+
+  // put the single sentinel LMS-substring.
+  SA[0]=n-1;
+}
+
+unsigned int getLengthOfLMS(unsigned char *s, 
+  unsigned int n, int level, unsigned int x) {
+  if(x==n-1) return 1;  
+  
+  unsigned int dist, i=1;  
+  while(1) {
+    if(chr(x+i)<chr(x+i-1)) break;
+    i++;
+  }  
+  while(1) {
+    if(x+i>n-1 || chr(x+i)>chr(x+i-1)) break;
+    if(x+i==n-1 || chr(x+i)<chr(x+i-1)) dist=i;
+    i++;
+  }
+  
+  return dist+1;
+}
+
+unsigned int nameSubstr(unsigned int *SA, 
+  unsigned char *s, unsigned int *s1, unsigned int n, 
+  unsigned int m, unsigned int n1, int level) {
+  unsigned int i, j, cur_t, succ_t;
+
+  // init the name array buffer
+  for(i=n1; i<n; i++) SA[i]=EMPTY;
+
+  // scan to compute the interim s1
+  unsigned int name, name_ctr=0;
+  unsigned int pre_pos, pre_len=0;
+  for(i=0; i<n1; i++) {
+    bool diff=false;
+    unsigned int len, pos=SA[i];
+    unsigned int d;
+
+    len=getLengthOfLMS(s, n, level, pos);
+    if(len!=pre_len) diff=true;
+    else
+      for(d=0; d<len; d++)
+        if(pos+d==n-1 || pre_pos+d==n-1 ||
+           chr(pos+d)!=chr(pre_pos+d)) {
+          diff=true; break;
+        }
+
+    if(diff) {
+      name=i; name_ctr++;
+      SA[name]=1; // a new name.
+      pre_pos=pos; pre_len=len;
+    }
+    else
+      SA[name]++; // count this name.
+
+    SA[n1+pos/2]=name;
+  }
+
+  // compact the interim s1 sparsely stored 
+  //   in SA[n1, n-1] into SA[m-n1, m-1].
+  for(i=n-1, j=m-1; i>=n1; i--)
+    if(SA[i]!=EMPTY) SA[j--]=SA[i];
+
+  // rename each S-type character of the
+  //   interim s1 as the end of its bucket
+  //   to produce the final s1.
+  succ_t=1;
+  for(i=n1-1; i>0; i--) {
+    int ch=s1[i], ch1=s1[i-1];
+    cur_t=(ch1< ch || (ch1==ch && succ_t==1))?1:0;
+    if(cur_t==1) {
+      s1[i-1]+=SA[s1[i-1]]-1;
+    }
+    succ_t=cur_t;
+  }
+
+  return name_ctr;
+}
+
+void getSAlms(unsigned int *SA, 
+  unsigned char *s, 
+  unsigned int *s1, unsigned int n, 
+  unsigned int n1, int level ) {
+  unsigned int i, j, cur_t, succ_t;
+
+  j=n1-1; s1[j--]=n-1;
+  succ_t=0; // s[n-2] must be L-type
+  for(i=n-2; i>0; i--) {
+    cur_t=(chr(i-1)<chr(i) ||
+          (chr(i-1)==chr(i) && succ_t==1))?1:0;
+    if(cur_t==0 && succ_t==1) s1[j--]=i;
+    succ_t=cur_t;
+  }
+
+  for(i=0; i<n1; i++) SA[i]=s1[SA[i]];
+  
+  // init SA[n1..n-1]
+  for(i=n1; i<n; i++) SA[i]=level?EMPTY:0; 
+}
+
+
+void SACA_K(unsigned char *s, unsigned int *SA,
+  unsigned int n, unsigned int K,
+  unsigned int m, int level) {
+  unsigned int i;
+  unsigned int *bkt=NULL;
+
+  fprintf(stderr,"SACA_K called with n = %u, K = %u, level %d\n",n,K,level);
+
+  // stage 1: reduce the problem by at least 1/2.
+
+  if(level==0) {
+    bkt=(unsigned int *)malloc(sizeof(int)*K);
+    putSubstr0(SA, s, bkt, n, K);
+    induceSAl0(SA, s, bkt, n, K, false);
+    induceSAs0(SA, s, bkt, n, K, false);
+  }
+  else {
+    putSubstr1((int *)SA, (int *)s,(int)n);
+    induceSAl1((int *)SA, (int *)s, n ,false);
+    induceSAs1((int *)SA, (int *)s, n, false);
+  }
+
+  // now, all the LMS-substrings are sorted and 
+  //   stored sparsely in SA.
+
+  // compact all the sorted substrings into
+  //   the first n1 items of SA.
+  // 2*n1 must be not larger than n.
+  unsigned int n1=0;
+  for(i=0; i<n; i++) 
+    if((!level&&SA[i]>0) || (level&&((int *)SA)[i]>0))
+      SA[n1++]=SA[i];
+
+  unsigned int *SA1=SA, *s1=SA+m-n1;
+  unsigned int name_ctr;
+  name_ctr=nameSubstr(SA,s,s1,n,m,n1,level);
+
+  // stage 2: solve the reduced problem.
+
+  // recurse if names are not yet unique.
+  if(name_ctr<n1)
+    SACA_K((unsigned char *)s1, SA1, 
+          n1, 0, m-n1, level+1);
+  else // get the suffix array of s1 directly.
+    for(i=0; i<n1; i++) SA1[s1[i]]=i;
+
+  // stage 3: induce SA(S) from SA(S1).
+
+  getSAlms(SA, s, s1, n, n1, level);
+  if(level==0) {
+    putSuffix0(SA, s, bkt, n, K, n1);
+    induceSAl0(SA, s, bkt, n, K, true);
+    induceSAs0(SA, s, bkt, n, K, true);
+    free(bkt);
+  }
+  else {
+    putSuffix1((int *)SA, (int *)s, n1);
+    induceSAl1((int *)SA, (int *)s, n, true);
+    induceSAs1((int *)SA, (int *)s, n, true);
+  }
+}
diff --git a/src/saca-k.h b/src/saca-k.h
new file mode 100644
index 0000000..77da781
--- /dev/null
+++ b/src/saca-k.h
@@ -0,0 +1,10 @@
+#ifndef SACA_K_INCLUDED
+#define SACA_K_INCLUDED
+
+
+extern void SACA_K (unsigned char *s, unsigned int *SA,
+		    unsigned int n, unsigned int K,
+		    unsigned int m, int level);
+
+#endif
+
diff --git a/src/samflags.h b/src/samflags.h
index 01a93d8..93c04b1 100644
--- a/src/samflags.h
+++ b/src/samflags.h
@@ -1,4 +1,4 @@
-/* $Id: samflags.h 44093 2011-08-01 23:14:17Z twu $ */
+/* $Id: samflags.h 115429 2013-11-18 18:19:14Z twu $ */
 #ifndef SAMFLAGS_INCLUDED
 #define SAMFLAGS_INCLUDED
 
@@ -22,5 +22,32 @@
 /* For forcing a read to be primary */
 #define SET_PRIMARY        0xFEFF /* do a logical-and (&) with this */
 
+
+/* XO tag for output type */
+#define ABBREV_NOMAPPING_1 "NM"
+#define ABBREV_NOMAPPING_2 "NM"
+#define ABBREV_HALFMAPPING_UNIQ "HU"
+#define ABBREV_HALFMAPPING_CIRCULAR "HC"
+#define ABBREV_HALFMAPPING_TRANSLOC "HT"
+#define ABBREV_HALFMAPPING_MULT "HM"
+#define ABBREV_HALFMAPPING_MULT_XS "HX"
+#define ABBREV_UNPAIRED_UNIQ "UU"
+#define ABBREV_UNPAIRED_CIRCULAR "UC"
+#define ABBREV_UNPAIRED_TRANSLOC "UT"
+#define ABBREV_UNPAIRED_MULT "UM"
+#define ABBREV_UNPAIRED_MULT_XS "UX"
+#define ABBREV_PAIRED_UNIQ_CIRCULAR "PC"
+#define ABBREV_PAIRED_UNIQ_INV "PI"
+#define ABBREV_PAIRED_UNIQ_SCR "PS"
+#define ABBREV_PAIRED_UNIQ_LONG "PL"
+#define ABBREV_PAIRED_MULT "PM"
+#define ABBREV_PAIRED_MULT_XS "PX"
+#define ABBREV_CONCORDANT_UNIQ "CU"
+#define ABBREV_CONCORDANT_CIRCULAR "CC"
+#define ABBREV_CONCORDANT_TRANSLOC "CT"
+#define ABBREV_CONCORDANT_MULT "CM"
+#define ABBREV_CONCORDANT_MULT_XS "CX"
+
+
 #endif
 
diff --git a/src/samheader.c b/src/samheader.c
new file mode 100644
index 0000000..756bab1
--- /dev/null
+++ b/src/samheader.c
@@ -0,0 +1,52 @@
+static char rcsid[] = "$Id: samheader.c 112663 2013-10-25 16:57:13Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "samheader.h"
+
+
+void
+SAM_header_print_HD (FILE *fp, int nworkers, bool orderedp) {
+  fprintf(fp,"@HD");
+  fprintf(fp,"\tVN:1.0");	/* or 1.4 */
+  if (nworkers > 1 && orderedp == false) {
+    fprintf(fp,"\tSO:unsorted");
+  } else {
+    /* Picard does not recognize type unknown */
+    /* fprintf(fp,"\tSO:unknown"); */
+    fprintf(fp,"\tSO:unsorted");
+  }
+  fprintf(fp,"\n");
+  return;
+}
+
+
+void
+SAM_header_print_PG (FILE *fp, int argc, char **argv, int optind) {
+  char **argstart;
+  int c;
+
+  fprintf(fp,"@PG");
+#ifdef GSNAP
+  fprintf(fp,"\tID:GSNAP");
+  fprintf(fp,"\tPN:gsnap");
+#elif defined(PMAP)
+  fprintf(fp,"\tID:PMAP");
+  fprintf(fp,"\tPN:pmap");
+#else
+  fprintf(fp,"\tID:GMAP");
+  fprintf(fp,"\tPN:gmap");
+#endif
+  fprintf(fp,"\tVN:%s",PACKAGE_VERSION);
+
+  fprintf(fp,"\tCL:");
+  argstart = &(argv[-optind]);
+  fprintf(fp,"%s",argstart[0]);
+  for (c = 1; c < argc + optind; c++) {
+    fprintf(fp," %s",argstart[c]);
+  }
+  fprintf(fp,"\n");
+  return;
+}
+
diff --git a/src/samheader.h b/src/samheader.h
new file mode 100644
index 0000000..a94234e
--- /dev/null
+++ b/src/samheader.h
@@ -0,0 +1,14 @@
+/* $Id: samheader.h 103701 2013-08-02 23:04:54Z twu $ */
+#ifndef SAMHEADER_INCLUDED
+#define SAMHEADER_INCLUDED
+
+#include <stdio.h>
+#include "bool.h"
+
+extern void
+SAM_header_print_HD (FILE *fp, int nworkers, bool orderedp);
+extern void
+SAM_header_print_PG (FILE *fp, int argc, char **argv, int optind);
+
+#endif
+
diff --git a/src/samprint.c b/src/samprint.c
index c59b411..2ced66a 100644
--- a/src/samprint.c
+++ b/src/samprint.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: samprint.c 101110 2013-07-11 03:31:01Z twu $";
+static char rcsid[] = "$Id: samprint.c 138718 2014-06-11 17:06:57Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -54,15 +54,24 @@ static char rcsid[] = "$Id: samprint.c 101110 2013-07-11 03:31:01Z twu $";
 
 static bool quiet_if_excessive_p;
 static int maxpaths_report;
+static char *failedinput_root;
+static bool fastq_format_p;
+static bool hide_soft_clips_p = true;
+
 static bool sam_multiple_primaries_p;
 static bool force_xs_direction_p;
 static bool md_lowercase_variant_p;
 static IIT_T snps_iit;
 
 void
-SAM_setup (bool quiet_if_excessive_p_in, int maxpaths_report_in, bool sam_multiple_primaries_p_in,
+SAM_setup (bool quiet_if_excessive_p_in, int maxpaths_report_in,
+	   char *failedinput_root_in, bool fastq_format_p_in, bool hide_soft_clips_p_in,
+	   bool sam_multiple_primaries_p_in,
 	   bool force_xs_direction_p_in, bool md_lowercase_variant_p_in, IIT_T snps_iit_in) {
   quiet_if_excessive_p = quiet_if_excessive_p_in;
+  failedinput_root = failedinput_root_in;
+  fastq_format_p = fastq_format_p_in;
+  hide_soft_clips_p = hide_soft_clips_p_in;
   maxpaths_report = maxpaths_report_in;
   sam_multiple_primaries_p = sam_multiple_primaries_p_in;
   force_xs_direction_p = force_xs_direction_p_in;
@@ -72,6 +81,135 @@ SAM_setup (bool quiet_if_excessive_p_in, int maxpaths_report_in, bool sam_multip
 }
 
 
+static FILE *fp_failedinput_1;
+static FILE *fp_failedinput_2;
+
+static FILE *fp_nomapping;
+static FILE *fp_unpaired_uniq;
+static FILE *fp_unpaired_circular;
+static FILE *fp_unpaired_transloc;
+static FILE *fp_unpaired_mult;
+static FILE *fp_unpaired_mult_xs_1;
+static FILE *fp_unpaired_mult_xs_2;
+static FILE *fp_halfmapping_uniq;
+static FILE *fp_halfmapping_circular;
+static FILE *fp_halfmapping_transloc;
+static FILE *fp_halfmapping_mult;
+static FILE *fp_halfmapping_mult_xs_1;
+static FILE *fp_halfmapping_mult_xs_2;
+static FILE *fp_paired_uniq_circular;
+static FILE *fp_paired_uniq_inv;
+static FILE *fp_paired_uniq_scr;
+static FILE *fp_paired_uniq_long;
+static FILE *fp_paired_mult;
+static FILE *fp_paired_mult_xs_1;
+static FILE *fp_paired_mult_xs_2;
+static FILE *fp_concordant_uniq;
+static FILE *fp_concordant_circular;
+static FILE *fp_concordant_transloc;
+static FILE *fp_concordant_mult;
+static FILE *fp_concordant_mult_xs_1;
+static FILE *fp_concordant_mult_xs_2;
+
+
+void
+SAM_file_setup_single (FILE *fp_failedinput_in, FILE *fp_nomapping_in,
+		       FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+		       FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in) {
+
+  fp_failedinput_1 = fp_failedinput_in;
+
+  fp_nomapping = fp_nomapping_in;
+  fp_unpaired_uniq = fp_unpaired_uniq_in;
+  fp_unpaired_circular = fp_unpaired_circular_in;
+  fp_unpaired_transloc = fp_unpaired_transloc_in;
+  fp_unpaired_mult = fp_unpaired_mult_in;
+  fp_unpaired_mult_xs_1 = fp_unpaired_mult_xs_1_in;
+
+  return;
+}
+
+void
+SAM_file_setup_paired (FILE *fp_failedinput_1_in, FILE *fp_failedinput_2_in, FILE *fp_nomapping_in, 
+		       FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+		       FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+		       FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+		       FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+		       FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+		       FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in) {
+
+  fp_failedinput_1 = fp_failedinput_1_in;
+  fp_failedinput_2 = fp_failedinput_2_in;
+
+  fp_nomapping = fp_nomapping_in;
+  fp_halfmapping_uniq = fp_halfmapping_uniq_in;
+  fp_halfmapping_circular = fp_halfmapping_circular_in;
+  fp_halfmapping_transloc = fp_halfmapping_transloc_in;
+  fp_halfmapping_mult = fp_halfmapping_mult_in;
+  fp_halfmapping_mult_xs_1 = fp_halfmapping_mult_xs_1_in;
+  fp_halfmapping_mult_xs_2 = fp_halfmapping_mult_xs_2_in;
+  fp_paired_uniq_circular = fp_paired_uniq_circular_in;
+  fp_paired_uniq_inv = fp_paired_uniq_inv_in;
+  fp_paired_uniq_scr = fp_paired_uniq_scr_in;
+  fp_paired_uniq_long = fp_paired_uniq_long_in;
+  fp_paired_mult = fp_paired_mult_in;
+  fp_paired_mult_xs_1 = fp_paired_mult_xs_1_in;
+  fp_paired_mult_xs_2 = fp_paired_mult_xs_2_in;
+  fp_concordant_uniq = fp_concordant_uniq_in;
+  fp_concordant_circular = fp_concordant_circular_in;
+  fp_concordant_transloc = fp_concordant_transloc_in;
+  fp_concordant_mult = fp_concordant_mult_in;
+  fp_concordant_mult_xs_1 = fp_concordant_mult_xs_1_in;
+  fp_concordant_mult_xs_2 = fp_concordant_mult_xs_2_in;
+
+  return;
+}
+
+void
+SAM_file_setup_all (FILE *fp_failedinput_1_in, FILE *fp_failedinput_2_in, FILE *fp_nomapping_in,
+		    FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+		    FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in, FILE *fp_unpaired_mult_xs_2_in,
+		    FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+		    FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+		    FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+		    FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+		    FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+		    FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in) {
+  
+  fp_failedinput_1 = fp_failedinput_1_in;
+  fp_failedinput_2 = fp_failedinput_2_in;
+
+  fp_nomapping = fp_nomapping_in;
+  fp_unpaired_uniq = fp_unpaired_uniq_in;
+  fp_unpaired_circular = fp_unpaired_circular_in;
+  fp_unpaired_transloc = fp_unpaired_transloc_in;
+  fp_unpaired_mult = fp_unpaired_mult_in;
+  fp_unpaired_mult_xs_1 = fp_unpaired_mult_xs_1_in;
+  fp_unpaired_mult_xs_2 = fp_unpaired_mult_xs_2_in;
+  fp_halfmapping_uniq = fp_halfmapping_uniq_in;
+  fp_halfmapping_circular = fp_halfmapping_circular_in;
+  fp_halfmapping_transloc = fp_halfmapping_transloc_in;
+  fp_halfmapping_mult = fp_halfmapping_mult_in;
+  fp_halfmapping_mult_xs_1 = fp_halfmapping_mult_xs_1_in;
+  fp_halfmapping_mult_xs_2 = fp_halfmapping_mult_xs_2_in;
+  fp_paired_uniq_circular = fp_paired_uniq_circular_in;
+  fp_paired_uniq_inv = fp_paired_uniq_inv_in;
+  fp_paired_uniq_scr = fp_paired_uniq_scr_in;
+  fp_paired_uniq_long = fp_paired_uniq_long_in;
+  fp_paired_mult = fp_paired_mult_in;
+  fp_paired_mult_xs_1 = fp_paired_mult_xs_1_in;
+  fp_paired_mult_xs_2 = fp_paired_mult_xs_2_in;
+  fp_concordant_uniq = fp_concordant_uniq_in;
+  fp_concordant_circular = fp_concordant_circular_in;
+  fp_concordant_transloc = fp_concordant_transloc_in;
+  fp_concordant_mult = fp_concordant_mult_in;
+  fp_concordant_mult_xs_1 = fp_concordant_mult_xs_1_in;
+  fp_concordant_mult_xs_2 = fp_concordant_mult_xs_2_in;
+
+  return;
+}
+
+
 unsigned int
 SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
 		  bool first_read_p, int pathnum, int npaths, int npaths_mate,
@@ -123,8 +261,8 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
       /* Can distinguish concordant mappings by presence of insert length */
       debug(printf("PAIRED_MAPPING %d\n",PAIRED_MAPPING));
       flag |= PAIRED_MAPPING;
-      if (Stage3end_chrnum(mate) == 0) {
-	/* Splice without a direction */
+      if (0 && Stage3end_chrnum(mate) == 0) {
+	/* Splice without a direction.  But want the effective plusp anyway. */
 
       } else if (Stage3end_plusp(mate) == invert_mate_p) {
 	debug(printf("MATE_MINUSP %d\n",MATE_MINUSP));
@@ -136,8 +274,8 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
 	 However, we are no longer counting UNPAIRED_UNIQ as a "paired" mapping. */
       debug(printf("PAIRED_MAPPING %d\n",PAIRED_MAPPING));
       flag |= PAIRED_MAPPING;
-      if (Stage3end_chrnum(mate) == 0) {
-	/* Splice without a direction */
+      if (0 && Stage3end_chrnum(mate) == 0) {
+	/* Splice without a direction.  But want the effective plusp anyway. */
 
       } else if (Stage3end_plusp(mate) == invert_mate_p) {
 	debug(printf("MATE_MINUSP %d\n",MATE_MINUSP));
@@ -145,8 +283,9 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
       }
 
     } else {
-      if (Stage3end_chrnum(mate) == 0) {
-	/* Splice without a direction */
+      if (0 && Stage3end_chrnum(mate) == 0) {
+	/* Splice without a direction.  But want the effective plusp anyway. */
+
       } else if (Stage3end_plusp(mate) == invert_mate_p) {
 	debug(printf("MATE_MINUSP %d\n",MATE_MINUSP));
 	flag |= MATE_MINUSP;
@@ -171,8 +310,9 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
 
 
 Chrpos_T
-SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
-		    Substring_T substring_low, int querylength) {
+SAM_compute_chrpos (int *hardclip_low, int *hardclip_high,
+		    int clipdir, int hardclip5, int hardclip3, bool firstp,
+		    Stage3end_T this, Substring_T substring_low, int querylength) {
   Chrpos_T chrpos;
   Substring_T substring;
   int querystart, queryend;
@@ -182,9 +322,10 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
     return 0U;
 
   } else if (Stage3end_hittype(this) == GMAP) {
-    chrpos = Pair_genomicpos_low(&(*hardclip_low),&(*hardclip_high),
+    chrpos = Pair_genomicpos_low(clipdir,hardclip5,hardclip3,
 				 Stage3end_pairarray(this),Stage3end_npairs(this),
-				 querylength,/*watsonp*/Stage3end_plusp(this));
+				 querylength,/*watsonp*/Stage3end_plusp(this),firstp,
+				 hide_soft_clips_p);
 
   } else {
     if (substring_low != NULL) {
@@ -195,7 +336,12 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 
     if (plusp == true) {
       /* Add 1 to report in 1-based coordinates */
-      if (*hardclip_low > Substring_querystart(substring_low)) {
+      if (hide_soft_clips_p == true) {
+	querystart = Substring_querystart_orig(substring_low);
+      } else {
+	querystart = Substring_querystart(substring_low);
+      }
+      if (*hardclip_low > querystart) {
 	substring = (Substring_T) NULL;
 	while (*hardclip_low < querylength && substring == NULL) {
 	  substring = Stage3end_substring_containing(this,*hardclip_low);
@@ -207,9 +353,13 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 	  return 0U;
 	}
 
-	chrpos = Substring_alignstart_trim(substring) - Substring_chroffset(substring) + 1U;
-	querystart = Substring_querystart(substring);
-	queryend = Substring_queryend(Stage3end_substring_high(this));
+	if (hide_soft_clips_p == true) {
+	  chrpos = Substring_alignstart(substring) - Substring_chroffset(substring) + 1U;
+	  queryend = Substring_queryend_orig(Stage3end_substring_high(this));
+	} else {
+	  chrpos = Substring_alignstart_trim(substring) - Substring_chroffset(substring) + 1U;
+	  queryend = Substring_queryend(Stage3end_substring_high(this));
+	}
 
 #if 0
 	fprintf(stderr,"case 1, hardclip_low %d, hardclip_high %d, querystart %d, queryend %d\n",
@@ -228,8 +378,13 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 	chrpos += (*hardclip_low) - querystart;
 
       } else {
-	querystart = Substring_querystart(substring_low);
-	queryend = Substring_queryend(Stage3end_substring_high(this));
+	if (hide_soft_clips_p == true) {
+	  querystart = Substring_querystart_orig(substring_low);
+	  queryend = Substring_queryend_orig(Stage3end_substring_high(this));
+	} else {
+	  querystart = Substring_querystart(substring_low);
+	  queryend = Substring_queryend(Stage3end_substring_high(this));
+	}
 
 #if 0
 	fprintf(stderr,"case 2, hardclip_low %d, hardclip_high %d, querystart %d, queryend %d\n",
@@ -241,12 +396,22 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 	  return 0U;
 	}
 
-	chrpos = Substring_alignstart_trim(substring_low) - Substring_chroffset(substring_low) + 1U;
+	if (hide_soft_clips_p == true) {
+	  chrpos = Substring_alignstart(substring_low) - Substring_chroffset(substring_low) + 1U;
+	} else {
+	  chrpos = Substring_alignstart_trim(substring_low) - Substring_chroffset(substring_low) + 1U;
+	}
       }
 
     } else {
       /* Add 1 to report in 1-based coordinates */
-      if (querylength - *hardclip_low < Substring_queryend(substring_low)) {
+      if (hide_soft_clips_p == true) {
+	queryend = Substring_queryend_orig(substring_low);
+      } else {
+	queryend = Substring_queryend(substring_low);
+      }
+
+      if (querylength - *hardclip_low < queryend) {
 	substring = (Substring_T) NULL;
 	while (*hardclip_low < querylength && substring == NULL) {
 	  substring = Stage3end_substring_containing(this,querylength - 1 - (*hardclip_low));
@@ -258,9 +423,13 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 	  return 0U;
 	}
 
-	chrpos = Substring_alignend_trim(substring) - Substring_chroffset(substring) + 1U;
-	queryend = Substring_queryend(substring);
-	querystart = Substring_querystart(Stage3end_substring_high(this));
+	if (hide_soft_clips_p == true) {
+	  chrpos = Substring_alignend(substring) - Substring_chroffset(substring) + 1U;
+	  querystart = Substring_querystart_orig(Stage3end_substring_high(this));
+	} else {
+	  chrpos = Substring_alignend_trim(substring) - Substring_chroffset(substring) + 1U;
+	  querystart = Substring_querystart(Stage3end_substring_high(this));
+	}
 
 #if 0
 	fprintf(stderr,"case 3, hardclip_low %d, hardclip_high %d, querystart %d, queryend %d\n",
@@ -279,8 +448,13 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 
 	chrpos += queryend - (querylength - (*hardclip_low));
       } else {
-	querystart = Substring_querystart(Stage3end_substring_high(this));
-	queryend = Substring_queryend(substring_low);
+	if (hide_soft_clips_p == true) {
+	  querystart = Substring_querystart_orig(Stage3end_substring_high(this));
+	  queryend = Substring_queryend_orig(substring_low);
+	} else {
+	  querystart = Substring_querystart(Stage3end_substring_high(this));
+	  queryend = Substring_queryend(substring_low);
+	}
 
 #if 0
 	fprintf(stderr,"case 4, hardclip_low %d, hardclip_high %d, querystart %d, queryend %d\n",
@@ -292,7 +466,11 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 	  return 0U;
 	}
 
-	chrpos = Substring_alignend_trim(substring_low) - Substring_chroffset(substring_low) + 1U;
+	if (hide_soft_clips_p == true) {	
+	  chrpos = Substring_alignend(substring_low) - Substring_chroffset(substring_low) + 1U;
+	} else {
+	  chrpos = Substring_alignend_trim(substring_low) - Substring_chroffset(substring_low) + 1U;
+	}
       }
     }
   }
@@ -302,17 +480,19 @@ SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
 
 
 static void
-print_chromosomal_pos (FILE *fp, Chrnum_T chrnum, Chrpos_T chrpos,
-		       Univ_IIT_T chromosome_iit) {
+print_chromosomal_pos (FILE *fp, Chrnum_T chrnum, Chrpos_T chrpos, Univ_IIT_T chromosome_iit) {
   bool allocp;
   char *chr;
 
+#if 0
   if (chrpos == 0U) {
     /* No mapping */
     fprintf(fp,"\t*\t0");
     return;
+  }
+#endif
 
-  } else if (chrnum == 0) {
+  if (chrnum == 0) {
     /* Interchromosomal splice */
     fprintf(stderr,"Trying to print interchrosomal splice in one line\n");
     abort();
@@ -396,7 +576,7 @@ make_complement_buffered (char *complement, char *sequence, unsigned int length)
 
 
 void
-SAM_print_nomapping (FILE *fp, Shortread_T queryseq, Stage3end_T mate, char *acc1, char *acc2,
+SAM_print_nomapping (FILE *fp, char *abbrev, Shortread_T queryseq, Stage3end_T mate, char *acc1, char *acc2,
 		     Univ_IIT_T chromosome_iit, Resulttype_T resulttype, bool first_read_p,
 		     int npaths_mate, Chrpos_T mate_chrpos, int quality_shift,
 		     char *sam_read_group_id, bool invertp, bool invert_mate_p) {
@@ -465,6 +645,10 @@ SAM_print_nomapping (FILE *fp, Shortread_T queryseq, Stage3end_T mate, char *acc
   /* 12. TAGS: XP */
   Shortread_print_chop(fp,queryseq,invertp);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   fprintf(fp,"\n");
   return;
 }
@@ -494,9 +678,12 @@ push_token (List_T tokens, char *token) {
   return List_push(tokens,(void *) copy);
 }
 
+
+#if 0
+/* Currently used for insertions and deletions */
 static List_T
-compute_cigar (List_T tokens, char type, int stringlength, int querypos, int querylength,
-	       int hardclip_low, int hardclip_high, bool plusp, bool firstp, bool lastp) {
+compute_cigar_old (List_T tokens, char type, int stringlength, int querypos, int querylength,
+		   int hardclip_low, int hardclip_high, bool plusp, bool firstp, bool lastp) {
   char token[10];
   
   debug1(printf("\nEntering compute_cigar with type %c, stringlength %d, querypos %d, querylength %d, hardclip_low %d, hardclip_high %d, plusp %d\n",
@@ -636,6 +823,117 @@ compute_cigar (List_T tokens, char type, int stringlength, int querypos, int que
 
   return tokens;
 }
+#endif
+
+
+/* Currently used for insertions and deletions */
+static List_T
+compute_cigar (List_T tokens, char type, int stringlength, int querypos, int querylength,
+	       int hardclip_low, int hardclip_high, bool plusp, int lastp) {
+  int matchlength = 0;
+  int startpos, endpos;
+  int cliplength = 0;
+  char token[10];
+  
+  if (plusp == true) {
+    debug1(printf("\nEntering compute_cigar with type %c, stringlength %d, querypos %d, querylength %d, hardclip_low %d, hardclip_high %d, plus\n",
+		  type,stringlength,querypos,querylength,hardclip_low,hardclip_high));
+    if (hardclip_low > querypos) { /* > not >= */
+      startpos = hardclip_low;
+      cliplength = hardclip_low;
+    } else {
+      startpos = querypos;
+    }
+
+    if (querylength - hardclip_high < querypos + stringlength) {
+      endpos = querylength - hardclip_high;
+      debug1(printf("  endpos %d = querylength %d - hardclip_high %d\n",endpos,querylength,hardclip_high));
+    } else {
+      endpos = querypos + stringlength;
+      debug1(printf("  endpos %d = querypos %d + stringlength %d\n",endpos,querypos,stringlength));
+    }
+
+    debug1(printf("  new startpos %d, endpos %d, cliplength %d\n",startpos,endpos,cliplength));
+
+    if (endpos >= startpos) {
+      if (cliplength > 0) {
+	debug1(printf("  Pushing initial %dH\n",cliplength));
+	sprintf(token,"%dH",cliplength);
+	debug1(printf("Pushing token %s\n",token));
+	tokens = push_token(tokens,token);
+      }
+      matchlength = endpos - startpos;
+      if (matchlength > 0) {
+	debug1(printf("  Pushing %d%c\n",matchlength,type));
+	sprintf(token,"%d%c",matchlength,type);
+	debug1(printf("Pushing token %s\n",token));
+	tokens = push_token(tokens,token);
+      }
+    }
+
+
+    if (lastp == true) {
+      /* cliplength = querypos + stringlength - endpos; */
+      cliplength = querylength - endpos;
+      if (cliplength > 0) {
+	debug1(printf("  Pushing final %dH\n",cliplength));
+	sprintf(token,"%dH",cliplength);
+	debug1(printf("Pushing token %s\n",token));
+	tokens = push_token(tokens,token);
+      }
+    }
+
+  } else {
+    debug1(printf("\nEntering compute_cigar with type %c, stringlength %d, querypos %d, querylength %d, hardclip_low %d, hardclip_high %d, minus\n",
+		  type,stringlength,querypos,querylength,hardclip_low,hardclip_high));
+
+    if (querylength - hardclip_low < querypos) {
+      startpos = querylength - hardclip_low;
+      cliplength = hardclip_low;
+    } else {
+      startpos = querypos;
+    }
+
+    if (hardclip_high >= querypos - stringlength) {
+      endpos = hardclip_high;
+      debug1(printf("  endpos %d = hardclip_high %d\n",endpos,hardclip_high));
+    } else {
+      endpos = querypos - stringlength;
+      debug1(printf("  endpos %d = querypos %d - stringlength %d\n",endpos,querypos,stringlength));
+    }
+
+    debug1(printf("  new startpos %d, endpos %d, cliplength %d\n",startpos,endpos,cliplength));
+
+    if (endpos <= startpos) {
+      if (cliplength > 0) {
+	debug1(printf("  Pushing initial %dH\n",cliplength));
+	sprintf(token,"%dH",cliplength);
+	debug1(printf("Pushing token %s\n",token));
+	tokens = push_token(tokens,token);
+      }
+      matchlength = startpos - endpos;
+      if (matchlength > 0) {
+	debug1(printf("  Pushing %d%c\n",matchlength,type));
+	sprintf(token,"%d%c",matchlength,type);
+	debug1(printf("Pushing token %s\n",token));
+	tokens = push_token(tokens,token);
+      }
+    }
+
+
+    if (lastp == true) {
+      cliplength = endpos;
+      if (cliplength > 0) {
+	debug1(printf("  Pushing final %dH\n",cliplength));
+	sprintf(token,"%dH",cliplength);
+	debug1(printf("Pushing token %s\n",token));
+	tokens = push_token(tokens,token);
+      }
+    }
+  }
+
+  return tokens;
+}
 
 
 static int
@@ -657,8 +955,10 @@ print_cigar (FILE *fp, char type, int stringlength, int querypos, int querylengt
 
     if (querylength - hardclip_high < querypos + stringlength) {
       endpos = querylength - hardclip_high;
+      debug1(printf("  endpos %d = querylength %d - hardclip_high %d\n",endpos,querylength,hardclip_high));
     } else {
       endpos = querypos + stringlength;
+      debug1(printf("  endpos %d = querypos %d + stringlength %d\n",endpos,querypos,stringlength));
     }
 
     debug1(printf("  new startpos %d, endpos %d, cliplength %d\n",startpos,endpos,cliplength));
@@ -698,8 +998,10 @@ print_cigar (FILE *fp, char type, int stringlength, int querypos, int querylengt
 
     if (hardclip_high >= querypos - stringlength) {
       endpos = hardclip_high;
+      debug1(printf("  endpos %d = hardclip_high %d\n",endpos,hardclip_high));
     } else {
       endpos = querypos - stringlength;
+      debug1(printf("  endpos %d = querypos %d - stringlength %d\n",endpos,querypos,stringlength));
     }
 
     debug1(printf("  new startpos %d, endpos %d, cliplength %d\n",startpos,endpos,cliplength));
@@ -944,7 +1246,8 @@ print_md_string (bool *printp, int *nmismatches_refdiff, int *nmismatches_bothdi
 
 
 static void
-print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+print_single (FILE *fp, char *abbrev, Hittype_T hittype, Stage3end_T this, Stage3end_T mate,
+	      char *acc1, char *acc2, int pathnum, int npaths,
 	      int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 	      Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 	      Chrpos_T chrpos, Chrpos_T mate_chrpos, int clipdir, int hardclip5, int hardclip3,
@@ -959,6 +1262,7 @@ print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *ac
   char *genomicfwd_refdiff, *genomicfwd_bothdiff, *genomicdir_refdiff, *genomicdir_bothdiff;
   bool plusp, printp;
 
+  debug(printf("print_single\n"));
 
   querylength = Shortread_fulllength(queryseq);
   plusp = Stage3end_plusp(this);
@@ -977,6 +1281,7 @@ print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *ac
       /* mate_hardclip_low = 0; */
       /* mate_hardclip_high = 0; */
     }
+
   } else {
     if (first_read_p == true) {
       if (clipdir >= 0) {
@@ -1030,26 +1335,41 @@ print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *ac
   fprintf(fp,"\t");
 
   if (plusp == true) {
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring),
-		/*querypos*/0,querylength,hardclip_low,hardclip_high,
-		/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring),
-		/*querypos*/Substring_querystart(substring),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring),
-		/*querypos*/Substring_queryend(substring),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    if (hide_soft_clips_p == true && hittype != TERMINAL) {
+      print_cigar(fp,/*type*/'M',
+		  Substring_querystart(substring) + Substring_match_length(substring) +
+		  (querylength - Substring_queryend(substring)),/*querypos*/0,querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    } else {
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring),
+		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/true,/*lastp*/false);
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring),
+		  /*querypos*/Substring_querystart(substring),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring),
+		  /*querypos*/Substring_queryend(substring),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    }
 
   } else {
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring),
-		/*querypos*/querylength,querylength,hardclip_low,hardclip_high,
-		/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring),
-		/*querypos*/Substring_queryend(substring),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring),
-		/*querypos*/Substring_querystart(substring),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    if (hide_soft_clips_p == true && hittype != TERMINAL) {
+      print_cigar(fp,/*type*/'M',
+		  (querylength - Substring_queryend(substring)) + 
+		  Substring_match_length(substring) + Substring_querystart(substring),
+		  /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/false,/*lastp*/true);
+    } else {
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring),
+		  /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/false,/*lastp*/false);
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring),
+		  /*querypos*/Substring_queryend(substring),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring),
+		  /*querypos*/Substring_querystart(substring),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    }
   }
 
 
@@ -1111,8 +1431,13 @@ print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *ac
   fprintf(fp,"MD:Z:");  
   printp = false;
 
-  substring_start = Substring_querystart(substring);
-  substring_length = Substring_match_length(substring);
+  if (hide_soft_clips_p == true) {
+    substring_start = Substring_querystart_orig(substring);
+    substring_length = Substring_match_length_orig(substring);
+  } else {
+    substring_start = Substring_querystart(substring);
+    substring_length = Substring_match_length(substring);
+  }
 
   if ((genomicdir_bothdiff = Substring_genomic_bothdiff(substring)) == NULL) {
     if (plusp == true) {
@@ -1194,8 +1519,21 @@ print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *ac
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
   /* 12. TAGS: PG */
-  if (Stage3end_hittype(this) == TERMINAL) {
+  if (Stage3end_sarrayp(this) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
+  } else if (Stage3end_hittype(this) == TERMINAL) {
     fprintf(fp,"\t");
     fprintf(fp,"PG:Z:T");
   }
@@ -1206,7 +1544,8 @@ print_single (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *ac
 
 
 static void
-print_insertion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+print_insertion (FILE *fp, char *abbrev, Stage3end_T this, Stage3end_T mate,
+		 char *acc1, char *acc2, int pathnum, int npaths,
 		 int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		 Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		 Chrpos_T chrpos, Chrpos_T mate_chrpos, int clipdir, int hardclip5, int hardclip3,
@@ -1218,7 +1557,6 @@ print_insertion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
   int nmismatches_refdiff = 0, nmismatches_bothdiff = 0, querylength;
   char *genomicfwd_refdiff, *genomicfwd_bothdiff, *genomicdir_refdiff, *genomicdir_bothdiff;
   int substring1_start, substring2_start, substring1_length, substring2_length, matchlength, nindels;
-  int querypos;
   int hardclip_low, hardclip_high;
   /* int mate_hardclip_low, mate_hardclip_high; */
   bool plusp, printp;
@@ -1296,38 +1634,72 @@ print_insertion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
   fprintf(fp,"\t");
 
   if (plusp == true) {
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',Substring_querystart(substring1),
-				 /*querypos*/0,querylength,hardclip_low,hardclip_high,
-				 /*plusp*/true,/*firstp*/true,/*lastp*/false);
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring1),
-				 /*querypos*/Substring_querystart(substring1),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/true,/*firstp*/false,/*lastp*/false);
+    if (hide_soft_clips_p == true) {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',
+				   Substring_querystart(substring1) + Substring_match_length(substring1),
+				   /*querypos*/0,querylength,hardclip_low,hardclip_high,
+				   /*plusp*/true,/*lastp*/false);
+    } else {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',Substring_querystart(substring1),
+				   /*querypos*/0,querylength,hardclip_low,hardclip_high,
+				   /*plusp*/true,/*lastp*/false);
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring1),
+				   /*querypos*/Substring_querystart(substring1),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+    }
+
     cigar_tokens = compute_cigar(cigar_tokens,/*type*/'I',nindels,
 				 /*querypos*/Substring_queryend(substring1),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/true,/*firstp*/false,/*lastp*/false);
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring2),
-				 /*querypos*/Substring_querystart(substring2),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/true,/*firstp*/false,/*lastp*/false);
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',querylength - Substring_queryend(substring2),
-				 /*querypos*/Substring_queryend(substring2),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/true,/*firstp*/false,/*lastp*/true);
+				 hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+
+    if (hide_soft_clips_p == true) {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',
+				   Substring_match_length(substring2) + (querylength - Substring_queryend(substring2)),
+				   /*querypos*/Substring_querystart(substring2),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+    } else {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring2),
+				   /*querypos*/Substring_querystart(substring2),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',querylength - Substring_queryend(substring2),
+				   /*querypos*/Substring_queryend(substring2),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    }
 
   } else {
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',querylength - Substring_queryend(substring2),
-				 /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
-				 /*plusp*/false,/*firstp*/true,/*lastp*/false);
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring2),
-				 /*querypos*/Substring_queryend(substring2),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/false,/*firstp*/false,/*lastp*/false);
+    if (hide_soft_clips_p == true) {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',
+				   (querylength - Substring_queryend(substring2)) +
+				   Substring_match_length(substring2),
+				   /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+				   /*plusp*/false,/*lastp*/false);
+    } else {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',querylength - Substring_queryend(substring2),
+				   /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+				   /*plusp*/false,/*lastp*/false);
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring2),
+				   /*querypos*/Substring_queryend(substring2),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+    }
+
     cigar_tokens = compute_cigar(cigar_tokens,/*type*/'I',nindels,
 				 /*querypos*/Substring_querystart(substring2),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/false,/*firstp*/false,/*lastp*/false);
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring1),
-				 /*querypos*/Substring_queryend(substring1),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/false,/*firstp*/false,/*lastp*/false);
-    cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',Substring_querystart(substring1),
-				 /*querypos*/Substring_querystart(substring1),querylength,
-				 hardclip_low,hardclip_high,/*plusp*/false,/*firstp*/false,/*lastp*/true);
+				 hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+
+    if (hide_soft_clips_p == true) {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',
+				   Substring_match_length(substring1) +
+				   Substring_querystart(substring1),
+				   /*querypos*/Substring_queryend(substring1),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    } else {
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'M',Substring_match_length(substring1),
+				   /*querypos*/Substring_queryend(substring1),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      cigar_tokens = compute_cigar(cigar_tokens,/*type*/'S',Substring_querystart(substring1),
+				   /*querypos*/Substring_querystart(substring1),querylength,
+				   hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    }
   }
   cigar_tokens = Pair_clean_cigar(cigar_tokens,/*watsonp*/true);
   print_tokens_sam(fp,cigar_tokens);
@@ -1391,10 +1763,17 @@ print_insertion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
   fprintf(fp,"MD:Z:");
   printp = false;
 
-  substring1_start = Substring_querystart(substring1);
-  substring1_length = Substring_match_length(substring1);
-  substring2_start = Substring_querystart(substring2);
-  substring2_length = Substring_match_length(substring2);
+  if (hide_soft_clips_p == true) {
+    substring1_start = Substring_querystart_orig(substring1);
+    substring1_length = Substring_match_length_orig(substring1);
+    substring2_start = Substring_querystart_orig(substring2);
+    substring2_length = Substring_match_length_orig(substring2);
+  } else {
+    substring1_start = Substring_querystart(substring1);
+    substring1_length = Substring_match_length(substring1);
+    substring2_start = Substring_querystart(substring2);
+    substring2_length = Substring_match_length(substring2);
+  }
 
   if (plusp == true) {
     genomicfwd_refdiff = Substring_genomic_refdiff(substring1);
@@ -1506,6 +1885,21 @@ print_insertion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
+  /* 12. TAGS: PG */
+  if (Stage3end_sarrayp(this) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
+  }
 
   fprintf(fp,"\n");
   return;
@@ -1513,7 +1907,8 @@ print_insertion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
 
 
 static void
-print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+print_deletion (FILE *fp, char *abbrev, Stage3end_T this, Stage3end_T mate,
+		char *acc1, char *acc2, int pathnum, int npaths,
 		int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		Chrpos_T chrpos, Chrpos_T mate_chrpos, int clipdir, int hardclip5, int hardclip3,
@@ -1575,6 +1970,8 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
     }
   }
 
+#if 0
+  /* These cases are checked below */
   if (hardclip_low >= Substring_querystart(substring2)) {
     nindels = 0;
   } else if (querylength - hardclip_high <= Substring_queryend(substring1)) {
@@ -1582,6 +1979,9 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
   } else {
     nindels = Stage3end_nindels(this); /* nindels is positive */
   }
+#else
+  nindels = Stage3end_nindels(this); /* nindels is positive */
+#endif
 
 
   /* 1. QNAME */
@@ -1608,39 +2008,109 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
   /* 6. CIGAR */
   fprintf(fp,"\t");
 
+  if (hide_soft_clips_p == true) {
+    substring1_start = Substring_querystart_orig(substring1);
+    substring1_length = Substring_match_length_orig(substring1);
+    substring2_start = Substring_querystart_orig(substring2);
+    substring2_length = Substring_match_length_orig(substring2);
+  } else {
+    substring1_start = Substring_querystart(substring1);
+    substring1_length = Substring_match_length(substring1);
+    substring2_start = Substring_querystart(substring2);
+    substring2_length = Substring_match_length(substring2);
+  }
+
   if (plusp == true) {
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
-		/*querypos*/0,querylength,hardclip_low,hardclip_high,
-		/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
-		/*querypos*/Substring_querystart(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-    if (nindels > 0) {
-      fprintf(fp,"%dD",nindels);
-    }
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
-		/*querypos*/Substring_querystart(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
-		/*querypos*/Substring_queryend(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    if (hide_soft_clips_p == true) {
+      if (/*nindels > 0 &&*/ hardclip_low < substring1_start + substring1_length && hardclip_high < querylength - substring2_start) {
+	print_cigar(fp,/*type*/'M',
+		    Substring_querystart(substring1) +
+		    Substring_match_length(substring1),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	fprintf(fp,"%dD",nindels);
+	print_cigar(fp,/*type*/'M',
+		    Substring_match_length(substring2) +
+		    (querylength - Substring_queryend(substring2)),
+		    /*querypos*/Substring_querystart(substring2),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/'M',
+		    Substring_querystart(substring1) + 
+		    (Substring_match_length(substring1) +
+		     Substring_match_length(substring2)) +
+		    (querylength - Substring_queryend(substring2)),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/true);
+      }
+
+
+    } else {
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
+		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/true,/*lastp*/false);
+      if (/*nindels > 0 &&*/ hardclip_low < substring1_start + substring1_length && hardclip_high < querylength - substring2_start) {
+	print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
+		    /*querypos*/Substring_querystart(substring1),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+	fprintf(fp,"%dD",nindels);
+	print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
+		    /*querypos*/Substring_querystart(substring2),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      } else {
+	print_cigar(fp,/*type*/'M',Substring_match_length(substring1) + Substring_match_length(substring2),
+		    /*querypos*/Substring_querystart(substring1),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      }
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
+		  /*querypos*/Substring_queryend(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    }
 
   } else {
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
-		/*querypos*/querylength,querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
-		/*querypos*/Substring_queryend(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    if (nindels > 0) {
-      fprintf(fp,"%dD",nindels);
-    }
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
-		/*querypos*/Substring_querystart(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
-		/*querypos*/Substring_querystart(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    if (hide_soft_clips_p == true) {
+      if (/*nindels > 0 &&*/ hardclip_low < querylength - substring2_start && hardclip_high < substring1_start + substring1_length) {
+	print_cigar(fp,/*type*/'M',
+		    (querylength - Substring_queryend(substring2)) + 
+		    Substring_match_length(substring2),
+		    /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/false);
+	fprintf(fp,"%dD",nindels);
+	print_cigar(fp,/*type*/'M',
+		    Substring_match_length(substring1) +
+		    Substring_querystart(substring1),
+		    /*querypos*/Substring_querystart(substring2),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/'M',
+		    (querylength - Substring_queryend(substring2)) + 
+		    (Substring_match_length(substring2) + Substring_match_length(substring1)) +
+		    Substring_querystart(substring1),		    
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+      }
+
+    } else {
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
+		  /*querypos*/querylength,querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      if (/*nindels > 0 &&*/ hardclip_low < querylength - substring2_start && hardclip_high < substring1_start + substring1_length) {
+	print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
+		    /*querypos*/Substring_queryend(substring2),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	fprintf(fp,"%dD",nindels);
+	print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
+		    /*querypos*/Substring_querystart(substring2),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      } else {
+	print_cigar(fp,/*type*/'M',Substring_match_length(substring2) + Substring_match_length(substring1),
+		    /*querypos*/Substring_queryend(substring2),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      }
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
+		  /*querypos*/Substring_querystart(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    }
   }
 
   /* 7. MRNM: Mate chr */
@@ -1701,11 +2171,6 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
   fprintf(fp,"MD:Z:");
   printp = false;
 
-  substring1_start = Substring_querystart(substring1);
-  substring1_length = Substring_match_length(substring1);
-  substring2_start = Substring_querystart(substring2);
-  substring2_length = Substring_match_length(substring2);
-
   if (plusp == true) {
     genomicfwd_refdiff = Substring_genomic_refdiff(substring1);
     genomicfwd_bothdiff = Substring_genomic_bothdiff(substring1);
@@ -1714,9 +2179,15 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
 		    substring1_length,/*querypos*/substring1_start,querylength,
 		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
 
-    if (hardclip_low < substring2_start &&
-	querylength - hardclip_high > substring1_start + substring1_length) {
-      /* Deletion string: Potential problem if followed by a mismatch, but can be resolved by looking at CIGAR string */
+    debug1(printf("\nhardclip_low %d, hardclip_high %d\n",hardclip_low,hardclip_high));
+    debug1(printf("substring1_length %d, substring2_length %d\n",substring1_length,substring2_length));
+    debug1(printf("substring1 %d..%d, substring2 %d..%d\n",
+		  Substring_querystart(substring1),Substring_queryend(substring1),
+		  Substring_querystart(substring2),Substring_queryend(substring2)));
+    debug1(printf("trim1: %d..%d, trim2 %d..%d\n",
+		  Substring_trim_left(substring1),Substring_trim_right(substring1),
+		  Substring_trim_left(substring2),Substring_trim_right(substring2)));
+    if (hardclip_low < substring1_start + substring1_length && hardclip_high < querylength - substring2_start) {
       fprintf(fp,"^%s",Stage3end_deletion_string(this));
     }
 
@@ -1751,8 +2222,16 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
       FREE(genomicfwd_refdiff);
     }
 
-    if (querylength - hardclip_high > substring1_start + substring1_length &&
-	hardclip_low < substring2_start) {
+
+    debug1(printf("\nhardclip_low %d, hardclip_high %d\n",hardclip_low,hardclip_high));
+    debug1(printf("substring2_length %d, substring1_length %d\n",substring2_length,substring1_length));
+    debug1(printf("substring1 %d..%d, substring2 %d..%d\n",
+		  Substring_querystart(substring1),Substring_queryend(substring1),
+		  Substring_querystart(substring2),Substring_queryend(substring2)));
+    debug1(printf("trim1: %d..%d, trim2 %d..%d\n",
+		  Substring_trim_left(substring1),Substring_trim_right(substring1),
+		  Substring_trim_left(substring2),Substring_trim_right(substring2)));
+    if (hardclip_low < querylength - substring2_start && hardclip_high < substring1_start + substring1_length) {
       /* Deletion string: Potential problem if followed by a mismatch, but can be resolved by looking at CIGAR string */
       genomicfwd_deletion = (char *) CALLOC(nindels+1,sizeof(char));
       make_complement_buffered(genomicfwd_deletion,Stage3end_deletion_string(this),nindels);
@@ -1822,6 +2301,22 @@ print_deletion (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
+  /* 12. TAGS: PG */
+  if (Stage3end_sarrayp(this) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
+  }
+
   fprintf(fp,"\n");
   return;
 }
@@ -1880,17 +2375,17 @@ halfacceptor_dinucleotide (char *acceptor2, char *acceptor1, Substring_T accepto
 
 
 static void
-print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate,
+print_halfdonor (FILE *fp, char *abbrev, Substring_T donor, Stage3end_T this, Stage3end_T mate,
 		 char *acc1, char *acc2, int pathnum, int npaths, int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		 Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
-		 Chrpos_T concordant_chrpos, Chrpos_T chrpos, Chrpos_T mate_chrpos,
+		 Chrpos_T concordant_chrpos, Chrpos_T donor_chrpos, Chrpos_T acceptor_chrpos, Chrpos_T mate_chrpos,
 		 int clipdir, int hardclip5, int hardclip3, Resulttype_T resulttype, bool first_read_p, int npaths_mate,
 		 int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
-		 bool use_hardclip_p, bool print_xt_p, char donor1, char donor2, char acceptor2, char acceptor1,
+		 bool use_hardclip_p, bool print_xt_p, char donor_strand, char acceptor_strand,
+		 char *donor_chr, char *acceptor_chr, char donor1, char donor2, char acceptor2, char acceptor1,
 		 double donor_prob, double acceptor_prob, bool circularp) {
   unsigned int flag = 0U;
   int nmismatches_refdiff = 0, nmismatches_bothdiff = 0, querylength;
-  int sensedir;
   bool sensep;
   char *genomicfwd_refdiff, *genomicfwd_bothdiff, *genomicdir_refdiff, *genomicdir_bothdiff;
   int substring_start, substring_length;
@@ -1898,6 +2393,9 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
   /* int mate_hardclip_low, mate_hardclip_high; */
   int transloc_hardclip_low, transloc_hardclip_high;
   bool plusp, printp;
+  bool start_ambig, end_ambig;
+  int amb_nmatches_start, amb_nmatches_end;
+
 
   querylength = Shortread_fulllength(queryseq);
   plusp = Substring_plusp(donor);
@@ -1957,7 +2455,7 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
 
   /* 3. RNAME: chr */
   /* 4. POS: chrpos */
-  print_chromosomal_pos(fp,Substring_chrnum(donor),chrpos,chromosome_iit);
+  print_chromosomal_pos(fp,Substring_chrnum(donor),donor_chrpos,chromosome_iit);
   
 
   /* 5. MAPQ: Mapping quality */
@@ -1966,7 +2464,7 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
   /* 6. CIGAR */
   fprintf(fp,"\t");
   /* sensedir for chimera must be SENSE_FORWARD or SENSE_ANTI, not SENSE_NULL */
-  sensedir = Substring_chimera_sensedir(donor);
+  /* sensedir = Substring_chimera_sensedir(donor); */
   sensep = Substring_chimera_sensep(donor);
 
   if (use_hardclip_p == true) {
@@ -2004,61 +2502,108 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
     if (plusp == true) {
       /* sensep true */
       assert(Substring_chimera_pos(donor) == Substring_queryend(donor));
-      print_cigar(fp,/*type*/'S',Substring_querystart(donor),
-		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
-		  /*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(donor),
-		  /*querypos*/Substring_querystart(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(donor),
-		  /*querypos*/Substring_queryend(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/'M',
+		    Substring_querystart(donor) + 
+		    Substring_match_length(donor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(donor),
+		    /*querypos*/Substring_queryend(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+
+      } else {
+	print_cigar(fp,/*type*/'S',Substring_querystart(donor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(donor),
+		    /*querypos*/Substring_querystart(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(donor),
+		    /*querypos*/Substring_queryend(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      }
 
     } else {
       /* sensep false */
       assert(Substring_chimera_pos(donor) == Substring_querystart(donor));
-      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(donor),
-		  /*querypos*/querylength,querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(donor),
-		  /*querypos*/Substring_queryend(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(donor),
-		  /*querypos*/Substring_querystart(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/'M',
+		    (querylength - Substring_queryend(donor)) +
+		    Substring_match_length(donor),
+		    /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(donor),
+		      /*querypos*/Substring_querystart(donor),querylength,
+		      hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+
+      } else {
+	print_cigar(fp,/*type*/'S',querylength - Substring_queryend(donor),
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(donor),
+		    /*querypos*/Substring_queryend(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(donor),
+		    /*querypos*/Substring_querystart(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+      }
     }
 
   } else { /* sensep != Substring_plusp(donor) */
     if (plusp == true) {
       assert(Substring_chimera_pos(donor) == Substring_querystart(donor));
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(donor),
-		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
-		  /*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(donor),
-		  /*querypos*/Substring_querystart(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(donor),
-		  /*querypos*/Substring_queryend(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(donor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',
+		    Substring_match_length(donor) + 
+		    (querylength - Substring_queryend(donor)),
+		    /*querypos*/Substring_querystart(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(donor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(donor),
+		    /*querypos*/Substring_querystart(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'S',querylength - Substring_queryend(donor),
+		    /*querypos*/Substring_queryend(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      }
 
     } else {
       assert(Substring_chimera_pos(donor) == Substring_queryend(donor));
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(donor),
-		  /*querypos*/querylength,querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(donor),
-		  /*querypos*/Substring_queryend(donor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/'S',Substring_querystart(donor),
-		  /*querypos*/Substring_querystart(donor),querylength,hardclip_low,hardclip_high,
-		  /*plusp*/false,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(donor),
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',
+		    Substring_match_length(donor) +
+		    Substring_querystart(donor),
+		    /*querypos*/Substring_queryend(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(donor),
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(donor),
+		    /*querypos*/Substring_queryend(donor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'S',Substring_querystart(donor),
+		    /*querypos*/Substring_querystart(donor),querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/true);
+      }
     }
   }
 
   /* 7. MRNM: Mate chr */
   /* 8. MPOS: Mate chrpos */
+  /* For anchor_chrnum, previously used Stage3end_chrnum(this), but this is 0 */
   print_mate_chromosomal_pos(fp,Stage3end_chrnum(mate),Stage3end_effective_chrnum(mate),mate_chrpos,
-			     Stage3end_chrnum(this),chrpos,chromosome_iit);
+			     /*anchor_chrnum*/Substring_chrnum(donor),donor_chrpos,chromosome_iit);
 
 
   /* 9. ISIZE: Insert size */
@@ -2114,8 +2659,13 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
   fprintf(fp,"MD:Z:");
   printp = false;
 
-  substring_start = Substring_querystart(donor);
-  substring_length = Substring_match_length(donor);
+  if (hide_soft_clips_p == true) {
+    substring_start = Substring_querystart_orig(donor);
+    substring_length = Substring_match_length_orig(donor);
+  } else {
+    substring_start = Substring_querystart(donor);
+    substring_length = Substring_match_length(donor);
+  }
 
   if (use_hardclip_p == false) {
     genomicdir_refdiff = Substring_genomic_refdiff(donor);
@@ -2250,8 +2800,14 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   /* 12. TAGS: XS */
   fprintf(fp,"\t");
+#if 0
+  /* Not necessary to compute, because already computed by print_exon_exon */
   /* sensedir for chimera must be SENSE_FORWARD or SENSE_ANTI, not SENSE_NULL */
   if (sensedir == SENSE_FORWARD) {
     if (plusp == true) {
@@ -2270,11 +2826,61 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
   } else {
     fprintf(fp,"XS:A:?");
   }
+#else
+  fprintf(fp,"XS:A:%c",donor_strand);
+#endif
+
+
+
+  /* 12. TAGS: XA */
+  if ((start_ambig = Stage3end_start_ambiguous_p(this)) == true ||
+      (end_ambig = Stage3end_end_ambiguous_p(this)) == true) {
+#if 1
+    amb_nmatches_start = Stage3end_amb_nmatches_start(this);
+    amb_nmatches_end = Stage3end_amb_nmatches_end(this);
+    fprintf(fp,"\t");
+    if (plusp == true) {
+      fprintf(fp,"XA:Z:%d,%d",amb_nmatches_start,amb_nmatches_end);
+    } else {
+      fprintf(fp,"XA:Z:%d,%d",amb_nmatches_end,amb_nmatches_start);
+    }
+#else
+    fprintf(fp,"\t");
+    if (start_ambig == true && end_ambig == true) {
+      fprintf(fp,"XA:Z:T,T");
+    } else if (plusp == true) {
+      if (start_ambig == true) {
+        fprintf(fp,"XA:Z:T,F");
+      } else {
+        fprintf(fp,"XA:Z:F,T");
+      }
+    } else {
+      if (start_ambig == true) {
+        fprintf(fp,"XA:Z:F,T");
+      } else {
+        fprintf(fp,"XA:Z:T,F");
+      }
+    }
+#endif
+  }
 
   /* 12. TAGS: XT */
   if (print_xt_p == true) {
     fprintf(fp,"\t");
-    fprintf(fp,"XT:Z:%c%c-%c%c,%.2f,%.2f",donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob);
+    fprintf(fp,"XT:Z:%c%c-%c%c,%.2f,%.2f",donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob);
+    fprintf(fp,",%c%s:%u..%c%s:%u",donor_strand,donor_chr,donor_chrpos,acceptor_strand,acceptor_chr,acceptor_chrpos);
+  }
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
+  /* 12. TAGS: PG */
+  if (Stage3end_sarrayp(this) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
   }
 
   fprintf(fp,"\n");
@@ -2283,17 +2889,17 @@ print_halfdonor (FILE *fp, Substring_T donor, Stage3end_T this, Stage3end_T mate
 
 
 static void
-print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_T mate,
+print_halfacceptor (FILE *fp, char *abbrev, Substring_T acceptor, Stage3end_T this, Stage3end_T mate,
 		    char *acc1, char *acc2, int pathnum, int npaths, int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		    Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
-		    Chrpos_T concordant_chrpos, Chrpos_T chrpos, Chrpos_T mate_chrpos,
+		    Chrpos_T concordant_chrpos, Chrpos_T donor_chrpos, Chrpos_T acceptor_chrpos, Chrpos_T mate_chrpos,
 		    int clipdir, int hardclip5, int hardclip3, Resulttype_T resulttype, bool first_read_p, int npaths_mate,
 		    int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
-		    bool use_hardclip_p, bool print_xt_p, char donor1, char donor2, char acceptor2, char acceptor1,
+		    bool use_hardclip_p, bool print_xt_p, char donor_strand, char acceptor_strand,
+		    char *donor_chr, char *acceptor_chr, char donor1, char donor2, char acceptor2, char acceptor1,
 		    double donor_prob, double acceptor_prob, bool circularp) {
   unsigned int flag = 0U;
   int nmismatches_refdiff = 0, nmismatches_bothdiff = 0, querylength;
-  int sensedir;
   bool sensep;
   char *genomicfwd_refdiff, *genomicfwd_bothdiff, *genomicdir_refdiff, *genomicdir_bothdiff;
   int substring_start, substring_length;
@@ -2301,6 +2907,9 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
   /* int mate_hardclip_low, mate_hardclip_high; */
   int transloc_hardclip_low, transloc_hardclip_high;
   bool plusp, printp;
+  bool start_ambig, end_ambig;
+  int amb_nmatches_start, amb_nmatches_end;
+
 
   querylength = Shortread_fulllength(queryseq);
   plusp = Substring_plusp(acceptor);
@@ -2360,7 +2969,7 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
 
   /* 3. RNAME: chr */
   /* 4. POS: chrpos */
-  print_chromosomal_pos(fp,Substring_chrnum(acceptor),chrpos,chromosome_iit);
+  print_chromosomal_pos(fp,Substring_chrnum(acceptor),acceptor_chrpos,chromosome_iit);
 
 
   /* 5. MAPQ: Mapping quality */
@@ -2369,7 +2978,7 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
   /* 6. CIGAR */
   fprintf(fp,"\t");
   /* sensedir for chimera must be SENSE_FORWARD or SENSE_ANTI, not SENSE_NULL */
-  sensedir = Substring_chimera_sensedir(acceptor);
+  /* sensedir = Substring_chimera_sensedir(acceptor); */
   sensep = Substring_chimera_sensep(acceptor);
 
   if (use_hardclip_p == true) {
@@ -2406,62 +3015,107 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
     if (plusp == true) {
       /* sensep false */
       assert(Substring_chimera_pos(acceptor) == Substring_queryend(acceptor));
-      print_cigar(fp,/*type*/'S',Substring_querystart(acceptor),
-		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
-		  /*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
-		  /*querypos*/Substring_querystart(acceptor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(acceptor),
-		  /*querypos*/Substring_queryend(acceptor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/'M',
+		    Substring_querystart(acceptor) +
+		    Substring_match_length(acceptor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(acceptor),
+		    /*querypos*/Substring_queryend(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/'S',Substring_querystart(acceptor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
+		    /*querypos*/Substring_querystart(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(acceptor),
+		    /*querypos*/Substring_queryend(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      }
 
     } else {
       /* sensep true */
       assert(Substring_chimera_pos(acceptor) == Substring_querystart(acceptor));
-      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(acceptor),
-		  /*querypos*/querylength,querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
-		  /*querypos*/Substring_queryend(acceptor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(acceptor),
-		  /*querypos*/Substring_querystart(acceptor),querylength,hardclip_low,hardclip_high,
-		  /*plusp*/false,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/'M',
+		    (querylength - Substring_queryend(acceptor)) +
+		    Substring_match_length(acceptor),
+		    /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(acceptor),
+		    /*querypos*/Substring_querystart(acceptor),querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/'S',querylength - Substring_queryend(acceptor),
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
+		    /*querypos*/Substring_queryend(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(acceptor),
+		    /*querypos*/Substring_querystart(acceptor),querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/true);
+      }
     }
 
   } else { /*  sensep == Substring_plusp(acceptor) */
     if (plusp == true) {
       assert(Substring_chimera_pos(acceptor) == Substring_querystart(acceptor));
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(acceptor),
-		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
-		  /*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
-		  /*querypos*/Substring_querystart(acceptor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(acceptor),
-		  /*querypos*/Substring_queryend(acceptor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(acceptor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',
+		    Substring_match_length(acceptor) +
+		    (querylength - Substring_queryend(acceptor)),
+		    /*querypos*/Substring_querystart(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',Substring_querystart(acceptor),
+		    /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		    /*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
+		    /*querypos*/Substring_querystart(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+	print_cigar(fp,/*type*/'S',querylength - Substring_queryend(acceptor),
+		    /*querypos*/Substring_queryend(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+      }
 
     } else {
       assert(Substring_chimera_pos(acceptor) == Substring_queryend(acceptor));
-      print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(acceptor),
-		  /*querypos*/querylength,querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
-		  /*querypos*/Substring_queryend(acceptor),querylength,
-		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-      print_cigar(fp,/*type*/'S',Substring_querystart(acceptor),
-		  /*querypos*/Substring_querystart(acceptor),querylength,hardclip_low,hardclip_high,
-		  /*plusp*/false,/*lastp*/true);
+      if (hide_soft_clips_p == true) {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(acceptor),
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',
+		    Substring_match_length(acceptor) +
+		    Substring_querystart(acceptor),
+		    /*querypos*/Substring_queryend(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+      } else {
+	print_cigar(fp,/*type*/use_hardclip_p ? 'H' : 'S',querylength - Substring_queryend(acceptor),
+		    /*querypos*/querylength,querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'M',Substring_match_length(acceptor),
+		    /*querypos*/Substring_queryend(acceptor),querylength,
+		    hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+	print_cigar(fp,/*type*/'S',Substring_querystart(acceptor),
+		    /*querypos*/Substring_querystart(acceptor),querylength,hardclip_low,hardclip_high,
+		    /*plusp*/false,/*lastp*/true);
+      }
     }
   }
 
 
   /* 7. MRNM: Mate chr */
   /* 8. MPOS: Mate chrpos */
+  /* For anchor_chrnum, previously used Stage3end_chrnum(this), but this is 0 */
   print_mate_chromosomal_pos(fp,Stage3end_chrnum(mate),Stage3end_effective_chrnum(mate),mate_chrpos,
-			     Stage3end_chrnum(this),chrpos,chromosome_iit);
+			     /*anchor_chrnum*/Substring_chrnum(acceptor),acceptor_chrpos,chromosome_iit);
 
 
   /* 9. ISIZE: Insert size */
@@ -2517,8 +3171,13 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
   fprintf(fp,"MD:Z:");
   printp = false;
 
-  substring_start = Substring_querystart(acceptor);
-  substring_length = Substring_match_length(acceptor);
+  if (hide_soft_clips_p == true) {
+    substring_start = Substring_querystart_orig(acceptor);
+    substring_length = Substring_match_length_orig(acceptor);
+  } else {
+    substring_start = Substring_querystart(acceptor);
+    substring_length = Substring_match_length(acceptor);
+  }
 
   if (use_hardclip_p == false) {
     genomicdir_refdiff = Substring_genomic_refdiff(acceptor);
@@ -2654,8 +3313,14 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   /* 12. TAGS: XS */
   fprintf(fp,"\t");
+#if 0
+  /* Not necessary to compute, because already computed by print_exon_exon */
   /* sensedir for chimera must be SENSE_FORWARD or SENSE_ANTI, not SENSE_NULL */
   if (sensedir == SENSE_FORWARD) {
     if (plusp == true) {
@@ -2674,11 +3339,59 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
   } else {
     fprintf(fp,"XS:A:?");
   }
+#else
+  fprintf(fp,"XS:A:%c",acceptor_strand);
+#endif
+
+  /* 12. TAGS: XA */
+  if ((start_ambig = Stage3end_start_ambiguous_p(this)) == true ||
+      (end_ambig = Stage3end_end_ambiguous_p(this)) == true) {
+#if 1
+    amb_nmatches_start = Stage3end_amb_nmatches_start(this);
+    amb_nmatches_end = Stage3end_amb_nmatches_end(this);
+    fprintf(fp,"\t");
+    if (plusp == true) {
+      fprintf(fp,"XA:Z:%d,%d",amb_nmatches_start,amb_nmatches_end);
+    } else {
+      fprintf(fp,"XA:Z:%d,%d",amb_nmatches_end,amb_nmatches_start);
+    }
+#else
+    fprintf(fp,"\t");
+    if (start_ambig == true && end_ambig == true) {
+      fprintf(fp,"XA:Z:T,T");
+    } else if (plusp == true) {
+      if (start_ambig == true) {
+        fprintf(fp,"XA:Z:T,F");
+      } else {
+        fprintf(fp,"XA:Z:F,T");
+      }
+    } else {
+      if (start_ambig == true) {
+        fprintf(fp,"XA:Z:F,T");
+      } else {
+        fprintf(fp,"XA:Z:T,F");
+      }
+    }
+#endif
+  }
 
   /* 12. TAGS: XT */
   if (print_xt_p == true) {
     fprintf(fp,"\t");
     fprintf(fp,"XT:Z:%c%c-%c%c,%.2f,%.2f",donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob);
+    fprintf(fp,",%c%s:%u..%c%s:%u",donor_strand,donor_chr,donor_chrpos,acceptor_strand,acceptor_chr,acceptor_chrpos);
+  }
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
+  /* 12. TAGS: PG */
+  if (Stage3end_sarrayp(this) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
   }
 
   fprintf(fp,"\n");
@@ -2688,7 +3401,8 @@ print_halfacceptor (FILE *fp, Substring_T acceptor, Stage3end_T this, Stage3end_
 
 
 static void
-print_localsplice (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+print_localsplice (FILE *fp, char *abbrev, Stage3end_T this, Stage3end_T mate,
+		   char *acc1, char *acc2, int pathnum, int npaths,
 		   int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		   Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		   Chrpos_T chrpos, Chrpos_T mate_chrpos, int clipdir, int hardclip5, int hardclip3,
@@ -2784,45 +3498,84 @@ print_localsplice (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, cha
     substring1 = /* acceptor */ Stage3end_substring_acceptor(this);
     substring2 = /* donor */ Stage3end_substring_donor(this);
   }
+
   if (plusp == true) {
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
-		/*querypos*/0,querylength,hardclip_low,hardclip_high,
-		/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
-		/*querypos*/Substring_querystart(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-    if (hardclip_low < Substring_queryend(substring1) &&
-	querylength - hardclip_high > Substring_querystart(substring2)) {
-      debug1(printf("\nhardclip_low %d < queryend(substring1) %d && querylength %d - hardclip_high %d > querystart(substring2) %d\n",
-		    hardclip_low,Substring_queryend(substring1),querylength,hardclip_high,Substring_querystart(substring2)));
-      fprintf(fp,"%uN",Stage3end_distance(this));
+    if (hide_soft_clips_p == true) {
+      print_cigar(fp,/*type*/'M',
+		  Substring_querystart(substring1) +
+		  Substring_match_length(substring1),
+		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/true,/*lastp*/false);
+      if (hardclip_low < Substring_queryend(substring1) &&
+	  querylength - hardclip_high > Substring_querystart(substring2)) {
+	debug1(printf("\ncase 1: hardclip_low %d < queryend(substring1) %d && querylength %d - hardclip_high %d > querystart(substring2) %d\n",
+		      hardclip_low,Substring_queryend(substring1),querylength,hardclip_high,Substring_querystart(substring2)));
+	fprintf(fp,"%uN",Stage3end_distance(this));
+      }
+      print_cigar(fp,/*type*/'M',
+		  Substring_match_length(substring2) +
+		  (querylength - Substring_queryend(substring2)),
+		  /*querypos*/Substring_querystart(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    } else {
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
+		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/true,/*lastp*/false);
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
+		  /*querypos*/Substring_querystart(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      if (hardclip_low < Substring_queryend(substring1) &&
+	  querylength - hardclip_high > Substring_querystart(substring2)) {
+	debug1(printf("\ncase 1: hardclip_low %d < queryend(substring1) %d && querylength %d - hardclip_high %d > querystart(substring2) %d\n",
+		      hardclip_low,Substring_queryend(substring1),querylength,hardclip_high,Substring_querystart(substring2)));
+	fprintf(fp,"%uN",Stage3end_distance(this));
+      }
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
+		  /*querypos*/Substring_querystart(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
+		  /*querypos*/Substring_queryend(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
     }
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
-		/*querypos*/Substring_querystart(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
-		/*querypos*/Substring_queryend(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
 
   } else {
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring1),
-		/*querypos*/querylength,querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
-		/*querypos*/Substring_queryend(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    if (hardclip_low < Substring_queryend(substring2) &&
-	querylength - hardclip_high > Substring_querystart(substring1)) {
-      debug1(printf("\nhardclip_low %d < queryend(substring2) %d && querylength %d - hardclip_high %d > querystart(substring1) %d\n",
-		    hardclip_low,Substring_queryend(substring2),querylength,hardclip_high,Substring_querystart(substring1)));
-      fprintf(fp,"%uN",Stage3end_distance(this));
-    }
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
-		/*querypos*/Substring_querystart(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring2),
-		/*querypos*/Substring_querystart(substring2),querylength,hardclip_low,hardclip_high,
-		/*plusp*/false,/*lastp*/true);
+    if (hide_soft_clips_p == true) {
+      print_cigar(fp,/*type*/'M',
+		  (querylength - Substring_queryend(substring1)) +
+		  Substring_match_length(substring1),
+		  /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/false,/*lastp*/false);
+      if (querylength - hardclip_low > Substring_queryend(substring2) &&
+	  hardclip_high < Substring_querystart(substring1)) {
+	debug1(printf("\ncase 2: querylength %d - hardclip_low %d > queryend(substring2) %d && hardclip_high %d < querystart(substring1) %d\n",
+		      querylength,hardclip_low,Substring_queryend(substring2),hardclip_high,Substring_querystart(substring1)));
+	fprintf(fp,"%uN",Stage3end_distance(this));
+      }
+      print_cigar(fp,/*type*/'M',
+		  Substring_match_length(substring2) +
+		  Substring_querystart(substring2),
+		  /*querypos*/Substring_querystart(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    } else {
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring1),
+		  /*querypos*/querylength,querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
+		  /*querypos*/Substring_queryend(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      if (querylength - hardclip_low > Substring_queryend(substring2) &&
+	  hardclip_high < Substring_querystart(substring1)) {
+	debug1(printf("\ncase 2: querylength %d - hardclip_low %d > queryend(substring2) %d && hardclip_high %d < querystart(substring1) %d\n",
+		      querylength,hardclip_low,Substring_queryend(substring2),hardclip_high,Substring_querystart(substring1)));
+	fprintf(fp,"%uN",Stage3end_distance(this));
+      }
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
+		  /*querypos*/Substring_querystart(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring2),
+		  /*querypos*/Substring_querystart(substring2),querylength,hardclip_low,hardclip_high,
+		  /*plusp*/false,/*lastp*/true);
+    }
   }
 
 
@@ -2884,10 +3637,17 @@ print_localsplice (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, cha
   fprintf(fp,"MD:Z:");
   printp = false;
 
-  substring1_start = Substring_querystart(substring1);
-  substring1_length = Substring_match_length(substring1);
-  substring2_start = Substring_querystart(substring2);
-  substring2_length = Substring_match_length(substring2);
+  if (hide_soft_clips_p == true) {
+    substring1_start = Substring_querystart_orig(substring1);
+    substring1_length = Substring_match_length_orig(substring1);
+    substring2_start = Substring_querystart_orig(substring2);
+    substring2_length = Substring_match_length_orig(substring2);
+  } else {
+    substring1_start = Substring_querystart(substring1);
+    substring1_length = Substring_match_length(substring1);
+    substring2_start = Substring_querystart(substring2);
+    substring2_length = Substring_match_length(substring2);
+  }
 
   if (plusp == true) {
     genomicfwd_refdiff = Substring_genomic_refdiff(substring1);
@@ -2999,6 +3759,10 @@ print_localsplice (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, cha
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   /* 12. TAGS: XS */
   fprintf(fp,"\t");
   if (sensedir == SENSE_FORWARD) {
@@ -3019,13 +3783,30 @@ print_localsplice (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, cha
     fprintf(fp,"XS:A:?");
   }
 
+  /* 12. TAGS: XA */
+  assert(Stage3end_start_ambiguous_p(this) == false);
+  assert(Stage3end_end_ambiguous_p(this) == false);
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
+  /* 12. TAGS: PG */
+  if (Stage3end_sarrayp(this) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
+  }
+
   fprintf(fp,"\n");
   return;
 }
 
 
 static void
-print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+print_shortexon (FILE *fp, char *abbrev, Stage3end_T shortexon, Stage3end_T mate,
+		 char *acc1, char *acc2, int pathnum, int npaths,
 		 int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		 Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		 Chrpos_T chrpos, Chrpos_T mate_chrpos, int clipdir, int hardclip5, int hardclip3,
@@ -3045,6 +3826,9 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
   int hardclip_low, hardclip_high;
   /* int mate_hardclip_low, mate_hardclip_high; */
   bool plusp, printp;
+  bool start_ambig, end_ambig;
+  int amb_nmatches_start, amb_nmatches_end;
+
 
   querylength = Shortread_fulllength(queryseq);
   plusp = Stage3end_plusp(shortexon);
@@ -3143,30 +3927,46 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
     }
 
   } else if (plusp == true) {
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
-		/*querypos*/0,querylength,hardclip_low,hardclip_high,
-		/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
-		/*querypos*/Substring_querystart(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+    if (hide_soft_clips_p == true) {
+      print_cigar(fp,/*type*/'M',
+		  Substring_querystart(substring1) +
+		  Substring_match_length(substring1),
+		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/true,/*lastp*/false);
+    } else {
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring1),
+		  /*querypos*/0,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/true,/*lastp*/false);
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
+		  /*querypos*/Substring_querystart(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+    }
     if (hardclip_low < Substring_queryend(substring1) &&
 	querylength - hardclip_high > Substring_querystart(substringM)) {
-      debug1(printf("\nhardclip_low %d < queryend(substring1) %d && querylength %d - hardclip_high %d > querystart(substringM) %d\n",
+      debug1(printf("\ncase 3: hardclip_low %d < queryend(substring1) %d && querylength %d - hardclip_high %d > querystart(substringM) %d\n",
 		    hardclip_low,Substring_queryend(substring1),querylength,hardclip_high,Substring_querystart(substringM)));
       fprintf(fp,"%uN",distance1);
     }
 
   } else {
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring1),
-		/*querypos*/querylength,querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
-		/*querypos*/Substring_queryend(substring1),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    if (hardclip_low < Substring_queryend(substringM) &&
-	querylength - hardclip_high > Substring_querystart(substring1)) {
-      debug1(printf("\nhardclip_low %d < queryend(substringM) %d && querylength %d - hardclip_high %d > querystart(substring1) %d\n",
-		    hardclip_low,Substring_queryend(substringM),querylength,hardclip_high,Substring_querystart(substring1)));
+    if (hide_soft_clips_p == true) {
+      print_cigar(fp,/*type*/'M',
+		  (querylength - Substring_queryend(substring1)) +
+		  Substring_match_length(substring1),
+		  /*querypos*/querylength,querylength,hardclip_low,hardclip_high,
+		  /*plusp*/false,/*lastp*/false);
+    } else {
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring1),
+		  /*querypos*/querylength,querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring1),
+		  /*querypos*/Substring_queryend(substring1),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+    }
+    if (querylength - hardclip_low > Substring_queryend(substringM) &&
+	hardclip_high < Substring_querystart(substring1)) {
+      debug1(printf("\ncase 4: querylength %d - hardclip_low %d > queryend(substringM) %d && hardclip_high %d < querystart(substring1) %d\n",
+		    querylength,hardclip_low,Substring_queryend(substringM),hardclip_high,Substring_querystart(substring1)));
       fprintf(fp,"%uN",distance1);
     }
   }
@@ -3195,30 +3995,46 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
   } else if (plusp == true) {
     if (hardclip_low < Substring_queryend(substringM) &&
 	querylength - hardclip_high > Substring_querystart(substring2)) {
-      debug1(printf("\nhardclip_low %d < queryend(substringM) %d && querylength %d - hardclip_high %d > querystart(substring2) %d\n",
+      debug1(printf("\ncase 5: hardclip_low %d < queryend(substringM) %d && querylength %d - hardclip_high %d > querystart(substring2) %d\n",
 		    hardclip_low,Substring_queryend(substringM),querylength,hardclip_high,Substring_querystart(substring2)));
       fprintf(fp,"%uN",distance2);
     }
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
-		/*querypos*/Substring_querystart(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
-		/*querypos*/Substring_queryend(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    if (hide_soft_clips_p == true) {
+      print_cigar(fp,/*type*/'M',
+		  Substring_match_length(substring2) +
+		  (querylength - Substring_queryend(substring2)),
+		  /*querypos*/Substring_querystart(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    } else {
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
+		  /*querypos*/Substring_querystart(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/false);
+      print_cigar(fp,/*type*/'S',querylength - Substring_queryend(substring2),
+		  /*querypos*/Substring_queryend(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/true,/*lastp*/true);
+    }
 
   } else {
-    if (hardclip_low < Substring_queryend(substring2) &&
-	querylength - hardclip_high > Substring_querystart(substringM)) {
-      debug1(printf("\nhardclip_low %d < queryend(substring2) %d && querylength %d - hardclip_high %d > querystart(substringM) %d\n",
-		    hardclip_low,Substring_queryend(substring2),querylength,hardclip_high,Substring_querystart(substringM)));
+    if (querylength - hardclip_low > Substring_queryend(substring2) &&
+	hardclip_high < Substring_querystart(substringM)) {
+      debug1(printf("\ncase 6: querylength %d - hardclip_low %d > queryend(substring2) %d && hardclip_high %d < querystart(substringM) %d\n",
+		    querylength,hardclip_low,Substring_queryend(substring2),querylength,Substring_querystart(substringM)));
       fprintf(fp,"%uN",distance2);
     }
-    print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
-		/*querypos*/Substring_queryend(substring2),querylength,
-		hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
-    print_cigar(fp,/*type*/'S',Substring_querystart(substring2),
-		/*querypos*/Substring_querystart(substring2),querylength,hardclip_low,hardclip_high,
-		/*plusp*/false,/*lastp*/true);
+    if (hide_soft_clips_p == true) {
+      print_cigar(fp,/*type*/'M',
+		  Substring_match_length(substring2) +
+		  Substring_querystart(substring2),
+		  /*querypos*/Substring_queryend(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/true);
+    } else {
+      print_cigar(fp,/*type*/'M',Substring_match_length(substring2),
+		  /*querypos*/Substring_queryend(substring2),querylength,
+		  hardclip_low,hardclip_high,/*plusp*/false,/*lastp*/false);
+      print_cigar(fp,/*type*/'S',Substring_querystart(substring2),
+		  /*querypos*/Substring_querystart(substring2),querylength,hardclip_low,hardclip_high,
+		  /*plusp*/false,/*lastp*/true);
+    }
   }
 
 
@@ -3280,12 +4096,20 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
   fprintf(fp,"MD:Z:");
   printp = false;
 
-  substringM_start = Substring_querystart(substringM);
-  substringM_length = Substring_match_length(substringM);
+  if (hide_soft_clips_p == true) {
+    substringM_start = Substring_querystart_orig(substringM);
+    substringM_length = Substring_match_length_orig(substringM);
+  } else {
+    substringM_start = Substring_querystart(substringM);
+    substringM_length = Substring_match_length(substringM);
+  }
 
   if (substring1 == NULL) {
     substring1_start = 0;
     substring1_length = 0;
+  } else if (hide_soft_clips_p == true) {
+    substring1_start = Substring_querystart_orig(substring1);
+    substring1_length = Substring_match_length_orig(substring1);
   } else {
     substring1_start = Substring_querystart(substring1);
     substring1_length = Substring_match_length(substring1);
@@ -3293,6 +4117,9 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
   if (substring2 == NULL) {
     substring2_start = 0;
     substring2_length = 0;
+  } else if (hide_soft_clips_p == true) {
+    substring2_start = Substring_querystart_orig(substring2);
+    substring2_length = Substring_match_length_orig(substring2);
   } else {
     substring2_start = Substring_querystart(substring2);
     substring2_length = Substring_match_length(substring2);
@@ -3474,6 +4301,10 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
   fprintf(fp,"\t");
   fprintf(fp,"X2:i:%d",second_absmq);
 
+  /* 12. TAGS: XO */
+  fprintf(fp,"\t");
+  fprintf(fp,"XO:Z:%s",abbrev);
+
   /* 12. TAGS: XS */
   fprintf(fp,"\t");
   if (sensedir == SENSE_FORWARD) {
@@ -3494,6 +4325,50 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
     fprintf(fp,"XS:A:?");
   }
 
+  /* 12. TAGS: XA */
+  if ((start_ambig = Stage3end_start_ambiguous_p(shortexon)) == true ||
+      (end_ambig = Stage3end_end_ambiguous_p(shortexon)) == true) {
+#if 1
+    amb_nmatches_start = Stage3end_amb_nmatches_start(shortexon);
+    amb_nmatches_end = Stage3end_amb_nmatches_end(shortexon);
+    fprintf(fp,"\t");
+    if (plusp == true) {
+      fprintf(fp,"XA:Z:%d,%d",amb_nmatches_start,amb_nmatches_end);
+    } else {
+      fprintf(fp,"XA:Z:%d,%d",amb_nmatches_end,amb_nmatches_start);
+    }
+#else
+    fprintf(fp,"\t");
+    if (start_ambig == true && end_ambig == true) {
+      fprintf(fp,"XA:Z:T,T");
+    } else if (plusp == true) {
+      if (start_ambig == true) {
+        fprintf(fp,"XA:Z:T,F");
+      } else {
+        fprintf(fp,"XA:Z:F,T");
+      }
+    } else {
+      if (start_ambig == true) {
+        fprintf(fp,"XA:Z:F,T");
+      } else {
+        fprintf(fp,"XA:Z:T,F");
+      }
+    }
+#endif
+  }
+
+  /* 12. TAGS: XC */
+  if (circularp == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"XC:A:+");
+  }
+
+  /* 12. TAGS: PG */
+  if (Stage3end_sarrayp(shortexon) == true) {
+    fprintf(fp,"\t");
+    fprintf(fp,"PG:Z:A");
+  }
+
   fprintf(fp,"\n");
   return;
 }
@@ -3502,7 +4377,8 @@ print_shortexon (FILE *fp, Stage3end_T shortexon, Stage3end_T mate, char *acc1,
 
 /* Distant splicing, including scramble, inversion, translocation */
 static void
-print_exon_exon (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+print_exon_exon (FILE *fp, char *abbrev, Stage3end_T this, Stage3end_T mate,
+		 char *acc1, char *acc2, int pathnum, int npaths,
 		 int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		 Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		 Chrpos_T mate_chrpos, int clipdir, int hardclip5, int hardclip3,
@@ -3511,9 +4387,13 @@ print_exon_exon (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
   Chrpos_T donor_chrpos, acceptor_chrpos, concordant_chrpos;
   Substring_T donor, acceptor;
   int hardclip_low, hardclip_high;
+  char *donor_chr, *acceptor_chr;
   char donor1, donor2, acceptor2, acceptor1;
   double donor_prob, acceptor_prob;
   int circularpos, querylength;
+  char donor_strand, acceptor_strand;
+  int sensedir;
+  bool allocp;
 
   donor = Stage3end_substring_donor(this);
   acceptor = Stage3end_substring_acceptor(this);
@@ -3532,10 +4412,12 @@ print_exon_exon (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
 #endif
 
   querylength = Shortread_fulllength(queryseq);
-  donor_chrpos = SAM_compute_chrpos(&hardclip_low,&hardclip_high,this,/*substring_low*/donor,
-				    querylength);
-  acceptor_chrpos = SAM_compute_chrpos(&hardclip_low,&hardclip_high,this,/*substring_low*/acceptor,
-				       querylength);
+  donor_chrpos = SAM_compute_chrpos(&hardclip_low,&hardclip_high,
+				    clipdir,hardclip5,hardclip3,first_read_p,
+				    this,/*substring_low*/donor,querylength);
+  acceptor_chrpos = SAM_compute_chrpos(&hardclip_low,&hardclip_high,
+				       clipdir,hardclip5,hardclip3,first_read_p,
+				       this,/*substring_low*/acceptor,querylength);
   if (Stage3end_substring_low(this) == donor) {
     concordant_chrpos = donor_chrpos;
   } else if (Stage3end_substring_low(this) == acceptor) {
@@ -3548,133 +4430,187 @@ print_exon_exon (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
 
   halfdonor_dinucleotide(&donor1,&donor2,donor);
   halfacceptor_dinucleotide(&acceptor2,&acceptor1,acceptor);
+  donor_chr = Univ_IIT_label(chromosome_iit,Substring_chrnum(donor),&allocp);
+  acceptor_chr = Univ_IIT_label(chromosome_iit,Substring_chrnum(acceptor),&allocp);
   donor_prob = Substring_chimera_prob(donor);
   acceptor_prob = Substring_chimera_prob(acceptor);
 
+  /* Code taken from that for XS tag for print_halfdonor and print_halfacceptor */
+  if ((sensedir = Substring_chimera_sensedir(donor)) == SENSE_FORWARD) {
+    if (Substring_plusp(donor) == true) {
+      donor_strand = '+';
+    } else {
+      donor_strand = '-';
+    }
+  } else if (sensedir == SENSE_ANTI) {
+    if (Substring_plusp(donor) == true) {
+      donor_strand = '-';
+    } else {
+      donor_strand = '+';
+    }
+  } else if (force_xs_direction_p == true) {
+    donor_strand = '+';
+  } else {
+    donor_strand = '?';
+  }
+
+  /* Code taken from that for XS tag for print_halfdonor and print_halfacceptor */
+  if ((sensedir = Substring_chimera_sensedir(acceptor)) == SENSE_FORWARD) {
+    if (Substring_plusp(acceptor) == true) {
+      acceptor_strand = '+';
+    } else {
+      acceptor_strand = '-';
+    }
+  } else if (sensedir == SENSE_ANTI) {
+    if (Substring_plusp(acceptor) == true) {
+      acceptor_strand = '-';
+    } else {
+      acceptor_strand = '+';
+    }
+  } else if (force_xs_direction_p == true) {
+    acceptor_strand = '+';
+  } else {
+    acceptor_strand = '?';
+  }
+
+
   if (Stage3end_sensedir(this) == SENSE_FORWARD) {
+
     /* NEEDS WORK: Need to decide whether to split halfdonor or halfacceptor */
     /* Not sure if circular chromosomes should participate in distant splicing anyway */
     if (0 && (circularpos = Stage3end_circularpos(this)) > 0) {
-      print_halfdonor(fp,donor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,
 		      chromosome_iit,queryseq,pairedlength,
-		      concordant_chrpos,donor_chrpos,mate_chrpos,
+		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+		      donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 		      /*circularp*/true);
-      print_halfdonor(fp,donor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,
 		      chromosome_iit,queryseq,pairedlength,
-		      /*concordant_chrpos*/1,/*donor_chrpos*/1,mate_chrpos,
+		      /*concordant_chrpos*/1,/*donor_chrpos*/1,acceptor_chrpos,mate_chrpos,
 		      /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+		      donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 		      /*circularp*/true);
     } else {
-      print_halfdonor(fp,donor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,
 		      chromosome_iit,queryseq,pairedlength,
-		      concordant_chrpos,donor_chrpos,mate_chrpos,
+		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+		      donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 		      /*circularp*/false);
     }
 
     if (0 && (circularpos = Stage3end_circularpos(this)) > 0) {
-      print_halfacceptor(fp,acceptor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,
 			 chromosome_iit,queryseq,pairedlength,
-			 concordant_chrpos,acceptor_chrpos,mate_chrpos,
+			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+			 donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 			 /*circularp*/true);
-      print_halfacceptor(fp,acceptor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,
 			 chromosome_iit,queryseq,pairedlength,
-			 /*concordant_chrpos*/1,/*acceptor_chrpos*/1,mate_chrpos,
+			 /*concordant_chrpos*/1,donor_chrpos,/*acceptor_chrpos*/1,mate_chrpos,
 			 /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+			 donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 			 /*circularp*/true);
     } else {
-      print_halfacceptor(fp,acceptor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,
 			 chromosome_iit,queryseq,pairedlength,
-			 concordant_chrpos,acceptor_chrpos,mate_chrpos,
+			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 			 npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+			 donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 			 /*circularp*/false);
     }
 
   } else if (Stage3end_sensedir(this) == SENSE_ANTI) {
     if (0 && (circularpos = Stage3end_circularpos(this)) > 0) {
-      print_halfacceptor(fp,acceptor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,
 			 chromosome_iit,queryseq,pairedlength,
-			 concordant_chrpos,acceptor_chrpos,mate_chrpos,
+			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+			 donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 			 /*circularp*/true);
-      print_halfacceptor(fp,acceptor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,
 			 chromosome_iit,queryseq,pairedlength,
-			 /*concordant_chrpos*/1,/*acceptor_chrpos*/1,mate_chrpos,
+			 /*concordant_chrpos*/1,donor_chrpos,/*acceptor_chrpos*/1,mate_chrpos,
 			 /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+			 donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 			 /*circularp*/true);
     } else {
-      print_halfacceptor(fp,acceptor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,
 			 chromosome_iit,queryseq,pairedlength,
-			 concordant_chrpos,acceptor_chrpos,mate_chrpos,
+			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 			 npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+			 donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 			 /*circularp*/false);
     }
 
     if (0 && (circularpos = Stage3end_circularpos(this)) > 0) {
-      print_halfdonor(fp,donor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,
 		      chromosome_iit,queryseq,pairedlength,
-		      concordant_chrpos,donor_chrpos,mate_chrpos,
+		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+		      donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 		      /*circularp*/true);
-      print_halfdonor(fp,donor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,
 		      chromosome_iit,queryseq,pairedlength,
-		      /*concordant_chrpos*/1,/*donor_chrpos*/1,mate_chrpos,
+		      /*concordant_chrpos*/1,/*donor_chrpos*/1,acceptor_chrpos,mate_chrpos,
 		      /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+		      donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 		      /*circularp*/true);
     } else {
-      print_halfdonor(fp,donor,this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,
 		      chromosome_iit,queryseq,pairedlength,
-		      concordant_chrpos,donor_chrpos,mate_chrpos,
+		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
+		      donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
 		      /*circularp*/false);
     }
@@ -3683,13 +4619,19 @@ print_exon_exon (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char
     abort();
   }
 
+  if (allocp == true) {
+    FREE(acceptor_chr);
+    FREE(donor_chr);
+  }
+
   return;
 }
 
 
 
 void
-SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+SAM_print (FILE *fp, char *abbrev, Stage3end_T this, Stage3end_T mate,
+	   char *acc1, char *acc2, int pathnum, int npaths,
 	   int absmq_score, int first_absmq, int second_absmq, int mapq_score, Univ_IIT_T chromosome_iit, Shortread_T queryseq,
 	   Shortread_T queryseq_mate, int pairedlength, Chrpos_T chrpos, Chrpos_T mate_chrpos,
 	   int clipdir, int hardclip5, int hardclip3, Resulttype_T resulttype, bool first_read_p,
@@ -3701,15 +4643,33 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
   unsigned int flag;
   int ignore = 0;
   int circularpos, querylength;
+  char donor_strand, acceptor_strand;
+  int sensedir;
 
 
   hittype = Stage3end_hittype(this);
   /* printf("hittype %s, chrpos %u\n",Stage3end_hittype_string(this),chrpos); */
-  if (chrpos == 0U) {
-    SAM_print_nomapping(fp,queryseq,mate,acc1,acc2,chromosome_iit,resulttype,first_read_p,
+  if (npaths == 0) {		/* was chrpos == 0, but we can actually align to chrpos 0 */
+    SAM_print_nomapping(fp,abbrev,queryseq,mate,acc1,acc2,chromosome_iit,resulttype,first_read_p,
 			npaths_mate,mate_chrpos,quality_shift,
 			sam_read_group_id,invertp,invert_mate_p);
 
+    if (failedinput_root != NULL) {
+      if (fastq_format_p == true) {
+	if (first_read_p == true) {
+	  Shortread_print_query_singleend_fastq(fp_failedinput_1,queryseq,/*headerseq*/queryseq);
+	} else {
+	  Shortread_print_query_singleend_fastq(fp_failedinput_1,queryseq,/*headerseq*/queryseq_mate);
+	}
+      } else {
+	if (first_read_p == true) {
+	  Shortread_print_query_singleend_fasta(fp_failedinput_2,queryseq,/*headerseq*/queryseq);
+	} else {
+	  Shortread_print_query_singleend_fasta(fp_failedinput_2,queryseq,/*headerseq*/queryseq_mate);
+	}
+      }
+    }
+
   } else if (hittype == EXACT || hittype == SUB || hittype == TERMINAL) {
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
@@ -3720,18 +4680,18 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
 	assert(chrpos-Stage3end_trim_right(this)+circularpos-Stage3end_chrlength(this) == 1);
       }
 #endif
-      print_single(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_single(fp,abbrev,hittype,this,mate,acc1,acc2,pathnum,npaths,
 		   absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		   chrpos,mate_chrpos,/*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,resulttype,first_read_p,
 		   npaths_mate,quality_shift,sam_read_group_id,
 		   invertp,invert_mate_p,/*circularp*/true);
-      print_single(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_single(fp,abbrev,hittype,this,mate,acc1,acc2,pathnum,npaths,
 		   absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		   /*chrpos*/1,mate_chrpos,/*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,resulttype,first_read_p,
 		   npaths_mate,quality_shift,sam_read_group_id,
 		   invertp,invert_mate_p,/*circularp*/true);
     } else {
-      print_single(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_single(fp,abbrev,hittype,this,mate,acc1,acc2,pathnum,npaths,
 		   absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		   chrpos,mate_chrpos,clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		   npaths_mate,quality_shift,sam_read_group_id,
@@ -3741,18 +4701,18 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
   } else if (hittype == INSERTION) {
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
-      print_insertion(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_insertion(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      chrpos,mate_chrpos,/*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*circularp*/true);
-      print_insertion(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_insertion(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      /*chrpos*/1,mate_chrpos,/*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*circularp*/true);
     } else {
-      print_insertion(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_insertion(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      chrpos,mate_chrpos,clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
@@ -3762,18 +4722,18 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
   } else if (hittype == DELETION) {
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
-      print_deletion(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_deletion(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		     absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		     chrpos,mate_chrpos,/*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 		     resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		     invertp,invert_mate_p,/*circularp*/true);
-      print_deletion(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_deletion(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		     absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		     /*chrpos*/1,mate_chrpos,/*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 		     resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		     invertp,invert_mate_p,/*circularp*/true);
     } else {
-      print_deletion(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_deletion(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		     absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		     chrpos,mate_chrpos,clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		     npaths_mate,quality_shift,sam_read_group_id,
@@ -3781,61 +4741,109 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
     }
 
   } else if (hittype == HALFSPLICE_DONOR) {
+    donor = Stage3end_substring_donor(this);
+
+    /* Code taken from that for XS tag for print_halfdonor and print_halfacceptor */
+    if ((sensedir = Substring_chimera_sensedir(donor)) == SENSE_FORWARD) {
+      if (Substring_plusp(donor) == true) {
+	donor_strand = '+';
+      } else {
+	donor_strand = '-';
+      }
+    } else if (sensedir == SENSE_ANTI) {
+      if (Substring_plusp(donor) == true) {
+	donor_strand = '-';
+      } else {
+	donor_strand = '+';
+      }
+    } else if (force_xs_direction_p == true) {
+      donor_strand = '+';
+    } else {
+      donor_strand = '?';
+    }
+
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
-      print_halfdonor(fp,Stage3end_substring_donor(this),this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
-		      /*concordant_chrpos*/chrpos,chrpos,mate_chrpos,
+		      /*concordant_chrpos*/chrpos,chrpos,/*acceptor_chrpos*/-1U,mate_chrpos,
 		      /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/false,/*print_xt_p*/false,
+		      donor_strand,/*acceptor_strand*/'\0',/*donor_chr*/NULL,/*acceptor_chr*/NULL,
 		      /*donor1*/'X',/*donor2*/'X',/*acceptor2*/'X',/*acceptor1*/'X',
 		      /*donor_prob*/0.0,/*acceptor_prob*/0.0,/*circularp*/true);
-      print_halfdonor(fp,Stage3end_substring_donor(this),this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
-		      /*concordant_chrpos*/1,/*chrpos*/1,mate_chrpos,
+		      /*concordant_chrpos*/1,/*chrpos*/1,/*acceptor_chrpos*/-1U,mate_chrpos,
 		      /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/false,/*print_xt_p*/false,
+		      donor_strand,/*acceptor_strand*/'\0',/*donor_chr*/NULL,/*acceptor_chr*/NULL,
 		      /*donor1*/'X',/*donor2*/'X',/*acceptor2*/'X',/*acceptor1*/'X',
 		      /*donor_prob*/0.0,/*acceptor_prob*/0.0,/*circularp*/true);
     } else {
-      print_halfdonor(fp,Stage3end_substring_donor(this),this,mate,acc1,acc2,pathnum,npaths,
+      print_halfdonor(fp,abbrev,donor,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
-		      /*concordant_chrpos*/chrpos,chrpos,mate_chrpos,
+		      /*concordant_chrpos*/chrpos,chrpos,/*acceptor_chrpos*/-1U,mate_chrpos,
 		      clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/false,/*print_xt_p*/false,
+		      donor_strand,/*acceptor_strand*/'\0',/*donor_chr*/NULL,/*acceptor_chr*/NULL,
 		      /*donor1*/'X',/*donor2*/'X',/*acceptor2*/'X',/*acceptor1*/'X',
 		      /*donor_prob*/0.0,/*acceptor_prob*/0.0,/*circularp*/false);
     }
 
   } else if (hittype == HALFSPLICE_ACCEPTOR) {
+    acceptor = Stage3end_substring_acceptor(this);
+
+    /* Code taken from that for XS tag for print_halfdonor and print_halfacceptor */
+    if ((sensedir = Substring_chimera_sensedir(acceptor)) == SENSE_FORWARD) {
+      if (Substring_plusp(acceptor) == true) {
+	acceptor_strand = '+';
+      } else {
+	acceptor_strand = '-';
+      }
+    } else if (sensedir == SENSE_ANTI) {
+      if (Substring_plusp(acceptor) == true) {
+	acceptor_strand = '-';
+      } else {
+	acceptor_strand = '+';
+      }
+    } else if (force_xs_direction_p == true) {
+      acceptor_strand = '+';
+    } else {
+      acceptor_strand = '?';
+    }
+
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
-      print_halfacceptor(fp,Stage3end_substring_acceptor(this),this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
-			 /*concordant_chrpos*/chrpos,chrpos,mate_chrpos,
+			 /*concordant_chrpos*/chrpos,/*donor_chrpos*/-1U,chrpos,mate_chrpos,
 			 /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/false,/*print_xt_p*/false,
+			 /*donor_strand*/'\0',acceptor_strand,/*donor_chr*/NULL,/*acceptor_chr*/NULL,
 			 /*donor1*/'X',/*donor2*/'X',/*acceptor2*/'X',/*acceptor1*/'X',
 			 /*donor_prob*/0.0,/*acceptor_prob*/0.0,/*circularp*/true);
-      print_halfacceptor(fp,Stage3end_substring_acceptor(this),this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
-			 /*concordant_chrpos*/1,/*chrpos*/1,mate_chrpos,
+			 /*concordant_chrpos*/1,/*donor_chrpos*/-1U,/*chrpos*/1,mate_chrpos,
 			 /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/false,/*print_xt_p*/false,
+			 /*donor_strand*/'\0',acceptor_strand,/*donor_chr*/NULL,/*acceptor_chr*/NULL,
 			 /*donor1*/'X',/*donor2*/'X',/*acceptor2*/'X',/*acceptor1*/'X',
 			 /*donor_prob*/0.0,/*acceptor_prob*/0.0,/*circularp*/true);
     } else {
-      print_halfacceptor(fp,Stage3end_substring_acceptor(this),this,mate,acc1,acc2,pathnum,npaths,
+      print_halfacceptor(fp,abbrev,acceptor,this,mate,acc1,acc2,pathnum,npaths,
 			 absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
-			 /*concordant_chrpos*/chrpos,chrpos,mate_chrpos,
+			 /*concordant_chrpos*/chrpos,/*donor_chrpos*/-1U,chrpos,mate_chrpos,
 			 clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 			 npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/false,/*print_xt_p*/false,
+			 /*donor_strand*/'\0',acceptor_strand,/*donor_chr*/NULL,/*acceptor_chr*/NULL,
 			 /*donor1*/'X',/*donor2*/'X',/*acceptor2*/'X',/*acceptor1*/'X',
 			 /*donor_prob*/0.0,/*acceptor_prob*/0.0,/*circularp*/false);
     }
@@ -3850,7 +4858,7 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
     } else if (hittype == TRANSLOC_SPLICE || (hittype == SAMECHR_SPLICE && merge_samechr_p == false)) {
       /* Stage3end_chrnum(this) == 0 || Stage3end_distance(this) == 0U */
       /* distant splice */
-      print_exon_exon(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_exon_exon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      mate_chrpos,clipdir,hardclip5,hardclip3,resulttype,first_read_p,
 		      npaths_mate,quality_shift,sam_read_group_id,
@@ -3890,25 +4898,25 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
       if (normalp == true) {
 	if ((circularpos = Stage3end_circularpos(this)) > 0) {
 	  querylength = Shortread_fulllength(queryseq);
-	  print_localsplice(fp,this,mate,acc1,acc2,pathnum,npaths,
+	  print_localsplice(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 			    absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 			    chrpos,mate_chrpos,/*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 			    resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			    invertp,invert_mate_p,/*circularp*/true);
-	  print_localsplice(fp,this,mate,acc1,acc2,pathnum,npaths,
+	  print_localsplice(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 			    absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 			    /*chrpos*/1,mate_chrpos,/*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 			    resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			    invertp,invert_mate_p,/*circularp*/true);
 	} else {
-	  print_localsplice(fp,this,mate,acc1,acc2,pathnum,npaths,
+	  print_localsplice(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 			    absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 			    chrpos,mate_chrpos,clipdir,hardclip5,hardclip3,
 			    resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 			    invertp,invert_mate_p,/*circularp*/false);
 	}
       } else {
-	print_exon_exon(fp,this,mate,acc1,acc2,pathnum,npaths,
+	print_exon_exon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 			absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 			mate_chrpos,clipdir,hardclip5,hardclip3,
 			resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
@@ -3919,18 +4927,18 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
   } else if (hittype == ONE_THIRD_SHORTEXON || hittype == TWO_THIRDS_SHORTEXON || hittype == SHORTEXON) {
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
-      print_shortexon(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_shortexon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      chrpos,mate_chrpos,/*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*circularp*/true);
-      print_shortexon(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_shortexon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      /*chrpos*/1,mate_chrpos,/*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*circularp*/true);
     } else {
-      print_shortexon(fp,this,mate,acc1,acc2,pathnum,npaths,
+      print_shortexon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      chrpos,mate_chrpos,clipdir,hardclip5,hardclip3,
 		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
@@ -3941,23 +4949,48 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
     /* Note: sam_paired_p must be true because we are calling GMAP only on halfmapping uniq */
 
     if (mate == NULL) {
-      chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,this,
-				  /*substring_low*/NULL,Shortread_fulllength(queryseq));
+      chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				  clipdir,hardclip5,hardclip3,first_read_p,
+				  this,/*substring_low*/NULL,Shortread_fulllength(queryseq));
       mate_chrpos = 0U;
       hardclip3 = 0;
 
     } else if (first_read_p == true) {
-      chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,this,
-				  /*substring_low*/NULL,Shortread_fulllength(queryseq));
-      mate_chrpos = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,mate,
-				       Stage3end_substring_low(mate),
-				       Shortread_fulllength(queryseq_mate));
+      if (clipdir >= 0) {
+	chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				    clipdir,hardclip5,hardclip3,/*first_read_p*/true,
+				    this,/*substring_low*/NULL,Shortread_fulllength(queryseq));
+	mate_chrpos = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/false,
+					 mate,Stage3end_substring_low(mate),
+					 Shortread_fulllength(queryseq_mate));
+      } else {
+	chrpos = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,
+				    clipdir,hardclip5,hardclip3,/*first_read_p*/true,
+				    this,/*substring_low*/NULL,Shortread_fulllength(queryseq));
+	mate_chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/false,
+					 mate,Stage3end_substring_low(mate),
+					 Shortread_fulllength(queryseq_mate));
+      }
     } else {
-      chrpos = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,this,
-				  /*substring_low*/NULL,Shortread_fulllength(queryseq));
-      mate_chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,mate,
-				       Stage3end_substring_low(mate),
-				       Shortread_fulllength(queryseq_mate));
+      if (clipdir >= 0) {
+	chrpos = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				    clipdir,hardclip5,hardclip3,/*first_read_p*/false,
+				    this,/*substring_low*/NULL,Shortread_fulllength(queryseq));
+	mate_chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/true,
+					 mate,Stage3end_substring_low(mate),
+					 Shortread_fulllength(queryseq_mate));
+      } else {
+	chrpos = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,
+				    clipdir,hardclip5,hardclip3,/*first_read_p*/false,
+				    this,/*substring_low*/NULL,Shortread_fulllength(queryseq));
+	mate_chrpos = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/true,
+					 mate,Stage3end_substring_low(mate),
+					 Shortread_fulllength(queryseq_mate));
+      }
     }
     assert(ignore == 0);
 
@@ -3967,11 +5000,11 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
 
     if ((circularpos = Stage3end_circularpos(this)) > 0) {
       querylength = Shortread_fulllength(queryseq);
-      Pair_print_sam(fp,Stage3end_pairarray(this),Stage3end_npairs(this),
+      Pair_print_sam(fp,abbrev,Stage3end_pairarray(this),Stage3end_npairs(this),
 		     acc1,acc2,Stage3end_chrnum(this),chromosome_iit,
 		     /*usersegment*/(Sequence_T) NULL,
 		     Shortread_fullpointer(queryseq),Shortread_quality_string(queryseq),
-		     /*hardclip5*/0,/*hardclip3*/querylength-circularpos,Shortread_fulllength(queryseq),
+		     /*clipdir*/+1,/*hardclip5*/0,/*hardclip3*/querylength-circularpos,Shortread_fulllength(queryseq),
 		     Stage3end_plusp(this),Stage3end_cdna_direction(this),
 		     /*chimera_part*/0,/*chimera*/NULL,quality_shift,first_read_p,
 		     pathnum,npaths,absmq_score,first_absmq,second_absmq,chrpos,
@@ -3979,11 +5012,11 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
 		     Stage3end_chrnum(mate),Stage3end_effective_chrnum(mate),mate_chrpos,
 		     /*mate_cdna_direction*/Stage3end_cdna_direction(mate),
 		     pairedlength,sam_read_group_id,invertp,/*circularp*/true);
-      Pair_print_sam(fp,Stage3end_pairarray(this),Stage3end_npairs(this),
+      Pair_print_sam(fp,abbrev,Stage3end_pairarray(this),Stage3end_npairs(this),
 		     acc1,acc2,Stage3end_chrnum(this),chromosome_iit,
 		     /*usersegment*/(Sequence_T) NULL,
 		     Shortread_fullpointer(queryseq),Shortread_quality_string(queryseq),
-		     /*hardclip5*/circularpos,/*hardclip3*/0,Shortread_fulllength(queryseq),
+		     /*clipdir*/+1,/*hardclip5*/circularpos,/*hardclip3*/0,Shortread_fulllength(queryseq),
 		     Stage3end_plusp(this),Stage3end_cdna_direction(this),
 		     /*chimera_part*/0,/*chimera*/NULL,quality_shift,first_read_p,
 		     pathnum,npaths,absmq_score,first_absmq,second_absmq,/*chrpos*/1,
@@ -3992,11 +5025,11 @@ SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2,
 		     /*mate_cdna_direction*/Stage3end_cdna_direction(mate),
 		     pairedlength,sam_read_group_id,invertp,/*circularp*/true);
     } else {
-      Pair_print_sam(fp,Stage3end_pairarray(this),Stage3end_npairs(this),
+      Pair_print_sam(fp,abbrev,Stage3end_pairarray(this),Stage3end_npairs(this),
 		     acc1,acc2,Stage3end_chrnum(this),chromosome_iit,
 		     /*usersegment*/(Sequence_T) NULL,
 		     Shortread_fullpointer(queryseq),Shortread_quality_string(queryseq),
-		     hardclip5,hardclip3,Shortread_fulllength(queryseq),
+		     clipdir,hardclip5,hardclip3,Shortread_fulllength(queryseq),
 		     Stage3end_plusp(this),Stage3end_cdna_direction(this),
 		     /*chimera_part*/0,/*chimera*/NULL,quality_shift,first_read_p,
 		     pathnum,npaths,absmq_score,first_absmq,second_absmq,chrpos,
@@ -4018,18 +5051,8 @@ void
 SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		  Univ_IIT_T chromosome_iit, Shortread_T queryseq1, Shortread_T queryseq2,
 		  bool invert_first_p, bool invert_second_p,
-		  bool nofailsp, bool failsonlyp, bool fails_as_input_p,
-		  bool fastq_format_p, bool clip_overlap_p, bool merge_samechr_p,
-		  int quality_shift, char *sam_read_group_id,
-		  FILE *fp_nomapping_1, FILE *fp_nomapping_2,
-		  FILE *fp_unpaired_uniq, FILE *fp_unpaired_circular,
-		  FILE *fp_unpaired_transloc, FILE *fp_unpaired_mult,
-		  FILE *fp_halfmapping_uniq, FILE *fp_halfmapping_circular,
-		  FILE *fp_halfmapping_transloc, FILE *fp_halfmapping_mult,
-		  FILE *fp_paired_uniq_circular, FILE *fp_paired_uniq_inv, FILE *fp_paired_uniq_scr,
-		  FILE *fp_paired_uniq_long, FILE *fp_paired_mult,
-		  FILE *fp_concordant_uniq, FILE *fp_concordant_circular,
-		  FILE *fp_concordant_transloc, FILE *fp_concordant_mult) {
+		  bool nofailsp, bool failsonlyp, bool clip_overlap_p, bool merge_samechr_p,
+		  int quality_shift, char *sam_read_group_id) {
   Stage3pair_T *stage3pairarray, stage3pair;
   Stage3end_T *stage3array1, *stage3array2, stage3, mate, hit5, hit3;
   Chrpos_T chrpos5, chrpos3;
@@ -4038,7 +5061,8 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
   int hardclip5 = 0, hardclip3 = 0, ignore = 0, clipdir;
   char *acc1, *acc2;
   Pairtype_T pairtype;
-  FILE *fp;
+  FILE *fp, *fp_xs;
+  char *abbrev, *abbrev_xs;
 
   acc1 = Shortread_accession(queryseq1);
   acc2 = Shortread_accession(queryseq2); /* NULL, unless --allow-pe-name-mismatch is specified */
@@ -4048,27 +5072,26 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       /* No output */
       return;
       
-    } else if (fails_as_input_p == true) {
-      if (fastq_format_p == true) {
-	Shortread_print_query_pairedend_fastq(fp_nomapping_1,fp_nomapping_2,queryseq1,queryseq2,
-					     invert_first_p,invert_second_p);
-      } else {
-	Shortread_print_query_pairedend_fasta(fp_nomapping_1,queryseq1,queryseq2,
-					     invert_first_p,invert_second_p);
-      }
-
-    } else {
-      SAM_print_nomapping(fp_nomapping_1,queryseq1,/*mate*/(Stage3end_T) NULL,
+    } else 
+      SAM_print_nomapping(fp_nomapping,ABBREV_NOMAPPING_1,queryseq1,/*mate*/(Stage3end_T) NULL,
 			  acc1,acc2,chromosome_iit,resulttype,
 			  /*first_read_p*/true,/*npaths_mate*/0,
 			  /*mate_chrpos*/0U,quality_shift,
 			  sam_read_group_id,invert_first_p,invert_second_p);
-      SAM_print_nomapping(fp_nomapping_1,queryseq2,/*mate*/(Stage3end_T) NULL,
+      SAM_print_nomapping(fp_nomapping,ABBREV_NOMAPPING_2,queryseq2,/*mate*/(Stage3end_T) NULL,
 			  acc1,acc2,chromosome_iit,resulttype,
 			  /*first_read_p*/false,/*npaths_mate*/0,
 			  /*mate_chrpos*/0U,quality_shift,
 			  sam_read_group_id,invert_second_p,invert_first_p);
-    }
+      if (failedinput_root != NULL) {
+	if (fastq_format_p == true) {
+	  Shortread_print_query_pairedend_fastq(fp_failedinput_1,fp_failedinput_2,queryseq1,queryseq2,
+						invert_first_p,invert_second_p);
+	} else {
+	  Shortread_print_query_pairedend_fasta(fp_failedinput_1,queryseq1,queryseq2,
+						invert_first_p,invert_second_p);
+	}
+      }
 
   } else {
     if (failsonlyp == true) {
@@ -4082,6 +5105,9 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       hardclip5 = hardclip3 = 0;
       if (clip_overlap_p == false) {
 	clipdir = 0;
+      } else if (Stage3pair_circularp(stage3pair) == true) {
+	/* Don't resolve overlaps on a circular alignment */
+	clipdir = 0;
       } else {
 	clipdir = Stage3pair_overlap(&hardclip5,&hardclip3,stage3pair);
 	debug3(printf("clipdir %d with hardclip5 = %d, hardclip3 = %d\n",clipdir,hardclip5,hardclip3));
@@ -4090,14 +5116,20 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       hit5 = Stage3pair_hit5(stage3pair);
       hit3 = Stage3pair_hit3(stage3pair);
       if (clipdir >= 0) {
-	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,hit5,
+	debug3(printf("clipping %d on hit5 high and %d on hit3 low\n",hardclip5,hardclip3));
+	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				     clipdir,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 				     Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,hit3,
+	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				     clipdir,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 				     Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
       } else {
-	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,hit5,
+	debug3(printf("clipping %d on hit5 low and %d on hit3 high\n",hardclip5,hardclip3));
+	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,
+				     clipdir,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 				     Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,hit3,
+	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,
+				     clipdir,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 				     Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
       }
 
@@ -4106,12 +5138,14 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
       if (Stage3pair_circularp(stage3pair) == true) {
 	fp = fp_concordant_circular;
+	abbrev = ABBREV_CONCORDANT_CIRCULAR;
       } else {
 	fp = fp_concordant_uniq;
+	abbrev = ABBREV_CONCORDANT_UNIQ;
       }
 
       /* print first end */
-      SAM_print(fp,hit5,/*mate*/hit3,acc1,acc2,/*pathnum*/1,/*npaths*/1,
+      SAM_print(fp,abbrev,hit5,/*mate*/hit3,acc1,acc2,/*pathnum*/1,/*npaths*/1,
 		Stage3pair_absmq_score(stage3pair),first_absmq,/*second_absmq*/0,
 		Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		/*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4121,7 +5155,7 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		merge_samechr_p);
 
       /* print second end */
-      SAM_print(fp,hit3,/*mate*/hit5,acc1,acc2,/*pathnum*/1,/*npaths*/1,
+      SAM_print(fp,abbrev,hit3,/*mate*/hit5,acc1,acc2,/*pathnum*/1,/*npaths*/1,
 		Stage3pair_absmq_score(stage3pair),first_absmq,/*second_absmq*/0,
 		Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		/*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4134,17 +5168,22 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
 
       if (quiet_if_excessive_p && npaths > maxpaths_report) {
-	/* Print as nomapping, but send to fp_concordant_transloc */
-	SAM_print_nomapping(fp_concordant_transloc,queryseq1,/*mate*/(Stage3end_T) NULL,
-			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*npaths_mate*/npaths,
-			    /*mate_chrpos*/0U,quality_shift,
-			    sam_read_group_id,invert_first_p,invert_second_p);
-	SAM_print_nomapping(fp_concordant_transloc,queryseq2,/*mate*/(Stage3end_T) NULL,
-			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/false,/*npaths_mate*/npaths,
-			    /*mate_chrpos*/0U,quality_shift,
-			    sam_read_group_id,invert_second_p,invert_first_p);
+	if (1 || failedinput_root != NULL) {
+	  /* Not able to print as input */
+	  /* Print as nomapping, but send to fp_concordant_transloc */
+	  SAM_print_nomapping(fp_concordant_transloc,ABBREV_CONCORDANT_TRANSLOC,
+			      queryseq1,/*mate*/(Stage3end_T) NULL,
+			      acc1,acc2,chromosome_iit,resulttype,
+			      /*first_read_p*/true,/*npaths_mate*/npaths,
+			      /*mate_chrpos*/0U,quality_shift,
+			      sam_read_group_id,invert_first_p,invert_second_p);
+	  SAM_print_nomapping(fp_concordant_transloc,ABBREV_CONCORDANT_TRANSLOC,
+			      queryseq2,/*mate*/(Stage3end_T) NULL,
+			      acc1,acc2,chromosome_iit,resulttype,
+			      /*first_read_p*/false,/*npaths_mate*/npaths,
+			      /*mate_chrpos*/0U,quality_shift,
+			      sam_read_group_id,invert_second_p,invert_first_p);
+	}
 
       } else {
 	/* Stage3pair_eval(stage3pairarray,npaths,maxpaths_report,queryseq1,queryseq2); */
@@ -4154,6 +5193,9 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 	  hardclip5 = hardclip3 = 0;
 	  if (clip_overlap_p == false) {
 	    clipdir = 0;
+	  } else if (Stage3pair_circularp(stage3pair) == true) {
+	    /* Don't resolve overlaps on a circular alignment */
+	    clipdir = 0;
 	  } else {
 	    clipdir = Stage3pair_overlap(&hardclip5,&hardclip3,stage3pair);
 	    debug3(printf("clipdir %d with hardclip5 = %d, hardclip3 = %d\n",clipdir,hardclip5,hardclip3));
@@ -4162,19 +5204,24 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 	  hit5 = Stage3pair_hit5(stage3pair);
 	  hit3 = Stage3pair_hit3(stage3pair);
 	  if (clipdir >= 0) {
-	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,hit5,
+	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 					 Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,hit3,
+	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 					 Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 	  } else {
-	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,hit5,
+	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 					 Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,hit3,
+	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 					 Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 	  }
 
 	  /* print first end */
-	  SAM_print(fp_concordant_transloc,hit5,/*mate*/hit3,acc1,acc2,pathnum,npaths,
+	  SAM_print(fp_concordant_transloc,ABBREV_CONCORDANT_TRANSLOC,
+		    hit5,/*mate*/hit3,acc1,acc2,pathnum,npaths,
 		    Stage3pair_absmq_score(stage3pair),first_absmq,second_absmq,
 		    Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4184,7 +5231,8 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		    merge_samechr_p);
 
 	  /* print second end */
-	  SAM_print(fp_concordant_transloc,hit3,/*mate*/hit5,acc1,acc2,pathnum,npaths,
+	  SAM_print(fp_concordant_transloc,ABBREV_CONCORDANT_TRANSLOC,
+		    hit3,/*mate*/hit5,acc1,acc2,pathnum,npaths,
 		    Stage3pair_absmq_score(stage3pair),first_absmq,second_absmq,
 		    Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4199,17 +5247,28 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
 
       if (quiet_if_excessive_p && npaths > maxpaths_report) {
-	/* Print as nomapping, but send to fp_concordant_mult */
-	SAM_print_nomapping(fp_concordant_mult,queryseq1,/*mate*/(Stage3end_T) NULL,
+	/* Print as nomapping, but send to fp_concordant_mult_xs */
+	SAM_print_nomapping(fp_concordant_mult_xs_1,ABBREV_CONCORDANT_MULT_XS,
+			    queryseq1,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
 			    /*first_read_p*/true,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_first_p,invert_second_p);
-	SAM_print_nomapping(fp_concordant_mult,queryseq2,/*mate*/(Stage3end_T) NULL,
+	SAM_print_nomapping(fp_concordant_mult_xs_1,ABBREV_CONCORDANT_MULT_XS,
+			    queryseq2,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
 			    /*first_read_p*/false,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_second_p,invert_first_p);
+	if (failedinput_root != NULL) {
+	  if (fastq_format_p == true) {
+	    Shortread_print_query_pairedend_fastq(fp_failedinput_1,fp_failedinput_2,queryseq1,queryseq2,
+						  invert_first_p,invert_second_p);
+	  } else {
+	    Shortread_print_query_pairedend_fasta(fp_failedinput_1,queryseq1,queryseq2,
+						  invert_first_p,invert_second_p);
+	  }
+	}
 
       } else {
 	/* Stage3pair_eval(stage3pairarray,npaths,maxpaths_report,queryseq1,queryseq2); */
@@ -4219,6 +5278,9 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 	  hardclip5 = hardclip3 = 0;
 	  if (clip_overlap_p == false) {
 	    clipdir = 0;
+	  } else if (Stage3pair_circularp(stage3pair) == true) {
+	    /* Don't resolve overlaps on a circular alignment */
+	    clipdir = 0;
 	  } else {
 	    clipdir = Stage3pair_overlap(&hardclip5,&hardclip3,stage3pair);
 	    debug3(printf("clipdir %d with hardclip5 = %d, hardclip3 = %d\n",clipdir,hardclip5,hardclip3));
@@ -4227,19 +5289,24 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 	  hit5 = Stage3pair_hit5(stage3pair);
 	  hit3 = Stage3pair_hit3(stage3pair);
 	  if (clipdir >= 0) {
-	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,hit5,
+	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 					 Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,hit3,
+	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 					 Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 	  } else {
-	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,hit5,
+	    chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&hardclip5,/*hardclip_high*/&ignore,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 					 Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,hit3,
+	    chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip3,
+					 clipdir,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 					 Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 	  }
 
 	  /* print first end */
-	  SAM_print(fp_concordant_mult,hit5,/*mate*/hit3,acc1,acc2,pathnum,npaths,
+	  SAM_print(fp_concordant_mult,ABBREV_CONCORDANT_MULT,
+		    hit5,/*mate*/hit3,acc1,acc2,pathnum,npaths,
 		    Stage3pair_absmq_score(stage3pair),first_absmq,second_absmq,
 		    Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4249,7 +5316,8 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		    merge_samechr_p);
 
 	  /* print second end */
-	  SAM_print(fp_concordant_mult,hit3,/*mate*/hit5,acc1,acc2,pathnum,npaths,
+	  SAM_print(fp_concordant_mult,ABBREV_CONCORDANT_MULT,
+		    hit3,/*mate*/hit5,acc1,acc2,pathnum,npaths,
 		    Stage3pair_absmq_score(stage3pair),first_absmq,second_absmq,
 		    Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4267,12 +5335,16 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       stage3pair = stage3pairarray[0];
       if (Stage3pair_circularp(stage3pair) == true) {
 	fp = fp_paired_uniq_circular;
+	abbrev = ABBREV_PAIRED_UNIQ_CIRCULAR;
       } else if ((pairtype = Stage3pair_pairtype(stage3pair)) == PAIRED_INVERSION) {
 	fp = fp_paired_uniq_inv;
+	abbrev = ABBREV_PAIRED_UNIQ_INV;
       } else if (pairtype == PAIRED_SCRAMBLE) {
 	fp = fp_paired_uniq_scr;
+	abbrev = ABBREV_PAIRED_UNIQ_SCR;
       } else if (pairtype == PAIRED_TOOLONG) {
 	fp = fp_paired_uniq_long;
+	abbrev = ABBREV_PAIRED_UNIQ_LONG;
       } else {
 	fprintf(stderr,"Unexpected pairtype %d\n",pairtype);
 	abort();
@@ -4282,13 +5354,15 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
       hit5 = Stage3pair_hit5(stage3pair);
       hit3 = Stage3pair_hit3(stage3pair);
-      chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,hit5,
+      chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				   /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 				   Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-      chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,hit3,
+      chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				   /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 				   Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 
       /* print first end */
-      SAM_print(fp,hit5,/*mate*/hit3,acc1,acc2,/*pathnum*/1,/*npaths*/1,
+      SAM_print(fp,abbrev,hit5,/*mate*/hit3,acc1,acc2,/*pathnum*/1,/*npaths*/1,
 		Stage3pair_absmq_score(stage3pair),first_absmq,/*second_absmq*/0,
 		Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		/*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4298,7 +5372,7 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		merge_samechr_p);
 
       /* print second end */
-      SAM_print(fp,hit3,/*mate*/hit5,acc1,acc2,/*pathnum*/1,/*npaths*/1,
+      SAM_print(fp,abbrev,hit3,/*mate*/hit5,acc1,acc2,/*pathnum*/1,/*npaths*/1,
 		Stage3pair_absmq_score(stage3pair),first_absmq,/*second_absmq*/0,
 		Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		/*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4312,17 +5386,29 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
       if (quiet_if_excessive_p && npaths > maxpaths_report) {
 	/* Print as nomapping, but send to fp_concordant_mult */
-	SAM_print_nomapping(fp_paired_mult,queryseq1,/*mate*/(Stage3end_T) NULL,
+	SAM_print_nomapping(fp_paired_mult_xs_1,ABBREV_PAIRED_MULT_XS,
+			    queryseq1,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
 			    /*first_read_p*/true,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_first_p,invert_second_p);
-	SAM_print_nomapping(fp_paired_mult,queryseq2,/*mate*/(Stage3end_T) NULL,
+	SAM_print_nomapping(fp_paired_mult_xs_1,ABBREV_PAIRED_MULT_XS,
+			    queryseq2,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
 			    /*first_read_p*/false,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_second_p,invert_first_p);
 
+	if (failedinput_root != NULL) {
+	  if (fastq_format_p == true) {
+	    Shortread_print_query_pairedend_fastq(fp_failedinput_1,fp_failedinput_2,queryseq1,queryseq2,
+						  invert_first_p,invert_second_p);
+	  } else {
+	    Shortread_print_query_pairedend_fasta(fp_failedinput_1,queryseq1,queryseq2,
+						  invert_first_p,invert_second_p);
+	  }
+	}
+
       } else {
 	/* Stage3pair_eval(stage3pairarray,npaths,maxpaths_report,queryseq1,queryseq2); */
 	for (pathnum = 1; pathnum <= npaths && pathnum <= maxpaths_report; pathnum++) {
@@ -4332,13 +5418,16 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
 	  hit5 = Stage3pair_hit5(stage3pair);
 	  hit3 = Stage3pair_hit3(stage3pair);
-	  chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,hit5,
+	  chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				       /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 				       Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-	  chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,hit3,
+	  chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				       /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 				       Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 
 	  /* print first end */
-	  SAM_print(fp_paired_mult,hit5,/*mate*/hit3,acc1,acc2,pathnum,npaths,
+	  SAM_print(fp_paired_mult,ABBREV_PAIRED_MULT,
+		    hit5,/*mate*/hit3,acc1,acc2,pathnum,npaths,
 		    Stage3pair_absmq_score(stage3pair),first_absmq,second_absmq,
 		    Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4348,7 +5437,8 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		    merge_samechr_p);
 
 	  /* print second end */
-	  SAM_print(fp_paired_mult,hit3,/*mate*/hit5,acc1,acc2,pathnum,npaths,
+	  SAM_print(fp_paired_mult,ABBREV_PAIRED_MULT,
+		    hit3,/*mate*/hit5,acc1,acc2,pathnum,npaths,
 		    Stage3pair_absmq_score(stage3pair),first_absmq,second_absmq,
 		    Stage3pair_mapq_score(stage3pair),chromosome_iit,
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4368,20 +5458,24 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
       hit5 = stage3array1[0];
       hit3 = stage3array2[0];
-      chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,hit5,
+      chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				   /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,hit5,
 				   Stage3end_substring_low(hit5),Shortread_fulllength(queryseq1));
-      chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,hit3,
+      chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				   /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,hit3,
 				   Stage3end_substring_low(hit3),Shortread_fulllength(queryseq2));
 
       if (Stage3end_circularpos(hit5) > 0 || Stage3end_circularpos(hit3) > 0) {
 	fp = fp_unpaired_circular;
+	abbrev = ABBREV_UNPAIRED_CIRCULAR;
       } else {
 	fp = fp_unpaired_uniq;
+	abbrev = ABBREV_UNPAIRED_UNIQ;
       }
 
       /* print first end */
       /* Stage3end_eval_and_sort(stage3array1,npaths1,maxpaths_report,queryseq1); */
-      SAM_print(fp,hit5,/*mate*/hit3,acc1,acc2,/*pathnum*/1,/*npaths*/1,
+      SAM_print(fp,abbrev,hit5,/*mate*/hit3,acc1,acc2,/*pathnum*/1,/*npaths*/1,
 		Stage3end_absmq_score(stage3array1[0]),first_absmq1,/*second_absmq*/0,
 		Stage3end_mapq_score(stage3array1[0]),chromosome_iit,
 		/*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4392,7 +5486,7 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
       /* print second end */
       /* Stage3end_eval_and_sort(stage3array2,npaths2,maxpaths_report,queryseq2); */
-      SAM_print(fp,hit3,/*mate*/hit5,acc1,acc2,/*pathnum*/1,/*npaths*/1,
+      SAM_print(fp,abbrev,hit3,/*mate*/hit5,acc1,acc2,/*pathnum*/1,/*npaths*/1,
 		Stage3end_absmq_score(stage3array2[0]),first_absmq2,/*second_absmq*/0,
 		Stage3end_mapq_score(stage3array2[0]),chromosome_iit,
 		/*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4404,8 +5498,12 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
     } else if (resulttype == UNPAIRED_MULT || resulttype == UNPAIRED_TRANSLOC) {
       if (resulttype == UNPAIRED_MULT) {
 	fp = fp_unpaired_mult;
+	fp_xs = fp_unpaired_mult_xs_1;
+	abbrev = ABBREV_UNPAIRED_MULT;
+	abbrev_xs = ABBREV_UNPAIRED_MULT_XS;
       } else {
-	fp = fp_unpaired_transloc;
+	fp = fp_xs = fp_unpaired_transloc;
+	abbrev = abbrev_xs = ABBREV_UNPAIRED_TRANSLOC;
       }
 
       stage3array1 = (Stage3end_T *) Result_array(&npaths1,&first_absmq1,&second_absmq1,result);
@@ -4442,17 +5540,19 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       } else {
 	mate = stage3array2[0];
 	hardclip3 = 0;
-	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,mate,
+	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,mate,
 				     Stage3end_substring_low(mate),Shortread_fulllength(queryseq2));
       }
 
       if (npaths1 == 1) {
 	stage3 = stage3array1[0];
 	hardclip5 = 0;
-	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,stage3,
+	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,stage3,
 				     Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
 
-	SAM_print(fp,stage3,mate,acc1,acc2,/*pathnum*/1,npaths1,
+	SAM_print(fp,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths1,
 		  Stage3end_absmq_score(stage3),first_absmq1,second_absmq1,
 		  Stage3end_mapq_score(stage3),chromosome_iit,
 		  /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4462,19 +5562,23 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		  invert_first_p,invert_second_p,merge_samechr_p);
 
       } else if (quiet_if_excessive_p && npaths1 > maxpaths_report) {
-	SAM_print_nomapping(fp,queryseq1,mate,acc1,acc2,chromosome_iit,
-			    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths2,
-			    /*mate_chrpos*/chrpos3,
-			    quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
+	if (1 || failedinput_root != NULL) {
+	  /* Just printing one end as nomapping */
+	  SAM_print_nomapping(fp_xs,abbrev_xs,queryseq1,mate,acc1,acc2,chromosome_iit,
+			      resulttype,/*first_read_p*/true,/*npaths_mate*/npaths2,
+			      /*mate_chrpos*/chrpos3,
+			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
+	}
 
       } else {
 	for (pathnum = 1; pathnum <= npaths1 && pathnum <= maxpaths_report; pathnum++) {
 	  stage3 = stage3array1[pathnum-1];
 	  hardclip5 = 0;
-	  chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,stage3,
+	  chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				       /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,stage3,
 				       Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
 
-	  SAM_print(fp,stage3,mate,acc1,acc2,pathnum,npaths1,
+	  SAM_print(fp,abbrev,stage3,mate,acc1,acc2,pathnum,npaths1,
 		    Stage3end_absmq_score(stage3),first_absmq1,second_absmq1,
 		    Stage3end_mapq_score(stage3),chromosome_iit,
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4495,17 +5599,19 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       } else {
 	mate = stage3array1[0];
 	hardclip5 = 0;
-	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,mate,
+	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,mate,
 				     Stage3end_substring_low(mate),Shortread_fulllength(queryseq1));
       }
 
       if (npaths2 == 1) {
 	stage3 = stage3array2[0];
 	hardclip3 = 0;
-	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,stage3,
+	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,stage3,
 				     Stage3end_substring_low(stage3),Shortread_fulllength(queryseq2));
 
-	SAM_print(fp,stage3,mate,acc1,acc2,/*pathnum*/1,npaths2,
+	SAM_print(fp,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths2,
 		  Stage3end_absmq_score(stage3),first_absmq2,second_absmq2,
 		  Stage3end_mapq_score(stage3),chromosome_iit,
 		  /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4515,19 +5621,23 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		  invert_second_p,invert_first_p,merge_samechr_p);
 
       } else if (quiet_if_excessive_p && npaths2 > maxpaths_report) {
-	SAM_print_nomapping(fp,queryseq2,mate,acc1,acc2,chromosome_iit,
-			    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths1,
-			    /*mate_chrpos*/chrpos5,
-			    quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
+	if (1 || failedinput_root != NULL) {
+	  /* Just printing one end as nomapping */
+	  SAM_print_nomapping(fp_xs,abbrev_xs,queryseq2,mate,acc1,acc2,chromosome_iit,
+			      resulttype,/*first_read_p*/false,/*npaths_mate*/npaths1,
+			      /*mate_chrpos*/chrpos5,
+			      quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
+	}
 
       } else {
 	for (pathnum = 1; pathnum <= npaths2 && pathnum <= maxpaths_report; pathnum++) {
 	  stage3 = stage3array2[pathnum-1];
 	  hardclip3 = 0;
-	  chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,stage3,
+	  chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				       /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,stage3,
 				       Stage3end_substring_low(stage3),Shortread_fulllength(queryseq2));
 
-	  SAM_print(fp,stage3,mate,acc1,acc2,pathnum,npaths2,
+	  SAM_print(fp,abbrev,stage3,mate,acc1,acc2,pathnum,npaths2,
 		    Stage3end_absmq_score(stage3),first_absmq2,second_absmq2,
 		    Stage3end_mapq_score(stage3),chromosome_iit,
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4544,16 +5654,23 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 
       if (resulttype == HALFMAPPING_UNIQ) {
 	if (npaths1 == 1 && Stage3end_circularpos(stage3array1[0]) > 0) {
-	  fp = fp_halfmapping_circular;
+	  fp = fp_xs = fp_halfmapping_circular;
+	  abbrev = abbrev_xs = ABBREV_HALFMAPPING_CIRCULAR;
 	} else if (npaths2 == 1 && Stage3end_circularpos(stage3array2[0]) > 0) {
-	  fp = fp_halfmapping_circular;
+	  fp = fp_xs = fp_halfmapping_circular;
+	  abbrev = abbrev_xs = ABBREV_HALFMAPPING_CIRCULAR;
 	} else {
-	  fp = fp_halfmapping_uniq;
+	  fp = fp_xs = fp_halfmapping_uniq;
+	  abbrev = abbrev_xs = ABBREV_HALFMAPPING_UNIQ;
 	}
       } else if (resulttype == HALFMAPPING_TRANSLOC) {
-	fp = fp_halfmapping_transloc;
+	fp = fp_xs = fp_halfmapping_transloc;
+	abbrev = abbrev_xs = ABBREV_HALFMAPPING_TRANSLOC;
       } else if (resulttype == HALFMAPPING_MULT) {
 	fp = fp_halfmapping_mult;
+	fp_xs = fp_halfmapping_mult_xs_1;
+	abbrev = ABBREV_HALFMAPPING_MULT;
+	abbrev_xs = ABBREV_HALFMAPPING_MULT_XS;
       } else {
 	abort();
       }
@@ -4594,26 +5711,31 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       } else {
 	mate = stage3array2[0];
 	hardclip3 = 0;
-	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,mate,
+	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,mate,
 				     Stage3end_substring_low(mate),Shortread_fulllength(queryseq2));
       }
 
       if (npaths1 == 0) {
-	/* mate should be non-NULL here */
-	SAM_print_nomapping(fp,queryseq1,mate,acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*npaths_mate*/npaths2,
-			    /*mate_chrpos*/chrpos3,
-			    quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
+	if (1 || failedinput_root != NULL) {
+	  /* just printing one end as nomapping */
+	  /* mate should be non-NULL here */
+	  SAM_print_nomapping(fp,abbrev,queryseq1,mate,acc1,acc2,chromosome_iit,resulttype,
+			      /*first_read_p*/true,/*npaths_mate*/npaths2,
+			      /*mate_chrpos*/chrpos3,
+			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
+	}
 
       } else if (npaths1 == 1) {
 	/* mate should be NULL here */
 
 	stage3 = stage3array1[0];
 	hardclip5 = 0;
-	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,stage3,
+	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,stage3,
 				     Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
 
-	SAM_print(fp,stage3,mate,acc1,acc2,/*pathnum*/1,npaths1,
+	SAM_print(fp,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths1,
 		  Stage3end_absmq_score(stage3),first_absmq1,/*second_absmq1*/0,
 		  Stage3end_mapq_score(stage3),chromosome_iit,
 		  /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4623,21 +5745,25 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		  invert_first_p,invert_second_p,merge_samechr_p);
 
       } else if (quiet_if_excessive_p && npaths1 > maxpaths_report) {
-	/* mate should be NULL here */
-	SAM_print_nomapping(fp,queryseq1,mate,acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*npaths_mate*/npaths2,
-			    /*mate_chrpos*/chrpos3,
-			    quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
+	if (1 || failedinput_root != NULL) {
+	  /* Just printing one end as nomapping */
+	  /* mate should be NULL here */
+	  SAM_print_nomapping(fp_xs,abbrev_xs,queryseq1,mate,acc1,acc2,chromosome_iit,resulttype,
+			      /*first_read_p*/true,/*npaths_mate*/npaths2,
+			      /*mate_chrpos*/chrpos3,
+			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
+	}
 
       } else {
 	/* mate should be NULL here */
 	for (pathnum = 1; pathnum <= npaths1 && pathnum <= maxpaths_report; pathnum++) {
 	  stage3 = stage3array1[pathnum-1];
 	  hardclip5 = 0;
-	  chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,stage3,
+	  chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				       /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,stage3,
 				       Stage3end_substring_low(stage3),Shortread_fulllength(queryseq1));
 
-	  SAM_print(fp,stage3,mate,acc1,acc2,pathnum,npaths1,
+	  SAM_print(fp,abbrev,stage3,mate,acc1,acc2,pathnum,npaths1,
 		    Stage3end_absmq_score(stage3),first_absmq1,second_absmq1,
 		    Stage3end_mapq_score(stage3),chromosome_iit,
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
@@ -4658,26 +5784,31 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
       } else {
 	mate = stage3array1[0];
 	hardclip5 = 0;
-	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,mate,
+	chrpos5 = SAM_compute_chrpos(/*hardclip_low*/&ignore,/*hardclip_high*/&hardclip5,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/true,mate,
 				     Stage3end_substring_low(mate),Shortread_fulllength(queryseq1));
       }
 
       if (npaths2 == 0) {
-	/* mate should be non-NULL here */
-	SAM_print_nomapping(fp,queryseq2,mate,acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/false,/*npaths_mate*/npaths1,
-			    /*mate_chrpos*/chrpos5,
-			    quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
+	if (1 || failedinput_root != NULL) {
+	  /* Just printing one end as nomapping */
+	  /* mate should be non-NULL here */
+	  SAM_print_nomapping(fp,abbrev,queryseq2,mate,acc1,acc2,chromosome_iit,resulttype,
+			      /*first_read_p*/false,/*npaths_mate*/npaths1,
+			      /*mate_chrpos*/chrpos5,
+			      quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
+	}
 
       } else if (npaths2 == 1) {
 	/* mate should be NULL here */
 
 	stage3 = stage3array2[0];
 	hardclip3 = 0;
-	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,stage3,
+	chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				     /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,stage3,
 				     Stage3end_substring_low(stage3),Shortread_fulllength(queryseq2));
 
-	SAM_print(fp,stage3,mate,acc1,acc2,/*pathnum*/1,npaths2,
+	SAM_print(fp,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths2,
 		  Stage3end_absmq_score(stage3),first_absmq2,/*second_absmq2*/0,
 		  Stage3end_mapq_score(stage3),chromosome_iit,
 		  /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
@@ -4687,21 +5818,25 @@ SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		  invert_second_p,invert_first_p,merge_samechr_p);
 
       } else if (quiet_if_excessive_p && npaths2 > maxpaths_report) {
-	/* mate should be NULL here */
-	SAM_print_nomapping(fp,queryseq2,mate,acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/false,/*npaths_mate*/npaths1,
-			    /*mate_chrpos*/chrpos5,
-			    quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
+	if (1 || failedinput_root != NULL) {
+	  /* Just printing one end as nomapping */
+	  /* mate should be NULL here */
+	  SAM_print_nomapping(fp_xs,abbrev_xs,queryseq2,mate,acc1,acc2,chromosome_iit,resulttype,
+			      /*first_read_p*/false,/*npaths_mate*/npaths1,
+			      /*mate_chrpos*/chrpos5,
+			      quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
+	}
 
       } else {
 	/* mate should be NULL here */
 	for (pathnum = 1; pathnum <= npaths2 && pathnum <= maxpaths_report; pathnum++) {
 	  stage3 = stage3array2[pathnum-1];
 	  hardclip3 = 0;
-	  chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,stage3,
+	  chrpos3 = SAM_compute_chrpos(/*hardclip_low*/&hardclip3,/*hardclip_high*/&ignore,
+				       /*clipdir*/0,hardclip5,hardclip3,/*first_read_p*/false,stage3,
 				       Stage3end_substring_low(stage3),Shortread_fulllength(queryseq2));
 
-	  SAM_print(fp,stage3,mate,acc1,acc2,pathnum,npaths2,
+	  SAM_print(fp,abbrev,stage3,mate,acc1,acc2,pathnum,npaths2,
 		    Stage3end_absmq_score(stage3),first_absmq2,second_absmq2,
 		    Stage3end_mapq_score(stage3),chromosome_iit,
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
diff --git a/src/samprint.h b/src/samprint.h
index 5f179ee..ce5e5fe 100644
--- a/src/samprint.h
+++ b/src/samprint.h
@@ -1,4 +1,4 @@
-/* $Id: samprint.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: samprint.h 136801 2014-05-21 19:22:46Z twu $ */
 #ifndef SAMPRINT_INCLUDED
 #define SAMPRINT_INCLUDED
 
@@ -14,12 +14,40 @@
 #include "bool.h"
 
 extern void
-SAM_setup (bool quiet_if_excessive_p_in, int maxpaths_report_in, bool sam_multiple_primaries_p_in,
+SAM_setup (bool quiet_if_excessive_p_in, int maxpaths_report_in,
+	   char *failedinput_root_in, bool fastq_format_p_in, bool hide_soft_clips_p_in,
+	   bool sam_multiple_primaries_p_in,
 	   bool force_xs_direction_p_in, bool md_lowercase_variant_p_in, IIT_T snps_iit_in);
 
+extern void
+SAM_file_setup_single (FILE *fp_failedinput_in, FILE *fp_nomapping_in,
+		       FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+		       FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in);
+
+extern void
+SAM_file_setup_paired (FILE *failedinput_1_in, FILE *failedinput_2_in, FILE *fp_nomapping_in,
+		       FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+		       FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+		       FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+		       FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+		       FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+		       FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in);
+
+extern void
+SAM_file_setup_all (FILE *failedinput_1_in, FILE *failedinput_2_in, FILE *fp_nomapping_in,
+		    FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+		    FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in, FILE *fp_unpaired_mult_xs_2_in,
+		    FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+		    FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+		    FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+		    FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+		    FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+		    FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in);
+
 extern Chrpos_T
-SAM_compute_chrpos (int *hardclip_low, int *hardclip_high, Stage3end_T this,
-		    Substring_T substring_low, int querylength);
+SAM_compute_chrpos (int *hardclip_low, int *hardclip_high,
+		    int clipdir, int hardclip5, int hardclip3, bool firstp,
+		    Stage3end_T this, Substring_T substring_low, int querylength);
 
 extern unsigned int
 SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
@@ -27,13 +55,14 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
 		  int absmq_score, int first_absmq, bool invertp, bool invert_mate_p);
 
 extern void
-SAM_print_nomapping (FILE *fp, Shortread_T queryseq, Stage3end_T mate, char *acc1, char *acc2,
+SAM_print_nomapping (FILE *fp, char *abbrev, Shortread_T queryseq, Stage3end_T mate, char *acc1, char *acc2,
 		     Univ_IIT_T chromosome_iit, Resulttype_T resulttype, bool first_read_p,
 		     int npaths_mate, Chrpos_T mate_chrpos,
 		     int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p);
 
 extern void
-SAM_print (FILE *fp, Stage3end_T this, Stage3end_T mate, char *acc1, char *acc2, int pathnum, int npaths,
+SAM_print (FILE *fp, char *abbrev, Stage3end_T this, Stage3end_T mate,
+	   char *acc1, char *acc2, int pathnum, int npaths,
 	   int absmq_score, int first_absmq, int second_absmq, int mapq_score, Univ_IIT_T chromosome_iit, Shortread_T queryseq,
 	   Shortread_T queryseq2, int pairedlength, Chrpos_T chrpos, Chrpos_T mate_chrpos,
 	   int clipdir, int hardclip_low, int hardclip_high, Resulttype_T resulttype, bool first_read_p,
@@ -44,18 +73,8 @@ extern void
 SAM_print_paired (Result_T result, Resulttype_T resulttype,
 		  Univ_IIT_T chromosome_iit, Shortread_T queryseq1, Shortread_T queryseq2,
 		  bool invert_first_p, bool invert_second_p,
-		  bool nofailsp, bool failsonlyp, bool fails_as_input_p,
-		  bool fastq_format_p, bool clip_overlap_p, bool merge_samechr_p,
-		  int quality_shift, char *sam_read_group_id,
-		  FILE *fp_nomapping_1, FILE *fp_nomapping_2,
-		  FILE *fp_unpaired_uniq, FILE *fp_unpaired_circular,
-		  FILE *fp_unpaired_transloc, FILE *fp_unpaired_mult,
-		  FILE *fp_halfmapping_uniq, FILE *fp_halfmapping_circular,
-		  FILE *fp_halfmapping_transloc, FILE *fp_halfmapping_mult,
-		  FILE *fp_paired_uniq_circular, FILE *fp_paired_uniq_inv, FILE *fp_paired_uniq_scr,
-		  FILE *fp_paired_long, FILE *fp_paired_mult,
-		  FILE *fp_concordant_uniq, FILE *fp_concordant_circular,
-		  FILE *fp_concordant_transloc, FILE *fp_concordant_mult);
+		  bool nofailsp, bool failsonlyp, bool clip_overlap_p, bool merge_samechr_p,
+		  int quality_shift, char *sam_read_group_id);
 
 #endif
 
diff --git a/src/sarray-read.c b/src/sarray-read.c
new file mode 100644
index 0000000..1dfa627
--- /dev/null
+++ b/src/sarray-read.c
@@ -0,0 +1,3736 @@
+static char rcsid[] = "$Id: sarray-read.c 138745 2014-06-11 19:04:25Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#ifndef HAVE_MEMCPY
+#define memcpy(d,s,n) bcopy((s),(d),(n))
+#endif
+
+#include "sarray-read.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>		/* For munmap */
+#include "mem.h"
+#include "bool.h"
+#include "assert.h"
+#include "access.h"
+#include "types.h"
+#include "listdef.h"
+#include "list.h"
+#include "genome128_hr.h"
+#include "splice.h"
+#include "indel.h"
+#include "stage3hr.h"
+#include "bytecoding.h"
+#include "bitpack64-read.h"
+#include "bitpack64-readtwo.h"
+#include "bitpack64-access.h"
+
+
+#ifdef HAVE_SSE2
+#include <emmintrin.h>
+#endif
+
+
+/* A value of 10000 misses various splices, although they are caught by GSNAP algorithm */
+#define EXCESS_SARRAY_HITS 100000
+#define GUESS_ALLOCATION 10
+#define LOCALSPLICING_SLOP 0.05
+
+/* #define USE_SEPARATE_BUCKETS 1 */
+
+/* Results of each suffix array search */
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+/* Details of suffix array search */
+#ifdef DEBUG1
+#define debug1(x) x
+#else
+#define debug1(x)
+#endif
+
+/* Search through saindex */
+#ifdef DEBUG1A
+#define debug1a(x) x
+#else
+#define debug1a(x)
+#endif
+
+/* get_child */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+/* known splicing */
+#ifdef DEBUG4S
+#define debug4s(x) x
+#else
+#define debug4s(x)
+#endif
+
+/* find_multimiss_iter */
+#ifdef DEBUG7
+#define debug7(x) x
+#else
+#define debug7(x)
+#endif
+
+/* find_multimiss_iter details */
+#ifdef DEBUG7A
+#define debug7a(x) x
+#else
+#define debug7a(x)
+#endif
+
+/* Comparing SIMD with non-SIMD */
+#ifdef DEBUG8
+#define debug8(x) x
+#else
+#define debug8(x)
+#endif
+
+/* binary_search */
+#ifdef DEBUG10
+#define debug10(x) x
+#else
+#define debug10(x)
+#endif
+
+/* Compare sarray_search with sarray_search_simple */
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
+
+/* Compare separate buckets with a single one */
+#ifdef DEBUG15
+#define debug15(x) x
+#else
+#define debug15(x)
+#endif
+
+
+#define T Sarray_T
+struct T {
+  Univcoord_T n;
+  Univcoord_T n_plus_one;
+
+  Univcoord_T *array;
+
+  unsigned char *lcpchilddc;
+
+  UINT4 *lcp_guide;
+  UINT4 *lcp_exceptions;
+  int n_lcp_exceptions;		/* Won't be necessary if we change lcpchilddc to use guide array */
+  /* int lcp_guide_interval; -- Always use 1024 */
+  
+  UINT4 *child_guide;
+  UINT4 *child_exceptions;
+  /* int n_child_exceptions; */
+  int child_guide_interval; /* Always use 1024 */
+
+#if 0
+  Sarrayptr_T initindexi[4];	/* For A, C, G, T */
+  Sarrayptr_T initindexj[4];	/* For A, C, G, T */
+#endif
+
+  int indexsize;
+  UINT4 indexspace;		/* 4^indexsize.  Used by sarray_search to detect when we have a poly-T oligo shorter than indexsize */
+#ifdef DEBUG15
+  UINT4 *indexi_ptrs, *indexi_comp, *indexj_ptrs, *indexj_comp; /* bucket array: oligomer lookup into suffix array */
+  UINT4 *indexij_ptrs, *indexij_comp;
+#elif defined(USE_SEPARATE_BUCKETS)
+  UINT4 *indexi_ptrs, *indexi_comp, *indexj_ptrs, *indexj_comp; /* bucket array: oligomer lookup into suffix array */
+#else
+  UINT4 *indexij_ptrs, *indexij_comp;
+#endif
+
+  Access_T sarray_access;
+  Access_T aux_access;
+
+  int array_fd; size_t array_len;
+#ifdef DEBUG15
+  int indexi_ptrs_fd; size_t indexi_ptrs_len; int indexi_comp_fd; size_t indexi_comp_len;
+  int indexj_ptrs_fd; size_t indexj_ptrs_len; int indexj_comp_fd; size_t indexj_comp_len;
+  int indexij_ptrs_fd; size_t indexij_ptrs_len; int indexij_comp_fd; size_t indexij_comp_len;
+#elif defined(USE_SEPARATE_BUCKETS)
+  int indexi_ptrs_fd; size_t indexi_ptrs_len; int indexi_comp_fd; size_t indexi_comp_len;
+  int indexj_ptrs_fd; size_t indexj_ptrs_len; int indexj_comp_fd; size_t indexj_comp_len;
+#else
+  int indexij_ptrs_fd; size_t indexij_ptrs_len; int indexij_comp_fd; size_t indexij_comp_len;
+#endif
+
+  int lcpchilddc_fd; size_t lcpchilddc_len;
+
+  int lcp_guide_fd; size_t lcp_guide_len;
+  int lcp_exceptions_fd; size_t lcp_exceptions_len;
+
+  int child_guide_fd; size_t child_guide_len;
+  int child_exceptions_fd; size_t child_exceptions_len;
+
+};
+
+
+/* For benchmarking */
+Univcoord_T
+Sarray_size (Sarray_T this) {
+  return this->n_plus_one;
+}
+
+
+static Sarray_T sarray_fwd;
+static Sarray_T sarray_rev;
+static Genome_T genome;
+
+static char conversion_fwd[128];
+static char conversion_rev[128];
+
+static Univ_IIT_T chromosome_iit;
+static int circular_typeint;
+static int splicing_penalty;
+
+static Chrpos_T overall_max_distance;
+static Chrpos_T shortsplicedist;
+static Chrpos_T max_deletionlen;
+static Chrpos_T max_insertionlen;
+static Chrpos_T max_end_deletions;
+
+/* Splicing */
+static Univcoord_T *splicesites;
+static Splicetype_T *splicetypes;
+static Chrpos_T *splicedists;
+static int nsplicesites;
+
+
+#if 0
+/* Simplified from sarray_search_simple in sarray-write.c */
+static void
+sarray_search_char (Sarrayptr_T *initptr, Sarrayptr_T *finalptr, char desired_char,
+		    UINT4 *SA, UINT4 n, char *chartable) {
+  Sarrayptr_T low, high, mid;
+  Univcoord_T pos;
+  char c;
+
+  low = 1;
+  high = n + 1;
+
+  while (low < high) {
+#if 0
+    /* Compute mid for unsigned ints.  Want floor((low+high)/2). */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 && high % 2 == 1) {
+      mid += 1;
+    }
+#else
+    mid = low + ((high - low) / 2);
+#endif
+    pos = SA[mid];
+    c = Genome_get_char_lex(genome,pos,n,chartable);
+    if (desired_char > c) {
+      low = mid + 1;
+    } else {
+      high = mid;
+    }
+  }
+
+  *initptr = low;
+
+  low--;
+  high = n;
+  while (low < high) {
+#if 1
+    /* Compute mid for unsigned ints.  Want ceil((low+high)/2). */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 || high % 2 == 1) {
+      mid += 1;
+    }
+#else
+    /* This does not work for ceiling */
+    mid = low + ((high - low) / 2);
+#endif
+    pos = SA[mid];
+    c = Genome_get_char_lex(genome,pos,n,chartable);
+    if (desired_char >= c) {
+      low = mid;
+    } else {
+      high = mid - 1;
+    }
+  }
+
+  *finalptr = high;
+  return;
+}
+#endif
+
+
+void
+Sarray_setup (T sarray_fwd_in, T sarray_rev_in, Genome_T genome_in, Mode_T mode,
+	      Univ_IIT_T chromosome_iit_in, int circular_typeint_in,
+	      Chrpos_T shortsplicedist_in, int splicing_penalty_in,
+	      int max_deletionlength, int max_end_deletions_in,
+	      int max_middle_insertions, int max_end_insertions,
+	      Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
+	      Chrpos_T *splicedists_in, int nsplicesites_in) {
+  int i;
+
+  sarray_fwd = sarray_fwd_in;
+  sarray_rev = sarray_rev_in;
+  genome = genome_in;
+
+  for (i = 0; i < 128; i++) {
+    conversion_fwd[i] = i;
+    conversion_rev[i] = i;
+  }
+  if (mode == STANDARD) {
+    /* Don't change conversion */
+  } else if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
+    conversion_fwd['C'] = 'T';	/* CT */
+    conversion_rev['G'] = 'A';	/* GA */
+  } else if (mode == ATOI_STRANDED || mode == ATOI_NONSTRANDED) {
+    conversion_fwd['A'] = 'G';	/* AG */
+    conversion_rev['T'] = 'C';	/* TC */
+  }
+
+  chromosome_iit = chromosome_iit_in;
+  circular_typeint = circular_typeint_in;
+  shortsplicedist = shortsplicedist_in;
+  splicing_penalty = splicing_penalty_in;
+
+  max_deletionlen = max_deletionlength;
+  max_end_deletions = max_end_deletions_in;
+  if (max_middle_insertions > max_end_insertions) {
+    max_insertionlen = max_middle_insertions;
+  } else {
+    max_insertionlen = max_end_insertions;
+  }
+
+  if (shortsplicedist > max_deletionlen) {
+    overall_max_distance = shortsplicedist;
+  } else {
+    overall_max_distance = max_deletionlen;
+  }
+
+  splicesites = splicesites_in;
+  splicetypes = splicetypes_in;
+  splicedists = splicedists_in;
+  nsplicesites = nsplicesites_in;
+
+#if 0
+  sarray_search_char(&(sarray->initindexi[0]),&(sarray->initindexj[0]),/*desired_char*/'A',sarray->array,sarray->n);
+  sarray_search_char(&(sarray->initindexi[1]),&(sarray->initindexj[1]),/*desired_char*/'C',sarray->array,sarray->n);
+  sarray_search_char(&(sarray->initindexi[2]),&(sarray->initindexj[2]),/*desired_char*/'G',sarray->array,sarray->n);
+  sarray_search_char(&(sarray->initindexi[3]),&(sarray->initindexj[3]),/*desired_char*/'T',sarray->array,sarray->n);
+#endif
+
+#if 0
+  printf("A => %u %u\n",sarray->initindexi[0],sarray->initindexj[0]);
+  printf("C => %u %u\n",sarray->initindexi[1],sarray->initindexj[1]);
+  printf("G => %u %u\n",sarray->initindexi[2],sarray->initindexj[2]);
+  printf("T => %u %u\n",sarray->initindexi[3],sarray->initindexj[3]);
+#endif
+
+  return;
+}
+
+
+static int
+log4 (int result) {
+  int exponent = 0;
+
+  while (result > 1) {
+    result /= 4;
+    exponent++;
+  }
+
+  return exponent;
+}
+
+static UINT4
+power (int base, int exponent) {
+  UINT4 result = 1;
+  int i;
+
+  for (i = 0; i < exponent; i++) {
+    result *= base;
+  }
+
+  return result;
+}
+
+
+/* Ignores snps_root */
+T
+Sarray_new (char *dir, char *fileroot, char *snps_root, Access_mode_T sarray_access, Access_mode_T aux_access,
+	    Mode_T mode, bool fwdp) {
+  T new;
+  char *comma1;
+  double seconds;
+  int npages;
+
+  char *sarrayfile;
+  char *lcpchilddcfile;
+  char *lcp_guidefile, *lcp_exceptionsfile;
+  char *child_guidefile, *child_exceptionsfile;
+#ifdef DEBUG15
+  char *indexi_ptrsfile, *indexi_compfile;
+  char *indexj_ptrsfile, *indexj_compfile;
+  char *indexij_ptrsfile, *indexij_compfile;
+#elif defined(USE_SEPARATE_BUCKETS)
+  char *indexi_ptrsfile, *indexi_compfile;
+  char *indexj_ptrsfile, *indexj_compfile;
+#else
+  char *indexij_ptrsfile, *indexij_compfile;
+#endif
+
+  char *mode_prefix;
+
+  if (mode == STANDARD) {
+    mode_prefix = ".";
+  } else if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
+    if (fwdp == true) {
+      mode_prefix = ".metct.";
+    } else {
+      mode_prefix = ".metga.";
+    }
+  } else if (mode == ATOI_STRANDED || mode == ATOI_NONSTRANDED) {
+    if (fwdp == true) {
+      mode_prefix = ".a2iag.";
+    } else {
+      mode_prefix = ".a2itc.";
+    }
+  }
+
+  sarrayfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("sarray")+1,sizeof(char));
+  sprintf(sarrayfile,"%s/%s%ssarray",dir,fileroot,mode_prefix);
+
+  lcpchilddcfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("salcpchilddc")+1,sizeof(char));
+  sprintf(lcpchilddcfile,"%s/%s%ssalcpchilddc",dir,fileroot,mode_prefix);
+
+  lcp_guidefile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("salcpguide1024")+1,sizeof(char));
+  sprintf(lcp_guidefile,"%s/%s%ssalcpguide1024",dir,fileroot,mode_prefix);
+  lcp_exceptionsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("salcpexc")+1,sizeof(char));
+  sprintf(lcp_exceptionsfile,"%s/%s%ssalcpexc",dir,fileroot,mode_prefix);
+
+  child_guidefile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("sachildguide1024")+1,sizeof(char));
+  sprintf(child_guidefile,"%s/%s%ssachildguide1024",dir,fileroot,mode_prefix);
+  child_exceptionsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("sachildexc")+1,sizeof(char));
+  sprintf(child_exceptionsfile,"%s/%s%ssachildexc",dir,fileroot,mode_prefix);
+
+#ifdef DEBUG15
+  indexi_ptrsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexi64meta")+1,sizeof(char));
+  sprintf(indexi_ptrsfile,"%s/%s%ssaindexi64meta",dir,fileroot,mode_prefix);
+  indexi_compfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexi64strm")+1,sizeof(char));
+  sprintf(indexi_compfile,"%s/%s%ssaindexi64strm",dir,fileroot,mode_prefix);
+  indexj_ptrsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexj64meta")+1,sizeof(char));
+  sprintf(indexj_ptrsfile,"%s/%s%ssaindexj64meta",dir,fileroot,mode_prefix);
+  indexj_compfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexj64strm")+1,sizeof(char));
+  sprintf(indexj_compfile,"%s/%s%ssaindexj64strm",dir,fileroot,mode_prefix);
+  indexij_ptrsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindex64meta")+1,sizeof(char));
+  sprintf(indexij_ptrsfile,"%s/%s%ssaindex64meta",dir,fileroot,mode_prefix);
+  indexij_compfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindex64strm")+1,sizeof(char));
+  sprintf(indexij_compfile,"%s/%s%ssaindex64strm",dir,fileroot,mode_prefix);
+#elif defined(USE_SEPARATE_BUCKETS)
+  indexi_ptrsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexi64meta")+1,sizeof(char));
+  sprintf(indexi_ptrsfile,"%s/%s%ssaindexi64meta",dir,fileroot,mode_prefix);
+  indexi_compfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexi64strm")+1,sizeof(char));
+  sprintf(indexi_compfile,"%s/%s%ssaindexi64strm",dir,fileroot,mode_prefix);
+  indexj_ptrsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexj64meta")+1,sizeof(char));
+  sprintf(indexj_ptrsfile,"%s/%s%ssaindexj64meta",dir,fileroot,mode_prefix);
+  indexj_compfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(".saindexj64strm")+1,sizeof(char));
+  sprintf(indexj_compfile,"%s/%s%ssaindexj64strm",dir,fileroot,mode_prefix);
+#else
+  indexij_ptrsfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("saindex64meta")+1,sizeof(char));
+  sprintf(indexij_ptrsfile,"%s/%s%ssaindex64meta",dir,fileroot,mode_prefix);
+  indexij_compfile = (char *) CALLOC(strlen(dir)+strlen("/")+strlen(fileroot)+strlen(mode_prefix)+strlen("saindex64strm")+1,sizeof(char));
+  sprintf(indexij_compfile,"%s/%s%ssaindex64strm",dir,fileroot,mode_prefix);
+#endif
+
+  if (Access_file_exists_p(sarrayfile) == false) {
+    fprintf(stderr,"Suffix array index file %s does not exist\n",sarrayfile);
+    new = (T) NULL;
+
+  } else if (Access_file_exists_p(lcpchilddcfile) == false) {
+    fprintf(stderr,"Enhanced suffix array file %s does not exist.  The genome was built using an obsolete version\n",
+	    lcpchilddcfile);
+    new = (T) NULL;
+    exit(9);
+
+  } else {
+    new = (T) MALLOC(sizeof(*new));
+
+    if (sarray_access == USE_MMAP_PRELOAD) {
+      fprintf(stderr,"Pre-loading suffix array...");
+      new->array = (UINT4 *) Access_mmap_and_preload(&new->array_fd,&new->array_len,&npages,&seconds,sarrayfile,
+						     sizeof(UINT4));
+      new->sarray_access = MMAPPED;
+      comma1 = Genomicpos_commafmt(new->array_len);
+      fprintf(stderr,"done (%s bytes)\n",comma1);
+      FREE(comma1);
+    } else if (sarray_access == USE_MMAP_ONLY) {
+      new->array = (UINT4 *) Access_mmap(&new->array_fd,&new->array_len,sarrayfile,sizeof(UINT4),/*randomp*/true);
+      new->sarray_access = MMAPPED;
+    } else if (sarray_access == USE_ALLOCATE) {
+      new->array = (UINT4 *) Access_allocated(&new->array_len,&seconds,sarrayfile,sizeof(UINT4));
+      new->sarray_access = ALLOCATED;
+    }
+
+    new->n_plus_one = new->array_len/sizeof(UINT4); /* Should be genomiclength + 1*/
+    new->n = new->n_plus_one - 1;
+
+#ifdef DEBUG15
+    /* 8 is for two DIFFERENTIAL_METAINFO_SIZE words */
+    new->indexi_ptrs = (UINT4 *) Access_allocated(&new->indexi_ptrs_len,&seconds,indexi_ptrsfile,sizeof(UINT4));
+    new->indexi_comp = (UINT4 *) Access_allocated(&new->indexi_comp_len,&seconds,indexi_compfile,sizeof(UINT4));
+    new->indexj_ptrs = (UINT4 *) Access_allocated(&new->indexj_ptrs_len,&seconds,indexj_ptrsfile,sizeof(UINT4));
+    new->indexj_comp = (UINT4 *) Access_allocated(&new->indexj_comp_len,&seconds,indexj_compfile,sizeof(UINT4));
+    new->indexij_ptrs = (UINT4 *) Access_allocated(&new->indexij_ptrs_len,&seconds,indexij_ptrsfile,sizeof(UINT4));
+    new->indexij_comp = (UINT4 *) Access_allocated(&new->indexij_comp_len,&seconds,indexij_compfile,sizeof(UINT4));
+    new->indexsize = 3 + log4(((new->indexij_ptrs_len - 8)/sizeof(UINT4)/2)/ /*DIFFERENTIAL_METAINFO_SIZE*/2);
+#elif defined(USE_SEPARATE_BUCKETS)
+    /* 8 is for two DIFFERENTIAL_METAINFO_SIZE words */
+    new->indexi_ptrs = (UINT4 *) Access_allocated(&new->indexi_ptrs_len,&seconds,indexi_ptrsfile,sizeof(UINT4));
+    new->indexi_comp = (UINT4 *) Access_allocated(&new->indexi_comp_len,&seconds,indexi_compfile,sizeof(UINT4));
+    new->indexj_ptrs = (UINT4 *) Access_allocated(&new->indexj_ptrs_len,&seconds,indexj_ptrsfile,sizeof(UINT4));
+    new->indexj_comp = (UINT4 *) Access_allocated(&new->indexj_comp_len,&seconds,indexj_compfile,sizeof(UINT4));
+    new->indexsize = 3 + log4(((new->indexi_ptrs_len - 8)/sizeof(UINT4))/ /*DIFFERENTIAL_METAINFO_SIZE*/2);
+#else
+    /* 8 is for two DIFFERENTIAL_METAINFO_SIZE words */
+    new->indexij_ptrs = (UINT4 *) Access_allocated(&new->indexij_ptrs_len,&seconds,indexij_ptrsfile,sizeof(UINT4));
+    new->indexij_comp = (UINT4 *) Access_allocated(&new->indexij_comp_len,&seconds,indexij_compfile,sizeof(UINT4));
+    new->indexsize = 3 + log4(((new->indexij_ptrs_len - 8)/sizeof(UINT4)/2)/ /*DIFFERENTIAL_METAINFO_SIZE*/2);
+#endif
+    new->indexspace = power(4,new->indexsize);
+
+    if (aux_access == USE_MMAP_PRELOAD) {
+      fprintf(stderr,"Pre-loading LCP/child/DC arrays...");
+      new->lcpchilddc = (unsigned char *) Access_mmap_and_preload(&new->lcpchilddc_fd,&new->lcpchilddc_len,&npages,&seconds,
+								  lcpchilddcfile,sizeof(unsigned char));
+      new->aux_access = MMAPPED;
+      comma1 = Genomicpos_commafmt(new->lcpchilddc_len);
+      fprintf(stderr,"done (%s bytes)\n",comma1);
+      FREE(comma1);
+    } else if (aux_access == USE_MMAP_ONLY) {
+      new->lcpchilddc = (unsigned char *) Access_mmap(&new->lcpchilddc_fd,&new->lcpchilddc_len,lcpchilddcfile,
+						      sizeof(unsigned char),/*randomp*/true);
+      new->aux_access = MMAPPED;
+    } else if (aux_access == USE_ALLOCATE) {
+      new->lcpchilddc = (unsigned char *) Access_allocated(&new->lcpchilddc_len,&seconds,lcpchilddcfile,sizeof(unsigned char));
+      new->aux_access = ALLOCATED;
+    }
+
+    new->lcp_guide = (UINT4 *) Access_allocated(&new->lcp_guide_len,&seconds,lcp_guidefile,sizeof(UINT4));
+    new->lcp_exceptions = (UINT4 *) Access_allocated(&new->lcp_exceptions_len,&seconds,lcp_exceptionsfile,sizeof(UINT4));
+    new->n_lcp_exceptions = new->lcp_exceptions_len/(sizeof(UINT4) + sizeof(UINT4));
+
+    new->child_guide = (UINT4 *) Access_allocated(&new->child_guide_len,&seconds,child_guidefile,sizeof(UINT4));
+    new->child_exceptions = (UINT4 *) Access_allocated(&new->child_exceptions_len,&seconds,child_exceptionsfile,sizeof(UINT4));
+    new->child_guide_interval = 1024;
+  }
+
+
+  FREE(child_exceptionsfile);
+  FREE(child_guidefile);
+
+  FREE(lcp_exceptionsfile);
+  FREE(lcp_guidefile);
+
+  FREE(lcpchilddcfile);
+
+#ifdef DEBUG15
+  FREE(indexi_compfile);
+  FREE(indexi_ptrsfile);
+  FREE(indexj_compfile);
+  FREE(indexj_ptrsfile);
+  FREE(indexij_compfile);
+  FREE(indexij_ptrsfile);
+#elif defined(USE_SEPARATE_BUCKETS)
+  FREE(indexi_compfile);
+  FREE(indexi_ptrsfile);
+  FREE(indexj_compfile);
+  FREE(indexj_ptrsfile);
+#else
+  FREE(indexij_compfile);
+  FREE(indexij_ptrsfile);
+#endif
+
+  FREE(sarrayfile);
+
+  return new;
+}
+
+
+void
+Sarray_free (T *old) {
+  if (*old) {
+#ifdef DEBUG15
+    FREE((*old)->indexi_ptrs);
+    FREE((*old)->indexi_comp);
+    FREE((*old)->indexj_ptrs);
+    FREE((*old)->indexj_comp);
+    FREE((*old)->indexij_ptrs);
+    FREE((*old)->indexij_comp);
+#elif defined(USE_SEPARATE_BUCKETS)
+    FREE((*old)->indexi_ptrs);
+    FREE((*old)->indexi_comp);
+    FREE((*old)->indexj_ptrs);
+    FREE((*old)->indexj_comp);
+#else
+    FREE((*old)->indexij_ptrs);
+    FREE((*old)->indexij_comp);
+#endif
+    FREE((*old)->lcp_exceptions);
+    FREE((*old)->lcp_guide);
+    FREE((*old)->child_exceptions);
+    FREE((*old)->child_guide);
+
+    if ((*old)->aux_access == MMAPPED) {
+      munmap((void *) (*old)->lcpchilddc,(*old)->lcpchilddc_len);
+      close((*old)->lcpchilddc_fd);
+    } else {
+      FREE((*old)->lcpchilddc);
+    }
+
+    if ((*old)->sarray_access == MMAPPED) {
+      munmap((void *) (*old)->array,(*old)->array_len);
+      close((*old)->array_fd);
+    } else {
+      FREE((*old)->array);
+    }
+
+    FREE(*old);
+  }
+
+  return;
+}
+
+
+
+#if 0
+/* Old search method.  O(m*(log n)), where m is the querylength and n
+   is the size of the suffix array searched */
+static Sarrayptr_T
+sarray_search_init (char *query, int querylength, int queryoffset, Compress_T query_compress, bool plusp,
+		    Sarrayptr_T low, Sarrayptr_T high, Univcoord_T nmatches_low, Univcoord_T nmatches_high) {
+  Sarrayptr_T mid;
+  Univcoord_T pos;
+  Univcoord_T nmatches_mid, fasti;
+  char c;
+  UINT4 sa_low, sa_mid;
+  UINT4 lcp_low, lcp_mid;
+
+  assert(querylength > 0);
+
+  debug1(printf("sarray_search_init on querylength %d with low %u, high %u\n",querylength,low,high));
+  while (low + 1 < high) {
+#if 0
+    /* Compute mid for unsigned ints */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 && high % 2 == 1) {
+      mid += 1;
+    }
+#else
+    mid = low + ((high - low) / 2);
+#endif
+
+    debug1(printf("low %u, high %u => mid %u\n",low,high,mid));
+    nmatches_mid =  (nmatches_low < nmatches_high) ? nmatches_low : nmatches_high;
+
+    fasti = nmatches_mid +
+      (Univcoord_T) Genome_consecutive_matches_rightward(query_compress,/*left*/sarray->array[mid]-queryoffset,
+							 /*pos5*/queryoffset+nmatches_mid,
+							 /*pos3*/queryoffset+querylength,plusp,genestrand,first_read_p);
+    pos = sarray->array[mid] + fasti;
+    c = Genome_get_char_lex(genome,pos,sarray->n,chartable);
+
+    if (fasti == (Univcoord_T) querylength || c > query[fasti]) {
+      high = mid;
+      /* nmatches_high = (sarray->lcp[mid] < nmatches_mid) ? sarray->lcp[mid] : nmatches_mid; */
+      sa_mid = sarray->array[mid];
+      lcp_mid = Bitpack64_read_one(sa_mid,sarray->plcp_ptrs,sarray->plcp_comp) - sa_mid;
+#ifdef USE_LCP
+      if (lcp_mid != sarray->lcp[mid]) {
+	fprintf(stderr,"LCP compression error at %u\n",mid);
+      }
+#endif
+      nmatches_high = (lcp_mid < nmatches_mid) ? lcp_mid : nmatches_mid;
+    } else {
+      low = mid;
+      /* nmatches_low = (sarray->lcp[low] < nmatches_mid) ? sarray->lcp[low] : nmatches_mid; */
+      sa_low = sarray->array[low];
+      lcp_low = Bitpack64_read_one(sa_low,sarray->plcp_ptrs,sarray->plcp_comp) - sa_low;
+#ifdef USE_LCP
+      if (lcp_low != sarray->lcp[low]) {
+	fprintf(stderr,"LCP compression error at %u\n",mid);
+      }
+#endif
+      nmatches_low = (lcp_low < nmatches_mid) ? lcp_low : nmatches_mid;
+    }
+
+    debug1(printf("sarray_search_init with low %u, high %u\n",low,high));
+  }
+
+  debug1(printf("sarray_search_init ended.  Returning low %u+1\n\n",low));
+  return low + 1;
+}
+#endif
+
+
+#if 0
+/* Old search method.  O(m*(log n)), where m is the querylength and n
+   is the size of the suffix array searched */
+static Sarrayptr_T
+sarray_search_final (char *query, int querylength, int queryoffset, Compress_T query_compress, bool plusp,
+		     Sarrayptr_T low, Sarrayptr_T high, Univcoord_T nmatches_low, Univcoord_T nmatches_high) {
+  Sarrayptr_T mid;
+  Univcoord_T pos;
+  Univcoord_T nmatches_mid, fasti;
+  UINT4 sa_low, sa_mid;
+  UINT4 lcp_low, lcp_mid;
+  char c;
+
+  assert(querylength > 0);
+
+  debug1(printf("sarray_search_final on querylength %d with low %u, high %u\n",querylength,low,high));
+  while (low + 1 < high) {
+#if 0
+    /* Compute mid for unsigned ints */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 && high % 2 == 1) {
+      mid += 1;
+    }
+#else
+    mid = low + ((high - low) / 2);
+#endif
+    debug1(printf("low %u, high %u => mid %u\n",low,high,mid));
+    nmatches_mid =  (nmatches_low < nmatches_high) ? nmatches_low : nmatches_high;
+
+    fasti = nmatches_mid +
+      (Univcoord_T) Genome_consecutive_matches_rightward(query_compress,/*left*/sarray->array[mid]-queryoffset,
+							 /*pos5*/queryoffset+nmatches_mid,
+							 /*pos3*/queryoffset+querylength,plusp,genestrand,first_read_p);
+    pos = sarray->array[mid] + fasti;
+    c = Genome_get_char_lex(genome,pos,sarray->n,chartable);
+
+    if (fasti == (Univcoord_T) querylength || c < query[fasti]) {
+      low = mid;
+      /* nmatches_low = (sarray->lcp[low] < nmatches_mid) ? sarray->lcp[low] : nmatches_mid; */
+      sa_low = sarray->array[low];
+      lcp_low = Bitpack64_read_one(sa_low,sarray->plcp_ptrs,sarray->plcp_comp) - sa_low;
+#ifdef USE_LCP
+      if (lcp_low != sarray->lcp[low]) {
+	fprintf(stderr,"LCP compression error at %u\n",mid);
+      }
+#endif
+      nmatches_low = (lcp_low < nmatches_mid) ? lcp_low : nmatches_mid;
+    } else {
+      high = mid;
+      /* nmatches_high = (sarray->lcp[mid] < nmatches_mid) ? sarray->lcp[mid] : nmatches_mid; */
+      sa_mid = sarray->array[mid];
+      lcp_mid = Bitpack64_read_one(sa_mid,sarray->plcp_ptrs,sarray->plcp_comp) - sa_mid;
+#ifdef USE_LCP
+      if (lcp_mid != sarray->lcp[mid]) {
+	fprintf(stderr,"LCP compression error at %u\n",mid);
+      }
+#endif
+      nmatches_high = (lcp_mid < nmatches_mid) ? lcp_mid : nmatches_mid;
+    }
+
+    debug1(printf("sarray_search_final with low %u, high %u\n",low,high));
+  }
+
+  debug1(printf("sarray_search_final ended.  Returning high %u-1\n\n",high-1));
+  return high - 1;
+}
+#endif
+
+
+int
+nt_querylength (char *query, int querylength) {
+  int i;
+  char c;
+
+  i = 0;
+  while (i < querylength && ((c = query[i]) == 'A' || c == 'C' || c == 'G' || c == 'T')) {
+    i++;
+  }
+
+  return i;
+}
+
+
+Storedoligomer_T
+nt_oligo (char *query, int indexsize) {
+  Storedoligomer_T oligo = 0U;
+  int i;
+
+  for (i = 0; i < indexsize; i++) {
+    oligo *= 4;
+    
+    switch (query[i]) {
+    case 'A': break;
+    case 'C': oligo += 1; break;
+    case 'G': oligo += 2; break;
+    case 'T': oligo += 3; break;
+    default:
+      fprintf(stderr,"Saw N in nt_oligo\n");
+      abort();
+    }
+  }
+
+  return oligo;
+}
+
+Storedoligomer_T
+nt_oligo_truncate (char *query, int truncsize, int indexsize, int subst_value) {
+  Storedoligomer_T oligo = 0U;
+  int i;
+
+  for (i = 0; i < truncsize; i++) {
+    oligo *= 4;
+    
+    switch (query[i]) {
+    case 'A': break;
+    case 'C': oligo += 1; break;
+    case 'G': oligo += 2; break;
+    case 'T': oligo += 3; break;
+    default:
+      fprintf(stderr,"Saw N in nt_oligo\n");
+      abort();
+    }
+  }
+
+  for ( ; i < indexsize; i++) {
+    oligo *= 4;
+    oligo += subst_value;
+  }
+
+  return oligo;
+}
+
+
+
+/* For child[index+1].up, just calling child[index] */
+#define decode_up(index,child_bytes,child_guide,child_exceptions,child_guide_interval) index - Bytecoding_read_wguide(index,child_bytes,child_guide,child_exceptions,child_guide_interval)
+#define decode_down(index,child_bytes,child_guide,child_exceptions,child_guide_interval) Bytecoding_read_wguide(index,child_bytes,child_guide,child_exceptions,child_guide_interval) + index + 1
+#define decode_next(index,child_bytes,child_guide,child_exceptions,child_guide_interval) Bytecoding_read_wguide(index,child_bytes,child_guide,child_exceptions,child_guide_interval) + index + 1
+
+/*                                      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F */
+static char discrim_char_before[16] = {'?','$','$','$','$','$','A','A','A','A','C','C','C','G','G','T'};
+static char discrim_char_after[16]  = {'?','A','C','G','T','X','C','G','T','X','G','T','X','T','X','X'};
+
+static bool
+get_child_given_first (Sarrayptr_T *l, Sarrayptr_T *r, Sarrayptr_T i, Sarrayptr_T j, char desired_char,
+		       T sarray, unsigned char *lcpchilddc, UINT4 lcp_whole, UINT4 nextl) {
+  char c1, c2;
+
+  debug2(printf("Getting children for l-interval from %u to %u, char %c\n",i,j,desired_char));
+
+#if 0
+  /* First child already given */
+  debug1(printf("lcp-interval %u..%u\n",i,j));
+  up = decode_up(j,sarray->child_bytes,sarray->child_guide,sarray->child_exceptions,sarray->child_guide_interval);
+  if (i < up && up <= j) {
+    nextl = up;
+    debug2(printf("nextl is up: %u\n",nextl));
+  } else {
+    nextl = decode_down(i,sarray->child_bytes,sarray->child_guide,sarray->child_exceptions,sarray->child_guide_interval); /* down */
+    debug2(printf("nextl is down: %u\n",nextl));
+  }
+#endif
+
+  /* Test first child: Use discrim_chars, rather than looking up S[SA[i] + lcp_whole] */
+  c2 = Bytecoding_lcpchilddc_dc(&c1,nextl,lcpchilddc);
+  debug2(printf("First child: %u to %u, discrim chars %c and %c\n",i,nextl-1,c1,c2));
+
+  if (desired_char < c1) {
+    debug2(printf("1.  Returning false, because desired %c < c1 %c\n",desired_char,c1));
+    return false;
+  } else if (desired_char == c1) {
+    *l = i;
+    *r = nextl - 1;
+    debug2(printf("Returning true\n\n"));
+    return true;
+  } else if (desired_char < c2) {
+    debug2(printf("1.  Returning false, because desired %c < c2 %c\n",desired_char,c2));
+    return false;
+  } else {
+    /* Advance to middle children or final child */
+    debug2(printf("1.  Advancing\n"));
+  }
+
+  /* Test for child[i] being down: lcp[child[i]] > lcp[i] */
+  /* Test for child[i] being next_lindex: lcp[child[i]] == lcp[i] */
+  /* Test middle children */
+  while (nextl < j && Bytecoding_lcpchilddc_lcp_next(nextl,/*bytes*/lcpchilddc,sarray->child_guide,sarray->child_exceptions,
+						     sarray->child_guide_interval,sarray->lcp_exceptions,sarray->n_lcp_exceptions) == lcp_whole) {
+    /* Already tested for desired_char < c2 */
+    if (desired_char == c2) {
+      *l = nextl;
+      *r = Bytecoding_lcpchilddc_child_next(nextl,lcpchilddc,sarray->child_guide,sarray->child_exceptions,
+					    sarray->child_guide_interval) - 1; /* child[nextl] - 1 */
+      debug2(printf("Child: %u to %u, c2 %c\n",nextl,*r,c2));
+      debug2(printf("Returning true\n\n"));
+      return true;
+    } else {
+      debug2(printf("Child: %u",nextl));
+      nextl = Bytecoding_lcpchilddc_child_next(nextl,lcpchilddc,sarray->child_guide,sarray->child_exceptions,
+					       sarray->child_guide_interval); /* child[nextl] */
+      c2 = Bytecoding_lcpchilddc_dc(&c1,nextl,lcpchilddc);
+      debug2(printf(" to %u, discrim chars %c and %c\n",nextl-1,c1,c2));
+
+      if (desired_char < c2) {
+	debug2(printf("M.  Returning false, because desired %c < c2 %c\n",desired_char,c2));
+	return false;
+      } else {
+	debug2(printf("M.  Advancing\n"));
+      }
+    }
+  }
+
+  /* Test last child */
+  /* Already tested for desired_char < c2 */
+  debug2(printf("Final child: %u to %u, c2 %c\n",nextl,j,c2));
+  if (desired_char == c2) {
+    *l = nextl;
+    *r = j;
+    debug2(printf("Returning true\n\n"));
+    return true;
+  } else {
+    debug2(printf("3.  Returning false, because desired %c != c2 %c\n",desired_char,c2));
+    return false;
+  }
+}
+
+
+static UINT4
+find_longest_match (UINT4 nmatches, Sarrayptr_T *initptr, Sarrayptr_T *finalptr,
+		    Sarrayptr_T i, Sarrayptr_T j, char *query, UINT4 querylength,
+		    int queryoffset, Compress_T query_compress, T sarray, bool plusp,
+		    int genestrand, bool first_read_p, char conversion[]) {
+  UINT4 lcp_whole, nextl, up;
+  UINT4 minlength;
+  UINT4 l, r;
+
+  while (nmatches < querylength) {
+    if (i == j) {
+      /* Singleton interval */
+      debug1(printf("Singleton interval %u..%u\n",i,j));
+      nmatches +=
+	Genome_consecutive_matches_rightward(query_compress,/*left*/sarray->array[i]-queryoffset,
+					     /*pos5*/queryoffset+nmatches,/*pos3*/queryoffset+querylength,
+					     plusp,genestrand,first_read_p);
+      *initptr = i;
+      *finalptr = j;
+      return nmatches;
+
+    } else {
+      /* First child */
+      debug1(printf("lcp-interval %u..%u\n",i,j));
+      up = Bytecoding_lcpchilddc_child_up(j,sarray->lcpchilddc,sarray->child_guide,sarray->child_exceptions,
+					  sarray->child_guide_interval);
+      if (i < up && up <= j) {
+	nextl = up;
+	debug2(printf("nextl is up: %u\n",nextl));
+      } else {
+	nextl = Bytecoding_lcpchilddc_child_next(i,sarray->lcpchilddc,sarray->child_guide,sarray->child_exceptions,
+						 sarray->child_guide_interval); /* really down */
+	debug2(printf("nextl is down: %u\n",nextl));
+      }
+
+      lcp_whole = Bytecoding_lcpchilddc_lcp(nextl,sarray->lcpchilddc,sarray->lcp_exceptions,
+					    sarray->n_lcp_exceptions); /* lcp(i,j) */
+      debug1(printf("lcp_whole for %u..%u is %d, compared with nmatches %d\n",i,j,lcp_whole,nmatches));
+
+      if (lcp_whole > nmatches) {
+	/* Check only up to minlength, so we validate the entire interval */
+	minlength = (lcp_whole < querylength) ? lcp_whole : querylength;
+	debug1(printf("Looking up genome for query from %d .. %d - 1\n",nmatches,minlength));
+	nmatches +=
+	  Genome_consecutive_matches_rightward(query_compress,/*left*/sarray->array[i]-queryoffset,
+					       /*pos5*/queryoffset+nmatches,/*pos3*/queryoffset+minlength,
+					       plusp,genestrand,first_read_p);
+	if (nmatches < minlength) {
+	  *initptr = i;
+	  *finalptr = j;
+	  return nmatches;
+
+	} else if (nmatches >= querylength) {
+	  debug1(printf("nmatches is now %d >= querylength %d => success\n",nmatches,querylength));
+	  *initptr = i;
+	  *finalptr = j;
+	  return nmatches;
+	}
+      }
+	
+      debug1(printf("nmatches is now %d => desired_char is %c => %c\n",
+		    nmatches,query[nmatches],conversion[query[nmatches]]));
+      if (get_child_given_first(&l,&r,i,j,/*desired_char*/conversion[query[nmatches]],
+				sarray,sarray->lcpchilddc,lcp_whole,nextl) == false) {
+	*initptr = i;
+	*finalptr = j;
+	return nmatches;
+      } else {
+	nmatches += 1;
+	i = l;
+	j = r;
+      }
+    }
+  }
+
+  *initptr = i;
+  *finalptr = j;
+  return nmatches;
+}
+
+
+
+/* Searches using LCP and child arrays.  Should be O(m * |Sigma|),
+   where m wis the querylength and |Sigma| is the size of the alphabet
+   (4 for DNA) */
+/* query is a substring of the original, starting with queryoffset */
+static void
+sarray_search (Sarrayptr_T *initptr, Sarrayptr_T *finalptr, bool *successp,
+	       UINT4 *nmatches, char *query, UINT4 querylength, int queryoffset,
+	       Compress_T query_compress, T sarray, bool plusp, int genestrand,
+	       bool first_read_p, char conversion[]) {
+  int effective_querylength;	/* length to first N */
+  Storedoligomer_T oligo;
+  UINT4 l, r;
+
+
+#ifdef DEBUG
+  int k = 0;
+  UINT4 recount;
+  char Buffer[1000];
+  Univcoord_T hit;
+  bool failp;
+#elif defined(DEBUG1)
+  char Buffer[1000];
+#endif
+
+  debug(printf("sarray_search on %s, querylength %d, plusp %d\n",query,querylength,plusp));
+
+  /* Find initial lcp-interval */
+  effective_querylength = nt_querylength(query,querylength);
+
+  *nmatches = 0;
+  if (effective_querylength == 0) {
+    *initptr = *finalptr = 0;
+    *successp = false;
+    return;
+
+  } else if (effective_querylength < sarray->indexsize) {
+    debug1(printf("string %.*s with effective querylength %d is shorter than indexsize",
+		  querylength,query,effective_querylength));
+
+#if 1
+    l = 1;
+    r = sarray->n;
+
+#else
+    /* Try to infer from 12-mer index, but can be tricky when N's are present */
+    oligo = nt_oligo_truncate(query,effective_querylength,sarray->indexsize,/*subst_value for A*/0);
+#ifdef DEBUG15
+      if ((l = Bitpack64_read_one(oligo*2,sarray->indexij_ptrs,sarray->indexij_comp)) !=
+	  Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp)) {
+	abort();
+      }
+#elif defined(USE_SEPARATE_BUCKETS)
+      l = Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp);
+#else
+      l = Bitpack64_read_one(oligo*2,sarray->indexij_ptrs,sarray->indexij_comp);
+#endif
+      debug1(printf(" => oligo %08X",oligo));
+    }
+
+    /* Because $ < A, we need to check for this case.  Need to back up just 1. */
+    /* Test is SA[l-1] + indexsize - 1 >= n, or SA[l-1] + indexsize > n */
+    debug1(printf("Comparing SA %u + indexsize %d with n %u\n",sarray->array[l-1],sarray->indexsize,sarray->n));
+    if (l > 1 && sarray->array[l-1] + sarray->indexsize > sarray->n) {
+      debug1(printf(" (backing up one position for l, because at end of genome)"));
+      l--;
+    }
+
+    /* Add 1 to rollover to next oligo, to handle Ns in genome */
+    oligo = nt_oligo_truncate(query,effective_querylength,sarray->indexsize,/*subst_value for T*/3) + 1;
+    oligo_prev = oligo - 1;
+
+    r = Bitpack64_read_one(oligo*2,sarray->indexij_ptrs,sarray->indexij_comp) - 1;
+    r_prev = Bitpack64_offsetptr_only(oligo_prev*2+1,sarray->indexij_ptrs,sarray->indexij_comp);
+
+    if (r != r_prev) {
+      debug1(printf("r is %u - 1, but r_prev is %u, indicating the presence of N's => Starting from root\n",
+		    r+1,r_prev));
+      l = 1;
+      r = sarray->n;
+
+    } else if (oligo == sarray->indexspace) {
+      /* We have a poly-T, so we cannot determine r.  For example,
+	 TTTTTN has a different r value than TTN. */
+      debug1(printf(" but poly-T => 1-letter for T: %u..%u\n",l,r));
+#if 0
+      l = sarray->initindexi[3];
+      r = sarray->initindexj[3];
+      /* Keep nmatches = 0, because there may not be a T in the genome */
+#else
+      l = 1;
+      r = sarray->n;
+#endif
+
+    } else {
+#if 0
+      /* Already computed above */
+#ifdef DEBUG15
+      if ((r = Bitpack64_read_one(oligo*2,sarray->indexij_ptrs,sarray->indexij_comp) - 1) !=
+	  Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp) - 1) {
+	abort();
+      }
+#elif defined(USE_SEPARATE_BUCKETS)
+      r = Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp) - 1;
+#else
+      r = Bitpack64_read_one(oligo*2,sarray->indexij_ptrs,sarray->indexij_comp) - 1;
+#endif
+#endif
+
+      /* Because $ < A, we need to check for this case.  Need to back up just 1. */
+      /* Test is SA[r] + indexsize - 1 >= n, or SA[r] + indexsize > n */
+      debug1(printf(" (checking %u + %d >= %u)",sarray->array[r],effective_querylength,sarray->n));
+      if (r > 0 && sarray->array[r] + sarray->indexsize > sarray->n) {
+	debug1(printf(" (backing up one position for r, because at end of genome)"));
+	r--;
+      }
+      debug1(printf(" and %08X => interval %u..%u (effective_querylength %d)",
+		    oligo,l,r,effective_querylength));
+
+      if (l <= r) {
+	/* Keep nmatches = 0, since we don't know the value yet */
+	debug1(printf(" (good)\n"));
+      } else {
+#if 0
+	/* Did not find a match using saindex, so resort to one letter */
+	switch (query[0]) {
+	case 'A': l = sarray->initindexi[0]; r = sarray->initindexj[0]; break;
+	case 'C': l = sarray->initindexi[1]; r = sarray->initindexj[1]; break;
+	case 'G': l = sarray->initindexi[2]; r = sarray->initindexj[2]; break;
+	case 'T': l = sarray->initindexi[3]; r = sarray->initindexj[3]; break;
+	default: l = 1; r = 0;
+	}
+	debug1(printf(" (bad) => 1-letter from %c: %u..%u\n",query[0],l,r));
+#else
+	/* The entire lcp-interval [1,sarray->n] should also work without initindex */
+	l = 1;
+	r = sarray->n;
+	debug1(printf(" (bad) => entire lcp-interval: %u..%u\n",l,r));
+#endif
+      }
+    }
+    /* End of code to infer from 12-mers */
+#endif
+
+  } else {
+    oligo = nt_oligo(query,sarray->indexsize);
+#ifdef DEBUG15
+    if ((l = Bitpack64_read_two(&r,oligo*2,sarray->indexij_ptrs,sarray->indexij_comp)) !=
+	Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp)) {
+      abort();
+    } else if (r - 1 != Bitpack64_read_one(oligo,sarray->indexj_ptrs,sarray->indexj_comp)) {
+      printf("For oligo %u, separate buckets give %u and %u, while single bucket gives %u and %u\n",
+	     oligo,
+	     Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp),
+	     Bitpack64_read_one(oligo,sarray->indexj_ptrs,sarray->indexj_comp),
+	     l,r);
+      abort();
+    }
+    r--;			/* Because interleaved writes r+1 to maintain monotonicity */
+#elif defined(USE_SEPARATE_BUCKETS)
+    l = Bitpack64_read_one(oligo,sarray->indexi_ptrs,sarray->indexi_comp);
+    r = Bitpack64_read_one(oligo,sarray->indexj_ptrs,sarray->indexj_comp);
+#else
+    l = Bitpack64_read_two(&r,oligo*2,sarray->indexij_ptrs,sarray->indexij_comp);
+    r--;			/* Because interleaved writes r+1 to maintain monotonicity */
+#endif
+    debug1(printf("string %.*s is equal/longer than indexsize %d => oligo %u => interval %u..%u",
+		  querylength,query,sarray->indexsize,oligo,l,r));
+    if (l <= r) {
+      debug1(printf(" (good)\n"));
+      *nmatches = sarray->indexsize;
+      /* i = l; */
+      /* j = r; */
+    } else {
+#if 0
+      /* Did not find a match using saindex, so resort to one letter */
+      switch (query[0]) {
+      case 'A': l = sarray->initindexi[0]; r = sarray->initindexj[0]; break;
+      case 'C': l = sarray->initindexi[1]; r = sarray->initindexj[1]; break;
+      case 'G': l = sarray->initindexi[2]; r = sarray->initindexj[2]; break;
+      case 'T': l = sarray->initindexi[3]; r = sarray->initindexj[3]; break;
+      default: l = 1; r = 0;
+      }
+      debug1(printf(" (bad) => 1-letter from %c: %u..%u\n",query[0],l,r));
+#else
+      /* The entire lcp-interval [1,sarray->n] should also work without initindex */
+      l = 1;
+      r = sarray->n;
+      debug1(printf(" (bad) => entire lcp-interval: %u..%u\n",l,r));
+#endif
+    }
+  }
+
+  if (l > r) {
+    /* Did not find a match using saindex or one letter */
+    *initptr = l;
+    *finalptr = r;
+  } else {
+    *nmatches = find_longest_match(*nmatches,&(*initptr),&(*finalptr),/*i*/l,/*j*/r,
+				   query,querylength,queryoffset,query_compress,sarray,
+				   plusp,genestrand,first_read_p,conversion);
+  }
+
+  /* Search through suffix tree */
+  debug(printf("initptr gets %u, finalptr gets %u\n",*initptr,*finalptr));
+
+  if (*nmatches < querylength) {
+    *successp = false;
+    debug(printf("%s fail at %d: got %d hits with %d matches:\n",
+		 plusp ? "plus" : "minus",queryoffset,(*finalptr - *initptr + 1),*nmatches));
+  } else {
+    *successp = true;
+    debug(printf("%s success at %d: got %d hits with %d matches:\n",
+		 plusp ? "plus" : "minus",queryoffset,(*finalptr - *initptr + 1),*nmatches));
+  }
+
+#ifdef DEBUG
+  failp = false;
+
+  /* Before */
+  if (*nmatches > 0 && *initptr > 0U) {
+    recount = Genome_consecutive_matches_rightward(query_compress,/*left*/sarray->array[(*initptr)-1]-queryoffset,
+						   /*pos5*/queryoffset,/*pos3*/queryoffset+querylength,
+						   plusp,genestrand,first_read_p);
+    printf("%d\t%u\t%u\t",recount,(*initptr)-1,sarray->array[(*initptr)-1] /*+ 1U*/);
+    if (genestrand == +2) {
+      if (plusp != first_read_p) {
+	Genome_fill_buffer_convert_fwd(sarray->array[(*initptr)-1],recount+1,Buffer);
+      } else {
+	Genome_fill_buffer_convert_rev(sarray->array[(*initptr)-1],recount+1,Buffer);
+      }
+    } else {
+      if (plusp == first_read_p) {
+	Genome_fill_buffer_convert_fwd(sarray->array[(*initptr)-1],recount+1,Buffer);
+      } else {
+	Genome_fill_buffer_convert_rev(sarray->array[(*initptr)-1],recount+1,Buffer);
+      }
+    }
+    printf("%s\n",Buffer);
+    if (recount >= *nmatches) {
+      printf("querylength is %d\n",querylength);
+      printf("false negative: recount %d at %u before init does equal expected nmatches %d\n",
+	     recount,sarray->array[(*initptr)-1],*nmatches);
+      failp = true;
+    }
+  }
+  printf("\n");
+
+
+  /* Hits */
+  for (k = 0; k < (int) (*finalptr - *initptr + 1) && k < 100; k++) {
+    hit = sarray->array[(*initptr)+k];
+    recount = Genome_consecutive_matches_rightward(query_compress,/*left*/hit-queryoffset,
+						   /*pos5*/queryoffset,/*pos3*/queryoffset+querylength,
+						   plusp,genestrand,first_read_p);
+    printf("%d\t%u\t%u\t",recount,(*initptr)+k,hit /*+ 1U*/);
+    if (genestrand == +2) {
+      if (plusp != first_read_p) {
+	Genome_fill_buffer_convert_fwd(sarray->array[(*initptr)+k],recount+1,Buffer);
+      } else {
+	Genome_fill_buffer_convert_rev(sarray->array[(*initptr)+k],recount+1,Buffer);
+      }
+    } else {
+      if (plusp == first_read_p) {
+	Genome_fill_buffer_convert_fwd(sarray->array[(*initptr)+k],recount+1,Buffer);
+      } else {
+	Genome_fill_buffer_convert_rev(sarray->array[(*initptr)+k],recount+1,Buffer);
+      }
+    }
+    printf("%s\n",Buffer);
+    if (recount != *nmatches) {
+      printf("querylength is %d\n",querylength);
+      printf("false positive: recount %d at %u does not equal expected nmatches %d\n",
+	     recount,sarray->array[(*initptr)],*nmatches);
+      failp = true;
+    }
+    /* hits[k] = sarray->array[(*initptr)++]; */
+  }
+
+
+  /* After */
+  if (*nmatches > 0 && sarray->array[(*finalptr)+1] > 0U) {
+    printf("\n");
+    recount = Genome_consecutive_matches_rightward(query_compress,/*left*/sarray->array[(*finalptr)+1]-queryoffset,
+						   /*pos5*/queryoffset,/*pos3*/queryoffset+querylength,
+						   plusp,genestrand,first_read_p);
+    printf("%d\t%u\t%u\t",recount,(*finalptr)+1,sarray->array[(*finalptr)+1] /*+ 1U*/);
+    if (genestrand == +2) {
+      if (plusp != first_read_p) {
+	Genome_fill_buffer_convert_fwd(sarray->array[(*finalptr)+1],recount+1,Buffer);
+      } else {
+	Genome_fill_buffer_convert_rev(sarray->array[(*finalptr)+1],recount+1,Buffer);
+      }
+    } else {
+      if (plusp == first_read_p) {
+	Genome_fill_buffer_convert_fwd(sarray->array[(*finalptr)+1],recount+1,Buffer);
+      } else {
+	Genome_fill_buffer_convert_rev(sarray->array[(*finalptr)+1],recount+1,Buffer);
+      }
+    }
+    printf("%s\n",Buffer);
+    if (recount >= *nmatches) {
+      printf("querylength is %d\n",querylength);
+      printf("false negative: recount %d at %u after (*finalptr) does equal expected nmatches %d\n",
+	     recount,sarray->array[(*finalptr)+1],*nmatches);
+      failp = true;
+    }
+  }
+
+  if (failp == true) {
+    /* Can happen because $ ranks below 0 */
+    /* Can also happen with CMET or ATOI, since genome128_hr procedures find genome-to-query mismatches */
+    abort();
+  }
+#endif
+
+  return;
+}
+
+
+
+
+/* Simplified version of Spanningelt_T */
+typedef struct Elt_T *Elt_T;
+struct Elt_T {
+  int querystart;
+  int queryend;
+  Univcoord_T nmatches;
+
+  Sarrayptr_T initptr;			/* in sarray */
+  Sarrayptr_T finalptr;
+
+  Univcoord_T *positions_allocated;
+  Univcoord_T *positions;
+  int npositions;		/* from goal to high */
+  bool filledp;			/* for development purposes */
+};
+
+
+static Elt_T
+Elt_new (int querypos, int nmatches, Sarrayptr_T initptr, Sarrayptr_T finalptr) {
+  Elt_T new = (Elt_T) MALLOC(sizeof(*new));
+
+  new->querystart = querypos;
+  new->queryend = querypos + nmatches - 1;
+  new->nmatches = nmatches;
+
+  new->initptr = initptr;
+  new->finalptr = finalptr;
+
+  new->positions_allocated = new->positions = (Univcoord_T *) NULL;
+  new->npositions = 0;
+
+  new->filledp = false;
+
+  return new;
+}
+
+static void
+Elt_replace (Elt_T this, int querypos, int nmatches, Sarrayptr_T initptr, Sarrayptr_T finalptr) {
+  this->querystart = querypos;
+  this->queryend = querypos + nmatches - 1;
+  this->nmatches = nmatches;
+
+  this->initptr = initptr;
+  this->finalptr = finalptr;
+
+  if (this->positions_allocated != NULL) {
+    FREE(this->positions_allocated);
+  }
+  this->positions_allocated = this->positions = (Univcoord_T *) NULL;
+  this->npositions = 0;
+
+  this->filledp = false;
+
+  return;
+}
+
+
+static void
+Elt_free (Elt_T *old) {
+
+  if ((*old)->positions_allocated != NULL) {
+    FREE((*old)->positions_allocated);
+  }
+  FREE(*old);
+  return;
+}
+
+
+#if 0
+static int
+Elt_nmatches_cmp (const void *a, const void *b) {
+  Elt_T x = * (Elt_T *) a;
+  Elt_T y = * (Elt_T *) b;
+
+  if (x->nmatches > y->nmatches) {
+    return -1;
+  } else if (y->nmatches > x->nmatches) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+#endif
+
+static int
+Elt_querypos_ascending_cmp (const void *a, const void *b) {
+  Elt_T x = * (Elt_T *) a;
+  Elt_T y = * (Elt_T *) b;
+
+  if (x->querystart < y->querystart) {
+    return -1;
+  } else if (y->querystart < x->querystart) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+static int
+Elt_querypos_descending_cmp (const void *a, const void *b) {
+  Elt_T x = * (Elt_T *) a;
+  Elt_T y = * (Elt_T *) b;
+
+  if (x->querystart > y->querystart) {
+    return -1;
+  } else if (y->querystart > x->querystart) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+static void
+Elt_fill_positions_all (Elt_T this, T sarray) {
+  Sarrayptr_T ptr;
+  Univcoord_T pos;
+  int i;
+
+  if (this->positions_allocated == NULL) {
+    this->npositions = this->finalptr - this->initptr + 1;
+    if (this->nmatches == 0 || this->npositions > EXCESS_SARRAY_HITS) {
+      this->positions_allocated = this->positions = (Univcoord_T *) NULL;
+      this->npositions = 0;
+    } else {
+      this->positions_allocated = this->positions = (Univcoord_T *) CALLOC(this->npositions,sizeof(Univcoord_T));
+      i = 0;
+      ptr = this->initptr;
+      while (ptr <= this->finalptr) {
+	if ((pos = sarray->array[ptr++]) >= (Univcoord_T) this->querystart) {
+	  this->positions[i++] = pos - this->querystart;
+	}
+      }
+      this->npositions = i;
+      qsort(this->positions,this->npositions,sizeof(Univcoord_T),Univcoord_compare);
+    }
+
+    this->filledp = true;
+  }
+
+  return;
+}
+
+
+#ifdef DEBUG7
+static void
+print_vector (__m128i x, char *label) {
+  __m128i a[1];
+  unsigned int *s = a;
+
+  _mm_store_si128(a,x);
+  printf("%s: %u %u %u %u\n",label,s[0],s[1],s[2],s[3]);
+  return;
+}
+
+static void
+print_vector_looking (__m128i x, Univcoord_T low, Univcoord_T high) {
+  __m128i a[1];
+  unsigned int *s = a;
+
+  _mm_store_si128(a,x);
+  printf("Looking at value %u, relative to low %u and high %u\n",s[0],low,high);
+  printf("Looking at value %u, relative to low %u and high %u\n",s[1],low,high);
+  printf("Looking at value %u, relative to low %u and high %u\n",s[2],low,high);
+  printf("Looking at value %u, relative to low %u and high %u\n",s[3],low,high);
+  return;
+}
+#endif
+
+
+#ifdef DEBUG8
+/* Non-SIMD methods for comparison */
+static void
+positions_compare (Univcoord_T *positions, int npositions,
+		   Univcoord_T *positions_std, int npositions_std) {
+  int i;
+
+  if (npositions != npositions_std) {
+    fprintf(stderr,"npositions %d != npositions_std %d\n",npositions,npositions_std);
+    abort();
+  } else {
+    for (i = 0; i < npositions; i++) {
+      if (positions[i] != positions_std[i]) {
+	fprintf(stderr,"At %d, positions %d != positions_std %d\n",i,positions[i],positions_std[i]);
+	abort();
+      }
+    }
+  }
+
+  return;
+}
+
+static Univcoord_T *
+fill_positions_std (int *npositions, Univcoord_T low_adj, Univcoord_T high_adj,
+		    Sarrayptr_T initptr, Sarrayptr_T finalptr,
+		    int querystart, Univcoord_T *array) {
+  Univcoord_T *more_positions;
+  Univcoord_T *positions, value;
+  Sarrayptr_T ptr, lastptr;
+  int i;
+
+  positions = (Univcoord_T *) CALLOC(GUESS_ALLOCATION,sizeof(Univcoord_T));
+
+  *npositions = 0;
+  ptr = initptr;      
+
+  while (ptr <= finalptr) {
+    debug7a(printf("Std: Looking at value %u, relative to low %u and high %u\n",array[ptr],low_adj,high_adj));
+    if ((value = array[ptr++]) < low_adj) {
+      /* Skip */
+    } else if (value > high_adj) {
+      /* Skip */
+    } else if (*npositions < GUESS_ALLOCATION) {
+      debug7(printf("Std: Found position %u between low %u and high %u, and within allocation\n",value,low_adj,high_adj));
+      positions[(*npositions)++] = value - querystart;
+    } else {
+      debug7(printf("Std: Found position %u between low %u and high %u, but exceeds allocation\n",value,low_adj,high_adj));
+      (*npositions)++;
+      lastptr = ptr;		/* saves us from going through the entire sarray below */
+    }
+  }
+
+  debug7(printf("Std method found %d positions\n",*npositions));
+  if (*npositions > GUESS_ALLOCATION) {
+    /* Copy the positions we have stored so far */
+    more_positions = (Univcoord_T *) CALLOC(*npositions,sizeof(Univcoord_T));
+    memcpy(more_positions,positions,GUESS_ALLOCATION*sizeof(Univcoord_T));
+    FREE(positions);
+    positions = more_positions;
+    
+    i = GUESS_ALLOCATION;	/* Start count with the number stored */
+    ptr = lastptr;	/* One past the last ptr with a result */
+
+    while (i < *npositions) {
+      if ((value = array[--ptr]) < low_adj) {
+	/* Skip */
+      } else if (value > high_adj) {
+	/* Skip */
+      } else {
+	positions[i++] = value - querystart;
+      }
+    }
+  }
+
+  return positions;
+}
+#endif
+
+
+
+static void
+Elt_fill_positions_filtered (Elt_T this, T sarray, Univcoord_T goal, Univcoord_T low, Univcoord_T high,
+			     Compress_T query_compress, bool plusp, int genestrand, bool first_read_p) {
+  Sarrayptr_T ptr, lastptr;
+  int nmatches;
+  int i;
+  Univcoord_T *array = sarray->array, low_adj, high_adj, value;
+  Univcoord_T *more_positions;
+#ifdef HAVE_SSE2
+#ifdef HAVE_64_BIT
+  UINT8 pointer;
+#else
+  UINT4 pointer;
+#endif
+  __m128i base, floor, ceiling, values, compare;
+  int n_prealign, k;
+#endif
+#ifdef DEBUG8
+  Univcoord_T *positions_std;
+  int npositions_std;
+#endif
+
+
+  debug7(printf("Entered Elt_fill_positions_filtered with goal %u, low %u and high %u, initptr %u and finalptr %u (n = %d), nmatches %d\n",
+		goal,low,high,this->initptr,this->finalptr,this->finalptr - this->initptr + 1,this->nmatches));
+  
+  if (this->positions_allocated != NULL) {
+    /* Filled from a previous call */
+    FREE(this->positions_allocated);
+  }
+
+  if (this->nmatches == 0 || this->finalptr - this->initptr + 1 > EXCESS_SARRAY_HITS) {
+    nmatches = Genome_consecutive_matches_rightward(query_compress,/*left*/goal,/*pos5*/this->querystart,
+						    /*pos3*/this->queryend + 1,plusp,genestrand,first_read_p);
+    debug7(printf("rightward at goal %u from %d to %d shows %d matches (want %d)\n",goal,this->querystart,this->queryend,
+		  nmatches,this->queryend - this->querystart + 1));
+    if (nmatches == this->queryend - this->querystart + 1) {
+      /* Create a position that works */
+      this->positions_allocated = this->positions = (Univcoord_T *) CALLOC(1,sizeof(Univcoord_T));
+      this->positions[0] = goal;
+      this->npositions = 1;
+    } else {
+      this->positions_allocated = this->positions = (Univcoord_T *) NULL;
+      this->npositions = 0;
+    }
+  } else {
+
+#ifdef DEBUG8
+    positions_std = fill_positions_std(&npositions_std,/*low_adj*/low + this->querystart,
+				       /*high_adj*/high + this->querystart,
+				       this->initptr,this->finalptr,this->querystart,array);
+#endif
+
+
+#ifdef HAVE_SSE2
+    base = _mm_set1_epi32(2147483648); /* 2^31 */
+#endif
+
+    /* Guess at allocation size */
+    this->positions_allocated = this->positions = (Univcoord_T *) CALLOC(GUESS_ALLOCATION,sizeof(Univcoord_T));
+
+    low_adj = low + this->querystart;
+    high_adj = high + this->querystart;
+
+    this->npositions = 0;
+    ptr = this->initptr;
+#ifdef HAVE_SSE2
+    if (ptr + 3 > this->finalptr) { /* ptr + 4 > (this->finalptr + 1) */
+      /* Handle in normal manner */
+      debug7(printf("Small batch, because %u + 3 <= %u\n",ptr,this->finalptr));
+      while (ptr <= this->finalptr) {
+	debug7a(printf("Looking at value %u, relative to low %u and high %u\n",array[ptr],low_adj,high_adj));
+	if ((value = array[ptr++]) < low_adj) {
+	  /* Skip */
+	} else if (value > high_adj) {
+	  /* Skip */
+	} else if (this->npositions < GUESS_ALLOCATION) {
+	  debug7(printf("Found position %u between low %u and high %u, and within allocation\n",value,low_adj,high_adj));
+	  this->positions[this->npositions++] = value - this->querystart;
+	} else {
+	  debug7(printf("Found position %u between low %u and high %u, but exceeds allocation\n",value,low_adj,high_adj));
+	  this->npositions++;
+	  lastptr = ptr;		/* saves us from going through the entire sarray below */
+	}
+      }
+
+    } else {
+#ifdef HAVE_64_BIT
+      pointer = (UINT8) &(array[ptr]);
+#else
+      pointer = (UINT4) &(array[ptr]);
+#endif
+      n_prealign = ((16 - (pointer & 0xF))/4) & 0x3;
+      debug7(printf("Initial ptr is at location %p.  Need %d to get to 128-bit boundary\n",
+		    &(array[ptr]),n_prealign));
+
+      /* Initial part */
+      debug7(printf("Initial part:\n"));
+      for (k = 0; k < n_prealign; k++) {
+	debug7a(printf("Looking at value %u, relative to low %u and high %u\n",array[ptr],low_adj,high_adj));
+	if ((value = array[ptr++]) < low_adj) {
+	  /* Skip */
+	} else if (value > high_adj) {
+	  /* Skip */
+	} else if (this->npositions < GUESS_ALLOCATION) {
+	  debug7(printf("Found position %u between low %u and high %u, and within allocation\n",value,low_adj,high_adj));
+	  this->positions[this->npositions++] = value - this->querystart;
+	} else {
+	  debug7(printf("Found position %u between low %u and high %u, but exceeds allocation\n",value,low_adj,high_adj));
+	  this->npositions++;
+	  lastptr = ptr;		/* saves us from going through the entire sarray below */
+	}
+      }
+
+      /* Aligned part */
+      debug7(printf("\nAligned part:\n"));
+      /* Since compare operations not available for unsigned ints, using the fact that
+	 unsigned_gt(a,b) is equivalent to signed_gt(a - 2^31, b - 2^31) */
+      floor = _mm_set1_epi32(low_adj - 1 - 2147483648);
+      ceiling = _mm_set1_epi32(high_adj + 1 - 2147483648);
+      while (ptr + 3 <= this->finalptr) { /* ptr + 4 < this->finalptr + 1 */
+	values = _mm_load_si128((__m128i *) &(array[ptr]));
+	debug7a(print_vector_looking(values,low_adj,high_adj));
+	values = _mm_sub_epi32(values,base);
+	compare = _mm_and_si128(_mm_cmpgt_epi32(values,floor),_mm_cmplt_epi32(values,ceiling));
+	if (/*cmp*/_mm_movemask_epi8(compare) == 0x0000) {
+	  /* All results are false, indicating no values between low_adj and high_adj (most common case) */
+	  ptr += 4;
+	} else {
+	  for (k = 0; k < 4; k++) {
+	    if ((value = array[ptr++]) < low_adj) {
+	      /* Skip */
+	      debug7(printf("Skipping position %u < low %u\n",value,low_adj));
+	    } else if (value > high_adj) {
+	      /* Skip */
+	      debug7(printf("Skipping position %u > high %u\n",value,high_adj));
+	    } else if (this->npositions < GUESS_ALLOCATION) {
+	      debug7(printf("Found position %u between low %u and high %u, and within allocation\n",value,low_adj,high_adj));
+	      this->positions[this->npositions++] = value - this->querystart;
+	    } else {
+	      debug7(printf("Found position %u between low %u and high %u, but exceeds allocation\n",value,low_adj,high_adj));
+	      this->npositions++;
+	      lastptr = ptr;		/* saves us from going through the entire sarray below */
+	    }
+	  }
+	}
+      }
+
+      /* Final part */
+      debug7(printf("\nFinal part:\n"));
+      while (ptr <= this->finalptr) {
+	debug7a(printf("Looking at value %u, relative to low %u and high %u\n",array[ptr],low_adj,high_adj));
+	if ((value = array[ptr++]) < low_adj) {
+	  /* Skip */
+	} else if (value > high_adj) {
+	  /* Skip */
+	} else if (this->npositions < GUESS_ALLOCATION) {
+	  debug7(printf("Found position %u between low %u and high %u, and within allocation\n",value,low_adj,high_adj));
+	  this->positions[this->npositions++] = value - this->querystart;
+	} else {
+	  debug7(printf("Found position %u between low %u and high %u, but exceeds allocation\n",value,low_adj,high_adj));
+	  this->npositions++;
+	  lastptr = ptr;		/* saves us from going through the entire sarray below */
+	}
+      }
+    }
+
+#else
+
+    while (ptr <= this->finalptr) {
+      debug7a(printf("Looking at value %u, relative to low %u and high %u\n",array[ptr],low_adj,high_adj));
+      if ((value = array[ptr++]) < low_adj) {
+	/* Skip */
+      } else if (value > high_adj) {
+	/* Skip */
+      } else if (this->npositions < GUESS_ALLOCATION) {
+	debug7(printf("Found position %u between low %u and high %u, and within allocation\n",value,low_adj,high_adj));
+	this->positions[this->npositions++] = value - this->querystart;
+      } else {
+	debug7(printf("Found position %u between low %u and high %u, but exceeds allocation\n",value,low_adj,high_adj));
+	this->npositions++;
+	lastptr = ptr;		/* saves us from going through the entire sarray below */
+      }
+    }
+#endif
+
+    debug7(printf("SIMD method found %d positions\n",this->npositions));
+    if (this->npositions > GUESS_ALLOCATION) {
+      /* Handle the case if we exceeded GUESS_ALLOCATION */
+
+      /* Copy the positions we have stored so far */
+      more_positions = (Univcoord_T *) CALLOC(this->npositions,sizeof(Univcoord_T));
+      memcpy(more_positions,this->positions,GUESS_ALLOCATION*sizeof(Univcoord_T));
+      FREE(this->positions_allocated);
+      this->positions_allocated = this->positions = more_positions;
+
+      i = GUESS_ALLOCATION;	/* Start count with the number stored */
+      ptr = lastptr;		/* One past the last ptr with a result */
+#ifdef HAVE_SSE2
+      if (this->initptr + 4 < ptr) {
+	while (i < this->npositions) {
+	  if ((value = array[--ptr]) < low_adj) {
+	    /* Skip */
+	  } else if (value > high_adj) {
+	    /* Skip */
+	  } else {
+	    this->positions[i++] = value - this->querystart;
+	  }
+	}
+
+      } else {
+#ifdef HAVE_64_BIT
+	pointer = (UINT8) &(array[ptr]);
+#else
+	pointer = (UINT4) &(array[ptr]);
+#endif
+	n_prealign = ((pointer & 0xF)/4) & 0x3;
+	debug7(printf("Initial ptr is at location %p.  Need %d to get to 128-bit boundary\n",
+		      &(array[ptr]),n_prealign));
+
+	/* Initial part */
+	while (i < this->npositions) {
+	  if ((value = array[--ptr]) < low_adj) {
+	    /* Skip */
+	  } else if (value > high_adj) {
+	    /* Skip */
+	  } else {
+	    this->positions[i++] = value - this->querystart;
+	  }
+	}
+
+	/* Aligned part */
+	while (i < this->npositions && this->initptr + 4 < ptr) {
+	  values = _mm_load_si128((__m128i *) &(array[ptr-4]));
+	  values = _mm_sub_epi32(values,base);
+	  compare = _mm_and_si128(_mm_cmpgt_epi32(values,floor),_mm_cmplt_epi32(values,ceiling));
+	  if (/*cmp*/_mm_movemask_epi8(compare) == 0x0000) {
+	    /* All results are false, indicating no values between low_adj and high_adj (most common case) */
+	    ptr -= 4;
+	  } else {
+	    for (k = 0; k < 4; k++) {
+	      if ((value = array[--ptr]) < low_adj) {
+		/* Skip */
+	      } else if (value > high_adj) {
+		/* Skip */
+	      } else {
+		this->positions[i++] = value - this->querystart;
+	      }
+	    }
+	  }
+	}
+	  
+	/* Last part */
+	while (i < this->npositions) {
+	  if ((value = array[--ptr]) < low_adj) {
+	    /* Skip */
+	  } else if (value > high_adj) {
+	    /* Skip */
+	  } else {
+	    this->positions[i++] = value - this->querystart;
+	  }
+	}
+      }
+
+#else
+
+      while (i < this->npositions) {
+	if ((value = array[--ptr]) < low_adj) {
+	  /* Skip */
+	} else if (value > high_adj) {
+	  /* Skip */
+	} else {
+	  this->positions[i++] = value - this->querystart;
+	}
+      }
+#endif
+    }
+
+#ifdef DEBUG8
+    positions_compare(this->positions,this->npositions,positions_std,npositions_std);
+    FREE(positions_std);
+#endif
+
+    qsort(this->positions,this->npositions,sizeof(Univcoord_T),Univcoord_compare);
+    debug7(printf("Sorting %d positions\n",this->npositions));
+
+    /* Advance pointer to goal (note: do not want goal_adj, since we have already subtracted this->querystart) */
+    /* Have tested positions[i] <= goal, but want positions[-1] to be < goal, or positions[0] >= goal */
+    i = 0;
+    while (i < this->npositions && this->positions[i] < goal) {
+      debug7(printf("Skipping position %u < goal %u\n",this->positions[i],goal));
+      i++;
+    }
+    this->positions += i;
+    this->npositions -= i;
+    debug7(printf("Remaining: %d positions\n",this->npositions));
+  }
+
+  this->filledp = true;
+
+  return;
+}
+  
+
+static void
+Elt_dump_list (List_T list) {
+  List_T p;
+  Elt_T elt;
+  int maxn = 0, k;
+
+  for (p = list; p != NULL; p = p->rest) {
+    elt = (Elt_T) p->first;
+    if (elt->npositions > maxn) {
+      maxn = elt->npositions;
+    }
+  }
+
+  for (k = 0; k < maxn /* && k < 100 */; k++) {
+    for (p = list; p != NULL; p = p->rest) {
+      elt = (Elt_T) p->first;
+      if (k >= elt->npositions) {
+	printf("\t");
+      } else {
+	printf("%d..%d:%u\t",elt->querystart,elt->queryend,elt->positions[k]);
+      }
+    }
+    printf("\n");
+  }
+  printf("\n");
+
+  return;
+}
+
+static void
+Elt_dump (Elt_T elt) {
+  int k;
+
+  for (k = 0; k < elt->npositions; k++) {
+    printf("%d..%d:%u\n",elt->querystart,elt->queryend,elt->positions[k]);
+  }
+  printf("\n");
+
+  return;
+}
+
+
+
+static int
+binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
+  int middlei;
+
+  debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
+
+  while (lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
+    debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		   lowi,positions[lowi],middlei,positions[middlei],
+		   highi,positions[highi],goal));
+    if (goal < positions[middlei]) {
+      highi = middlei;
+    } else if (goal > positions[middlei]) {
+      lowi = middlei + 1;
+    } else {
+      debug10(printf("binary search returns %d\n",middlei));
+      return middlei;
+    }
+  }
+
+  debug10(printf("binary search returns %d\n",highi));
+  return highi;
+}
+
+
+#define add_bounded(x,plusterm,highbound) ((x + (plusterm) >= highbound) ? (highbound - 1) : x + (plusterm))
+#define subtract_bounded(x,minusterm,lowbound) ((x < lowbound + (minusterm)) ? lowbound : x - (minusterm))
+
+
+/* Taken from stage1hr.c identify_multimiss_iter */
+static bool
+extend_rightward (Univcoord_T goal, Univcoord_T chroffset, Univcoord_T chrhigh,
+		  List_T set, Compress_T query_compress,
+		  T sarray, bool plusp, int genestrand, bool first_read_p, int best_queryend) {
+  Elt_T elt;
+  Univcoord_T low, high;
+
+  debug7(printf("extend_rightward, with goal %u\n",goal));
+
+  for ( ; set /* != NULL */; set = set->rest) {
+    debug7(Elt_dump_list(set));
+    elt = (Elt_T) set->first;
+
+    debug7(printf("remaining elts %d: ",List_length(set)));
+    debug7(printf("%d..%d\n",elt->querystart,elt->queryend));
+    if (elt->querystart > best_queryend) {
+      /* Allow for deletion with higher goal */
+      low = subtract_bounded(goal,/*minusterm*/max_insertionlen,chroffset);
+      high = add_bounded(goal,/*plusterm*/overall_max_distance,chrhigh);
+      Elt_fill_positions_filtered(elt,sarray,goal,low,high,query_compress,plusp,genestrand,first_read_p);
+      debug7(printf("Allow for deletion with higher goal: %d positions\n",elt->npositions));
+
+      if (elt->npositions <= 0) {
+	/* List is empty, so one more miss seen. */
+	debug7(printf(" positions empty, so not spanning\n"));
+	return false;
+	
+      } else if (*elt->positions > high) {
+	/* Already advanced past goal, so one more miss seen. */
+	debug7(printf(" %u advanced past goal %u + %d, so not spanning\n",*elt->positions,goal,overall_max_distance));
+	return false;
+
+      } else {
+	/* Found goal.  Advance past goal and continue with loop. */
+	debug7(printf(" advancing\n"));
+	++elt->positions;
+	--elt->npositions;
+	/* continue */
+      }
+    } else {
+      /* Allow for deletion with lower goal */
+      low = subtract_bounded(goal,/*minusterm*/overall_max_distance,chroffset);
+      high = add_bounded(goal,/*plusterm*/max_insertionlen,chrhigh);
+      Elt_fill_positions_filtered(elt,sarray,goal,low,high,query_compress,plusp,genestrand,first_read_p);
+      debug7(printf("Allow for deletion with lower goal: %d positions\n",elt->npositions));
+
+      if (elt->npositions <= 0) {
+	/* List is empty, so test previous one only, which must exist
+	   since positions had at least one entry. */
+	if (elt->positions[-1] >= low) {
+	  /* Found goal with deletion */
+	  debug7(printf(" possible deletion, continuing\n"));
+	  /* continue */
+	} else {
+	  debug7(printf(" previous %u before goal %u - %d, so not spanning\n",elt->positions[-1],goal,shortsplicedist));
+	  return false;
+	}
+	
+      } else if (elt->positions == elt->positions_allocated) {
+	/* List is at beginning, so test current one only, not the previous one */
+	if (*elt->positions > goal) {
+	  /* Already advanced past goal, so one more miss seen. */
+	  debug7(printf(" %u advanced past goal_high %u, so not spanning\n",*elt->positions,goal));
+	  return false;
+	} else {
+	  /* Found goal.  Advance past goal and continue with loop. */
+	  debug7(printf(" advancing\n"));
+	  ++elt->positions;
+	  --elt->npositions;
+	  /* continue */
+	}
+
+      } else {
+	/* Test both current one (for goal) and previous one (for deletion) */
+	if (*elt->positions == goal) {
+	  /* Found goal.  Advance past goal and continue with loop. */
+	  debug7(printf(" advancing\n"));
+	  ++elt->positions;
+	  --elt->npositions;
+	  /* continue */
+
+	} else if (elt->positions[-1] >= low) {
+	  /* Found goal with deletion */
+	  debug7(printf(" possible deletion, continuing\n"));
+	  /* continue */
+
+	} else {
+	  debug7(printf(" %u advanced past goal %u, and previous %u before goal %u - %d, so not spanning\n",
+			*elt->positions,goal,elt->positions[-1],goal,overall_max_distance));
+	  return false;
+	}
+      }
+    }
+  }
+
+  debug7(printf("Returning true\n"));
+  return true;
+}
+
+
+/* Taken from stage1hr.c identify_multimiss_iter */
+static bool
+extend_leftward (Univcoord_T goal, Univcoord_T chroffset, Univcoord_T chrhigh,
+		 List_T set, char *queryptr, Compress_T query_compress,
+		 T sarray, bool plusp, int genestrand, bool first_read_p, char conversion[],
+		 int best_querystart, int best_queryend) {
+  Elt_T elt;
+  UINT4 nmatches;
+  Sarrayptr_T initptr, finalptr;
+  bool successp;
+  UINT4 queryend, querypos;
+  Univcoord_T low, high;
+
+
+  debug7(printf("extend_leftward, plusp %d, with goal %u, querystart..queryend %d..%d\n",
+		plusp,goal,best_querystart,best_queryend));
+
+  queryend = best_querystart - 2;
+
+  for ( ; set /* != NULL */; set = set->rest) {
+    debug7(Elt_dump_list(set));
+    elt = (Elt_T) set->first;
+    debug7(printf("remaining elts %d: ",List_length(set)));
+    debug7(printf("%d..%d\n",elt->querystart,elt->queryend));
+    
+    debug7(printf("Checking for re-compute of left region: elt->queryend %d vs queryend %d\n",elt->queryend,queryend));
+    if (/* elt->queryend != queryend && */ elt->queryend > queryend) {
+      debug7(printf("Re-computing left region\n"));
+      querypos = elt->querystart;
+
+      sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryptr[querypos]),
+		    /*querylength*/(queryend + 1) - querypos,/*queryoffset*/querypos,
+		    query_compress,sarray,plusp,genestrand,first_read_p,conversion);
+      Elt_replace(elt,querypos,nmatches,initptr,finalptr);
+      /* set->first = (void *) elt; */
+    }
+    queryend = elt->querystart - 2;
+
+    debug7(printf("remaining elts %d: ",List_length(set)));
+    debug7(printf("%d..%d\n",elt->querystart,elt->queryend));
+    if (elt->querystart > best_queryend) {
+      /* Allow for deletion with higher goal */
+      debug7(printf("Allow for deletion with higher goal: %d positions\n",elt->npositions));
+      low = subtract_bounded(goal,/*minusterm*/max_insertionlen,chroffset);
+      high = add_bounded(goal,/*plusterm*/overall_max_distance,chrhigh);
+      Elt_fill_positions_filtered(elt,sarray,goal,low,high,query_compress,plusp,genestrand,first_read_p);
+      if (elt->npositions <= 0) {
+	/* List is empty, so one more miss seen. */
+	debug7(printf(" positions empty, so not spanning\n"));
+	return false;
+	
+      } else if (*elt->positions > high) {
+	/* Already advanced past goal, so one more miss seen. */
+	debug7(printf(" %u advanced past goal %u + %d, so not spanning\n",*elt->positions,goal,overall_max_distance));
+	return false;
+
+      } else {
+	/* Found goal.  Advance past goal and continue with loop. */
+	debug7(printf(" advancing\n"));
+	if ((nmatches = Genome_consecutive_matches_leftward(query_compress,/*left*/*elt->positions,
+							    /*pos5*/0,/*pos3*/elt->querystart,
+							    plusp,genestrand,first_read_p)) > 0) {
+	  debug7(printf(" extending querystart %d leftward by %d matches\n",elt->querystart,nmatches));
+	  elt->querystart -= nmatches;
+	  queryend = elt->querystart - 2;
+	}
+	++elt->positions;
+	--elt->npositions;
+	/* continue */
+      }
+    } else {
+      /* Allow for deletion with lower goal */
+      debug7(printf("Allow for deletion with lower goal: %d positions\n",elt->npositions));
+      low = subtract_bounded(goal,/*minusterm*/overall_max_distance,chroffset);
+      high = add_bounded(goal,/*plusterm*/max_insertionlen,chrhigh);
+      Elt_fill_positions_filtered(elt,sarray,goal,low,high,query_compress,plusp,genestrand,first_read_p);
+      if (elt->npositions <= 0 && elt->positions == elt->positions_allocated) {
+	/* List is empty, and no previous one exists */
+	debug7(printf(" list is empty and no previous, so not spanning\n"));
+	return false;
+
+      } else if (elt->npositions <= 0) {
+	/* List is empty, but previous one exists */
+	if (elt->positions[-1] >= low) {
+	  /* Found goal with deletion */
+	  debug7(printf(" possible deletion, continuing\n"));
+	  if ((nmatches = Genome_consecutive_matches_leftward(query_compress,/*left*/elt->positions[-1],
+							      /*pos5*/0,/*pos3*/elt->querystart,
+							      plusp,genestrand,first_read_p)) > 0) {
+	    debug7(printf(" extending querystart %d leftward by %d matches\n",elt->querystart,nmatches));
+	    elt->querystart -= nmatches;
+	    queryend = elt->querystart - 2;
+	  }
+	  /* continue */
+	} else {
+	  debug7(printf(" previous %u before goal %u - %d, so not spanning\n",elt->positions[-1],goal,overall_max_distance));
+	  return false;
+	}
+	
+      } else if (elt->positions == elt->positions_allocated) {
+	/* List is at beginning, but current one exists */
+	if (*elt->positions > goal) {
+	  /* Already advanced past goal, so one more miss seen. */
+	  debug7(printf(" %u advanced past goal_high %u, so not spanning\n",*elt->positions,goal));
+	  return false;
+	} else {
+	  /* Found goal.  Advance past goal and continue with loop. */
+	  debug7(printf(" advancing\n"));
+	  if ((nmatches = Genome_consecutive_matches_leftward(query_compress,/*left*/*elt->positions,
+							      /*pos5*/0,/*pos3*/elt->querystart,
+							      plusp,genestrand,first_read_p)) > 0) {
+	    debug7(printf(" extending querystart %d leftward by %d matches\n",elt->querystart,nmatches));
+	    elt->querystart -= nmatches;
+	    queryend = elt->querystart - 2;
+	  }
+	  ++elt->positions;
+	  --elt->npositions;
+	  /* continue */
+	}
+
+      } else {
+	/* Test both current one (for goal) and previous one (for deletion) */
+	if (*elt->positions == goal) {
+	  /* Found goal.  Advance past goal and continue with loop. */
+	  debug7(printf(" advancing\n"));
+	  if ((nmatches = Genome_consecutive_matches_leftward(query_compress,/*left*/*elt->positions,
+							      /*pos5*/0,/*pos3*/elt->querystart,
+							      plusp,genestrand,first_read_p)) > 0) {
+	    debug7(printf(" extending querystart %d leftward by %d matches\n",elt->querystart,nmatches));
+	    elt->querystart -= nmatches;
+	    queryend = elt->querystart - 2;
+	  }
+	  ++elt->positions;
+	  --elt->npositions;
+	  /* continue */
+
+	} else if (elt->positions[-1] >= low) {
+	  /* Found goal with deletion */
+	  debug7(printf(" possible deletion, continuing\n"));
+	  if ((nmatches = Genome_consecutive_matches_leftward(query_compress,/*left*/elt->positions[-1],
+							      /*pos5*/0,/*pos3*/elt->querystart,
+							      plusp,genestrand,first_read_p)) > 0) {
+	    debug7(printf(" extending querystart %d leftward by %d matches\n",elt->querystart,nmatches));
+	    elt->querystart -= nmatches;
+	    queryend = elt->querystart - 2;
+	  }
+	  /* continue */
+
+	} else {
+	  debug7(printf(" %u advanced past goal %u, and previous %u before goal %u - %d, so not spanning\n",
+			*elt->positions,goal,elt->positions[-1],goal,overall_max_distance));
+	  return false;
+	}
+      }
+    }
+  }
+
+  debug7(printf("Returning true\n"));
+  return true;
+}
+
+
+
+static void
+collect_elt_matches (int *found_score, List_T *subs, List_T *indels, List_T *ambiguous, List_T *singlesplicing,
+		     List_T *doublesplicing, int querystart_same, int queryend_same,
+		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		     Chrpos_T chrlength, Univcoord_T goal, 
+		     List_T rightward_set, List_T leftward_set, int querylength, Compress_T query_compress,
+		     bool plusp, int genestrand, bool first_read_p, int nmisses_allowed) {
+  List_T set, p;
+  Stage3end_T hit;
+  Elt_T elt;
+  Univcoord_T left, left1, left2, *array;
+  Uintlist_T difflist = NULL;	/* Won't work with LARGE_GENOMES */
+  int nmismatches, nindels;
+  int nsame, ndiff;
+  int querystart_diff, queryend_diff, indel_pos;
+#if 0
+  int nmismatches1, nmismatches2;
+  int query_indel_pos;
+#endif
+
+  List_T spliceends, lowprob;
+  int nhits, nspliceends, n_good_spliceends;
+  double best_prob, prob;
+  Substring_T donor, acceptor;
+
+  int sensedir;
+  Uintlist_T ambcoords, ambcoords_left, ambcoords_right;
+  Intlist_T amb_knowni, amb_nmismatches, amb_knowni_left, amb_knowni_right, amb_nmismatches_left, amb_nmismatches_right;
+
+  int segmenti_donor_knownpos[MAX_READLENGTH+1], segmentj_acceptor_knownpos[MAX_READLENGTH+1],
+    segmentj_antidonor_knownpos[MAX_READLENGTH+1], segmenti_antiacceptor_knownpos[MAX_READLENGTH+1];
+  int segmenti_donor_knowni[MAX_READLENGTH+1], segmentj_acceptor_knowni[MAX_READLENGTH+1],
+    segmentj_antidonor_knowni[MAX_READLENGTH+1], segmenti_antiacceptor_knowni[MAX_READLENGTH+1];
+  int segmenti_donor_nknown, segmentj_acceptor_nknown,
+    segmentj_antidonor_nknown, segmenti_antiacceptor_nknown;
+  int j, i, n;
+  bool segmenti_usedp, segmentj_usedp;
+  bool foundp;
+
+
+  /* Potential success */
+  debug7(printf("  successful candidate found\n"));
+  if (goal < (Univcoord_T) querylength) {
+    debug7(printf("  Goes over beginning of chromosome\n"));
+    return;
+  } else if (goal + querylength > chrhigh) {
+    debug7(printf("  Goes over end of chromosome\n"));
+    return;
+  } else {
+    left = goal /* - querylength */;
+  }
+
+  nsame = ndiff = 0;
+  querystart_diff = querylength;
+  queryend_diff = 0;
+  for (set = rightward_set; set /* != NULL */; set = set->rest) {
+    elt = (Elt_T) set->first;
+    debug7(printf("%d..%d:%u vs %u: ",elt->querystart,elt->queryend,elt->positions[-1],goal));
+    assert(elt->filledp == true);
+    if (elt->positions[-1] == goal) {
+      debug7(printf("same\n"));
+      if (elt->querystart < querystart_same) {
+	querystart_same = elt->querystart;
+      }
+      if (elt->queryend > queryend_same) {
+	queryend_same = elt->queryend;
+      }
+      nsame++;
+
+    } else {
+      debug7(printf("diff (npositions %d)\n",elt->npositions));
+      debug7(printf("Pushing position %u\n",elt->positions[-1]));
+      difflist = Uintlist_push(difflist,elt->positions[-1]);
+      for (i = 0; i < elt->npositions; i++) {
+	debug7(printf("Pushing position %u\n",elt->positions[i]));
+	difflist = Uintlist_push(difflist,elt->positions[i]);
+      }
+      if (elt->querystart < querystart_diff) {
+	querystart_diff = elt->querystart;
+      }
+      if (elt->queryend > queryend_diff) {
+	queryend_diff = elt->queryend;
+      }
+      ndiff++;
+    }
+  }
+
+  for (set = leftward_set; set /* != NULL */; set = set->rest) {
+    elt = (Elt_T) set->first;
+    debug7(printf("%d..%d:%u vs %u: ",elt->querystart,elt->queryend,elt->positions[-1],goal));
+    assert(elt->filledp == true);
+    if (elt->positions[-1] == goal) {
+      debug7(printf("same\n"));
+      if (elt->querystart < querystart_same) {
+	querystart_same = elt->querystart;
+      }
+      if (elt->queryend > queryend_same) {
+	queryend_same = elt->queryend;
+      }
+      nsame++;
+
+    } else {
+      debug7(printf("diff (npositions %d)\n",elt->npositions));
+      debug7(printf("Pushing position %u\n",elt->positions[-1]));
+      difflist = Uintlist_push(difflist,elt->positions[-1]);
+      for (i = 0; i < elt->npositions; i++) {
+	debug7(printf("Pushing position %u\n",elt->positions[i]));
+	difflist = Uintlist_push(difflist,elt->positions[i]);
+      }
+      if (elt->querystart < querystart_diff) {
+	querystart_diff = elt->querystart;
+      }
+      if (elt->queryend > queryend_diff) {
+	queryend_diff = elt->queryend;
+      }
+      ndiff++;
+    }
+  }
+
+  debug7(printf("Got %d same, %d diff\n",nsame,ndiff));
+
+  if (ndiff == 0) {
+    /* sub */
+    debug7(printf("  Testing in entire query\n"));
+    nmismatches = Genome_count_mismatches_substring(query_compress,left,/*pos5*/0,/*pos3*/querylength,
+						    plusp,genestrand,first_read_p);
+    debug7(printf("nmismatches = %d (vs %d misses allowed)\n",nmismatches,nmisses_allowed));
+
+    if (nmismatches > nmisses_allowed) {
+      debug7(printf("Result: too many mismatches\n"));
+
+    } else {
+      debug7(printf("Result: successful hit saved\n"));
+      debug(printf("Reporting hit with %d mismatches\n",nmismatches));
+      if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+					    left,/*genomiclength*/querylength,
+					    query_compress,plusp,genestrand,first_read_p,
+					    chrnum,chroffset,chrhigh,chrlength,
+					    /*sarrayp*/true)) != NULL) {
+	*subs = List_push(*subs,(void *) hit);
+      }
+    }
+    assert(difflist == NULL);
+
+  } else if (querystart_same == 0 && queryend_diff == querylength - 1) {
+    left1 = left;
+    indel_pos = queryend_same + 1;
+    debug7(printf("same is at %u from %d to %d\n",left,querystart_same,queryend_same));
+
+    array = Uintlist_to_array(&n,difflist);
+    qsort(array,n,sizeof(Univcoord_T),Univcoord_compare);
+    Uintlist_free(&difflist);
+    debug7(printf("Have %d matching diffs\n",n));
+
+    spliceends = (List_T) NULL;
+    lowprob = (List_T) NULL;
+    for (i = 0; i < n; i++) {
+      left2 = array[i];
+      debug7(printf("diff %d/%d is at %u, from %d to %d\n",i,n,left2,querystart_diff - 1,queryend_diff));
+
+      if (i > 0 && left2 == array[i-1]) {
+	/* Already processed */
+
+      } else if (left2 + querylength >= chrhigh) {
+	/* Splice or deletion would extend to next chromosome */
+
+      } else if (left2 > left1 + max_deletionlen) {
+	debug7(printf("A splice..."));
+
+	segmenti_donor_nknown = segmenti_antiacceptor_nknown = 0;
+	if (nsplicesites > 0 &&
+	    Splicetrie_splicesite_p(left1,/*pos5*/1,/*pos3*/querylength) == true) {
+	  j = binary_search(0,nsplicesites,splicesites,left1);
+	  while (j < nsplicesites && splicesites[j] < left1 + querylength) {
+	    if (splicetypes[j] == DONOR) {
+	      debug4s(printf("Setting known donor %d for segmenti at %u\n",j,splicesites[j]));
+	      segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[j] - left1;
+	      segmenti_donor_knowni[segmenti_donor_nknown++] = j;
+	    } else if (splicetypes[j] == ANTIACCEPTOR) {
+	      debug4s(printf("Setting known antiacceptor %d for segmenti at %u\n",j,splicesites[j]));
+	      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[j] - left1;
+	      segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = j;
+	    }
+	    j++;
+	  }
+	}
+	segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
+	segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
+	  
+	segmentj_acceptor_nknown = segmentj_antidonor_nknown = 0;
+	if (nsplicesites > 0 &&
+	    Splicetrie_splicesite_p(left2,/*pos5*/1,/*pos3*/querylength) == true) {
+	  j = binary_search(0,nsplicesites,splicesites,left2);
+	  while (j < nsplicesites && splicesites[j] < left2 + querylength) {
+	    if (splicetypes[j] == ACCEPTOR) {
+	      debug4s(printf("Setting known acceptor %d for segmentj at %u\n",j,splicesites[j]));
+	      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[j] - left2;
+	      segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = j;
+	    } else if (splicetypes[j] == ANTIDONOR) {
+	      debug4s(printf("Setting known antidonor %d for segmentj at %u\n",j,splicesites[j]));
+	      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[j] - left2;
+	      segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = j;
+	    }
+	    j++;
+	  }
+	}
+	segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
+	segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
+
+	/* nspliceends = 0; */
+	spliceends = Splice_solve_single(&(*found_score),&nspliceends,spliceends,&lowprob,
+					 &segmenti_usedp,&segmentj_usedp,
+					 /*segmenti_left*/left1,/*segmentj_left*/left2,
+					 chrnum,chroffset,chrhigh,chrlength,
+					 chrnum,chroffset,chrhigh,chrlength,
+					 querylength,query_compress,
+					 segmenti_donor_knownpos,segmentj_acceptor_knownpos,
+					 segmentj_antidonor_knownpos,segmenti_antiacceptor_knownpos,
+					 segmenti_donor_knowni,segmentj_acceptor_knowni,
+					 segmentj_antidonor_knowni,segmenti_antiacceptor_knowni,
+					 segmenti_donor_nknown,segmentj_acceptor_nknown,
+					 segmentj_antidonor_nknown,segmenti_antiacceptor_nknown,
+					 splicing_penalty,/*max_mismatches_allowed*/1000,
+					 plusp,genestrand,first_read_p,/*subs_or_indels_p*/false,
+					 /*sarrayp*/true);
+
+      } else if (left2 > left1) {
+	nindels = left2 - left1;
+	debug7(printf("B deletion of %d bp relative to max_deletionlen %d (nmisses allowed %d)...",
+		      nindels,max_deletionlen,nmisses_allowed));
+	if ((indel_pos < 17 || querylength - indel_pos < 17) && nindels > max_end_deletions) {
+	  /* Allow regular GSNAP algorithm to find this */
+	  debug7(printf("too long for end deletion"));
+	} else {
+#if 0
+	  nmismatches1 = Genome_count_mismatches_substring(query_compress,left1,/*pos5*/0,/*pos3*/indel_pos,
+							   plusp,genestrand,first_read_p);
+	  nmismatches2 = Genome_count_mismatches_substring(query_compress,left2,/*pos5*/indel_pos,
+							   /*pos3*/querylength,plusp,genestrand,first_read_p);
+	  if (plusp == true) {
+	    query_indel_pos = indel_pos;
+	  } else {
+	    query_indel_pos = querylength - indel_pos;
+	  }
+	  if ((hit = Stage3end_new_deletion(&(*found_score),nindels,query_indel_pos,
+					    nmismatches1,nmismatches2,
+					    left1,/*genomiclength*/querylength+nindels,
+					    query_compress,querylength,plusp,genestrand,first_read_p,
+					    chrnum,chroffset,chrhigh,chrlength,
+					    /*indel_penalty*/2,/*sarrayp*/true)) != NULL) {
+	    debug7(printf("successful"));
+	    *indels = List_push(*indels,(void *) hit);
+	  }
+#else
+	  *indels = Indel_solve_middle_deletion(&foundp,&(*found_score),&nhits,*indels,
+						/*left*/left1,chrnum,chroffset,chrhigh,chrlength,
+						/*indels*/-nindels,query_compress,querylength,nmisses_allowed,
+						plusp,genestrand,first_read_p,/*sarray*/true);
+	  debug7(
+		 if (foundp == true) {
+		   printf("successful");
+		 }
+		 );
+#endif
+	}
+	debug7(printf("\n"));
+      
+      } else if (left2 < left1) {
+	nindels = left1 - left2;
+	if (nindels >= indel_pos || indel_pos + nindels >= querylength) {
+	  debug7(printf("X insertion of %d bp too long\n",nindels));
+	} else {
+	  debug7(printf("C insertion of %d bp (nmisses allowed %d)...",nindels,nmisses_allowed));
+#if 0
+	  nmismatches1 = Genome_count_mismatches_substring(query_compress,left1,/*pos5*/0,/*pos3*/indel_pos-nindels,
+							   plusp,genestrand,first_read_p);
+	  nmismatches2 = Genome_count_mismatches_substring(query_compress,left2,/*pos5*/indel_pos+nindels,
+							   /*pos3*/querylength,plusp,genestrand,first_read_p);
+	  if (plusp == true) {
+	    query_indel_pos = indel_pos;
+	  } else {
+	    query_indel_pos = querylength - indel_pos - nindels;
+	  }
+	  if ((hit = Stage3end_new_insertion(&(*found_score),nindels,query_indel_pos,
+					     nmismatches1,nmismatches2,
+					     left1,/*genomiclength*/querylength-nindels,
+					     query_compress,querylength,plusp,genestrand,first_read_p,
+					     chrnum,chroffset,chrhigh,chrlength,
+					     /*indel_penalty*/2,/*sarrayp*/true)) != NULL) {
+	    debug7(printf("successful"));
+	    *indels = List_push(*indels,(void *) hit);
+	  }
+#else
+	  *indels = Indel_solve_middle_insertion(&foundp,&(*found_score),&nhits,*indels,
+						 /*left*/left1,chrnum,chroffset,chrhigh,chrlength,
+						 /*indels*/+nindels,query_compress,querylength,nmisses_allowed,
+						 plusp,genestrand,first_read_p,/*sarrayp*/true);
+	  debug7(
+		 if (foundp == true) {
+		   printf("successful");
+		 }
+		 );
+#endif
+	  debug7(printf("\n"));
+	}
+      }
+    }
+
+    if (spliceends != NULL) {
+      /* nmismatches should be the same for all spliceends, so pick based on prob */
+      best_prob = 0.0;
+      for (p = spliceends; p != NULL; p = List_next(p)) {
+	hit = (Stage3end_T) List_head(p);
+	debug7(printf("analyzing distance %d, probabilities %f and %f\n",
+		      Stage3end_distance(hit),Substring_chimera_prob(Stage3end_substring_donor(hit)),
+		      Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	if ((prob = Stage3end_chimera_prob(hit)) > best_prob) {
+	  best_prob = prob;
+	}
+      }
+
+      n_good_spliceends = 0;
+      for (p = spliceends; p != NULL; p = List_next(p)) {
+	hit = (Stage3end_T) List_head(p);
+	if (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP) {
+	  debug7(printf("accepting distance %d, probabilities %f and %f\n",
+			Stage3end_distance(hit),Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	  n_good_spliceends += 1;
+	}
+      }
+
+      if (n_good_spliceends == 1) {
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  if (Stage3end_chimera_prob(hit) == best_prob) {
+	    debug7(printf("pushing distance %d, probabilities %f and %f\n",
+			  Stage3end_distance(hit),Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			  Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	    *singlesplicing = List_push(*singlesplicing,(void *) hit);
+	    nhits += 1;
+	  } else {
+	    Stage3end_free(&hit);
+	  }
+	}
+	List_free(&spliceends);
+
+      } else {
+	/* Create ambiguous */
+	hit = (Stage3end_T) List_head(spliceends);
+	donor = Stage3end_substring_donor(hit);
+	acceptor = Stage3end_substring_acceptor(hit);
+	sensedir = Stage3end_sensedir(hit);
+
+	ambcoords = (Uintlist_T) NULL;
+	amb_knowni = (Intlist_T) NULL;
+	amb_nmismatches = (Intlist_T) NULL;
+	if (Substring_left_genomicseg(donor) == left1) {
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    acceptor = Stage3end_substring_acceptor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(acceptor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(acceptor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(acceptor));
+	  }
+
+	  if (plusp == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  }
+
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       /*nmismatches_donor*/Substring_nmismatches_whole(donor),/*nmismatches_acceptor*/0,
+							       donor,/*acceptor*/NULL,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(donor),
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
+							       sensedir,/*sarrayp*/true));
+	  Intlist_free(&amb_nmismatches);
+	  Intlist_free(&amb_knowni);
+	  Uintlist_free(&ambcoords); /* LARGE_GENOMES not possible with suffix array */
+
+	} else if (Substring_left_genomicseg(acceptor) == left1) {
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    donor = Stage3end_substring_donor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(donor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(donor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(donor));
+	  }
+
+	  if (plusp == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  }
+
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       /*nmismatches_donor*/0,/*nmismatches_acceptor*/Substring_nmismatches_whole(acceptor),
+							       /*donor*/NULL,acceptor,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(acceptor),
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
+							       sensedir,/*sarrayp*/true));
+	  Intlist_free(&amb_nmismatches);
+	  Intlist_free(&amb_knowni);
+	  Uintlist_free(&ambcoords); /* LARGE_GENOMES not possible with suffix array */
+
+	} else {
+	  fprintf(stderr,"Unexpected: Neither donor left %u nor acceptor left %u equals left1 %u\n",
+		  Substring_left_genomicseg(donor),Substring_left_genomicseg(acceptor),left1);
+	  abort();
+	}
+
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  Stage3end_free(&hit);
+	}
+	List_free(&spliceends);
+      }
+    }
+
+    /* Don't use lowprob in suffix array stage */
+    debug7(printf("freeing lowprobs\n"));
+    for (p = lowprob; p != NULL; p = List_next(p)) {
+      hit = (Stage3end_T) List_head(p);
+      Stage3end_free(&hit);
+    }
+    List_free(&lowprob);
+
+    FREE(array);
+
+  } else if (querystart_diff == 0 && queryend_same == querylength - 1) {
+    left2 = left;
+    indel_pos = querystart_same;
+    debug7(printf("same is at %u from %d to %d\n",left,querystart_same,queryend_same));
+    
+    array = Uintlist_to_array(&n,difflist);
+    qsort(array,n,sizeof(Univcoord_T),Univcoord_compare);
+    Uintlist_free(&difflist);
+    debug7(printf("Have %d matching diffs\n",n));
+
+    spliceends = (List_T) NULL;
+    lowprob = (List_T) NULL;
+    for (i = 0; i < n; i++) {
+      left1 = array[i];
+      debug7(printf("diff %d/%d is at %u, from %d to %d\n",i,n,left1,querystart_diff,queryend_diff));
+
+      if (i > 0 && left1 == array[i-1]) {
+	/* Already processed */
+
+      } else if (left2 + querylength >= chrhigh) {
+	/* Splice or deletion would extend to next chromosome */
+
+      } else if (left2 > left1 + max_deletionlen) {
+	debug7(printf("A splice..."));
+
+	segmenti_donor_nknown = segmenti_antiacceptor_nknown = 0;
+	if (nsplicesites > 0 &&
+	    Splicetrie_splicesite_p(left1,/*pos5*/1,/*pos3*/querylength) == true) {
+	  j = binary_search(0,nsplicesites,splicesites,left1);
+	  while (j < nsplicesites && splicesites[j] < left1 + querylength) {
+	    if (splicetypes[j] == DONOR) {
+	      debug4s(printf("Setting known donor %d for segmenti at %u\n",j,splicesites[j]));
+	      segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[j] - left1;
+	      segmenti_donor_knowni[segmenti_donor_nknown++] = j;
+	    } else if (splicetypes[j] == ANTIACCEPTOR) {
+	      debug4s(printf("Setting known antiacceptor %d for segmenti at %u\n",j,splicesites[j]));
+	      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[j] - left1;
+	      segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = j;
+	    }
+	    j++;
+	  }
+	}
+	segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
+	segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
+	  
+	segmentj_acceptor_nknown = segmentj_antidonor_nknown = 0;
+	if (nsplicesites > 0 &&
+	    Splicetrie_splicesite_p(left2,/*pos5*/1,/*pos3*/querylength) == true) {
+	  j = binary_search(0,nsplicesites,splicesites,left2);
+	  while (j < nsplicesites && splicesites[j] < left2 + querylength) {
+	    if (splicetypes[j] == ACCEPTOR) {
+	      debug4s(printf("Setting known acceptor %d for segmentj at %u\n",j,splicesites[j]));
+	      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[j] - left2;
+	      segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = j;
+	    } else if (splicetypes[j] == ANTIDONOR) {
+	      debug4s(printf("Setting known antidonor %d for segmentj at %u\n",j,splicesites[j]));
+	      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[j] - left2;
+	      segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = j;
+	    }
+	    j++;
+	  }
+	}
+	segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
+	segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
+
+	/* nspliceends = 0; */
+	spliceends = Splice_solve_single(&(*found_score),&nspliceends,spliceends,&lowprob,
+					 &segmenti_usedp,&segmentj_usedp,
+					 /*segmenti_left*/left1,/*segmentj_left*/left2,
+					 chrnum,chroffset,chrhigh,chrlength,
+					 chrnum,chroffset,chrhigh,chrlength,
+					 querylength,query_compress,
+					 segmenti_donor_knownpos,segmentj_acceptor_knownpos,
+					 segmentj_antidonor_knownpos,segmenti_antiacceptor_knownpos,
+					 segmenti_donor_knowni,segmentj_acceptor_knowni,
+					 segmentj_antidonor_knowni,segmenti_antiacceptor_knowni,
+					 segmenti_donor_nknown,segmentj_acceptor_nknown,
+					 segmentj_antidonor_nknown,segmenti_antiacceptor_nknown,
+					 splicing_penalty,/*max_mismatches_allowed*/1000,
+					 plusp,genestrand,first_read_p,/*subs_or_indels_p*/false,
+					 /*sarrayp*/true);
+
+      } else if (left2 > left1) {
+	nindels = left2 - left1;
+	debug7(printf("B deletion of %d bp relative to max_deletionlen %d (nmisses allowed %d)...",
+		      nindels,max_deletionlen,nmisses_allowed));
+	if ((indel_pos < 17 || querylength - indel_pos < 17) && nindels > max_end_deletions) {
+	  /* Allow regular GSNAP algorithm to find this */
+	  debug7(printf("too long for end deletion"));
+	} else {
+#if 0
+	  nmismatches1 = Genome_count_mismatches_substring(query_compress,left1,/*pos5*/0,/*pos3*/indel_pos,
+							   plusp,genestrand,first_read_p);
+	  nmismatches2 = Genome_count_mismatches_substring(query_compress,left2,/*pos5*/indel_pos,
+							   /*pos3*/querylength,plusp,genestrand,first_read_p);
+	  if (plusp == true) {
+	    query_indel_pos = indel_pos;
+	  } else {
+	    query_indel_pos = querylength - indel_pos;
+	  }
+	  if ((hit = Stage3end_new_deletion(&(*found_score),nindels,query_indel_pos,
+					    nmismatches1,nmismatches2,
+					    left1,/*genomiclength*/querylength+nindels,
+					    query_compress,querylength,plusp,genestrand,first_read_p,
+					    chrnum,chroffset,chrhigh,chrlength,
+					    /*indel_penalty*/2,/*sarrayp*/true)) != NULL) {
+	    debug7(printf("successful"));
+	    *indels = List_push(*indels,(void *) hit);
+	  }
+#else
+	  *indels = Indel_solve_middle_deletion(&foundp,&(*found_score),&nhits,*indels,
+						/*left*/left1,chrnum,chroffset,chrhigh,chrlength,
+						/*indels*/-nindels,query_compress,querylength,nmisses_allowed,
+						plusp,genestrand,first_read_p,/*sarray*/true);
+	  debug7(
+		 if (foundp == true) {
+		   printf("successful");
+		 }
+		 );
+#endif
+	}
+	debug7(printf("\n"));
+      
+      } else if (left2 < left1) {
+	nindels = left1 - left2;
+	if (nindels >= indel_pos || indel_pos + nindels >= querylength) {
+	  debug7(printf("X insertion of %d bp too long\n",nindels));
+	} else {
+	  debug7(printf("C insertion of %d bp (nmisses allowed %d)...",nindels,nmisses_allowed));
+#if 0      
+	  nmismatches1 = Genome_count_mismatches_substring(query_compress,left1,/*pos5*/0,/*pos3*/indel_pos-nindels,
+							   plusp,genestrand,first_read_p);
+	  nmismatches2 = Genome_count_mismatches_substring(query_compress,left2,/*pos5*/indel_pos+nindels,
+							   /*pos3*/querylength,plusp,genestrand,first_read_p);
+	  if (plusp == true) {
+	    query_indel_pos = indel_pos;
+	  } else {
+	    query_indel_pos = querylength - indel_pos - nindels;
+	  }
+	  if ((hit = Stage3end_new_insertion(&(*found_score),nindels,query_indel_pos,
+					     nmismatches1,nmismatches2,
+					     left1,/*genomiclength*/querylength-nindels,
+					     query_compress,querylength,plusp,genestrand,first_read_p,
+					     chrnum,chroffset,chrhigh,chrlength,
+					     /*indel_penalty*/2,/*sarrayp*/true)) != NULL) {
+	    debug7(printf("successful"));
+	    *indels = List_push(*indels,(void *) hit);
+	  }
+#else
+	  *indels = Indel_solve_middle_insertion(&foundp,&(*found_score),&nhits,*indels,
+						 /*left*/left1,chrnum,chroffset,chrhigh,chrlength,
+						 /*indels*/+nindels,query_compress,querylength,nmisses_allowed,
+						 plusp,genestrand,first_read_p,/*sarrayp*/true);
+	  debug7(
+		 if (foundp == true) {
+		   printf("successful");
+		 }
+		 );
+#endif
+	  debug7(printf("\n"));
+	}
+      }
+    }
+
+    if (spliceends != NULL) {
+      /* nmismatches should be the same for all spliceends, so pick based on prob */
+      best_prob = 0.0;
+      for (p = spliceends; p != NULL; p = List_next(p)) {
+	hit = (Stage3end_T) List_head(p);
+	debug7(printf("analyzing distance %d, probabilities %f and %f\n",
+		      Stage3end_distance(hit),Substring_chimera_prob(Stage3end_substring_donor(hit)),
+		      Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	if ((prob = Stage3end_chimera_prob(hit)) > best_prob) {
+	  best_prob = prob;
+	}
+      }
+
+      n_good_spliceends = 0;
+      for (p = spliceends; p != NULL; p = List_next(p)) {
+	hit = (Stage3end_T) List_head(p);
+	if (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP) {
+	  debug7(printf("accepting distance %d, probabilities %f and %f\n",
+			Stage3end_distance(hit),Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	  n_good_spliceends += 1;
+	}
+      }
+      
+      if (n_good_spliceends == 1) {
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  if (Stage3end_chimera_prob(hit) == best_prob) {
+	    debug7(printf("pushing distance %d, probabilities %f and %f\n",
+			  Stage3end_distance(hit),Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			  Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	    *singlesplicing = List_push(*singlesplicing,(void *) hit);
+	    nhits += 1;
+	  } else {
+	    Stage3end_free(&hit);
+	  }
+	}
+	List_free(&spliceends);
+
+      } else {
+	/* Create ambiguous */
+	hit = (Stage3end_T) List_head(spliceends);
+	donor = Stage3end_substring_donor(hit);
+	acceptor = Stage3end_substring_acceptor(hit);
+	sensedir = Stage3end_sensedir(hit);
+
+	ambcoords = (Uintlist_T) NULL;
+	amb_knowni = (Intlist_T) NULL;
+	amb_nmismatches = (Intlist_T) NULL;
+	if (Substring_left_genomicseg(donor) == left2) {
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    acceptor = Stage3end_substring_acceptor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(acceptor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(acceptor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(acceptor));
+	  }
+
+	  if (plusp == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  }
+
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       /*nmismatches_donor*/Substring_nmismatches_whole(donor),/*nmismatches_acceptor*/0,
+							       donor,/*acceptor*/NULL,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(donor),
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
+							       sensedir,/*sarrayp*/true));
+	  Intlist_free(&amb_nmismatches);
+	  Intlist_free(&amb_knowni);
+	  Uintlist_free(&ambcoords); /* LARGE_GENOMES not possible with suffix array */
+	  
+	} else if (Substring_left_genomicseg(acceptor) == left2) {
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    donor = Stage3end_substring_donor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(donor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(donor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(donor));
+	  }
+
+	  if (plusp == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  }
+
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       /*nmismatches_donor*/0,/*nmismatches_acceptor*/Substring_nmismatches_whole(acceptor),
+							       /*donor*/NULL,acceptor,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(acceptor),
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
+							       sensedir,/*sarrayp*/true));
+	  Intlist_free(&amb_nmismatches);
+	  Intlist_free(&amb_knowni);
+	  Uintlist_free(&ambcoords); /* LARGE_GENOMES not possible with suffix array */
+
+	} else {
+	  fprintf(stderr,"Unexpected: Neither donor left %u nor acceptor left %u equals left2 %u\n",
+		  Substring_left_genomicseg(donor),Substring_left_genomicseg(acceptor),left2);
+	  abort();
+	}
+
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  Stage3end_free(&hit);
+	}
+	List_free(&spliceends);
+      }
+    }
+
+    /* Don't use lowprob in suffix array stage */
+    debug7(printf("freeing lowprobs\n"));
+    for (p = lowprob; p != NULL; p = List_next(p)) {
+      hit = (Stage3end_T) List_head(p);
+      Stage3end_free(&hit);
+    }
+    List_free(&lowprob);
+
+    FREE(array);
+
+  } else {
+    Uintlist_free(&difflist);
+  }
+
+  return;
+}
+
+
+void
+Sarray_search_greedy (int *found_score, List_T *subs, List_T *indels, List_T *ambiguous, List_T *singlesplicing,
+		      List_T *doublesplicing, char *queryuc_ptr, char *queryrc, int querylength,
+		      Compress_T query_compress_fwd, Compress_T query_compress_rev,
+		      int nmisses_allowed, int genestrand, bool first_read_p) {
+  List_T plus_set, minus_set, p;
+  List_T rightward_set, leftward_set;
+  Elt_T best_plus_elt, best_minus_elt, elt, *array;
+  UINT4 best_plus_nmatches, best_minus_nmatches, nmatches;
+  Sarrayptr_T initptr, finalptr;
+  int plus_niter, minus_niter;
+  bool successp;
+  int plus_querypos, minus_querypos, halfwaypos;
+  int nelts, i;
+  Chrnum_T chrnum;
+  Univcoord_T chroffset, chrhigh, left;
+  Chrpos_T chrlength;
+  Stage3end_T hit;
+  int nmismatches;
+  T plus_sarray, minus_sarray;
+  char *plus_conversion, *minus_conversion;
+
+
+  if (nmisses_allowed < 0) {
+    nmisses_allowed = 0;
+  }
+  debug(printf("\nStarting Sarray_search_greedy with querylength %d and indexsize %d and nmisses_allowed %d\n",
+	       querylength,sarray_fwd->indexsize,nmisses_allowed));
+
+  *found_score = querylength;
+
+  if (genestrand == +2) {
+    if (first_read_p == false) {
+      plus_conversion = conversion_fwd;
+      minus_conversion = conversion_rev;
+      plus_sarray = sarray_fwd;
+      minus_sarray = sarray_rev;
+    } else {
+      plus_conversion = conversion_rev;
+      minus_conversion = conversion_fwd;
+      plus_sarray = sarray_rev;
+      minus_sarray = sarray_fwd;
+    }
+  } else {
+    if (first_read_p == true) {
+      plus_conversion = conversion_fwd;
+      minus_conversion = conversion_rev;
+      plus_sarray = sarray_fwd;
+      minus_sarray = sarray_rev;
+    } else {
+      plus_conversion = conversion_rev;
+      minus_conversion = conversion_fwd;
+      plus_sarray = sarray_rev;
+      minus_sarray = sarray_fwd;
+    }
+  }
+    
+  /* Do one plus round */
+  plus_querypos = 0;
+  sarray_search(&initptr,&finalptr,&successp,&best_plus_nmatches,&(queryuc_ptr[plus_querypos]),
+		querylength - plus_querypos,/*queryoffset*/plus_querypos,
+		query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion);
+  best_plus_elt = Elt_new(plus_querypos,best_plus_nmatches,initptr,finalptr);
+  plus_querypos += (int) best_plus_nmatches;
+  plus_querypos += 1;		/* To skip the presumed mismatch */
+
+
+  /* Do one minus round */
+  minus_querypos = 0;
+  sarray_search(&initptr,&finalptr,&successp,&best_minus_nmatches,&(queryrc[minus_querypos]),
+		querylength - minus_querypos,/*queryoffset*/minus_querypos,
+		query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion);
+  best_minus_elt = Elt_new(minus_querypos,best_minus_nmatches,initptr,finalptr);
+  minus_querypos += (int) best_minus_nmatches;
+  minus_querypos += 1;		/* To skip the presumed mismatch */
+
+
+  if (best_plus_nmatches >= querylength/2) {
+    /* See if we have a winner */
+    debug(printf("best_plus_nmatches = %d > %d/2, so checking mismatches against %d allowed\n",
+		 best_plus_nmatches,querylength,nmisses_allowed));
+    Elt_fill_positions_all(best_plus_elt,plus_sarray);
+    for (i = 0; i < best_plus_elt->npositions; i++) {
+      left = best_plus_elt->positions[i];
+      /* Should return max_mismatches + 1 if it exceeds the limit */
+      if ((nmismatches = Genome_count_mismatches_limit(query_compress_fwd,left,/*pos5*/0,/*pos3*/querylength,
+						       /*max_mismatches*/nmisses_allowed,
+						       /*plusp*/true,genestrand,first_read_p)) <= nmisses_allowed) {
+	chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	debug(printf("Case 1: New substitution from beginning\n"));
+	if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+					      left,/*genomiclength*/querylength,
+					      query_compress_fwd,/*plusp*/true,genestrand,first_read_p,
+					      chrnum,chroffset,chrhigh,chrlength,
+					      /*sarrayp*/true)) != NULL) {
+	  *subs = List_push(*subs,(void *) hit);
+	}
+      }
+      debug(printf("Looking at plus position %u => %d mismatches\n",left,nmismatches));
+    }
+
+  } else {
+    /* Try starting from middle of read */
+    halfwaypos = querylength/2;
+    debug(printf("Starting from halfway point on plus\n"));
+    sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryuc_ptr[halfwaypos]),
+		  querylength - halfwaypos,/*queryoffset*/halfwaypos,
+		  query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion);
+    if (nmatches >= querylength - halfwaypos) {
+      elt = Elt_new(halfwaypos,nmatches,initptr,finalptr);
+      Elt_fill_positions_all(elt,plus_sarray);
+      for (i = 0; i < elt->npositions; i++) {
+	left = elt->positions[i];
+	/* Should return max_mismatches + 1 if it exceeds the limit */
+	if ((nmismatches = Genome_count_mismatches_limit(query_compress_fwd,left,/*pos5*/0,/*pos3*/querylength,
+							 /*max_mismatches*/nmisses_allowed,
+							 /*plusp*/true,genestrand,first_read_p)) <= nmisses_allowed) {
+	  chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	  Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	  debug(printf("Case 1: New substitution from middle\n"));
+	  if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+						left,/*genomiclength*/querylength,
+						query_compress_fwd,/*plusp*/true,genestrand,first_read_p,
+						chrnum,chroffset,chrhigh,chrlength,
+						/*sarrayp*/true)) != NULL) {
+	    *subs = List_push(*subs,(void *) hit);
+	  }
+	}
+	debug(printf("Looking at plus position %u => %d mismatches\n",left,nmismatches));
+      }
+      Elt_free(&elt);
+    }
+  }
+
+
+  if (best_minus_nmatches >= querylength/2) {
+    /* See if we have a winner */
+    debug(printf("best_minus_nmatches = %d > %d/2, so checking mismatches against %d allowed\n",
+		 best_minus_nmatches,querylength,nmisses_allowed));
+    Elt_fill_positions_all(best_minus_elt,minus_sarray);
+    for (i = 0; i < best_minus_elt->npositions; i++) {
+      left = best_minus_elt->positions[i];
+      /* Should return max_mismatches + 1 if it exceeds the limit */
+      if ((nmismatches = Genome_count_mismatches_limit(query_compress_rev,left,/*pos5*/0,/*pos3*/querylength,
+						       /*max_mismatches*/nmisses_allowed,
+						       /*plusp*/false,genestrand,first_read_p)) <= nmisses_allowed) {
+	chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	debug(printf("Case 2: New substitution from beginning\n"));
+	if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+					      left,/*genomiclength*/querylength,
+					      query_compress_rev,/*plusp*/false,genestrand,first_read_p,
+					      chrnum,chroffset,chrhigh,chrlength,
+					      /*sarrayp*/true)) != NULL) {
+	  *subs = List_push(*subs,(void *) hit);
+	}
+      }
+      debug(printf("Looking at minus position %u => %d mismatches\n",left,nmismatches));
+    }
+  } else {
+    /* Try starting from middle of read */
+    halfwaypos = querylength/2;
+    debug(printf("Starting from halfway point on minus\n"));
+    sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryrc[halfwaypos]),
+		  querylength - halfwaypos,/*queryoffset*/halfwaypos,
+		  query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion);
+    if (nmatches >= querylength - halfwaypos) {
+      elt = Elt_new(halfwaypos,nmatches,initptr,finalptr);
+      Elt_fill_positions_all(elt,minus_sarray);
+      for (i = 0; i < elt->npositions; i++) {
+	left = elt->positions[i];
+	/* Should return max_mismatches + 1 if it exceeds the limit */
+	if ((nmismatches = Genome_count_mismatches_limit(query_compress_rev,left,/*pos5*/0,/*pos3*/querylength,
+							 /*max_mismatches*/nmisses_allowed,
+							 /*plusp*/false,genestrand,first_read_p)) <= nmisses_allowed) {
+	  chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	  Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	  debug(printf("Case 2: New substitution from middle\n"));
+	  if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+						left,/*genomiclength*/querylength,
+						query_compress_rev,/*plusp*/false,genestrand,first_read_p,
+						chrnum,chroffset,chrhigh,chrlength,
+						/*sarrayp*/true)) != NULL) {
+	    *subs = List_push(*subs,(void *) hit);
+	  }
+	}
+	debug(printf("Looking at minus position %u => %d mismatches\n",left,nmismatches));
+      }
+      Elt_free(&elt);
+    }
+  }
+
+    
+  debug(printf("Found %d subs\n",List_length(*subs)));
+#if 0
+  /* Allow identification of splicing, even if substitutions are found */
+  if (*subs != NULL) {
+    /* Be satisfied with 1-mismatch results */
+    Elt_free(&best_plus_elt);
+    Elt_free(&best_minus_elt);
+    return;
+  }
+#endif
+
+  if (plus_querypos >= querylength) {
+    plus_set = (List_T) NULL;
+  } else {
+    /* Extend plus side a second time */
+    sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryuc_ptr[plus_querypos]),
+		  querylength - plus_querypos,/*queryoffset*/plus_querypos,
+		  query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion);
+    elt = Elt_new(plus_querypos,nmatches,initptr,finalptr);
+    plus_querypos += nmatches;
+    plus_querypos += 1;		/* To skip the presumed mismatch */
+
+    debug(printf("plus_querypos %d vs querylength %d\n",plus_querypos,querylength));
+    if (nmatches <= best_plus_nmatches) {
+      /* Initial (left) elt was best */
+      debug(printf("Initial elt was best\n"));
+      plus_set = List_push(NULL,elt);
+      if (plus_querypos >= querylength) {
+	chrhigh = 0U;
+	Elt_fill_positions_all(best_plus_elt,plus_sarray);
+	for (i = 0; i < best_plus_elt->npositions; i++) {
+	  left = best_plus_elt->positions[i];
+	  if (left > chrhigh) {
+	    chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	    /* *chrhigh += 1U; */
+	  }
+	  if (extend_rightward(/*goal*/left,chroffset,chrhigh,/*rightward_set*/plus_set,
+			       query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,
+			       best_plus_elt->queryend) == true) {
+	    collect_elt_matches(&(*found_score),&(*subs),&(*indels),&(*ambiguous),&(*singlesplicing),&(*doublesplicing),
+				best_plus_elt->querystart,best_plus_elt->queryend,
+				chrnum,chroffset,chrhigh,chrlength,
+				/*goal*/left,/*rightward_set*/plus_set,/*leftward_set*/NULL,
+				querylength,query_compress_fwd,/*plusp*/true,genestrand,first_read_p,
+				nmisses_allowed);
+	  }
+	}
+      }
+    } else {
+      /* Second (right) elt is best */
+      debug(printf("Second elt is best\n"));
+      plus_set = List_push(NULL,best_plus_elt);
+      best_plus_elt = elt;
+      best_plus_nmatches = nmatches;
+      if (plus_querypos >= querylength) {
+	chrhigh = 0U;
+	Elt_fill_positions_all(best_plus_elt,plus_sarray);
+	for (i = 0; i < best_plus_elt->npositions; i++) {
+	  left = best_plus_elt->positions[i];
+	  if (left > chrhigh) {
+	    chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	    /* *chrhigh += 1U; */
+	  }
+	  nmatches = Genome_consecutive_matches_leftward(query_compress_fwd,left,
+							 /*pos5*/0,/*pos3*/best_plus_elt->querystart,
+							 /*plusp*/true,genestrand,first_read_p);
+	  debug(printf("Looking at position %u => %d matches leftward\n",left,nmatches));
+	  best_plus_elt->querystart -= nmatches;
+	  if (extend_leftward(/*goal*/left,chroffset,chrhigh,/*leftward_set*/plus_set,
+			      /*queryptr*/queryuc_ptr,query_compress_fwd,
+			      plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion,
+			      best_plus_elt->querystart,best_plus_elt->queryend) == true) {
+	    collect_elt_matches(&(*found_score),&(*subs),&(*indels),&(*ambiguous),&(*singlesplicing),&(*doublesplicing),
+				best_plus_elt->querystart,best_plus_elt->queryend,
+				chrnum,chroffset,chrhigh,chrlength,
+				/*goal*/left,/*rightward_set*/NULL,/*leftward_set*/plus_set,
+				querylength,query_compress_fwd,/*plusp*/true,genestrand,first_read_p,
+				nmisses_allowed);
+	  }
+	  best_plus_elt->querystart += nmatches;
+	}
+      }
+    }
+  }
+    
+  if (minus_querypos >= querylength) {
+    minus_set = (List_T) NULL;
+  } else {
+    /* Extend minus side a second time */
+    sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryrc[minus_querypos]),
+		  querylength - minus_querypos,/*queryoffset*/minus_querypos,
+		  query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion);
+    elt = Elt_new(minus_querypos,nmatches,initptr,finalptr);
+    minus_querypos += nmatches;
+    minus_querypos += 1;		/* To skip the presumed mismatch */
+
+    debug(printf("minus_querypos %d vs querylength %d\n",minus_querypos,querylength));
+    if (nmatches <= best_minus_nmatches) {
+      /* Initial (left) elt was best */
+      debug(printf("Initial elt was best\n"));
+      minus_set = List_push(NULL,elt);
+      if (minus_querypos >= querylength) {
+	chrhigh = 0U;
+	Elt_fill_positions_all(best_minus_elt,minus_sarray);
+	for (i = 0; i < best_minus_elt->npositions; i++) {
+	  left = best_minus_elt->positions[i];
+	  if (left > chrhigh) {
+	    chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	    /* *chrhigh += 1U; */
+	  }
+	  if (extend_rightward(/*goal*/left,chroffset,chrhigh,/*rightward_set*/minus_set,
+			       query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,
+			       best_minus_elt->queryend) == true) {
+	    collect_elt_matches(&(*found_score),&(*subs),&(*indels),&(*ambiguous),&(*singlesplicing),&(*doublesplicing),
+				best_minus_elt->querystart,best_minus_elt->queryend,
+				chrnum,chroffset,chrhigh,chrlength,
+				/*goal*/left,/*rightward_set*/minus_set,/*leftward_set*/NULL,
+				querylength,query_compress_rev,/*plusp*/false,genestrand,first_read_p,
+				nmisses_allowed);
+	  }
+	}
+      }
+    } else {
+      /* Second (right) elt is best */
+      debug(printf("Second elt is best\n"));
+      minus_set = List_push(NULL,best_minus_elt);
+      best_minus_elt = elt;
+      best_minus_nmatches = nmatches;
+      if (minus_querypos >= querylength) {
+	chrhigh = 0U;
+	Elt_fill_positions_all(best_minus_elt,minus_sarray);
+	for (i = 0; i < best_minus_elt->npositions; i++) {
+	  left = best_minus_elt->positions[i];
+	  if (left > chrhigh) {
+	    chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	    /* *chrhigh += 1U; */
+	  }
+	  nmatches = Genome_consecutive_matches_leftward(query_compress_rev,left,
+							 /*pos5*/0,/*pos3*/best_minus_elt->querystart,
+							 /*plusp*/false,genestrand,first_read_p);
+	  debug(printf(" extending bestelt querystart %d leftward by %d matches\n",best_minus_elt->querystart,nmatches));
+	  best_minus_elt->querystart -= nmatches;
+	  if (extend_leftward(/*goal*/left,chroffset,chrhigh,/*leftward_set*/minus_set,
+			      /*queryptr*/queryrc,query_compress_rev,
+			      minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion,
+			      best_minus_elt->querystart,best_minus_elt->queryend) == true) {
+	    collect_elt_matches(&(*found_score),&(*subs),&(*indels),&(*ambiguous),&(*singlesplicing),&(*doublesplicing),
+				best_minus_elt->querystart,best_minus_elt->queryend,
+				chrnum,chroffset,chrhigh,chrlength,
+				/*goal*/left,/*rightward_set*/NULL,/*leftward_set*/minus_set,
+				querylength,query_compress_rev,/*plusp*/false,genestrand,first_read_p,
+				nmisses_allowed);
+	  }
+	  best_minus_elt->querystart += nmatches;
+	}
+      }
+    }
+  }
+
+  debug(printf("Found %d subs, %d indels, %d singlesplices, %d doublesplices\n",
+	       List_length(*subs),List_length(*indels),List_length(*singlesplicing),List_length(*doublesplicing)));
+  debug(printf("found_score %d vs querylength %d\n",*found_score,querylength));
+
+  if (*found_score < querylength) {
+    /* Be satisfied with a two-part alignment */
+    if (plus_set != NULL) {
+      elt = List_head(plus_set);
+      Elt_free(&elt);
+      List_free(&plus_set);
+    }
+    Elt_free(&best_plus_elt);
+    if (minus_set != NULL) {
+      elt = List_head(minus_set);
+      Elt_free(&elt);
+      List_free(&minus_set);
+    }
+    Elt_free(&best_minus_elt);
+    return;
+  } else {
+    plus_set = List_push(plus_set,best_plus_elt);
+    minus_set = List_push(minus_set,best_minus_elt);
+
+#if 0
+    /* Checking middle of read above */
+    halfwaypos = querylength/2;
+    if (best_plus_nmatches < halfwaypos) {
+      /* Start from middle of read */
+      debug(printf("Starting from halfway point on plus\n"));
+      sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryuc_ptr[halfwaypos]),
+		    querylength - halfwaypos,/*queryoffset*/halfwaypos,
+		    query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion);
+      elt = Elt_new(halfwaypos,nmatches,initptr,finalptr);
+      if (nmatches > best_plus_nmatches) {
+	best_plus_elt = elt;
+	best_plus_nmatches = nmatches;
+      }
+      plus_set = List_push(plus_set,elt);
+    }
+
+    if (best_minus_nmatches < halfwaypos) {
+      /* Start from middle of read */
+      debug(printf("Starting from halfway point on minus\n"));
+      sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryrc[halfwaypos]),
+		    querylength - halfwaypos,/*queryoffset*/halfwaypos,
+		    query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion);
+      elt = Elt_new(halfwaypos,nmatches,initptr,finalptr);
+      if (nmatches > best_minus_nmatches) {
+	best_minus_elt = elt;
+	best_minus_nmatches = nmatches;
+      }
+      minus_set = List_push(minus_set,elt);
+    }
+#endif
+  }
+
+
+  plus_niter = minus_niter = 2;
+  /* Both sides have failed and we don't have a good best hit.  Use up given allotment of attempts. */
+  while (plus_querypos < querylength && plus_niter < nmisses_allowed) {
+    sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryuc_ptr[plus_querypos]),
+		  querylength - plus_querypos,/*queryoffset*/plus_querypos,
+		  query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion);
+    elt = Elt_new(plus_querypos,nmatches,initptr,finalptr);
+    plus_set = List_push(plus_set,(void *) elt);
+    if (nmatches > best_plus_nmatches) {
+      best_plus_elt = elt;
+      best_plus_nmatches = nmatches;
+
+      /* See if we have a substitution winner */
+      Elt_fill_positions_all(best_plus_elt,plus_sarray);
+      for (i = 0; i < best_plus_elt->npositions; i++) {
+	left = best_plus_elt->positions[i];
+	/* Should return max_mismatches + 1 if it exceeds the limit */
+	if ((nmismatches = Genome_count_mismatches_limit(query_compress_fwd,left,/*pos5*/0,/*pos3*/querylength,
+							 /*max_mismatches*/nmisses_allowed,
+							 /*plusp*/true,genestrand,first_read_p)) <= nmisses_allowed) {
+	  chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	  Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	  if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+						left,/*genomiclength*/querylength,
+						query_compress_fwd,/*plusp*/true,genestrand,first_read_p,
+						chrnum,chroffset,chrhigh,chrlength,
+						/*sarrayp*/true)) != NULL) {
+	    *subs = List_push(*subs,(void *) hit);
+	  }
+	}
+	debug(printf("Looking at plus position %u => %d mismatches\n",left,nmismatches));
+      }
+    }
+    
+    plus_querypos += nmatches;
+    plus_querypos += 1;		/* To skip the presumed mismatch */
+    plus_niter++;
+  }
+
+  while (minus_querypos < querylength && minus_niter < nmisses_allowed) {
+    sarray_search(&initptr,&finalptr,&successp,&nmatches,&(queryrc[minus_querypos]),
+		  querylength - minus_querypos,/*queryoffset*/minus_querypos,
+		  query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion);
+    elt = Elt_new(minus_querypos,nmatches,initptr,finalptr);
+    minus_set = List_push(minus_set,(void *) elt);
+    if (nmatches > best_minus_nmatches) {
+      best_minus_elt = elt;
+      best_minus_nmatches = nmatches;
+
+      /* See if we have a substitution winner */
+      Elt_fill_positions_all(best_minus_elt,minus_sarray);
+      for (i = 0; i < best_minus_elt->npositions; i++) {
+	left = best_minus_elt->positions[i];
+	/* Should return max_mismatches + 1 if it exceeds the limit */
+	if ((nmismatches = Genome_count_mismatches_limit(query_compress_rev,left,/*pos5*/0,/*pos3*/querylength,
+							 /*max_mismatches*/nmisses_allowed,
+							 /*plusp*/false,genestrand,first_read_p)) <= nmisses_allowed) {
+	  chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	  Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	  if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
+						left,/*genomiclength*/querylength,
+						query_compress_rev,/*plusp*/false,genestrand,first_read_p,
+						chrnum,chroffset,chrhigh,chrlength,
+						/*sarrayp*/true)) != NULL) {
+	    *subs = List_push(*subs,(void *) hit);
+	  }
+	}
+	debug(printf("Looking at minus position %u => %d mismatches\n",left,nmismatches));
+      }
+    }
+
+    minus_querypos += nmatches;
+    minus_querypos += 1;		/* To skip the presumed mismatch */
+    minus_niter++;
+  }
+
+  debug(printf("Ended with %d plus iterations and %d minus iterations\n",plus_niter,minus_niter));
+
+  if (plus_querypos >= querylength) {
+    /* Handle plus extensions around best elt */
+    debug(printf("BEST PLUS:\n"));
+    debug(Elt_dump(best_plus_elt));
+
+    leftward_set = rightward_set = (List_T) NULL;
+    for (p = plus_set; p != NULL; p = p->rest) {
+      elt = (Elt_T) p->first;
+      if (elt == best_plus_elt) {
+	/* Skip */
+
+      } else if (elt->queryend < best_plus_elt->querystart) {
+	leftward_set = List_push(leftward_set,(void *) elt);
+
+      } else if (elt->querystart > best_plus_elt->queryend) {
+	rightward_set = List_push(rightward_set,(void *) elt);
+
+      } else {
+	/* Duplicate -- skip */
+      }
+    }
+
+    if ((nelts = List_length(rightward_set)) > 0) {
+      array = (Elt_T *) List_to_array(rightward_set,NULL);
+      List_free(&rightward_set);
+      rightward_set = (List_T) NULL;
+    
+      qsort(array,nelts,sizeof(Elt_T),Elt_querypos_ascending_cmp);
+      for (i = nelts-1; i >= 0; --i) {
+	rightward_set = List_push(rightward_set,(void *) array[i]);
+      }
+      FREE(array);
+    }
+
+    if ((nelts = List_length(leftward_set)) > 0) {
+      array = (Elt_T *) List_to_array(leftward_set,NULL);
+      List_free(&leftward_set);
+      leftward_set = (List_T) NULL;
+    
+      qsort(array,nelts,sizeof(Elt_T),Elt_querypos_descending_cmp);
+      for (i = nelts-1; i >= 0; --i) {
+	leftward_set = List_push(leftward_set,(void *) array[i]);
+      }
+      FREE(array);
+    }
+
+
+    chrhigh = 0U;
+    Elt_fill_positions_all(best_plus_elt,plus_sarray);
+    for (i = 0; i < best_plus_elt->npositions; i++) {
+      left = best_plus_elt->positions[i];
+      if (left > chrhigh) {
+	chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	/* *chrhigh += 1U; */
+      }
+      if (extend_rightward(/*goal*/left,chroffset,chrhigh,rightward_set,
+			   query_compress_fwd,plus_sarray,/*plusp*/true,genestrand,first_read_p,
+			   best_plus_elt->queryend) == true) {
+	nmatches = Genome_consecutive_matches_leftward(query_compress_fwd,left,
+						       /*pos5*/0,/*pos3*/best_plus_elt->querystart,
+						       /*plusp*/true,genestrand,first_read_p);
+	debug(printf(" extending bestelt querystart %d leftward by %d matches\n",best_plus_elt->querystart,nmatches));
+	best_plus_elt->querystart -= nmatches;
+	if (extend_leftward(/*goal*/left,chroffset,chrhigh,leftward_set,
+			    /*queryptr*/queryuc_ptr,query_compress_fwd,
+			    plus_sarray,/*plusp*/true,genestrand,first_read_p,plus_conversion,
+			    best_plus_elt->querystart,best_plus_elt->queryend) == true) {
+	  collect_elt_matches(&(*found_score),&(*subs),&(*indels),&(*ambiguous),&(*singlesplicing),&(*doublesplicing),
+			      best_plus_elt->querystart,best_plus_elt->queryend,
+			      chrnum,chroffset,chrhigh,chrlength,
+			      /*goal*/left,rightward_set,leftward_set,
+			      querylength,query_compress_fwd,/*plusp*/true,genestrand,first_read_p,
+			      nmisses_allowed);
+	}
+	best_plus_elt->querystart += nmatches;
+      }
+    }
+
+    List_free(&rightward_set);
+    List_free(&leftward_set);
+  }
+
+  if (minus_querypos >= querylength) {
+    /* Handle minus extensions around best elt */
+    debug(printf("BEST MINUS:\n"));
+    debug(Elt_dump(best_minus_elt));
+
+    leftward_set = rightward_set = (List_T) NULL;
+    for (p = minus_set; p != NULL; p = p->rest) {
+      elt = (Elt_T) p->first;
+      if (elt == best_minus_elt) {
+	/* Skip */
+
+      } else if (elt->queryend < best_minus_elt->querystart) {
+	leftward_set = List_push(leftward_set,(void *) elt);
+
+      } else if (elt->querystart > best_minus_elt->queryend) {
+	rightward_set = List_push(rightward_set,(void *) elt);
+
+      } else {
+	/* Duplicate -- skip */
+      }
+    }
+
+    if ((nelts = List_length(rightward_set)) > 0) {
+      array = (Elt_T *) List_to_array(rightward_set,NULL);
+      List_free(&rightward_set);
+      rightward_set = (List_T) NULL;
+    
+      qsort(array,nelts,sizeof(Elt_T),Elt_querypos_ascending_cmp);
+      for (i = nelts-1; i >= 0; --i) {
+	rightward_set = List_push(rightward_set,(void *) array[i]);
+      }
+      FREE(array);
+    }
+
+    if ((nelts = List_length(leftward_set)) > 0) {
+      array = (Elt_T *) List_to_array(leftward_set,NULL);
+      List_free(&leftward_set);
+      leftward_set = (List_T) NULL;
+    
+      qsort(array,nelts,sizeof(Elt_T),Elt_querypos_descending_cmp);
+      for (i = nelts-1; i >= 0; --i) {
+	leftward_set = List_push(leftward_set,(void *) array[i]);
+      }
+      FREE(array);
+    }
+
+    chrhigh = 0U;
+    Elt_fill_positions_all(best_minus_elt,minus_sarray);
+    for (i = 0; i < best_minus_elt->npositions; i++) {
+      left = best_minus_elt->positions[i];
+      if (left > chrhigh) {
+	chrnum = Univ_IIT_get_one(chromosome_iit,left,left);
+	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+	/* *chrhigh += 1U; */
+      }
+      if (extend_rightward(/*goal*/left,chroffset,chrhigh,rightward_set,
+			   query_compress_rev,minus_sarray,/*plusp*/false,genestrand,first_read_p,
+			   best_minus_elt->queryend) == true) {
+	nmatches = Genome_consecutive_matches_leftward(query_compress_rev,left,
+						       /*pos5*/0,/*pos3*/best_minus_elt->querystart,
+						       /*plusp*/false,genestrand,first_read_p);
+	debug(printf(" extending bestelt querystart %d leftward by %d matches\n",best_minus_elt->querystart,nmatches));
+	best_minus_elt->querystart -= nmatches;
+	if (extend_leftward(/*goal*/left,chroffset,chrhigh,leftward_set,
+			    /*queryptr*/queryrc,query_compress_rev,
+			    minus_sarray,/*plusp*/false,genestrand,first_read_p,minus_conversion,
+			    best_minus_elt->querystart,best_minus_elt->queryend) == true) {
+	  collect_elt_matches(&(*found_score),&(*subs),&(*indels),&(*ambiguous),&(*singlesplicing),&(*doublesplicing),
+			      best_minus_elt->querystart,best_minus_elt->queryend,
+			      chrnum,chroffset,chrhigh,chrlength,
+			      /*goal*/left,rightward_set,leftward_set,
+			      querylength,query_compress_rev,/*plusp*/false,genestrand,first_read_p,
+			      nmisses_allowed);
+	}
+	best_minus_elt->querystart += nmatches;
+      }
+    }
+
+    List_free(&rightward_set);
+    List_free(&leftward_set);
+  }
+
+  for (p = plus_set; p != NULL; p = p->rest) {
+    elt = (Elt_T) p->first;
+    Elt_free(&elt);
+  }
+  List_free(&plus_set);
+
+  for (p = minus_set; p != NULL; p = p->rest) {
+    elt = (Elt_T) p->first;
+    Elt_free(&elt);
+  }
+  List_free(&minus_set);
+
+  debug(printf("Found %d subs, %d indels, %d singlesplices, %d doublesplices\n",
+	       List_length(*subs),List_length(*indels),List_length(*singlesplicing),List_length(*doublesplicing)));
+
+  return;
+}
+
diff --git a/src/sarray-read.h b/src/sarray-read.h
new file mode 100644
index 0000000..e4b7a3c
--- /dev/null
+++ b/src/sarray-read.h
@@ -0,0 +1,45 @@
+/* $Id: sarray-read.h 136085 2014-05-13 23:00:04Z twu $ */
+#ifndef SARRAY_READ_INCLUDED
+#define SARRAY_READ_INCLUDED
+#include "access.h"
+#include "bool.h"
+#include "mode.h"
+#include "genome.h"
+#include "compress.h"
+#include "genomicpos.h"
+#include "splicetrie.h"
+#include "iit-read-univ.h"
+
+
+#define T Sarray_T
+typedef struct T *T;
+
+/* For benchmarking */
+Univcoord_T
+Sarray_size (Sarray_T this);
+
+extern void
+Sarray_setup (T sarray_fwd_in, T sarray_rev_in, Genome_T genome_in, Mode_T mode,
+	      Univ_IIT_T chromosome_iit_in, int circular_typeint_in,
+	      Chrpos_T shortsplicedist_in, int splicing_penalty_in,
+	      int max_deletionlength, int max_end_deletions,
+	      int max_middle_insertions, int max_end_insertions,
+	      Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
+	      Chrpos_T *splicedists_in, int nsplicesites_in);
+
+extern T
+Sarray_new (char *directory, char *fileroot, char *snps_root, Access_mode_T sarray_access, Access_mode_T aux_access,
+	    Mode_T mode, bool fwdp);
+extern void
+Sarray_free (T *old);
+
+extern void
+Sarray_search_greedy (int *found_score, List_T *subs, List_T *indels, List_T *ambiguous, List_T *singlesplicing,
+		      List_T *doublesplicing, char *queryuc_ptr, char *queryrc, int querylength,
+		      Compress_T query_compress_fwd, Compress_T query_compress_rev, int nmisses_allowed,
+		      int genestrand, bool first_read_p);
+
+#undef T
+#endif
+
+
diff --git a/src/sarray-write.c b/src/sarray-write.c
new file mode 100644
index 0000000..6b0f9ef
--- /dev/null
+++ b/src/sarray-write.c
@@ -0,0 +1,1588 @@
+static char rcsid[] = "$Id: sarray-write.c 133760 2014-04-20 05:16:56Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "sarray-write.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/mman.h>		/* For munmap */
+#include "bool.h"
+#include "access.h"
+#include "mem.h"
+#include "genomicpos.h"
+#include "assert.h"
+#include "compress.h"
+#include "bitpack64-write.h"
+#include "bitpack64-read.h"
+#include "bitpack64-access.h"	/* For Sarray_plcp_compare */
+#include "bytecoding.h"
+#include "fopen.h"
+#include "saca-k.h"
+#include "genome128_hr.h"
+#include "uintlist.h"
+#include "intlist.h"
+#include "popcount.h"
+
+
+#ifdef WORDS_BIGENDIAN
+#include "bigendian.h"
+#else
+#include "littleendian.h"
+#endif
+
+
+/* make_index */
+#ifdef DEBUG1
+#define debug1(x) x
+#else
+#define debug1(x)
+#endif
+
+/* Sarray_compute_child */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+/* Sarray_discriminating_chars */
+#ifdef DEBUG4
+#define debug4(x) x
+#else
+#define debug4(x)
+#endif
+
+/* correctness of using Genome_consecutive_matches_pair */
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
+
+/* correctness of make_index_incremental */
+#ifdef DEBUG15
+#define debug15(x) x
+#else
+#define debug15(x)
+#endif
+
+
+
+/* For computing LCP.  Comment out because mmap is faster than fread */
+/* #define READ_SA_FROM_FILE 1 */
+
+#define MONITOR_INTERVAL 100000000 /* 100 million nt */
+
+/* For standard genome */
+void
+Sarray_write_array (char *sarrayfile, Genome_T genomecomp, UINT4 genomelength) {
+  UINT4 *SA;
+  UINT4 n = genomelength;
+  unsigned char *gbuffer;
+  FILE *fp;
+
+
+  SA = (UINT4 *) MALLOC((n+1)*sizeof(UINT4));
+  gbuffer = (unsigned char *) CALLOC(n+1,sizeof(unsigned char));
+  Genome_fill_buffer_int_string(genomecomp,/*left*/0,/*length*/n,gbuffer,/*conversion*/NULL);
+  gbuffer[n] = 0;		       /* Tried N/X, but SACA_K fails */
+  SACA_K(gbuffer,SA,n+/*virtual sentinel*/1,/*K, alphabet_size*/5,/*m*/n+1,/*level*/0);
+
+  if ((fp = FOPEN_WRITE_BINARY(sarrayfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",sarrayfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(SA,n+1,fp);
+    fclose(fp);
+  }
+
+  FREE(gbuffer);
+  FREE(SA);
+
+  return;
+}
+
+
+void
+Sarray_write_array_from_genome (char *sarrayfile, unsigned char *gbuffer, UINT4 genomelength) {
+  UINT4 *SA;
+  UINT4 n = genomelength;
+  FILE *fp;
+
+
+  SA = (UINT4 *) MALLOC((n+1)*sizeof(UINT4));
+  SACA_K(gbuffer,SA,n+/*virtual sentinel*/1,/*K, alphabet_size*/5,/*m*/n+1,/*level*/0);
+
+  if ((fp = FOPEN_WRITE_BINARY(sarrayfile)) == NULL) {
+    fprintf(stderr,"Can't write to file %s\n",sarrayfile);
+    exit(9);
+  } else {
+    FWRITE_UINTS(SA,n+1,fp);
+    fclose(fp);
+  }
+
+  FREE(SA);
+
+  return;
+}
+
+
+#define MIN_INDEXSIZE 12
+#define MAX_INDEXSIZE 12
+#define INDEX_MONITOR_INTERVAL 100000
+
+static UINT4
+power (int base, int exponent) {
+  UINT4 result = 1U;
+  int i;
+
+  for (i = 0; i < exponent; i++) {
+    result *= base;
+  }
+  return result;
+}
+
+
+static void
+sarray_search_char (Sarrayptr_T *initptr, Sarrayptr_T *finalptr, char desired_char,
+		    Genome_T genomecomp, UINT4 *SA, int n, char *chartable) {
+  Sarrayptr_T low, high, mid;
+  Univcoord_T pos;
+  char c;
+
+
+  low = 1;
+  high = n + 1;
+
+  while (low < high) {
+    /* Compute mid for unsigned ints.  Want floor((low+high)/2). */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 && high % 2 == 1) {
+      mid += 1;
+    }
+    pos = SA[mid];
+    c = Genome_get_char_lex(genomecomp,pos,n,chartable);
+    if (desired_char > c) {
+      low = mid + 1;
+    } else {
+      high = mid;
+    }
+  }
+
+  *initptr = low;
+
+  low--;
+  high = n;
+  while (low < high) {
+    /* Compute mid for unsigned ints.  Want ceil((low+high)/2). */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 || high % 2 == 1) {
+      mid += 1;
+    }
+    pos = SA[mid];
+    c = Genome_get_char_lex(genomecomp,pos,n,chartable);
+    if (desired_char >= c) {
+      low = mid;
+    } else {
+      high = mid - 1;
+    }
+  }
+
+  *finalptr = high;
+  return;
+}
+
+
+#define LOW_TWO_BITS 0x3
+#define RIGHT_A 0
+#define RIGHT_C 1
+#define RIGHT_G 2
+#define RIGHT_T 3
+
+
+static void
+oligo_nt (char *nt, UINT4 oligo, int oligosize) {
+  int i, j;
+  UINT4 lowbits;
+
+  j = oligosize-1;
+  for (i = 0; i < oligosize; i++) {
+    lowbits = oligo & LOW_TWO_BITS;
+    switch (lowbits) {
+    case RIGHT_A: nt[j] = 'A'; break;
+    case RIGHT_C: nt[j] = 'C'; break;
+    case RIGHT_G: nt[j] = 'G'; break;
+    case RIGHT_T: nt[j] = 'T'; break;
+    }
+    oligo >>= 2;
+    j--;
+  }
+
+  return;
+}
+
+
+/* Taken from Johannes Fischer, Advanced Text Indexing Techniques, Algorithm 1 */
+/* Does not use LCP, so time is O(m * log(n)) */
+/* Result should be within [i..j] */
+static void
+sarray_search_simple (Sarrayptr_T *initptr, Sarrayptr_T *finalptr, char *query,
+		      int querylength, Genome_T genomecomp, UINT4 *SA,
+		      UINT4 i, UINT4 j, UINT4 n, char *chartable) {
+  Sarrayptr_T low, high, mid;
+  Univcoord_T pos;
+  int nmatches;
+  char c;
+
+
+  low = i;
+  high = j+1;
+
+  while (low < high) {
+    /* Compute mid for unsigned ints.  Want floor((low+high)/2). */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 && high % 2 == 1) {
+      mid += 1;
+    }
+
+    nmatches = 0;
+    pos = SA[mid];
+
+    while (nmatches < querylength && (c = Genome_get_char_lex(genomecomp,pos,n,chartable)) == query[nmatches]) {
+      nmatches++;
+      pos++;
+    }
+    if (nmatches == querylength || c > query[nmatches]) {
+      high = mid;
+    } else {
+      low = mid + 1;
+    }
+  }
+
+  *initptr = low;
+
+  low--;
+  high = j;
+
+  while (low < high) {
+    /* Compute mid for unsigned ints.  Want ceil((low+high)/2). */
+    mid = low/2 + high/2;
+    if (low % 2 == 1 || high % 2 == 1) {
+      mid += 1;
+    }
+
+    nmatches = 0;
+    pos = SA[mid];
+
+    while (nmatches < querylength && (c = Genome_get_char_lex(genomecomp,pos,n,chartable)) == query[nmatches]) {
+      nmatches++;
+      pos++;
+    }
+    if (nmatches == querylength || c < query[nmatches]) {
+      low = mid;
+    } else {
+      high = mid - 1;
+    }
+  }
+
+  *finalptr = high;
+
+  return;
+}
+
+
+/* Separate representation: Two arrays, one for start (i) and one for
+   end (j).  The end index is inclusive, so suffix array entries are in
+   [indexi[oligo],indexj[oligo]]. */
+
+/* Interleaved representation.  Alternate start (i) and end (j).  The
+   end index is exclusive, so suffix array entries are in
+   [indexi[oligo],indexj[oligo]-1].  Need to store j+1 to maintain
+   monotonicity, since an empty interval has j < i (or j == i - 1). */
+
+
+static UINT4
+make_index_separate (Sarrayptr_T *saindexi, Sarrayptr_T *saindexj,
+		     UINT4 oligospace, int querylength, Genome_T genomecomp, UINT4 *SA, UINT4 n,
+		     char chartable[]) {
+  UINT4 noccupied = 0;
+  char *queryuc_ptr;
+  UINT4 oligo;
+  char *comma;
+
+
+  queryuc_ptr = (char *) CALLOC(querylength+1,sizeof(char));
+
+  for (oligo = 0; oligo < oligospace; oligo++) {
+    oligo_nt(queryuc_ptr,oligo,querylength);
+    sarray_search_simple(&(saindexi[oligo]),&(saindexj[oligo]),queryuc_ptr,querylength,
+			 genomecomp,SA,/*i*/1,/*j*/n,n,chartable);
+    if (saindexi[oligo] <= saindexj[oligo]) {
+      debug1(printf("%u\t%s\t%u\t%u\n",oligo,queryuc_ptr,saindexi[oligo],saindexj[oligo]));
+      noccupied++;
+    }
+
+#if 0
+    if (oligo % INDEX_MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(oligo);
+      fprintf(stderr,"Computing index %s\n",comma);
+      FREE(comma);
+    }
+#endif
+  }
+  FREE(queryuc_ptr);
+
+  return noccupied;
+}
+
+
+static UINT4
+make_index_interleaved (Sarrayptr_T *saindex,
+			UINT4 oligospace, int querylength, Genome_T genomecomp, UINT4 *SA, UINT4 n,
+			char chartable[]) {
+  UINT4 noccupied = 0;
+  char *queryuc_ptr;
+  UINT4 oligo;
+  char *comma;
+  Sarrayptr_T indexi, indexj;
+
+  queryuc_ptr = (char *) CALLOC(querylength+1,sizeof(char));
+
+  for (oligo = 0; oligo < oligospace; oligo++) {
+    oligo_nt(queryuc_ptr,oligo,querylength);
+    sarray_search_simple(&indexi,&indexj,queryuc_ptr,querylength,
+			 genomecomp,SA,/*i*/1,/*j*/n,n,chartable);
+#if 0
+    if (indexj < indexi) {
+      fprintf(stderr,"Warning: j %u < i %u\n",indexj,indexi);
+    }
+#endif
+
+    /* Need to add 1 to indexj, because an empty lcp-interval has j == i - 1 */
+    saindex[2*oligo] = indexi;
+    saindex[2*oligo+1] = indexj+1;
+    assert(indexi <= indexj+1);
+
+    if (indexi <= indexj) {
+      debug1(printf("%u\t%s\t%u\t%u\n",oligo,queryuc_ptr,indexi,indexj));
+      noccupied++;
+    }
+
+#if 0
+    if (oligo % INDEX_MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(oligo);
+      fprintf(stderr,"Computing index %s\n",comma);
+      FREE(comma);
+    }
+#endif
+  }
+  FREE(queryuc_ptr);
+
+  return noccupied;
+}
+
+
+
+#if 0
+/* oligo is based on old indexsize. indexsize is new indexsize. */
+static int
+sarray_search_incremental (Sarrayptr_T *initptrs, Sarrayptr_T *finalptrs,
+			   Oligospace_T oligo, char *query, Genome_T genomecomp, UINT4 *SA,
+			   Sarrayptr_T *saindexi, Sarrayptr_T *saindexj,
+			   int indexsize, Oligospace_T prev_oligospace, UINT4 n) {
+  int noccupied = 0, k;
+  Sarrayptr_T i, j;
+  Oligospace_T prev_oligo;
+
+  prev_oligo = oligo/4;
+  if (saindexj[prev_oligo] < saindexi[prev_oligo]) {
+    /* Oligo from 0..(indexsize)-1 does not match, so lengthening also will not match */
+    initptrs[0] = initptrs[1] = initptrs[2] = initptrs[3] = saindexi[prev_oligo];
+    finalptrs[0] = finalptrs[1] = finalptrs[2] = finalptrs[3] = saindexj[prev_oligo];
+
+  } else {
+    if (oligo == 0) {
+      i = 1;
+      j = saindexj[prev_oligo + 1];
+    } else if (prev_oligo + 1 == prev_oligospace) {
+      i = saindexi[prev_oligo - 1];
+      j = n;
+    } else {
+      i = saindexi[prev_oligo - 1];
+      j = saindexj[prev_oligo + 1];
+    }
+
+    for (k = 0; k < 4; k++) {
+      oligo_nt(query,oligo+k,indexsize);
+      sarray_search_simple(&(initptrs[k]),&(finalptrs[k]),query,/*querylength*/indexsize,
+			   genomecomp,SA,i,j,n,chartable);
+      if (initptrs[k] <= finalptrs[k]) {
+	noccupied++;
+      }
+    }
+  }
+
+  return noccupied;
+}
+#endif
+
+
+#if 0
+static UINT4
+make_index_incremental (Sarrayptr_T *initptrs, Sarrayptr_T *finalptrs,
+			Genome_T genomecomp, UINT4 *SA, Sarrayptr_T *saindexi, Sarrayptr_T *saindexj, 
+			int indexsize, Oligospace_T oligospace, Oligospace_T prev_oligospace, UINT4 n) {
+  int noccupied = 0;
+  char *query;
+  Oligospace_T oligo;
+  char *comma;
+
+  query = (char *) CALLOC(indexsize+1,sizeof(char));
+
+  for (oligo = 0; oligo < oligospace; oligo += 4) {
+    noccupied += sarray_search_incremental(&(initptrs[oligo]),&(finalptrs[oligo]),oligo,query,
+					   genomecomp,SA,saindexi,saindexj,indexsize,prev_oligospace,n,
+					   chartable);
+#if 0
+    if (oligo % INDEX_MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(oligo);
+      fprintf(stderr,"Computing index %s\n",comma);
+      FREE(comma);
+    }
+#endif
+  }
+
+  FREE(query);
+
+  return noccupied;
+}
+#endif
+
+
+void
+Sarray_write_index_separate (char *indexiptrsfile, char *indexicompfile, char *indexjptrsfile,char *indexjcompfile,
+			     char *sarrayfile, Genome_T genomecomp, UINT4 genomelength, bool compressp,
+			     char chartable[]) {
+  UINT4 n = genomelength;
+  Oligospace_T oligospace, prev_oligospace, noccupied, prev_noccupied;
+  Sarrayptr_T *saindexi_new, *saindexj_new, *saindexi_old, *saindexj_old;
+  UINT4 *SA;
+  int sa_fd;
+  size_t sa_len;
+  int indexsize;
+  FILE *fp;
+
+
+  SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/true);
+
+  indexsize = MIN_INDEXSIZE;
+  oligospace = power(4,/*querylength*/indexsize);
+  saindexi_old = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+  saindexj_old = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+  prev_noccupied = 0;
+  noccupied = make_index_separate(saindexi_old,saindexj_old,
+				  oligospace,/*querylength*/indexsize,genomecomp,SA,n,chartable);
+  fprintf(stderr,"For indexsize %d, occupied %u/%u\n",indexsize,noccupied,oligospace);
+
+#if 0
+  indexsize++;
+  while (indexsize <= MAX_INDEXSIZE && noccupied > prev_noccupied) {
+    prev_noccupied = noccupied;
+    prev_oligospace = oligospace;
+    oligospace = power(4,/*querylength*/indexsize);
+    saindexi_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+    saindexj_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+    noccupied = make_index_incremental(saindexi_new,saindexj_new,genomecomp,SA,
+				       saindexi_old,saindexj_old,indexsize,
+				       oligospace,prev_oligospace,n);
+    fprintf(stderr,"For indexsize %d, occupied %u/%u\n",indexsize,noccupied,oligospace);
+    if (noccupied > prev_noccupied) {
+      FREE(saindexj_old);
+      FREE(saindexi_old);
+      saindexi_old = saindexi_new;
+      saindexj_old = saindexj_new;
+      indexsize++;
+    } else {
+      FREE(saindexj_new);
+      FREE(saindexi_new);
+    }
+  }
+  indexsize--;
+#endif
+
+  oligospace = power(4,/*querylength*/indexsize);
+  fprintf(stderr,"Optimal indexsize = %d\n",indexsize);
+
+#ifdef DEBUG15
+  /* For comparison */
+  fprintf(stderr,"Checking...");
+  query = (char *) CALLOC(indexsize+1,sizeof(char));
+  saindexi_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+  saindexj_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+  noccupied = make_index(saindexi_new,saindexj_new,oligospace,
+			 /*querylength*/indexsize,genomecomp,SA,n,chartable);
+  
+  for (oligo = 0; oligo < oligospace; oligo++) {
+    if (saindexi_old[oligo] != saindexi_new[oligo]) {
+      oligo_nt(query,oligo,indexsize);
+      printf("%u\t%s\t%u\t%u\t%u\t%u\n",oligo,query,saindexi_old[oligo],saindexj_old[oligo],saindexi_new[oligo],saindexj_new[oligo]);
+      abort();
+    } else if (saindexj_old[oligo] != saindexj_new[oligo]) {
+      oligo_nt(query,oligo,indexsize);
+      printf("%u\t%s\t%u\t%u\t%u\t%u\n",oligo,query,saindexi_old[oligo],saindexj_old[oligo],saindexi_new[oligo],saindexj_new[oligo]);
+      abort();
+    }
+  }
+  FREE(query);
+  FREE(saindexj_new);
+  FREE(saindexi_new);
+  fprintf(stderr,"done\n");
+#endif
+
+  if (compressp == false) {
+    fp = fopen(indexicompfile,"w");
+    FWRITE_UINTS(saindexi_old,oligospace,fp);
+    fclose(fp);
+
+    fp = fopen(indexjcompfile,"w");
+    FWRITE_UINTS(saindexj_old,oligospace,fp);
+    fclose(fp);
+    
+  } else {
+    Bitpack64_write_differential(indexiptrsfile,indexicompfile,saindexi_old,oligospace-1);
+    Bitpack64_write_differential(indexjptrsfile,indexjcompfile,saindexj_old,oligospace-1);
+  }
+
+  FREE(saindexj_old);
+  FREE(saindexi_old);
+
+  munmap((void *) SA,sa_len);
+  close(sa_fd);
+
+  return;
+}
+
+
+void
+Sarray_write_index_interleaved (char *indexptrsfile, char *indexcompfile,
+				char *sarrayfile, Genome_T genomecomp, UINT4 genomelength, bool compressp,
+				char chartable[]) {
+  UINT4 n = genomelength;
+  Oligospace_T oligospace, prev_oligospace, noccupied, prev_noccupied;
+  Sarrayptr_T *saindex_new, *saindex_old;
+  UINT4 *SA;
+  int sa_fd;
+  size_t sa_len;
+  int indexsize;
+  FILE *fp;
+
+
+  SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/true);
+
+  indexsize = MIN_INDEXSIZE;
+  oligospace = power(4,/*querylength*/indexsize);
+  saindex_old = (Sarrayptr_T *) CALLOC(2*oligospace,sizeof(Sarrayptr_T));
+  prev_noccupied = 0;
+  noccupied = make_index_interleaved(saindex_old,
+				     oligospace,/*querylength*/indexsize,genomecomp,SA,n,chartable);
+  fprintf(stderr,"For indexsize %d, occupied %u/%u\n",indexsize,noccupied,oligospace);
+
+#if 0
+  indexsize++;
+  while (indexsize <= MAX_INDEXSIZE && noccupied > prev_noccupied) {
+    prev_noccupied = noccupied;
+    prev_oligospace = oligospace;
+    oligospace = power(4,/*querylength*/indexsize);
+    saindexi_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+    saindexj_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+    noccupied = make_index_incremental(saindexi_new,saindexj_new,genomecomp,SA,
+				       saindexi_old,saindexj_old,indexsize,
+				       oligospace,prev_oligospace,n);
+    fprintf(stderr,"For indexsize %d, occupied %u/%u\n",indexsize,noccupied,oligospace);
+    if (noccupied > prev_noccupied) {
+      FREE(saindexj_old);
+      FREE(saindexi_old);
+      saindexi_old = saindexi_new;
+      saindexj_old = saindexj_new;
+      indexsize++;
+    } else {
+      FREE(saindexj_new);
+      FREE(saindexi_new);
+    }
+  }
+  indexsize--;
+#endif
+
+  oligospace = power(4,/*querylength*/indexsize);
+  fprintf(stderr,"Optimal indexsize = %d\n",indexsize);
+
+#ifdef DEBUG15
+  /* For comparison */
+  fprintf(stderr,"Checking...");
+  query = (char *) CALLOC(indexsize+1,sizeof(char));
+  saindexi_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+  saindexj_new = (Sarrayptr_T *) CALLOC(oligospace,sizeof(Sarrayptr_T));
+  noccupied = make_index(saindexi_new,saindexj_new,oligospace,
+			 /*querylength*/indexsize,genomecomp,SA,n);
+  
+  for (oligo = 0; oligo < oligospace; oligo++) {
+    if (saindexi_old[oligo] != saindexi_new[oligo]) {
+      oligo_nt(query,oligo,indexsize);
+      printf("%u\t%s\t%u\t%u\t%u\t%u\n",oligo,query,saindexi_old[oligo],saindexj_old[oligo],saindexi_new[oligo],saindexj_new[oligo]);
+      abort();
+    } else if (saindexj_old[oligo] != saindexj_new[oligo]) {
+      oligo_nt(query,oligo,indexsize);
+      printf("%u\t%s\t%u\t%u\t%u\t%u\n",oligo,query,saindexi_old[oligo],saindexj_old[oligo],saindexi_new[oligo],saindexj_new[oligo]);
+      abort();
+    }
+  }
+  FREE(query);
+  FREE(saindexj_new);
+  FREE(saindexi_new);
+  fprintf(stderr,"done\n");
+#endif
+
+  if (compressp == false) {
+    fp = fopen(indexcompfile,"w");
+    FWRITE_UINTS(saindex_old,2*oligospace,fp);
+    fclose(fp);
+  } else {
+    Bitpack64_write_differential(indexptrsfile,indexcompfile,saindex_old,2*oligospace-1);
+  }
+
+  FREE(saindex_old);
+
+  munmap((void *) SA,sa_len);
+  close(sa_fd);
+
+  return;
+}
+
+
+UINT4 *
+Sarray_compute_lcp (UINT4 *SA, UINT4 n) {
+  UINT4 *lcp;
+  UINT4 *rank, h;
+  UINT4 i, j;
+  char *comma;
+#ifdef DEBUG14
+  UINT4 horig;
+#endif
+
+  lcp = (UINT4 *) MALLOC((n+1)*sizeof(UINT4));
+
+  rank = (UINT4 *) CALLOC(n+1,sizeof(UINT4));
+  for (i = 0; i <= n; i++) {
+    rank[SA[i]] = i;
+  }
+
+  lcp[0] = 0;			/* -1 ? */
+  h = 0;
+  for (i = 0; i <= n; i++) {
+    if (rank[i] > 0) {
+      j = SA[rank[i] - 1];
+#ifdef DEBUG14
+      horig = h;
+      while (i + h < n && j + h < n && s[i+h] == s[j+h]) {
+	h++;
+      }
+      if ((h - horig) != Genome_consecutive_matches_pair(i+horig,j+horig,/*genomelength*/n)) {
+	abort();
+      }
+#else
+      h += Genome_consecutive_matches_pair(i+h,j+h,/*genomelength*/n);
+#endif
+      lcp[rank[i]] = h;
+      if (h > 0) {
+	h--;
+      }
+    }
+    if (i % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(i);
+      fprintf(stderr,"Computing lcp index %s\n",comma);
+      FREE(comma);
+    }
+  }
+
+  FREE(rank);
+
+  return lcp;
+}
+
+
+UINT4 *
+Sarray_compute_lcp_from_genome (UINT4 *SA, unsigned char *gbuffer, UINT4 n) {
+  UINT4 *lcp;
+  UINT4 *rank, h;
+  UINT4 i, j;
+  char *comma;
+  UINT4 horig;
+
+  lcp = (UINT4 *) MALLOC((n+1)*sizeof(UINT4));
+
+  rank = (UINT4 *) CALLOC(n+1,sizeof(UINT4));
+  for (i = 0; i <= n; i++) {
+    rank[SA[i]] = i;
+  }
+
+  lcp[0] = 0;			/* -1 ? */
+  h = 0;
+  for (i = 0; i <= n; i++) {
+    if (rank[i] > 0) {
+      j = SA[rank[i] - 1];
+      horig = h;
+      while (i + h < n && j + h < n && gbuffer[i+h] == gbuffer[j+h]) {
+	h++;
+      }
+      lcp[rank[i]] = h;
+      if (h > 0) {
+	h--;
+      }
+    }
+    if (i % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(i);
+      fprintf(stderr,"Computing lcp index %s\n",comma);
+      FREE(comma);
+    }
+  }
+
+  FREE(rank);
+
+  return lcp;
+}
+
+
+/* Computes permuted lcp (Karkkainen, CPM 2009) */
+/* Two methods for storing plcp as a cumulative sum: (1) Cum value at k is
+   sum_{i=1}^k (plcp[i] + 1 - plcp[i-1]), or more simply (2) plcp[k] + k */
+static void
+compute_plcp (UINT4 *plcp, UINT4 *SA, UINT4 n) {
+  UINT4 *phi, h;
+  UINT4 i, j;
+  char *comma;
+
+  phi = plcp;			/* Use space allocated for plcp */
+
+  fprintf(stderr,"Inverting suffix array (via mmap)...");
+  for (i = 1; i <= n; i++) {
+    phi[SA[i]] = SA[i-1];
+  }
+  fprintf(stderr,"done\n");
+  /* Note that phi[n] is not assigned, because SA[i] == n for i == 0, and we don't look up i == 0 */
+
+
+  h = 0;
+  for (i = 0; i < n; i++) {
+    j = phi[i];			/* To be overwritten by plcp[i] */
+    h += Genome_consecutive_matches_pair(i+h,j+h,/*genomelength*/n);
+    plcp[i] = h;				 /* overwrites phi[i] */
+    if (h > 0) {
+      h--;
+    }
+
+    if (i % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(i);
+      fprintf(stderr,"Computing permuted lcp index %s\n",comma);
+      FREE(comma);
+    }
+  }
+
+  /* This makes lcp[0] = -1, because lcp[0] = plcp[SA[0]] = plcp[n] = -1 */
+  plcp[n] = -1;
+
+  return;
+}
+
+
+
+#if 0
+static int
+get_all_children (bool *filledp, Sarrayptr_T *l, Sarrayptr_T *r, Sarrayptr_T i, Sarrayptr_T j,
+		  UINT4 *child, UINT8 *nextp, Genome_T genomecomp, UINT4 *SA, UINT4 *plcpptrs, UINT4 *plcpcomp,
+		  int indexsize, UINT4 n) {
+  int noccupied = 0;
+  UINT4 up, nextl;
+  Sarrayptr_T sa_nextl;
+  UINT4 lcp_whole;
+  UINT4 pos;
+  char c;
+
+  /* Test for child[j] being up: lcp[j] > lcp[j+1] */
+  up = child[j];		/* childtab[j+1].up */
+  if (i < up && up <= j) {
+    nextl = up;
+  } else {
+    nextl = child[i];	/* down */
+  }
+  sa_nextl = SA[nextl];
+  lcp_whole = Bitpack64_read_one(sa_nextl,plcpptrs,plcpcomp) - sa_nextl;
+
+  if (lcp_whole != (UINT4) (indexsize - 1)) {
+    /* Not at desired level, so exit this procedure */
+    return 0;
+  } else {
+    debug1(printf("Filling children for lcp-interval %u..%u with lcp_whole %d\n",i,j,lcp_whole));
+  }
+
+  pos = SA[i] + lcp_whole;
+  c = Genome_get_char_lex(genomecomp,pos,n);
+
+  debug1(printf("For char %c, creating interval %u..%u\n",c,i,nextl-1));
+  switch (c) {
+  case 'A': l[0] = i; r[0] = nextl - 1; filledp[0] = true; noccupied++; break;
+  case 'C': l[1] = i; r[1] = nextl - 1; filledp[1] = true; noccupied++; break;
+  case 'G': l[2] = i; r[2] = nextl - 1; filledp[2] = true; noccupied++; break;
+  case 'T': l[3] = i; r[3] = nextl - 1; filledp[3] = true; noccupied++; break;
+  }
+
+  
+  /* Test for child[i] being down: lcp[child[i]] > lcp[i] */
+  /* Test for child[i] being next_lindex: lcp[child[i]] == lcp[i] */
+  while (get_bit(nextp,nextl) != 0) {
+    pos = SA[nextl] + lcp_whole;
+    c = Genome_get_char_lex(genomecomp,pos,n,chartable);
+
+    debug1(printf("For char %c, creating interval %u..%u\n",c,nextl,child[nextl]-1));
+    switch (c) {
+    case 'A': l[0] = nextl; r[0] = child[nextl] - 1; filledp[0] = true; noccupied++; break;
+    case 'C': l[1] = nextl; r[1] = child[nextl] - 1; filledp[1] = true; noccupied++; break;
+    case 'G': l[2] = nextl; r[2] = child[nextl] - 1; filledp[2] = true; noccupied++; break;
+    case 'T': l[3] = nextl; r[3] = child[nextl] - 1; filledp[3] = true; noccupied++; break;
+    }
+    
+    nextl = child[nextl];
+  }
+
+  pos = SA[nextl] + lcp_whole;
+  c = Genome_get_char_lex(genomecomp,pos,n,chartable);
+
+  debug1(printf("For char %c, creating interval %u..%u\n",c,nextl,j));
+  switch (c) {
+  case 'A': l[0] = nextl; r[0] = j; filledp[0] = true; noccupied++; break;
+  case 'C': l[1] = nextl; r[1] = j; filledp[1] = true; noccupied++; break;
+  case 'G': l[2] = nextl; r[2] = j; filledp[2] = true; noccupied++; break;
+  case 'T': l[3] = nextl; r[3] = j; filledp[3] = true; noccupied++; break;
+  }
+
+  return noccupied;
+}
+#endif
+
+
+
+/* Uses permuted lcp for speed and reduced memory usage */
+void
+Sarray_write_plcp (char *plcpptrsfile, char *plcpcompfile, UINT4 *SA, UINT4 genomelength) {
+  UINT4 *plcp;
+  UINT4 *ramp;
+
+  UINT4 n = genomelength, i;
+
+  plcp = (UINT4 *) MALLOC((n+1)*sizeof(UINT4));
+  ramp = plcp;
+
+  compute_plcp(plcp,SA,n);
+
+#ifdef USE_CUMDEV
+  /* Compute deviations from downward ramp */
+  for (i = n; i >= 1; i--) {
+    dev[i] = (plcp[i] + 1) - plcp[i-1];
+  }
+  /* dev[0] = plcp[0]; */
+#else
+  for (i = 0; i <= n; i++) {
+    ramp[i] = plcp[i] + i;
+  }
+#endif
+
+  fprintf(stderr,"Writing permuted lcp file...");
+  /* Provide n to write values [0..n] */
+  Bitpack64_write_differential(plcpptrsfile,plcpcompfile,ramp,n);
+  fprintf(stderr,"done\n");
+
+  FREE(plcp);
+
+  return;
+}
+
+
+
+/* Without encoding, would be child[index] = value */
+#define encode_up(child,index,value) child[index-1] = (index - 1) - (value)
+#define encode_down(child,index,value) child[index] = (value) - 1 - (index)
+#define encode_next(child,index,value) child[index] = (value) - 1 - (index)
+
+/* For child[index+1].up, just calling child[index] */
+#define decode_up(child_i,index) index - child_i
+#define decode_down(child_i,index) child_i + index + 1
+#define decode_next(child_i,index) child_i + index + 1
+
+
+#if 0
+static UINT4 *
+make_child_twopass (UINT8 **nextp, UINT4 *nbytes, UINT4 *SA, UINT4 *plcpptrs, UINT4 *plcpcomp, UINT4 n) {
+  UINT4 *child;
+  UINT4 lastindex, i;
+  Uintlist_T lcpstack, indexstack;
+  UINT4 sa_i, lcp_i, lcp_lastindex;
+  char *comma;
+
+  *nbytes = ((n+1) + WORDSIZE-1)/WORDSIZE;
+  *nextp = (UINT8 *) CALLOC(*nbytes,sizeof(UINT8));
+
+#if 0
+  child = (UINT4 *) MALLOC((n+1) * sizeof(UINT4));
+  for (i = 0; i <= n; i++) {
+    child[i] = -1U;
+  }
+#else
+  child = (UINT4 *) CALLOC(n+1,sizeof(UINT4));
+#endif
+
+  
+  /* Because we sort suffixes with $ < rest of alphabet, we never use
+     the entry at 0, where SA[0] = n and lcp[0] = 0 */
+
+   /* Algorithm 6.2: Compute up and down values */
+   lastindex = 0;
+
+   fprintf(stderr,"Computing child up/down index 0\n");
+   i = 1;
+   indexstack = Uintlist_push(NULL,i);
+
+   sa_i = SA[i];
+   lcp_i = Bitpack64_read_one(sa_i,plcpptrs,plcpcomp) - sa_i;
+   lcpstack = Uintlist_push(NULL,lcp_i);
+
+   for (i = 2; i <= n; i++) {
+     sa_i = SA[i];
+     lcp_i = Bitpack64_read_one(sa_i,plcpptrs,plcpcomp) - sa_i;
+     while (lcp_i < Uintlist_head(lcpstack)) {
+       lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+       indexstack = Uintlist_pop(indexstack,&lastindex);
+       if (lcp_i <= Uintlist_head(lcpstack) && Uintlist_head(lcpstack) != lcp_lastindex) {
+ #ifdef NO_ENCODING
+	 child[Uintlist_head(indexstack)] = lastindex; /* down */
+ #else
+	 encode_down(child,Uintlist_head(indexstack),lastindex);
+ #endif
+       }
+     }
+     /* Now lcp[i] >= lcp[stack->first] holds */
+     if (lastindex != 0) {
+ #ifdef NO_ENCODING
+       child[i-1] = lastindex;	/* up */
+ #else
+       encode_up(child,i,lastindex);
+ #endif
+       lastindex = 0;
+     }
+     indexstack = Uintlist_push(indexstack,i);
+     lcpstack = Uintlist_push(lcpstack,lcp_i);
+
+     if (i % MONITOR_INTERVAL == 0) {
+       comma = Genomicpos_commafmt(i);
+       fprintf(stderr,"Computing child up/down index %s\n",comma);
+       FREE(comma);
+     }
+   }
+
+   /* Handle end of suffix array */
+   lcp_i = 0;
+   while (lcp_i < Uintlist_head(lcpstack)) {
+     lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+     indexstack = Uintlist_pop(indexstack,&lastindex);
+     if (lcp_i <= Uintlist_head(lcpstack) && Uintlist_head(lcpstack) != lcp_lastindex) {
+ #ifdef NO_ENCODING
+       child[Uintlist_head(indexstack)] = lastindex; /* down */
+ #else
+       encode_down(child,Uintlist_head(indexstack),lastindex);
+ #endif
+     }
+   }
+   if (lastindex != 0) {
+ #ifdef NO_ENCODING
+     child[i-1] = lastindex;	/* up */
+ #else
+     encode_up(child,i,lastindex);
+ #endif
+     /* lastindex = 0; */
+   }
+
+   Uintlist_free(&lcpstack);
+   Uintlist_free(&indexstack);
+
+
+   /* Algorithm 6.5: Compute next l-index values */
+   fprintf(stderr,"Computing child next index 0\n");
+   i = 1;
+   indexstack = Uintlist_push(NULL,i);
+
+   sa_i = SA[i];
+   lcp_i = Bitpack64_read_one(sa_i,plcpptrs,plcpcomp) - sa_i;
+   lcpstack = Uintlist_push(NULL,lcp_i);
+
+   for (i = 2; i <= n; i++) {
+     sa_i = SA[i];
+     lcp_i = Bitpack64_read_one(sa_i,plcpptrs,plcpcomp) - sa_i;
+     while (lcp_i < Uintlist_head(lcpstack)) {
+       lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+       indexstack = Uintlist_pop(indexstack,&lastindex);
+     }
+     if (lcp_i == Uintlist_head(lcpstack)) {
+       lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+       indexstack = Uintlist_pop(indexstack,&lastindex);
+ #ifdef NO_ENCODING
+       child[lastindex] = i;
+ #else
+       encode_next(child,lastindex,i);
+ #endif
+       set_bit(*nextp,lastindex);
+     }
+     indexstack = Uintlist_push(indexstack,i);
+     lcpstack = Uintlist_push(lcpstack,lcp_i);
+
+     if (i % MONITOR_INTERVAL == 0) {
+       comma = Genomicpos_commafmt(i);
+       fprintf(stderr,"Computing child next index %s\n",comma);
+       FREE(comma);
+     }
+   }
+
+   Uintlist_free(&lcpstack);
+   Uintlist_free(&indexstack);
+
+   return child;
+ }
+ #endif
+
+
+ /* For adjoining chars, need to store 15 possibilities, or one nibble */
+ /* Possibilities: $a, $c, $g, $t, $x, ac, ag, at, ax, cg, ct, cx, gt, gx, tx */
+ unsigned char *
+ Sarray_discriminating_chars (UINT4 *nbytes, UINT4 *SA, Genome_T genome,
+			      unsigned char *lcp_bytes, UINT4 *lcp_guide, UINT4 *lcp_exceptions, int guide_interval,
+			      UINT4 n, char *chartable) {
+   unsigned char *discrim_chars;
+   char char_before, char_at;
+   UINT4 i;
+   UINT4 lcp_i;
+
+   *nbytes = ((n+1) + 1)/2;
+   discrim_chars = (unsigned char *) CALLOC(*nbytes,sizeof(unsigned char));
+
+   for (i = 1; i <= n; i++) {
+     lcp_i = Bytecoding_read_wguide(i,lcp_bytes,lcp_guide,lcp_exceptions,/*lcp_guide_interval*/1024);
+     char_before = Genome_get_char_lex(genome,/*left*/SA[i-1] + lcp_i,/*genomelength*/n,chartable);
+     char_at = Genome_get_char_lex(genome,/*left*/SA[i] + lcp_i,/*genomelength*/n,chartable);
+     debug4(printf("i = %u, SA = %u and %u, and lcp_i = %u => %c %c\n",
+		   i,SA[i-1],SA[i],lcp_i,char_before == 0 ? '$' : char_before,char_at));
+
+     if (i % 2 == 0) {
+       /* Even, put into low nibble of byte */
+       switch (char_before) {
+       case 0:
+	 switch(char_at) {
+	 case 'A': discrim_chars[i/2] |= 0x01; break;
+	 case 'C': discrim_chars[i/2] |= 0x02; break;
+	 case 'G': discrim_chars[i/2] |= 0x03; break;
+	 case 'T': discrim_chars[i/2] |= 0x04; break;
+	 case 'X': discrim_chars[i/2] |= 0x05; break;
+	 default: abort();
+	 }
+	 break;
+
+       case 'A':
+	 switch(char_at) {
+	 case 'C': discrim_chars[i/2] |= 0x06; break;
+	 case 'G': discrim_chars[i/2] |= 0x07; break;
+	 case 'T': discrim_chars[i/2] |= 0x08; break;
+	 case 'X': discrim_chars[i/2] |= 0x09; break;
+	 default: abort();
+	 }
+	 break;
+
+       case 'C':
+	 switch(char_at) {
+	 case 'G': discrim_chars[i/2] |= 0x0A; break;
+	 case 'T': discrim_chars[i/2] |= 0x0B; break;
+	 case 'X': discrim_chars[i/2] |= 0x0C; break;
+	 default: abort();
+	}
+	break;
+
+      case 'G':
+	switch(char_at) {
+	case 'T': discrim_chars[i/2] |= 0x0D; break;
+	case 'X': discrim_chars[i/2] |= 0x0E; break;
+	default: abort();
+	}
+	break;
+
+      case 'T':
+	switch(char_at) {
+	case 'X': discrim_chars[i/2] |= 0x0F; break;
+	default: abort();
+	}
+	break;
+      }
+
+    } else {
+      /* Odd, put into high nibble of byte */
+      switch (char_before) {
+      case 0:
+	switch(char_at) {
+	case 'A': discrim_chars[i/2] |= 0x10; break;
+	case 'C': discrim_chars[i/2] |= 0x20; break;
+	case 'G': discrim_chars[i/2] |= 0x30; break;
+	case 'T': discrim_chars[i/2] |= 0x40; break;
+	case 'X': discrim_chars[i/2] |= 0x50; break;
+	default: abort();
+	}
+	break;
+
+      case 'A':
+	switch(char_at) {
+	case 'C': discrim_chars[i/2] |= 0x60; break;
+	case 'G': discrim_chars[i/2] |= 0x70; break;
+	case 'T': discrim_chars[i/2] |= 0x80; break;
+	case 'X': discrim_chars[i/2] |= 0x90; break;
+	default: abort();
+	}
+	break;
+
+      case 'C':
+	switch(char_at) {
+	case 'G': discrim_chars[i/2] |= 0xA0; break;
+	case 'T': discrim_chars[i/2] |= 0xB0; break;
+	case 'X': discrim_chars[i/2] |= 0xC0; break;
+	default: abort();
+	}
+	break;
+
+      case 'G':
+	switch(char_at) {
+	case 'T': discrim_chars[i/2] |= 0xD0; break;
+	case 'X': discrim_chars[i/2] |= 0xE0; break;
+	default: abort();
+	}
+	break;
+
+      case 'T':
+	switch(char_at) {
+	case 'X': discrim_chars[i/2] |= 0xF0; break;
+	default: abort();
+	}
+	break;
+      }
+
+    }
+  }
+
+  return discrim_chars;
+}
+
+
+
+/* Onepass method */
+UINT4 *
+Sarray_compute_child (unsigned char *lcp_bytes, UINT4 *lcp_guide, UINT4 *lcp_exceptions, UINT4 n) {
+  UINT4 *child;
+  UINT4 lastindex, i;
+  Uintlist_T indexstack;
+  Uintlist_T lcpstack;
+  UINT4 lcp_i, lcp_lastindex;
+  char *comma;
+
+  child = (UINT4 *) CALLOC(n+1,sizeof(UINT4));
+
+  /* Allocate based on two nibbles per byte */
+  /* We consider 0 and (n+1) to be at lcp -1, and 1 at lcp 0 */
+
+  i = 1;
+  lastindex = 1;
+  lcp_i = 0;
+  indexstack = Uintlist_push(NULL,i);
+  lcpstack = Uintlist_push(NULL,lcp_i);
+
+  for (i = 2; i <= n; i++) {
+    lcp_i = Bytecoding_read_wguide(i,lcp_bytes,lcp_guide,lcp_exceptions,/*lcp_guide_interval*/1024);
+    debug2(printf("index %d, lcp %u\n",i,lcp_i));
+
+    while (lcp_i < Uintlist_head(lcpstack)) {
+      indexstack = Uintlist_pop(indexstack,&lastindex);
+      lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+      /* Mark as a right child.  Either down or next, which are
+	 treated the same.  Therefore, the next conditional is not
+	 really necessary. */
+      if (lcp_lastindex == Uintlist_head(lcpstack)) {
+#if 0
+	debug2(printf("Encoding next %u at %u\n",lastindex,Uintlist_head(indexstack)));
+#ifdef NO_ENCODING
+	child[Uintlist_head(indexstack)] = lastindex;
+#else
+	encode_next(child,Uintlist_head(indexstack),lastindex);
+#endif
+#endif
+      } else {
+	debug2(printf("Encoding down %u at %u\n",lastindex,Uintlist_head(indexstack)));
+#ifdef NO_ENCODING
+	child[Uintlist_head(indexstack)] = lastindex;
+#else
+	encode_down(child,Uintlist_head(indexstack),lastindex);
+#endif
+      }
+    }
+
+    if (lastindex != 0) {
+      debug2(printf("Encoding up %u at %u\n",lastindex,i));
+#ifdef NO_ENCODING
+      child[i-1] = lastindex;	/* up */
+#else
+      encode_up(child,i,lastindex);
+#endif
+      lastindex = 0;
+    }
+
+    /* This check is still necessary, even if we handle "next" within the previous loop */
+    if (lcp_i == Uintlist_head(lcpstack)) {
+      /* This is a right sibling, so mark previous index as having a right sibling */
+      debug2(printf("Encoding next %u at %u\n",i,Uintlist_head(indexstack)));
+#ifdef NO_ENCODING
+      child[Uintlist_head(indexstack)] = i;
+#else
+      encode_next(child,Uintlist_head(indexstack),i);
+#endif
+    }
+
+    indexstack = Uintlist_push(indexstack,i);
+    lcpstack = Uintlist_push(lcpstack,lcp_i);
+
+    if (i % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(i);
+      fprintf(stderr,"Computing child index %s\n",comma);
+      FREE(comma);
+    }
+    debug2(printf("\n"));
+  }
+
+  /* No need to clean out stack, because all of the next links have been written. */
+  debug2(printf("stack still has %d entries\n",Uintlist_length(lcpstack)));
+#if 0
+  lcp_i = -1;
+  while (lcp_i < Uintlist_head(lcpstack)) {
+    indexstack = Uintlist_pop(indexstack,&lastindex);
+    lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+    /* Mark as a right child.  Either down or next, which are
+       treated the same.  Therefore, the next conditional is not
+       really necessary. */
+    if (lcp_lastindex == Uintlist_head(lcpstack)) {
+#if 0
+      debug2(printf("Final: Encoding next %u at %u\n",lastindex,Uintlist_head(indexstack)));
+#ifdef NO_ENCODING
+      child[Uintlist_head(indexstack)] = lastindex; /* next */
+#else
+      encode_next(child,Uintlist_head(indexstack),lastindex);
+#endif
+#endif
+    } else {
+      debug2(printf("Final: Encoding down %u at %u\n",lastindex,Uintlist_head(indexstack)));
+#ifdef NO_ENCODING
+      child[Uintlist_head(indexstack)] = lastindex; /* down */
+#else
+      encode_down(child,Uintlist_head(indexstack),lastindex);
+#endif
+    }
+  }
+#endif
+
+
+  /* Two choices for final value for up at n+1 (stored at n).  If we
+     want it to fail the test (1 < up && up <= n), we could use 0, 1,
+     or n+1.  The value n+1 causes -1 to be encoded.  If we want it to
+     succeed, then the correct value should be already stored as
+     child[1] as a next value. */
+
+#ifdef NO_ENCODING
+  debug2(printf("Final: Encoding up %u at %u\n",child[1],n+1));
+  child[n] = child[1];
+#else
+  debug2(printf("Final: Encoding up %u at %u\n",child[1]+1+1,n+1));
+  encode_up(child,n+1,child[1] + /*index*/1 + 1);
+#endif
+
+
+#if 0
+  if (lastindex != 0) {
+    debug2(printf("Final: Encoding up %u at %u\n",lastindex,i));
+#ifdef NO_ENCODING
+    child[/*i-1*/n] = 1;	/* up: start with node 1 */
+#else
+    encode_up(child,/*i*/n+1,1);
+#endif
+    lastindex = 0;
+  }
+
+  /* Top-level siblings, at lcp_i == 0.  This conditional should always be true. */
+  /* This check is still necessary, even if we handle "next" within the previous loop */
+  i = n+1;
+  if (lcp_i == Uintlist_head(lcpstack)) {
+    /* This is a right sibling, so mark previous index as having a right sibling */
+    debug2(printf("Final: Encoding next %u at %u\n",i,Uintlist_head(indexstack)));
+#ifdef NO_ENCODING
+    child[Uintlist_head(indexstack)] = i;
+#else
+    encode_next(child,Uintlist_head(indexstack),i);
+#endif
+  }
+#endif
+
+      
+  Uintlist_free(&lcpstack);
+  Uintlist_free(&indexstack);
+
+#ifdef DEBUG2
+  for (i = 0; i <= n; i++) {
+    printf("%d %u\n",i,child[i]);
+  }
+#endif
+
+  return child;
+}
+
+
+#if 0
+/* Modeled after Kasai */
+UINT4 *
+Sarray_traverse_lcp_intervals (unsigned char *lcp_bytes, UINT4 *lcp_exceptions, int n_lcp_exceptions, UINT4 n) {
+  UINT4 *child;
+  UINT4 lastindex, i;
+  Uintlist_T lcpstack, indexstack, lbstack; /* leftbound stack */
+  UINT4 lcp_i, lcp_lastindex, leftbound;
+  char *comma;
+
+  child = (UINT4 *) CALLOC(n+1,sizeof(UINT4));
+
+  i = 1;
+  lastindex = 1;
+  lcp_i = 0;			/* Just as good as -1 and avoids comparison with -1U */
+  indexstack = Uintlist_push(NULL,i);
+  lcpstack = Uintlist_push(NULL,lcp_i);
+  lbstack = Uintlist_push(NULL,i-1);
+  printf("Pushing %u\n",i-1);
+
+  for (i = 2; i <= n; i++) {
+    lcp_i = Bytecoding_read(i,lcp_bytes,lcp_exceptions,n_lcp_exceptions);
+    printf("index %d, lcp %u, stack %s\n",i-1,lcp_i,Uintlist_to_string(indexstack));
+
+    leftbound = i-1;
+    while (lcp_i < Uintlist_head(lcpstack)) {
+      indexstack = Uintlist_pop(indexstack,&lastindex);
+      lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+      lbstack = Uintlist_pop(lbstack,&leftbound);
+      /* rightbound = i-1; */
+      printf("lcp interval %u..%u\n",leftbound-1,(i-1)-1);
+
+      if (lcp_i <= Uintlist_head(lcpstack)) {
+	printf("  child of %u\n",Uintlist_head(indexstack));
+      }
+
+    }
+
+    if (lcp_i > Uintlist_head(lcpstack)) {
+      indexstack = Uintlist_push(indexstack,i);
+      lcpstack = Uintlist_push(lcpstack,lcp_i);
+      lbstack = Uintlist_push(lbstack,leftbound);
+    }
+
+    if (i % MONITOR_INTERVAL == 0) {
+      comma = Genomicpos_commafmt(i);
+      fprintf(stderr,"Computing child table %s\n",comma);
+      FREE(comma);
+    }
+    printf("\n");
+  }
+
+  /* i == n + 1.  lcp[n+1] = -1 */
+  lcp_i = 0;
+  while (lcp_i < Uintlist_head(lcpstack)) {
+    indexstack = Uintlist_pop(indexstack,&lastindex);
+    lcpstack = Uintlist_pop(lcpstack,&lcp_lastindex);
+    lbstack = Uintlist_pop(lbstack,&leftbound);
+    printf("lcp interval %u..%u\n",leftbound-1,n-1);
+  }
+      
+  Uintlist_free(&lbstack);
+  Uintlist_free(&lcpstack);
+  Uintlist_free(&indexstack);
+
+  return child;
+}
+#endif
+
+
+void
+Sarray_array_uncompress (Genome_T genomecomp, char *sarrayfile, char *plcpptrsfile, char *plcpcompfile,
+			 UINT4 genomelength, UINT4 start, UINT4 end) {
+  UINT4 n = genomelength, pos, match, h;
+  unsigned char *gbuffer;
+
+  UINT4 *SA, *plcpptrs, *plcpcomp;
+
+  int sa_fd, plcpcomp_fd;
+  size_t sa_len, plcpptrs_len, plcpcomp_len;
+
+  double seconds;
+  UINT4 sa_i, lcp_i, sa_nexti, lcp_nexti;
+
+
+  gbuffer = (unsigned char *) CALLOC(n+1,sizeof(unsigned char));
+  Genome_fill_buffer_simple(genomecomp,/*left*/0,/*length*/n,gbuffer);
+  gbuffer[n] = 0;		       /* '\0', terminator */
+
+  if (end == 0) {
+    start = 0;
+    end = n;
+  }
+
+  SA = (UINT4 *) Access_mmap(&sa_fd,&sa_len,sarrayfile,sizeof(UINT4),/*randomp*/false);
+  plcpptrs = (UINT4 *) Access_allocated(&plcpptrs_len,&seconds,plcpptrsfile,sizeof(UINT4));
+  plcpcomp = (UINT4 *) Access_mmap(&plcpcomp_fd,&plcpcomp_len,plcpcompfile,sizeof(UINT4),
+				  /*randomp*/true);
+  plcpcomp = (UINT4 *) Access_mmap(&plcpcomp_fd,&plcpcomp_len,plcpcompfile,sizeof(UINT4),
+				  /*randomp*/true);
+
+  /* Bitpack64_read_setup(); */
+
+
+  printf("i\tSA\tLCP\n");
+
+  pos = start;
+  sa_i = SA[pos];
+  lcp_i = Bitpack64_read_one(sa_i,plcpptrs,plcpcomp) - sa_i;
+
+  sa_nexti = SA[pos+1];
+  lcp_nexti = Bitpack64_read_one(sa_nexti,plcpptrs,plcpcomp) - sa_nexti;
+
+  if (pos == 0) {
+    /* lcp_i is -1 */
+    printf("%u\t%u\t-1\t",pos,sa_i);
+    printf("R");
+    printf("\n");
+  }
+
+  for (pos = start + 1; pos < end; pos++) {
+    sa_i = sa_nexti;
+    lcp_i = lcp_nexti;
+
+    sa_nexti = SA[pos+1];
+    lcp_nexti = Bitpack64_read_one(sa_nexti,plcpptrs,plcpcomp) - sa_nexti;
+
+    printf("%u\t%u\t%u\t",pos,sa_i,lcp_i);
+    if (lcp_i > lcp_nexti) {
+      printf("L");
+    } else {
+      printf("R");
+    }
+
+    printf("\t%c",gbuffer[sa_i]);
+    for (h = 1; (h <= lcp_i || h <= lcp_nexti) && h < 25; h++) {
+      if (gbuffer[sa_i+h] == '\0') {
+	printf("$");
+      } else {
+	printf("%c",gbuffer[sa_i+h]);
+      }
+    }
+    if (h <= lcp_i || h <= lcp_nexti) {
+      printf("...");
+    }
+    
+    printf("\n");
+  }
+
+  sa_i = sa_nexti;
+  lcp_i = lcp_nexti;
+  if (pos == n) {
+    printf("%u\t%u\t%u\t",pos,sa_i,lcp_i);
+    printf("L");
+
+    printf("\t%c",gbuffer[sa_i]);
+    for (h = 1; h <= lcp_i && h < 25; h++) {
+      if (gbuffer[sa_i+h] == '\0') {
+	printf("$");
+      } else {
+	printf("%c",gbuffer[sa_i+h]);
+      }
+    }
+    if (h <= lcp_i) {
+      printf("...");
+    }
+
+    printf("\n");
+  }
+
+  FREE(plcpptrs);
+  munmap((void *) plcpcomp,plcpcomp_len);
+  close(plcpcomp_fd);
+  munmap((void *) SA,sa_len);
+  close(sa_fd);
+
+  return;
+}
+
+
+/* May not be possible to uncompress in linear form.  May need to uncompress by lcp-intervals */
+void
+Sarray_child_uncompress (Genome_T genomecomp, unsigned char *lcpchilddc, UINT4 *lcp_guide, UINT4 *lcp_exceptions,
+			 int n_lcp_exceptions, UINT4 *child_guide, UINT4 *child_exceptions, int n_child_exceptions,
+			 UINT4 *SA, UINT4 genomelength, UINT4 start, UINT4 end) {
+  UINT4 n = genomelength, pos, h;
+  unsigned char *gbuffer;
+  UINT4 sa_i, lcp_i, child_i, sa_nexti, lcp_nexti, child_nexti;
+  char c1, c2;
+
+
+  gbuffer = (unsigned char *) CALLOC(n+1,sizeof(unsigned char));
+  Genome_fill_buffer_simple(genomecomp,/*left*/0,/*length*/n,gbuffer);
+  gbuffer[n] = 0;		       /* '\0', terminator */
+
+  if (end == 0) {
+    start = 0;
+    end = n;
+  }
+
+  printf("i\tSA\tLCP\tDC\n");
+
+  pos = start;
+
+  for (pos = start; pos <= end; pos++) {
+    sa_i = SA[pos];
+    lcp_i = Bytecoding_lcpchilddc_lcp(pos,lcpchilddc,lcp_exceptions,n_lcp_exceptions); /* lcp(i,j) */
+    c2 = Bytecoding_lcpchilddc_dc(&c1,pos,lcpchilddc);
+
+    printf("%u\t%u\t%u\t%c%c",pos,sa_i,lcp_i,c1,c2);
+
+    printf("\t%c",gbuffer[sa_i]);
+    for (h = 1; (h <= lcp_i || h <= lcp_nexti) && h < 25; h++) {
+      if (gbuffer[sa_i+h] == '\0') {
+	printf("$");
+      } else {
+	printf("%c",gbuffer[sa_i+h]);
+      }
+    }
+    if (h <= lcp_i || h <= lcp_nexti) {
+      printf("...");
+    }
+    
+    printf("\n");
+  }
+
+  return;
+}
+
+
+
+
diff --git a/src/sarray-write.h b/src/sarray-write.h
new file mode 100644
index 0000000..91b7e4e
--- /dev/null
+++ b/src/sarray-write.h
@@ -0,0 +1,54 @@
+/* $Id: sarray-write.h 133760 2014-04-20 05:16:56Z twu $ */
+#ifndef SARRAY_WRITE_INCLUDED
+#define SARRAY_WRITE_INCLUDED
+#include "types.h"
+#include "genome.h"
+
+/* If conversion is NULL, then no conversion is performed */
+extern void
+Sarray_write_array (char *sarrayfile, Genome_T genomecomp, UINT4 genomelength);
+extern void
+Sarray_write_array_from_genome (char *sarrayfile, unsigned char *gbuffer, UINT4 genomelength);
+
+extern void
+Sarray_write_index_separate (char *indexiptrsfile, char *indexicompfile, char *indexjptrsfile,char *indexjcompfile,
+			     char *sarrayfile, Genome_T genomecomp, UINT4 genomelength, bool compressp,
+			     char chartable[]);
+
+extern void
+Sarray_write_index_interleaved (char *indexptrsfile, char *indexcompfile,
+				char *sarrayfile, Genome_T genomecomp, UINT4 genomelength, bool compressp,
+				char chartable[]);
+
+extern UINT4 *
+Sarray_compute_lcp (UINT4 *SA, UINT4 n);
+extern UINT4 *
+Sarray_compute_lcp_from_genome (UINT4 *SA, unsigned char *gbuffer, UINT4 n);
+
+extern unsigned char *
+Sarray_discriminating_chars (UINT4 *nbytes, UINT4 *SA, Genome_T genome,
+			     unsigned char *lcp_bytes, UINT4 *lcp_guide, UINT4 *lcp_exceptions, int guide_interval,
+			     UINT4 n, char chartable[]);
+
+extern UINT4 *
+Sarray_compute_child (unsigned char *lcp_bytes, UINT4 *lcp_guide, UINT4 *lcp_exceptions, UINT4 n);
+
+
+extern void
+Sarray_array_uncompress (Genome_T genomecomp, char *sarrayfile, char *plcpptrsfile, char *plcpcompfile,
+			 UINT4 genomelength, UINT4 start, UINT4 end);
+
+extern void
+Sarray_child_uncompress (Genome_T genomecomp, unsigned char *lcpchilddc, UINT4 *lcp_guide, UINT4 *lcp_exceptions,
+			 int n_lcp_exceptions, UINT4 *child_guide, UINT4 *child_exceptions, int n_child_exceptions,
+			 UINT4 *SA, UINT4 genomelength, UINT4 start, UINT4 end);
+
+extern void
+Sarray_child_test (char *sarrayfile,
+		   char *childbpfile, char *childs_pagesfile, char *childs_ptrsfile, char *childs_compfile,
+		   char *childr_ptrsfile, char *childr_compfile, char *childx_ptrsfile, char *childx_compfile,
+		   char *pioneerbpfile, char *pior_ptrsfile, char *pior_compfile,
+		   char *piom_ptrsfile, char *piom_compfile, UINT4 genomelength, int sampling_interval);
+
+#endif
+
diff --git a/src/scores.h b/src/scores.h
index 71ea4e5..1727d8c 100644
--- a/src/scores.h
+++ b/src/scores.h
@@ -1,13 +1,13 @@
-/* $Id: scores.h 46279 2011-09-01 17:20:50Z twu $ */
+/* $Id: scores.h 105294 2013-08-20 16:42:39Z twu $ */
 #ifndef SCORES_INCLUDED
 #define SCORES_INCLUDED
 
 #define MATCH 1
 #define MISMATCH -3
-#define QOPEN -5
-#define QINDEL -2
-#define TOPEN -5
-#define TINDEL -2
+#define QOPEN -3
+#define QINDEL -1
+#define TOPEN -3
+#define TINDEL -1
 
 #define CANONICAL_POINTS 12
 #define DUAL_HALFCANONICAL_POINTS 4
diff --git a/src/segmentpos.c b/src/segmentpos.c
index 7b91757..5c92b66 100644
--- a/src/segmentpos.c
+++ b/src/segmentpos.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: segmentpos.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: segmentpos.c 138719 2014-06-11 17:07:13Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -142,6 +142,23 @@ Segmentpos_compare_chrom (const void *x, const void *y) {
   }
 }
 
+int
+Segmentpos_compare_order (const void *x, const void *y) {
+  T a = * (T *) x;
+  T b = * (T *) y;
+  int cmp;
+
+  if ((cmp = Chrom_cmp_order(a->chrom,b->chrom)) != 0) {
+    return cmp;
+  } else if (a->chrpos1 < b->chrpos1) {
+    return -1;
+  } else if (b->chrpos1 < a->chrpos1) {
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
 static bool
 altstrain_sufficient_p (int *indices, int nindices, Univ_IIT_T contig_iit, Univcoord_T position1,
 			Univcoord_T position2, char *align_strain) {
diff --git a/src/segmentpos.h b/src/segmentpos.h
index 95d4a62..162a224 100644
--- a/src/segmentpos.h
+++ b/src/segmentpos.h
@@ -1,4 +1,4 @@
-/* $Id: segmentpos.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: segmentpos.h 138719 2014-06-11 17:07:13Z twu $ */
 #ifndef SEGMENTPOS_INCLUDED
 #define SEGMENTPOS_INCLUDED
 #include <stdio.h>
@@ -36,6 +36,8 @@ extern int
 Segmentpos_compare_numeric_alpha (const void *x, const void *y);
 extern int
 Segmentpos_compare_chrom (const void *x, const void *y);
+extern int
+Segmentpos_compare_order (const void *x, const void *y);
 
 extern void
 Segmentpos_print_accessions (FILE *fp, Univ_IIT_T contig_iit, Univcoord_T position1,
diff --git a/src/sequence.c b/src/sequence.c
index afa112f..3bb1be1 100644
--- a/src/sequence.c
+++ b/src/sequence.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: sequence.c 101724 2013-07-16 23:40:20Z twu $";
+static char rcsid[] = "$Id: sequence.c 132731 2014-04-08 21:19:57Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -29,6 +29,9 @@ static char rcsid[] = "$Id: sequence.c 101724 2013-07-16 23:40:20Z twu $";
 #include "intlist.h"
 #include "fopen.h"
 #include "md5.h"
+#ifdef PMAP
+#include "dynprog.h"
+#endif
 
 /* Before setting DEBUG, may want to reduce MAXSEQLEN in sequence.h */
 #ifdef DEBUG
@@ -136,6 +139,18 @@ Sequence_fulllength_given (T this) {
 #endif
 }
 
+char *
+Sequence_subseq_pointer (T this, int querystart) {
+  return &(this->contents[querystart]);
+}
+
+int
+Sequence_subseq_length (T this, int querystart) {
+  return this->fulllength - querystart;
+}
+
+
+
 int
 Sequence_trimlength (T this) {
   return this->trimend - this->trimstart;
@@ -192,6 +207,114 @@ Sequence_free (T *old) {
 }
 
 #ifdef PMAP
+static int aa_index_table[128] =
+  { -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+  /*     *                                  */
+    -1, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1,
+
+  /* A,  B,  C,  D,  E,  F,  G,  H,  I,  J, */
+     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
+
+  /* K,  L,  M,  N,  O,  P,  Q,  R,  S,  T  */
+     8,  9, 10, 11, -1, 12, 13, 14, 15, 16,
+
+  /* U,  V,  W,  X,  Y,  Z  */
+    21, 17, 18, -1, 19, -1,
+
+    -1, -1, -1, -1, -1, -1,
+
+  /* a,  b,  c,  d,  e,  f,  g,  h,  i,  j, */
+     0, -1,  1,  2,  3,  4,  5,  6,  7, -1,
+
+  /* k,  l,  m,  n,  o,  p,  q,  r,  s,  t  */
+     8,  9, 10, 11, -1, 12, 13, 14, 15, 16,
+
+  /* u,  v,  w,  x,  y,  z  */
+    21, 17, 18, -1, 19, -1,
+
+    -1, -1, -1, -1, -1};
+
+
+static char *iupac_table[21+1] =
+  {"GCN",			/* A */
+   "TGY",			/* C */
+   "GAY",			/* D */
+   "GAR",			/* E */
+   "TTY",			/* F */
+   "GGN",			/* G */
+   "CAY",			/* H */
+   "ATH",			/* I */
+   "AAR",			/* K */
+   "YTN",			/* L */
+   "ATG",			/* M */
+   "AAY",			/* N */
+   "CCN",			/* P */
+   "CAR",			/* Q */
+   "MGN",			/* R */
+   "WSN",			/* S */
+   "ACN",			/* T */
+   "GTN",			/* V */
+   "TGG",			/* W */
+   "TAY",			/* Y */
+   "TRR",			/* STOP */
+   "TGA"};			/* U */
+
+
+static char aa_table[21+1] = "ACDEFGHIKLMNPQRSTVWY*U";
+
+char
+Sequence_codon_char (char aa, int codonpos) {
+  int index;
+  char *codon;
+
+  if ((index = aa_index_table[(int) aa]) < 0) {
+    return 'N';
+  } else {
+    codon = iupac_table[index];
+    return codon[codonpos];
+  }
+}
+
+
+
+static char *
+instantiate_codons (char *aasequence, int ntlength) {
+  char *newntsequence;
+  int aapos, ntpos;
+  int index, frame;
+  char *codon, aa;
+
+  newntsequence = (char *) CALLOC(ntlength+1,sizeof(char));
+
+  for (ntpos = 0; ntpos < ntlength; ntpos++) {
+    aapos = (/*offset+*/ntpos)/3;
+	
+    aa = aasequence[aapos];
+    index = aa_index_table[(int) aa];
+    if (index < 0) {
+      newntsequence[ntpos] = 'N';
+    } else {
+      codon = iupac_table[index];
+
+      frame = (/*offset+*/ntpos) % 3;
+      newntsequence[ntpos] = codon[frame];
+    }
+  }
+
+#if 0
+  printf("New sequence: %s\n",newntsequence);
+#endif
+  return newntsequence;
+}
+
+
 T
 Sequence_convert_to_nucleotides (T this) {
   T new = (T) MALLOC_IN(sizeof(*new));
@@ -201,10 +324,13 @@ Sequence_convert_to_nucleotides (T this) {
   new->restofheader = (char *) NULL;
   new->fulllength = this->fulllength*3;
   new->fulllength_given = this->fulllength_given*3;
-  new->contents = new->contents_alloc = (char *) CALLOC_IN(new->fulllength+1,sizeof(char));
+  new->contents = new->contents_alloc =
+    instantiate_codons(/*aasequence*/this->contents,/*ntlength*/this->fulllength*3);
+#if 0
   for (i = 0; i < new->fulllength; i++) {
     new->contents[i] = '?';
   }
+#endif
 
   new->trimstart = 0;
   new->trimend = new->fulllength_given;
@@ -946,7 +1072,11 @@ Sequence_subsequence (T this, int start, int end) {
     new->quality_alloc = (char *) NULL;
 #endif
 
+#ifdef PMAP
+    new->subseq_offset = 3*start;
+#else
     new->subseq_offset = start;
+#endif
     new->skiplength = this->skiplength;
 
     new->firstp = this->firstp;
diff --git a/src/sequence.h b/src/sequence.h
index f346c72..222a46e 100644
--- a/src/sequence.h
+++ b/src/sequence.h
@@ -1,4 +1,4 @@
-/* $Id: sequence.h 83593 2013-01-16 22:59:40Z twu $ */
+/* $Id: sequence.h 132731 2014-04-08 21:19:57Z twu $ */
 #ifndef SEQUENCE_INCLUDED
 #define SEQUENCE_INCLUDED
 #include <stdio.h>
@@ -53,6 +53,10 @@ extern int
 Sequence_ntlength (T this);
 extern int
 Sequence_fulllength (T this);
+extern char *
+Sequence_subseq_pointer (T this, int querystart);
+extern int
+Sequence_subseq_length (T this, int querystart);
 extern int
 Sequence_trimlength (T this);
 extern int
@@ -81,6 +85,8 @@ Sequence_read_multifile (int *nextchar, FILE **input, char ***files, int *nfiles
 extern T
 Sequence_read_unlimited (int *nextchar, FILE *input);
 #ifdef PMAP
+extern char
+Sequence_codon_char (char aa, int codonpos);
 extern T
 Sequence_convert_to_nucleotides (T this);
 #endif
diff --git a/src/shortread.c b/src/shortread.c
index 08b70ef..db983ca 100644
--- a/src/shortread.c
+++ b/src/shortread.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: shortread.c 98808 2013-06-18 22:16:54Z twu $";
+static char rcsid[] = "$Id: shortread.c 132022 2014-04-01 18:39:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -284,8 +284,6 @@ Shortread_input_init_bzip2 (Bzip2_T fp) {
 }
 #endif
 
-
-
 static int acc_fieldi_start = 0;
 static int acc_fieldi_end = 0;
 static bool force_single_end_p = false;
@@ -306,8 +304,10 @@ Shortread_setup (int acc_fieldi_start_in, int acc_fieldi_end_in,
 }
 
 
+static char *skipped_acc = "Skipped";
+
 static char *
-input_header (bool *filterp, char **restofheader, FILE *fp) {
+input_header (bool *filterp, char **restofheader, FILE *fp, bool skipp) {
   char *acc = NULL, *p, *q;
   size_t length;
 
@@ -333,49 +333,53 @@ input_header (bool *filterp, char **restofheader, FILE *fp) {
 	   rindex(&(Discard[0]),'\n') == NULL) ;
   }
 
-  p = &(Header[0]);
-  while (*p != '\0' && !isspace((int) *p)) {
-    p++;
-  }
-
-  if (filter_chastity_p == true) {
-    q = p;
-    /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
-    while (*q != '\0' && *q != ':') {
-      q++;
+  if (skipp == true) {
+    return (char *) skipped_acc;
+  } else {
+    p = &(Header[0]);
+    while (*p != '\0' && !isspace((int) *p)) {
+      p++;
     }
-    if (*q != '\0') {
-      q++;
-      if (*q == 'Y') {
-	*filterp = true;
+
+    if (filter_chastity_p == true) {
+      q = p;
+      /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
+      while (*q != '\0' && *q != ':') {
+	q++;
+      }
+      if (*q != '\0') {
+	q++;
+	if (*q == 'Y') {
+	  *filterp = true;
+	}
       }
     }
-  }
 
-  if (*p == '\0') {
-    /* Accession only */
-    length = (p - &(Header[0]))/sizeof(char);
-    acc = (char *) CALLOC_IN(length+1,sizeof(char));
-    strcpy(acc,Header);
-    (*restofheader) = (char *) CALLOC_IN(1,sizeof(char));
-    (*restofheader)[0] = '\0';
-  } else {
-    *p = '\0';
-    length = (p - &(Header[0]))/sizeof(char);
-    acc = (char *) CALLOC_IN(length+1,sizeof(char));
-    strcpy(acc,Header);
-    p++;
-    *restofheader = (char *) CALLOC_IN(strlen(p)+1,sizeof(char));
-    strcpy(*restofheader,p);
-  }
+    if (*p == '\0') {
+      /* Accession only */
+      length = (p - &(Header[0]))/sizeof(char);
+      acc = (char *) CALLOC_IN(length+1,sizeof(char));
+      strcpy(acc,Header);
+      (*restofheader) = (char *) CALLOC_IN(1,sizeof(char));
+      (*restofheader)[0] = '\0';
+    } else {
+      *p = '\0';
+      length = (p - &(Header[0]))/sizeof(char);
+      acc = (char *) CALLOC_IN(length+1,sizeof(char));
+      strcpy(acc,Header);
+      p++;
+      *restofheader = (char *) CALLOC_IN(strlen(p)+1,sizeof(char));
+      strcpy(*restofheader,p);
+    }
   
-  return acc;
+    return acc;
+  }
 } 
 
 
 #ifdef HAVE_ZLIB
 static char *
-input_header_gzip (bool *filterp, char **restofheader, gzFile fp) {
+input_header_gzip (bool *filterp, char **restofheader, gzFile fp, bool skipp) {
   char *acc = NULL, *p, *q;
   size_t length;
 
@@ -401,50 +405,54 @@ input_header_gzip (bool *filterp, char **restofheader, gzFile fp) {
 	   rindex(&(Discard[0]),'\n') == NULL) ;
   }
 
-  p = &(Header[0]);
-  while (*p != '\0' && !isspace((int) *p)) {
-    p++;
-  }
-
-  if (filter_chastity_p == true) {
-    q = p;
-    /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
-    while (*q != '\0' && *q != ':') {
-      q++;
+  if (skipp) {
+    return (char *) skipped_acc;
+  } else {
+    p = &(Header[0]);
+    while (*p != '\0' && !isspace((int) *p)) {
+      p++;
     }
-    if (*q != '\0') {
-      q++;
-      if (*q == 'Y') {
-	*filterp = true;
+
+    if (filter_chastity_p == true) {
+      q = p;
+      /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
+      while (*q != '\0' && *q != ':') {
+	q++;
+      }
+      if (*q != '\0') {
+	q++;
+	if (*q == 'Y') {
+	  *filterp = true;
+	}
       }
     }
-  }
 
-  if (*p == '\0') {
-    /* Accession only */
-    length = (p - &(Header[0]))/sizeof(char);
-    acc = (char *) CALLOC_IN(length+1,sizeof(char));
-    strcpy(acc,Header);
-    *restofheader = (char *) CALLOC_IN(1,sizeof(char));
-    (*restofheader)[0] = '\0';
-  } else {
-    *p = '\0';
-    length = (p - &(Header[0]))/sizeof(char);
-    acc = (char *) CALLOC_IN(length+1,sizeof(char));
-    strcpy(acc,Header);
-    p++;
-    *restofheader = (char *) CALLOC_IN(strlen(p)+1,sizeof(char));
-    strcpy(*restofheader,p);
-  }
+    if (*p == '\0') {
+      /* Accession only */
+      length = (p - &(Header[0]))/sizeof(char);
+      acc = (char *) CALLOC_IN(length+1,sizeof(char));
+      strcpy(acc,Header);
+      *restofheader = (char *) CALLOC_IN(1,sizeof(char));
+      (*restofheader)[0] = '\0';
+    } else {
+      *p = '\0';
+      length = (p - &(Header[0]))/sizeof(char);
+      acc = (char *) CALLOC_IN(length+1,sizeof(char));
+      strcpy(acc,Header);
+      p++;
+      *restofheader = (char *) CALLOC_IN(strlen(p)+1,sizeof(char));
+      strcpy(*restofheader,p);
+    }
 
-  return acc;
+    return acc;
+  }
 } 
 #endif
 
 
 #ifdef HAVE_BZLIB
 static char *
-input_header_bzip2 (bool *filterp, char **restofheader, Bzip2_T fp) {
+input_header_bzip2 (bool *filterp, char **restofheader, Bzip2_T fp, bool skipp) {
   char *acc = NULL, *p, *q;
   size_t length;
 
@@ -470,43 +478,47 @@ input_header_bzip2 (bool *filterp, char **restofheader, Bzip2_T fp) {
 	   rindex(&(Discard[0]),'\n') == NULL) ;
   }
 
-  p = &(Header[0]);
-  while (*p != '\0' && !isspace((int) *p)) {
-    p++;
-  }
-
-  if (filter_chastity_p == true) {
-    q = p;
-    /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
-    while (*q != '\0' && *q != ':') {
-      q++;
+  if (skipp) {
+    return (char *) skipped_acc;
+  } else {
+    p = &(Header[0]);
+    while (*p != '\0' && !isspace((int) *p)) {
+      p++;
     }
-    if (*q != '\0') {
-      q++;
-      if (*q == 'Y') {
-	*filterp = true;
+
+    if (filter_chastity_p == true) {
+      q = p;
+      /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
+      while (*q != '\0' && *q != ':') {
+	q++;
+      }
+      if (*q != '\0') {
+	q++;
+	if (*q == 'Y') {
+	  *filterp = true;
+	}
       }
     }
-  }
 
-  if (*p == '\0') {
-    /* Accession only */
-    length = (p - &(Header[0]))/sizeof(char);
-    acc = (char *) CALLOC_IN(length+1,sizeof(char));
-    strcpy(acc,Header);
-    *restofheader = (char *) CALLOC_IN(1,sizeof(char));
-    (*restofheader)[0] = '\0';
-  } else {
-    *p = '\0';
-    length = (p - &(Header[0]))/sizeof(char);
-    acc = (char *) CALLOC_IN(length+1,sizeof(char));
-    strcpy(acc,Header);
-    p++;
-    *restofheader = (char *) CALLOC_IN(strlen(p)+1,sizeof(char));
-    strcpy(*restofheader,p);
-  }
+    if (*p == '\0') {
+      /* Accession only */
+      length = (p - &(Header[0]))/sizeof(char);
+      acc = (char *) CALLOC_IN(length+1,sizeof(char));
+      strcpy(acc,Header);
+      *restofheader = (char *) CALLOC_IN(1,sizeof(char));
+      (*restofheader)[0] = '\0';
+    } else {
+      *p = '\0';
+      length = (p - &(Header[0]))/sizeof(char);
+      acc = (char *) CALLOC_IN(length+1,sizeof(char));
+      strcpy(acc,Header);
+      p++;
+      *restofheader = (char *) CALLOC_IN(strlen(p)+1,sizeof(char));
+      strcpy(*restofheader,p);
+    }
 
-  return acc;
+    return acc;
+  }
 } 
 #endif
 
@@ -534,8 +546,12 @@ strip_illumina_acc_ending (char *acc1, char *acc2) {
       q++;
     }
 
-    /* Handle old style Illumina data that ends in ":0" or ":1" */
-    if (p[-2] == ':' &&	q[-2] == ':' && p[-1] == q[-1]) {
+    if (p[-2] == ';' && q[-2] == ';') {
+      /* Handle Casava data that ends in ";1" */
+      p -= 2;
+      q -= 2;
+    } else if (p[-2] == ':' &&	q[-2] == ':' && p[-1] == q[-1]) {
+      /* Handle old style Illumina data that ends in ":0" or ":1" */
       p -= 2;
       q -= 2;
     }
@@ -569,7 +585,7 @@ strip_illumina_acc_ending (char *acc1, char *acc2) {
 
 
 static char *
-input_header_fastq (bool *filterp, char **restofheader, FILE *fp) {
+input_header_fastq (bool *filterp, char **restofheader, FILE *fp, bool skipp) {
   char *acc, *p, *q, *start;
   size_t length;
   int fieldi = 0;
@@ -596,61 +612,65 @@ input_header_fastq (bool *filterp, char **restofheader, FILE *fp) {
 	   rindex(&(Discard[0]),'\n') == NULL) ;
   }
 
-  p = start = &(Header[0]);
-  while (fieldi < acc_fieldi_start) {
-    while (*p != '\0' && !isspace((int) *p)) {
-      p++;
+  if (skipp == true) {
+    return (char *) skipped_acc;
+  } else {
+    p = start = &(Header[0]);
+    while (fieldi < acc_fieldi_start) {
+      while (*p != '\0' && !isspace((int) *p)) {
+	p++;
+      }
+      if (*p != '\0') {
+	p++;
+      }
+      start = p;
+      fieldi++;
     }
-    if (*p != '\0') {
-      p++;
+
+    while (fieldi < acc_fieldi_end) {
+      while (*p != '\0' && !isspace((int) *p)) {
+	p++;
+      }
+      if (*p != '\0') {
+	p++;
+      }
+      fieldi++;
     }
-    start = p;
-    fieldi++;
-  }
 
-  while (fieldi < acc_fieldi_end) {
     while (*p != '\0' && !isspace((int) *p)) {
       p++;
     }
-    if (*p != '\0') {
-      p++;
-    }
-    fieldi++;
-  }
-
-  while (*p != '\0' && !isspace((int) *p)) {
-    p++;
-  }
 
-  if (filter_chastity_p == true) {
-    q = p;
-    /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
-    while (*q != '\0' && *q != ':') {
-      q++;
-    }
-    if (*q != '\0') {
-      q++;
-      if (*q == 'Y') {
-	*filterp = true;
+    if (filter_chastity_p == true) {
+      q = p;
+      /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
+      while (*q != '\0' && *q != ':') {
+	q++;
+      }
+      if (*q != '\0') {
+	q++;
+	if (*q == 'Y') {
+	  *filterp = true;
+	}
       }
     }
-  }
 
-  *p = '\0';
+    *p = '\0';
 
-  length = (p - start)/sizeof(char);
-  acc = (char *) CALLOC_IN(length+1,sizeof(char));
-  strcpy(acc,start);
-  *restofheader = (char *) CALLOC_IN(1,sizeof(char));
-  (*restofheader)[0] = '\0';
+    length = (p - start)/sizeof(char);
+    acc = (char *) CALLOC_IN(length+1,sizeof(char));
+    strcpy(acc,start);
+    *restofheader = (char *) CALLOC_IN(1,sizeof(char));
+    (*restofheader)[0] = '\0';
 
-  return acc;
+    return acc;
+  }
 } 
 
 
 #ifdef HAVE_ZLIB
 static char *
-input_header_fastq_gzip (bool *filterp, char **restofheader, gzFile fp) {
+input_header_fastq_gzip (bool *filterp, char **restofheader, gzFile fp, bool skipp) {
   char *acc, *p, *q, *start;
   size_t length;
   int fieldi = 0;
@@ -677,62 +697,66 @@ input_header_fastq_gzip (bool *filterp, char **restofheader, gzFile fp) {
 	   rindex(&(Discard[0]),'\n') == NULL) ;
   }
 
-  p = start = &(Header[0]);
-  while (fieldi < acc_fieldi_start) {
-    while (*p != '\0' && !isspace((int) *p)) {
-      p++;
+  if (skipp) {
+    return (char *) skipped_acc;
+  } else {
+    p = start = &(Header[0]);
+    while (fieldi < acc_fieldi_start) {
+      while (*p != '\0' && !isspace((int) *p)) {
+	p++;
+      }
+      if (*p != '\0') {
+	p++;
+      }
+      start = p;
+      fieldi++;
     }
-    if (*p != '\0') {
-      p++;
+
+    while (fieldi < acc_fieldi_end) {
+      while (*p != '\0' && !isspace((int) *p)) {
+	p++;
+      }
+      if (*p != '\0') {
+	p++;
+      }
+      fieldi++;
     }
-    start = p;
-    fieldi++;
-  }
 
-  while (fieldi < acc_fieldi_end) {
     while (*p != '\0' && !isspace((int) *p)) {
       p++;
     }
-    if (*p != '\0') {
-      p++;
-    }
-    fieldi++;
-  }
-
-  while (*p != '\0' && !isspace((int) *p)) {
-    p++;
-  }
 
-  if (filter_chastity_p == true) {
-    q = p;
-    /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
-    while (*q != '\0' && *q != ':') {
-      q++;
-    }
-    if (*q != '\0') {
-      q++;
-      if (*q == 'Y') {
-	*filterp = true;
+    if (filter_chastity_p == true) {
+      q = p;
+      /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
+      while (*q != '\0' && *q != ':') {
+	q++;
+      }
+      if (*q != '\0') {
+	q++;
+	if (*q == 'Y') {
+	  *filterp = true;
+	}
       }
     }
-  }
 
-  *p = '\0';
+    *p = '\0';
 
-  length = (p - start)/sizeof(char);
-  acc = (char *) CALLOC_IN(length+1,sizeof(char));
-  strcpy(acc,start);
-  *restofheader = (char *) CALLOC_IN(1,sizeof(char));
-  (*restofheader)[0] = '\0';
+    length = (p - start)/sizeof(char);
+    acc = (char *) CALLOC_IN(length+1,sizeof(char));
+    strcpy(acc,start);
+    *restofheader = (char *) CALLOC_IN(1,sizeof(char));
+    (*restofheader)[0] = '\0';
 
-  return acc;
+    return acc;
+  }
 } 
 #endif
 
 
 #ifdef HAVE_BZLIB
 static char *
-input_header_fastq_bzip2 (bool *filterp, char **restofheader, Bzip2_T fp) {
+input_header_fastq_bzip2 (bool *filterp, char **restofheader, Bzip2_T fp, bool skipp) {
   char *acc, *p, *q, *start;
   size_t length;
   int fieldi = 0;
@@ -759,55 +783,59 @@ input_header_fastq_bzip2 (bool *filterp, char **restofheader, Bzip2_T fp) {
 	   rindex(&(Discard[0]),'\n') == NULL) ;
   }
 
-  p = start = &(Header[0]);
-  while (fieldi < acc_fieldi_start) {
-    while (*p != '\0' && !isspace((int) *p)) {
-      p++;
+  if (skipp) {
+    return (char *) skipped_acc;
+  } else {
+    p = start = &(Header[0]);
+    while (fieldi < acc_fieldi_start) {
+      while (*p != '\0' && !isspace((int) *p)) {
+	p++;
+      }
+      if (*p != '\0') {
+	p++;
+      }
+      start = p;
+      fieldi++;
     }
-    if (*p != '\0') {
-      p++;
+
+    while (fieldi < acc_fieldi_end) {
+      while (*p != '\0' && !isspace((int) *p)) {
+	p++;
+      }
+      if (*p != '\0') {
+	p++;
+      }
+      fieldi++;
     }
-    start = p;
-    fieldi++;
-  }
 
-  while (fieldi < acc_fieldi_end) {
     while (*p != '\0' && !isspace((int) *p)) {
       p++;
     }
-    if (*p != '\0') {
-      p++;
-    }
-    fieldi++;
-  }
 
-  while (*p != '\0' && !isspace((int) *p)) {
-    p++;
-  }
-
-  if (filter_chastity_p == true) {
-    q = p;
-    /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
-    while (*q != '\0' && *q != ':') {
-      q++;
-    }
-    if (*q != '\0') {
-      q++;
-      if (*q == 'Y') {
-	*filterp = true;
+    if (filter_chastity_p == true) {
+      q = p;
+      /* Expecting <read>:<is filtered>:<control number>:<index sequence>, e.g., 1:Y:0:CTTGTA */
+      while (*q != '\0' && *q != ':') {
+	q++;
+      }
+      if (*q != '\0') {
+	q++;
+	if (*q == 'Y') {
+	  *filterp = true;
+	}
       }
     }
-  }
 
-  *p = '\0';
+    *p = '\0';
 
-  length = (p - start)/sizeof(char);
-  acc = (char *) CALLOC_IN(length+1,sizeof(char));
-  strcpy(acc,start);
-  *restofheader = (char *) CALLOC_IN(1,sizeof(char));
-  (*restofheader)[0] = '\0';
+    length = (p - start)/sizeof(char);
+    acc = (char *) CALLOC_IN(length+1,sizeof(char));
+    strcpy(acc,start);
+    *restofheader = (char *) CALLOC_IN(1,sizeof(char));
+    (*restofheader)[0] = '\0';
 
-  return acc;
+    return acc;
+  }
 } 
 #endif
 
@@ -1691,21 +1719,30 @@ Shortread_chop_primers (T queryseq1, T queryseq2) {
   int nmatches, nmismatches;
   int fulllength1 = queryseq1->fulllength;
   int fulllength2 = queryseq2->fulllength;
+  int minlength;
   char *contents1 = queryseq1->contents_uc;
   char *contents2 = queryseq2->contents_uc;
 
   int best_score = 0, score;
   int jstart, j, i;
 
+  if (fulllength1 < fulllength2) {
+    minlength = fulllength1;
+  } else {
+    minlength = fulllength2;
+  }
+
   debug2(printf("jstart must be < %d - %d and < %d - %d\n",
 		fulllength2,PAIRED_ADAPTER_MINLENGTH,fulllength1,PAIRED_ADAPTER_MINLENGTH));
-  for (jstart = 0; jstart < fulllength2 - PAIRED_ADAPTER_MINLENGTH && jstart < fulllength1 - PAIRED_ADAPTER_MINLENGTH; jstart++) {
+  for (jstart = 0; jstart < minlength - PAIRED_ADAPTER_MINLENGTH; jstart++) {
     debug2(printf("jstart = %d\n",jstart));
     i = 0;
     j = jstart;
     nmismatches = 0;
-    while (nmismatches <= PAIRED_ADAPTER_NMISMATCHES_ALLOWED && i < fulllength1 - jstart) {
+    while (nmismatches <= PAIRED_ADAPTER_NMISMATCHES_ALLOWED && i < minlength - jstart) {
       debug2(printf("At i = %d, j = %d, comparing %c and %c\n",i,j,contents1[i],contents2[j]));
+      assert(i < fulllength1);
+      assert(j < fulllength2);
       if (contents1[i] != contents2[j]) {
 	nmismatches++;
       }
@@ -1728,16 +1765,18 @@ Shortread_chop_primers (T queryseq1, T queryseq2) {
     choppedp = true;
     queryseq1->choplength = chop1;
     queryseq1->chop = (char *) CALLOC_IN(chop1+1,sizeof(char));
-    strncpy(queryseq1->chop,&(queryseq1->contents[queryseq1->fulllength - chop1]),chop1);
-    queryseq1->contents[queryseq1->fulllength - chop1] = '\0';
-    queryseq1->contents_uc[queryseq1->fulllength - chop1] = '\0';
+    queryseq1->fulllength -= chop1;
+    fulllength1 = queryseq1->fulllength;
+
+    strncpy(queryseq1->chop,&(queryseq1->contents[fulllength1]),chop1);
+    queryseq1->contents[fulllength1] = '\0';
+    queryseq1->contents_uc[fulllength1] = '\0';
     
     if (queryseq1->quality != NULL) {
       queryseq1->chop_quality = (char *) CALLOC_IN(chop1+1,sizeof(char));
-      strncpy(queryseq1->chop_quality,&(queryseq1->quality[queryseq1->fulllength - chop1]),chop1);
-      queryseq1->quality[queryseq1->fulllength - chop1] = '\0';
+      strncpy(queryseq1->chop_quality,&(queryseq1->quality[fulllength1]),chop1);
+      queryseq1->quality[fulllength1] = '\0';
     }
-    queryseq1->fulllength -= chop1;
 
   }
 
@@ -1768,21 +1807,30 @@ Shortread_find_primers (T queryseq1, T queryseq2) {
   int nmatches, nmismatches;
   int fulllength1 = queryseq1->fulllength;
   int fulllength2 = queryseq2->fulllength;
+  int minlength;
   char *contents1 = queryseq1->contents_uc;
   char *contents2 = queryseq2->contents_uc;
 
   int best_score = 0, score;
   int jstart, j, i;
 
+  if (fulllength1 < fulllength2) {
+    minlength = fulllength1;
+  } else {
+    minlength = fulllength2;
+  }
+
   debug2(printf("jstart must be < %d - %d and < %d - %d\n",
 		fulllength2,PAIRED_ADAPTER_MINLENGTH,fulllength1,PAIRED_ADAPTER_MINLENGTH));
-  for (jstart = 0; jstart < fulllength2 - PAIRED_ADAPTER_MINLENGTH && jstart < fulllength1 - PAIRED_ADAPTER_MINLENGTH; jstart++) {
+  for (jstart = 0; jstart < minlength - PAIRED_ADAPTER_MINLENGTH; jstart++) {
     debug2(printf("jstart = %d\n",jstart));
     i = 0;
     j = jstart;
     nmismatches = 0;
-    while (nmismatches <= PAIRED_ADAPTER_NMISMATCHES_ALLOWED && i < fulllength1 - jstart) {
+    while (nmismatches <= PAIRED_ADAPTER_NMISMATCHES_ALLOWED && i < minlength - jstart) {
       debug2(printf("At i = %d, j = %d, comparing %c and %c\n",i,j,contents1[i],contents2[j]));
+      assert(i < fulllength1);
+      assert(j < fulllength2);
       if (contents1[i] != contents2[j]) {
 	nmismatches++;
       }
@@ -1871,14 +1919,18 @@ Shortread_find_overlap (T queryseq1, T queryseq2) {
  *   Short reads
  ************************************************************************/
 
+#define SKIPPED 1
+
 T
 Shortread_new (char *acc, char *restofheader, bool filterp,
 	       char *sequence, int sequence_length, char *quality, int quality_length,
-	       int barcode_length, bool invertp, bool copy_acc_p) {
+	       int barcode_length, bool invertp, bool copy_acc_p, bool skipp) {
   T new;
 
   if (sequence_length == 0) {
     return (T) NULL;
+  } else if (skipp == true) {
+    return (T) SKIPPED;
   }
 
   new = (T) MALLOC_IN(sizeof(*new));
@@ -1956,10 +2008,9 @@ Shortread_new (char *acc, char *restofheader, bool filterp,
 }
 
 
-
 T
 Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FILE **input2,
-				 char ***files, int *nfiles,
+				 char ***files, int *nfiles, bool skipp,
 				 int barcode_length, bool invert_first_p, bool invert_second_p) {
   T queryseq1;
   char *acc, *restofheader, *acc2, *restofheader2;
@@ -2021,7 +2072,7 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
     }
 
     debug(printf("** Getting header\n"));
-    if ((acc = input_header(&filterp,&restofheader,*input1)) == NULL) {
+    if ((acc = input_header(&filterp,&restofheader,*input1,skipp)) == NULL) {
       /* fprintf(stderr,"No header\n"); */
       /* File ends after >.  Don't process, but loop again */
       *nextchar = EOF;
@@ -2054,7 +2105,7 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				    Quality,quality_length,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	  quality_length = input_oneline(&(*nextchar),&(Quality[0]),*input1,acc,
 					 /*possible_fasta_header_p*/false);
 	  if (quality_length != fulllength2) {
@@ -2065,14 +2116,14 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	      
 	  (*queryseq2) = Shortread_new(/*acc*/NULL,/*restofheader*/NULL,filterp,Read2,fulllength2,
 				       Quality,quality_length,barcode_length,
-				       invert_second_p,/*copy_acc_p*/false);
+				       invert_second_p,/*copy_acc_p*/false,skipp);
 	} else {
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				    /*quality*/NULL,/*quality_length*/0,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	  (*queryseq2) = Shortread_new(/*acc*/NULL,/*restofheader*/NULL,filterp,Read2,fulllength2,
 				       /*quality*/NULL,/*quality_length*/0,barcode_length,
-				       invert_second_p,/*copy_acc_p*/false);
+				       invert_second_p,/*copy_acc_p*/false,skipp);
 	}
 
       } else {
@@ -2085,7 +2136,7 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 
 	if (*input2 != NULL) {
 	  /* Paired-end in two files */
-	  if ((acc2 = input_header(&filterp,&restofheader2,*input2)) == NULL) {
+	  if ((acc2 = input_header(&filterp,&restofheader2,*input2,skipp)) == NULL) {
 	    /* fprintf(stderr,"No header\n"); */
 	    /* File ends after >.  Don't process, but loop again */
 	    (*queryseq2) = (T) NULL;
@@ -2115,13 +2166,13 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	      } else {
 		queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 					  Quality,quality_length,barcode_length,
-					  invert_first_p,/*copy_acc_p*/false);
+					  invert_first_p,/*copy_acc_p*/false,skipp);
 	      }
 	    } else {
 	      /* End 1 without quality string */
 	      queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 					/*quality*/NULL,/*quality_length*/0,barcode_length,
-					invert_first_p,/*copy_acc_p*/false);
+					invert_first_p,/*copy_acc_p*/false,skipp);
 	    }
 
 	    if (nextchar2 == '+') {
@@ -2135,15 +2186,20 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 			quality_length,fulllength2,acc2);
 		abort();
 	      } else {
-		(*queryseq2) = Shortread_new(acc2,restofheader2,filterp,Read2,fulllength2,
+		/* For FASTA, drop second accession */
+		(*queryseq2) = Shortread_new(/*acc2*/NULL,/*restofheader2*/NULL,filterp,Read2,fulllength2,
 					     Quality,quality_length,barcode_length,
-					     invert_second_p,/*copy_acc_p*/false);
+					     invert_second_p,/*copy_acc_p*/false,skipp);
+		FREE_IN(acc2);
+		FREE_IN(restofheader2);
 	      }
 	    } else {
 	      /* End 2 without quality string */
-	      (*queryseq2) = Shortread_new(acc2,restofheader2,filterp,Read2,fulllength2,
+	      (*queryseq2) = Shortread_new(/*acc2*/NULL,/*restofheader2*/NULL,filterp,Read2,fulllength2,
 					   /*quality*/NULL,/*quality_length*/0,barcode_length,
-					   invert_second_p,/*copy_acc_p*/false);
+					   invert_second_p,/*copy_acc_p*/false,skipp);
+	      FREE_IN(acc2);
+	      FREE_IN(restofheader2);
 	    }
 	  }
 
@@ -2162,13 +2218,13 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	    } else {
 	      queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 					Quality,quality_length,barcode_length,
-					invert_first_p,/*copy_acc_p*/false);
+					invert_first_p,/*copy_acc_p*/false,skipp);
 	    }
 	  } else {
 	    /* Single-end without quality string */
 	    queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				      /*quality*/NULL,/*quality_length*/0,barcode_length,
-				      invert_first_p,/*copy_acc_p*/false);
+				      invert_first_p,/*copy_acc_p*/false,skipp);
 	  }
 	  (*queryseq2) = (T) NULL;
 	}
@@ -2187,7 +2243,7 @@ Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 #ifdef HAVE_ZLIB
 T
 Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input1, gzFile*input2,
-				      char ***files, int *nfiles,
+				      char ***files, int *nfiles, bool skipp,
 				      int barcode_length, bool invert_first_p, bool invert_second_p) {
   T queryseq1;
   char *acc, *restofheader, *acc2, *restofheader2;
@@ -2252,7 +2308,7 @@ Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
     }
 
     debug(printf("** Getting header\n"));
-    if ((acc = input_header_gzip(&filterp,&restofheader,*input1)) == NULL) {
+    if ((acc = input_header_gzip(&filterp,&restofheader,*input1,skipp)) == NULL) {
       /* fprintf(stderr,"No header\n"); */
       /* File ends after >.  Don't process, but loop again */
       *nextchar = EOF;
@@ -2273,10 +2329,10 @@ Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 	/* Paired-end, single file.  queryseq1 is in Read1 and queryseq2 is in Read2 */
 	queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				  /*quality*/NULL,/*quality_length*/0,barcode_length,
-				  invert_first_p,/*copy_acc_p*/false);
+				  invert_first_p,/*copy_acc_p*/false,skipp);
 	(*queryseq2) = Shortread_new(/*acc*/NULL,/*restofheader*/NULL,filterp,Read2,fulllength2,
 				     /*quality*/NULL,/*quality_length*/0,barcode_length,
-				     invert_second_p,/*copy_acc_p*/false);
+				     invert_second_p,/*copy_acc_p*/false,skipp);
 
       } else {
 	if (*input2 == NULL && *nfiles > 0 && force_single_end_p == false &&
@@ -2291,7 +2347,7 @@ Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 
 	if (*input2 != NULL) {
 	  /* Paired-end in two files */
-	  if ((acc2 = input_header_gzip(&filterp,&restofheader2,*input2)) == NULL) {
+	  if ((acc2 = input_header_gzip(&filterp,&restofheader2,*input2,skipp)) == NULL) {
 	    /* fprintf(stderr,"No header\n"); */
 	    /* File ends after >.  Don't process, but loop again */
 	    (*queryseq2) = (T) NULL;
@@ -2310,17 +2366,19 @@ Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 	  } else {
 	    queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				      /*quality*/NULL,/*quality_length*/0,barcode_length,
-				      invert_first_p,/*copy_acc_p*/false);
-	    (*queryseq2) = Shortread_new(acc2,restofheader2,filterp,Read2,fulllength2,
+				      invert_first_p,/*copy_acc_p*/false,skipp);
+	    (*queryseq2) = Shortread_new(/*acc2*/NULL,/*restofheader2*/NULL,filterp,Read2,fulllength2,
 					 /*quality*/NULL,/*quality_length*/0,barcode_length,
-					 invert_second_p,/*copy_acc_p*/false);
+					 invert_second_p,/*copy_acc_p*/false,skipp);
+	    FREE_IN(acc2);
+	    FREE_IN(restofheader2);
 	  }
 
 	} else {
 	  /* Single-end: Either EOF, '>', or '+' */
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				    /*quality*/NULL,/*quality_length*/0,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	  (*queryseq2) = (T) NULL;
 	}
       }
@@ -2338,7 +2396,7 @@ Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 #ifdef HAVE_BZLIB
 T
 Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *input1, Bzip2_T *input2,
-				       char ***files, int *nfiles,
+				       char ***files, int *nfiles, bool skipp,
 				       int barcode_length, bool invert_first_p, bool invert_second_p) {
   T queryseq1;
   char *acc, *restofheader, *acc2, *restofheader2;
@@ -2400,7 +2458,7 @@ Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
     }
 
     debug(printf("** Getting header\n"));
-    if ((acc = input_header_bzip2(&filterp,&restofheader,*input1)) == NULL) {
+    if ((acc = input_header_bzip2(&filterp,&restofheader,*input1,skipp)) == NULL) {
       /* fprintf(stderr,"No header\n"); */
       /* File ends after >.  Don't process, but loop again */
       *nextchar = EOF;
@@ -2421,10 +2479,10 @@ Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 	/* Paired-end, single file.  queryseq1 is in Read1 and queryseq2 is in Read2 */
 	queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				  /*quality*/NULL,/*quality_length*/0,barcode_length,
-				  invert_first_p,/*copy_acc_p*/false);
+				  invert_first_p,/*copy_acc_p*/false,skipp);
 	(*queryseq2) = Shortread_new(/*acc*/NULL,/*restofheader*/NULL,filterp,Read2,fulllength2,
 				     /*quality*/NULL,/*quality_length*/0,barcode_length,
-				     invert_second_p,/*copy_acc_p*/false);
+				     invert_second_p,/*copy_acc_p*/false,skipp);
       } else {
 	if (*input2 == NULL && *nfiles > 0 && force_single_end_p == false &&
 	    (*input2 = Bzip2_new((*files)[0])) != NULL) {
@@ -2435,7 +2493,7 @@ Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 
 	if (*input2 != NULL) {
 	  /* Paired-end in two files */
-	  if ((acc2 = input_header_bzip2(&filterp,&restofheader2,*input2)) == NULL) {
+	  if ((acc2 = input_header_bzip2(&filterp,&restofheader2,*input2,skipp)) == NULL) {
 	    /* fprintf(stderr,"No header\n"); */
 	    /* File ends after >.  Don't process, but loop again */
 	    (*queryseq2) = (T) NULL;
@@ -2454,17 +2512,19 @@ Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 	  } else {
 	    queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				      /*quality*/NULL,/*quality_length*/0,barcode_length,
-				      invert_first_p,/*copy_acc_p*/false);
-	    (*queryseq2) = Shortread_new(acc2,restofheader2,filterp,Read2,fulllength2,
+				      invert_first_p,/*copy_acc_p*/false,skipp);
+	    (*queryseq2) = Shortread_new(/*acc2*/NULL,/*restofheader2*/NULL,filterp,Read2,fulllength2,
 					 /*quality*/NULL,/*quality_length*/0,barcode_length,
-					 invert_second_p,/*copy_acc_p*/false);
+					 invert_second_p,/*copy_acc_p*/false,skipp);
+	    FREE_IN(acc2);
+	    FREE_IN(restofheader2);
 	  }
 
 	} else {
 	  /* Single-end: Either EOF, '>', or '+' */
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength1,
 				    /*quality*/NULL,/*quality_length*/0,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	  (*queryseq2) = (T) NULL;
 	}
       }
@@ -2481,7 +2541,7 @@ Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 
 T
 Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FILE **input2,
-				 char ***files, int *nfiles,
+				 char ***files, int *nfiles, bool skipp,
 				 int barcode_length, bool invert_first_p, bool invert_second_p) {
   T queryseq1;
   char *acc, *restofheader;
@@ -2539,7 +2599,7 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
     }
 
     debug(printf("** Getting header\n"));
-    if ((acc = input_header_fastq(&filterp,&restofheader,*input1)) == NULL) {
+    if ((acc = input_header_fastq(&filterp,&restofheader,*input1,skipp)) == NULL) {
       /* fprintf(stderr,"No header\n"); */
       /* File ends after >.  Don't process, but loop again */
       *nextchar = EOF;
@@ -2555,7 +2615,7 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	/* No quality */
 	queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength,
 				  /*quality*/NULL,/*quality_length*/0,barcode_length,
-				  invert_first_p,/*copy_acc_p*/false);
+				  invert_first_p,/*copy_acc_p*/false,skipp);
       } else {
 	skip_header(*input1);
 	*nextchar = fgetc(*input1);
@@ -2569,7 +2629,7 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	  /* Has quality */
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength,
 				    Quality,quality_length,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	}
       }
     }
@@ -2577,12 +2637,14 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
     if (*input2 == NULL) {
       *queryseq2 = (T) NULL;
     } else {
-      if ((acc = input_header_fastq(&filterp,&restofheader,*input2)) == NULL) {
+      if ((acc = input_header_fastq(&filterp,&restofheader,*input2,skipp)) == NULL) {
 	/* fprintf(stderr,"No header\n"); */
 	/* File ends after >.  Don't process, but loop again */
 	nextchar2 = EOF;
       } else {
-	if (allow_paired_end_mismatch_p == true) {
+	if (skipp == true) {
+	  /* Do not check endings */
+	} else if (allow_paired_end_mismatch_p == true) {
 	  /* Do not strip endings, and keep second accession */
 	  FREE_IN(restofheader);
 	} else {
@@ -2607,7 +2669,7 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	  /* No quality */
 	  (*queryseq2) = Shortread_new(acc,/*restofheader*/NULL,filterp,Read2,fulllength,
 				       /*quality*/NULL,/*quality_length*/0,barcode_length,
-				       invert_second_p,/*copy_acc_p*/false);
+				       invert_second_p,/*copy_acc_p*/false,skipp);
 	} else {
 	  skip_header(*input2);
 	  nextchar2 = fgetc(*input2);
@@ -2621,7 +2683,7 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 	    /* Has quality */
 	    (*queryseq2) = Shortread_new(acc,/*restofheader*/NULL,filterp,Read2,fulllength,
 					 Quality,quality_length,barcode_length,
-					 invert_second_p,/*copy_acc_p*/false);
+					 invert_second_p,/*copy_acc_p*/false,skipp);
 
 	  }
 	}
@@ -2636,7 +2698,7 @@ Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FIL
 #ifdef HAVE_ZLIB
 T
 Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input1, gzFile *input2,
-				      char ***files, int *nfiles,
+				      char ***files, int *nfiles, bool skipp,
 				      int barcode_length, bool invert_first_p, bool invert_second_p) {
   T queryseq1;
   char *acc, *restofheader;
@@ -2699,7 +2761,7 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
     }
 
     debug(printf("** Getting header\n"));
-    if ((acc = input_header_fastq_gzip(&filterp,&restofheader,*input1)) == NULL) {
+    if ((acc = input_header_fastq_gzip(&filterp,&restofheader,*input1,skipp)) == NULL) {
       /* fprintf(stderr,"No header\n"); */
       /* File ends after >.  Don't process. */
       *nextchar = EOF;
@@ -2715,7 +2777,7 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 	/* No quality */
 	queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength,
 				  /*quality*/NULL,/*quality_length*/0,barcode_length,
-				  invert_first_p,/*copy_acc_p*/false);
+				  invert_first_p,/*copy_acc_p*/false,skipp);
       } else {
 	skip_header_gzip(*input1);
 	*nextchar = gzgetc(*input1);
@@ -2729,7 +2791,7 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 	  /* Has quality */
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength,
 				    Quality,quality_length,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	}
       }
     }
@@ -2737,12 +2799,14 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
     if (*input2 == NULL) {
       *queryseq2 = (T) NULL;
     } else {
-      if ((acc = input_header_fastq_gzip(&filterp,&restofheader,*input2)) == NULL) {
+      if ((acc = input_header_fastq_gzip(&filterp,&restofheader,*input2,skipp)) == NULL) {
 	/* fprintf(stderr,"No header\n"); */
 	/* File ends after >.  Don't process, but loop again */
 	nextchar2 = EOF;
       } else {
-	if (allow_paired_end_mismatch_p == true) {
+	if (skipp == true) {
+	  /* Do not check endings */
+	} else if (allow_paired_end_mismatch_p == true) {
 	  /* Do not strip endings, and keep second accession */
 	  FREE_IN(restofheader);
 	} else {
@@ -2767,7 +2831,7 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 	  /* No quality */
 	  (*queryseq2) = Shortread_new(acc,/*restofheader*/NULL,filterp,Read2,fulllength,
 				       /*quality*/NULL,/*quality_length*/0,barcode_length,
-				       invert_second_p,/*copy_acc_p*/false);
+				       invert_second_p,/*copy_acc_p*/false,skipp);
 	} else {
 	  skip_header_gzip(*input2);
 	  nextchar2 = gzgetc(*input2);
@@ -2781,7 +2845,7 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 	    /* Has quality */
 	    (*queryseq2) = Shortread_new(acc,/*restofheader*/NULL,filterp,Read2,fulllength,
 					 Quality,quality_length,barcode_length,
-					 invert_second_p,/*copy_acc_p*/false);
+					 invert_second_p,/*copy_acc_p*/false,skipp);
 	  }
 	}
       }
@@ -2796,7 +2860,7 @@ Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input
 #ifdef HAVE_BZLIB
 T
 Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *input1, Bzip2_T *input2,
-				       char ***files, int *nfiles,
+				       char ***files, int *nfiles, bool skipp,
 				       int barcode_length, bool invert_first_p, bool invert_second_p) {
   T queryseq1;
   char *acc, *restofheader;
@@ -2847,7 +2911,7 @@ Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
     }
 
     debug(printf("** Getting header\n"));
-    if ((acc = input_header_fastq_bzip2(&filterp,&restofheader,*input1)) == NULL) {
+    if ((acc = input_header_fastq_bzip2(&filterp,&restofheader,*input1,skipp)) == NULL) {
       /* fprintf(stderr,"No header\n"); */
       /* File ends after >.  Don't process. */
       *nextchar = EOF;
@@ -2863,7 +2927,7 @@ Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 	/* No quality */
 	queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength,
 				  /*quality*/NULL,/*quality_length*/0,barcode_length,
-				  invert_first_p,/*copy_acc_p*/false);
+				  invert_first_p,/*copy_acc_p*/false,skipp);
       } else {
 	skip_header_bzip2(*input1);
 	*nextchar = bzgetc(*input1);
@@ -2877,7 +2941,7 @@ Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 	  /* Has quality */
 	  queryseq1 = Shortread_new(acc,restofheader,filterp,Read1,fulllength,
 				    Quality,quality_length,barcode_length,
-				    invert_first_p,/*copy_acc_p*/false);
+				    invert_first_p,/*copy_acc_p*/false,skipp);
 	}
       }
     }
@@ -2885,12 +2949,14 @@ Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
     if (*input2 == NULL) {
       *queryseq2 = (T) NULL;
     } else {
-      if ((acc = input_header_fastq_bzip2(&filterp,&restofheader,*input2)) == NULL) {
+      if ((acc = input_header_fastq_bzip2(&filterp,&restofheader,*input2,skipp)) == NULL) {
 	/* fprintf(stderr,"No header\n"); */
 	/* File ends after >.  Don't process, but loop again */
 	nextchar2 = EOF;
       } else {
-	if (allow_paired_end_mismatch_p == true) {
+	if (skipp == true) {
+	  /* Do not check endings */
+	} else if (allow_paired_end_mismatch_p == true) {
 	  /* Do not strip endings, and keep second accession */
 	  FREE_IN(restofheader);
 	} else {
@@ -2915,7 +2981,7 @@ Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 	  /* No quality */
 	  (*queryseq2) = Shortread_new(acc,/*restofheader*/NULL,filterp,Read2,fulllength,
 				       /*quality*/NULL,/*quality_length*/0,barcode_length,
-				       invert_second_p,/*copy_acc_p*/false);
+				       invert_second_p,/*copy_acc_p*/false,skipp);
 	} else {
 	  skip_header_bzip2(*input2);
 	  nextchar2 = bzgetc(*input2);
@@ -2929,7 +2995,7 @@ Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *inp
 	    /* Has quality */
 	    (*queryseq2) = Shortread_new(acc,/*restofheader*/NULL,filterp,Read2,fulllength,
 					 Quality,quality_length,barcode_length,
-					 invert_second_p,/*copy_acc_p*/false);
+					 invert_second_p,/*copy_acc_p*/false,skipp);
 	  }
 	}
       }
@@ -2964,9 +3030,9 @@ Shortread_print_header (FILE *fp, T queryseq1, T queryseq2) {
 
 
 void
-Shortread_print_query_singleend_fasta (FILE *fp, T queryseq) {
+Shortread_print_query_singleend_fasta (FILE *fp, T queryseq, T headerseq) {
   fprintf(fp,">");
-  Shortread_print_header(fp,queryseq,/*queryseq2*/NULL);
+  Shortread_print_header(fp,headerseq,/*queryseq2*/NULL);
   /* fprintf(fp,"\n"); -- included in header */
   Shortread_print_oneline(fp,queryseq);
   fprintf(fp,"\n");
@@ -2975,9 +3041,9 @@ Shortread_print_query_singleend_fasta (FILE *fp, T queryseq) {
 }
 
 void
-Shortread_print_query_singleend_fastq (FILE *fp, T queryseq) {
+Shortread_print_query_singleend_fastq (FILE *fp, T queryseq, T headerseq) {
   fprintf(fp,"@");
-  Shortread_print_header(fp,queryseq,/*queryseq2*/NULL);
+  Shortread_print_header(fp,headerseq,/*queryseq2*/NULL);
   /* fprintf(fp,"\n"); -- included in header */
   Shortread_print_oneline(fp,queryseq);
   fprintf(fp,"\n");
diff --git a/src/shortread.h b/src/shortread.h
index bc9c51e..6a7d469 100644
--- a/src/shortread.h
+++ b/src/shortread.h
@@ -1,4 +1,4 @@
-/* $Id: shortread.h 98808 2013-06-18 22:16:54Z twu $ */
+/* $Id: shortread.h 115430 2013-11-18 18:19:36Z twu $ */
 #ifndef SHORTREAD_INCLUDED
 #define SHORTREAD_INCLUDED
 #include <stdio.h>
@@ -82,36 +82,36 @@ Shortread_find_overlap (T queryseq1, T queryseq2);
 extern T
 Shortread_new (char *acc, char *restofheader, bool filterp,
 	       char *sequence, int sequence_length, char *quality, int quality_length,
-	       int barcode_length, bool invertp, bool copy_acc_p);
+	       int barcode_length, bool invertp, bool copy_acc_p, bool skipp);
 
 extern T
 Shortread_read_fasta_shortreads (int *nextchar, T *queryseq2, FILE **input1, FILE **input2,
-				 char ***files, int *nfiles,
+				 char ***files, int *nfiles, bool skipp,
 				 int barcode_length, bool invert_first_p, bool invert_second_p);
 extern T
 Shortread_read_fastq_shortreads (int *nextchar, T *queryseq2, FILE **input1, FILE **input2,
-				 char ***files, int *nfiles,
+				 char ***files, int *nfiles, bool skipp,
 				 int barcode_length, bool invert_first_p, bool invert_second_p);
 
 #ifdef HAVE_ZLIB
 extern T
 Shortread_read_fasta_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input1, gzFile *input2,
-				      char ***files, int *nfiles,
+				      char ***files, int *nfiles, bool skipp,
 				      int barcode_length, bool invert_first_p, bool invert_second_p);
 extern T
 Shortread_read_fastq_shortreads_gzip (int *nextchar, T *queryseq2, gzFile *input1, gzFile *input2,
-				      char ***files, int *nfiles,
+				      char ***files, int *nfiles, bool skipp,
 				      int barcode_length, bool invert_first_p, bool invert_second_p);
 #endif
 
 #ifdef HAVE_BZLIB
 extern T
 Shortread_read_fasta_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *input1, Bzip2_T *input2,
-				       char ***files, int *nfiles,
+				       char ***files, int *nfiles, bool skipp,
 				       int barcode_length, bool invert_first_p, bool invert_second_p);
 extern T
 Shortread_read_fastq_shortreads_bzip2 (int *nextchar, T *queryseq2, Bzip2_T *input1, Bzip2_T *input2,
-				       char ***files, int *nfiles,
+				       char ***files, int *nfiles, bool skipp,
 				       int barcode_length, bool invert_first_p, bool invert_second_p);
 #endif
 
@@ -120,9 +120,9 @@ extern void
 Shortread_print_header (FILE *fp, T queryseq1, T queryseq2);
 
 extern void
-Shortread_print_query_singleend_fasta (FILE *fp, T queryseq);
+Shortread_print_query_singleend_fasta (FILE *fp, T queryseq, T headerseq);
 extern void
-Shortread_print_query_singleend_fastq (FILE *fp, T queryseq);
+Shortread_print_query_singleend_fastq (FILE *fp, T queryseq, T headerseq);
 extern void
 Shortread_print_query_pairedend_fasta (FILE *fp, T queryseq1, T queryseq2,
 				      bool invert_first_p, bool invert_second_p);
diff --git a/src/smooth.c b/src/smooth.c
index c358188..1dba6cc 100644
--- a/src/smooth.c
+++ b/src/smooth.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: smooth.c 90983 2013-04-01 19:42:40Z twu $";
+static char rcsid[] = "$Id: smooth.c 135447 2014-05-07 22:25:45Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -13,7 +13,10 @@ static char rcsid[] = "$Id: smooth.c 90983 2013-04-01 19:42:40Z twu $";
 #include "comp.h"
 #include "pair.h"
 #include "pairdef.h"
+#include "listdef.h"
 #include "intlist.h"
+#include "doublelist.h"
+#include "pbinom.h"
 
 
 /* Will examine internal exons smaller than this prior to single gaps */
@@ -27,6 +30,11 @@ static char rcsid[] = "$Id: smooth.c 90983 2013-04-01 19:42:40Z twu $";
 /* Will delete internal exons smaller than this at ends */
 #define SHORTEXONLEN_END 10
 
+
+#define LOOSE_EXON_PVALUE 0.05
+#define STRICT_EXON_PVALUE 1e-4
+
+
 #ifdef GSNAP
 /* Allow more intron predictions in ends of short reads */
 #define SHORTEXONPROB_END 0.10
@@ -50,6 +58,8 @@ typedef enum {KEEP, DELETE, MARK} Exonstatus_T;
 static bool
 big_gap_p (Pair_T pair, bool bysizep) {
 
+#if 0
+  /* No longer following the logic below */
   /* When bysizep is true, single gaps should have been solved already
      (in pass 2), so any gap remaining must be a poor one (must have
      been removed because of a negative score), and we should consider
@@ -60,6 +70,7 @@ big_gap_p (Pair_T pair, bool bysizep) {
      section was deleted in stage 3, but subsequent smoothing failed
      to recognize the short exon between this section and the next
      intron. */
+#endif
 
   if (bysizep == true) {
     return true;
@@ -72,11 +83,11 @@ big_gap_p (Pair_T pair, bool bysizep) {
 
 
 static int *
-get_exonlengths (int **exonmatches, int *nexons, List_T pairs, bool bysizep) {
+get_exonlengths (int **exonmatches, int **exonprotects, int *nexons, List_T pairs, bool bysizep) {
   int *exonlengths;
-  Intlist_T list = NULL, matchlist = NULL;
+  Intlist_T list = NULL, matchlist = NULL, protectlist = NULL;
   Pair_T firstpair, pair;
-  int querypos, nmatches = 0;
+  int querypos, nmatches = 0, nprotected = 0;
 #ifdef DEBUG
   int i;
 #endif
@@ -89,18 +100,22 @@ get_exonlengths (int **exonmatches, int *nexons, List_T pairs, bool bysizep) {
     if (pair->gapp == true && big_gap_p(pair,bysizep) == true) {
       list = Intlist_push(list,querypos-firstpair->querypos+1);
       matchlist = Intlist_push(matchlist,nmatches);
+      protectlist = Intlist_push(protectlist,nprotected);
 
       pairs = List_next(pairs);
       if (pairs != NULL) {
 	firstpair = List_head(pairs);
 	querypos = firstpair->querypos;
-	nmatches = 0;
+	nmatches = nprotected = 0;
       }
     } else {
       querypos = pair->querypos;
       if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP) {
 	nmatches++;
       }
+      if (pair->protectedp == true) {
+	nprotected++;
+      }
       pairs = List_next(pairs);
     }
   }
@@ -109,9 +124,12 @@ get_exonlengths (int **exonmatches, int *nexons, List_T pairs, bool bysizep) {
   list = Intlist_reverse(list);
   matchlist = Intlist_push(matchlist,nmatches);
   matchlist = Intlist_reverse(matchlist);
+  protectlist = Intlist_push(protectlist,nprotected);
+  protectlist = Intlist_reverse(protectlist);
 
   exonlengths = Intlist_to_array(&(*nexons),list);
   *exonmatches = Intlist_to_array(&(*nexons),matchlist);
+  *exonprotects = Intlist_to_array(&(*nexons),protectlist);
   debug(
 	printf("%d exons: ",*nexons);
 	for (i = 0; i < *nexons; i++) {
@@ -121,10 +139,134 @@ get_exonlengths (int **exonmatches, int *nexons, List_T pairs, bool bysizep) {
 	);
   Intlist_free(&list);
   Intlist_free(&matchlist);
+  Intlist_free(&protectlist);
 
   return exonlengths;
 }
 
+
+static void
+get_exonmatches (int *total_matches, int *total_denominator, int **exonmatches, int **exon_denominator,
+		 int *nexons, List_T pairs) {
+  Intlist_T matchlist = NULL, denominatorlist = NULL;
+  Pair_T firstpair, pair;
+  int querypos, nmatches = 0, nmismatches = 0;
+#ifdef DEBUG
+  int i;
+#endif
+
+  *total_matches = *total_denominator = 0;
+
+  firstpair = List_head(pairs);
+  querypos = firstpair->querypos;
+
+  while (pairs != NULL) {
+    pair = List_head(pairs);
+    if (pair->gapp == true && big_gap_p(pair,/*bysizep*/false) == true) {
+      matchlist = Intlist_push(matchlist,nmatches);
+      denominatorlist = Intlist_push(denominatorlist,nmatches + nmismatches);
+      *total_matches += nmatches;
+      *total_denominator += (nmatches + nmismatches);
+
+      pairs = List_next(pairs);
+      if (pairs != NULL) {
+	firstpair = List_head(pairs);
+	querypos = firstpair->querypos;
+	nmatches = nmismatches = 0;
+      }
+    } else {
+      querypos = pair->querypos;
+      if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP) {
+	nmatches++;
+      } else {
+	nmismatches++;
+      }
+      pairs = List_next(pairs);
+    }
+  }
+
+  matchlist = Intlist_push(matchlist,nmatches);
+  matchlist = Intlist_reverse(matchlist);
+  denominatorlist = Intlist_push(denominatorlist,nmatches + nmismatches);
+  denominatorlist = Intlist_reverse(denominatorlist);
+  *total_matches += nmatches;
+  *total_denominator += (nmatches + nmismatches);
+
+  *exonmatches = Intlist_to_array(&(*nexons),matchlist);
+  *exon_denominator = Intlist_to_array(&(*nexons),denominatorlist);
+  debug(
+	printf("%d exons: ",*nexons);
+	for (i = 0; i < *nexons; i++) {
+	  printf("%d matches, %d denominator,",(*exonmatches)[i],(*exon_denominator)[i]);
+	}
+	printf("\n");
+	);
+  Intlist_free(&denominatorlist);
+  Intlist_free(&matchlist);
+
+  return;
+}
+
+
+
+static List_T
+get_intron_neighborhoods (int **intron_matches_left, int **intron_denominator_left,
+			  int **intron_matches_right, int **intron_denominator_right,
+			  int nintrons, List_T pairs) {
+  List_T path, p;
+  Pair_T pair;
+  int introni;
+  int i;
+
+  *intron_matches_left = (int *) CALLOC(nintrons,sizeof(int));
+  *intron_denominator_left = (int *) CALLOC(nintrons,sizeof(int));
+  *intron_matches_right = (int *) CALLOC(nintrons,sizeof(int));
+  *intron_denominator_right = (int *) CALLOC(nintrons,sizeof(int));
+
+  introni = -1;
+  for (p = pairs; p != NULL; p = List_next(p)) {
+    pair = List_head(p);
+    if (pair->gapp == true && big_gap_p(pair,/*bysizep*/false) == true) {
+      introni += 1;
+      i = 0;
+      
+    } else if (introni >= 0 && i < 25) {
+      if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP) {
+	(*intron_matches_left)[introni] += 1;
+      }
+      (*intron_denominator_left)[introni] += 1;
+      i++;
+
+    } else {
+      i++;
+    }
+  }
+
+  path = List_reverse(pairs);
+  introni = nintrons;
+  for (p = path; p != NULL; p = List_next(p)) {
+    pair = List_head(p);
+    if (pair->gapp == true && big_gap_p(pair,/*bysizep*/false) == true) {
+      introni -= 1;
+      i = 0;
+      
+    } else if (introni < nintrons && i < 25) {
+      if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP) {
+	(*intron_matches_right)[introni] += 1;
+      }
+      (*intron_denominator_right)[introni] += 1;
+      i++;
+
+    } else {
+      i++;
+    }
+  }
+
+  pairs = List_reverse(path);
+  return pairs;
+}
+
+
 static int *
 get_intronlengths (int *nintrons, List_T pairs, bool bysizep) {
   int *intronlengths, length;
@@ -170,6 +312,41 @@ get_intronlengths (int *nintrons, List_T pairs, bool bysizep) {
 }
 
 
+static void
+get_intronprobs (double **donor_probs, double **acceptor_probs, int *nintrons, List_T pairs) {
+  Doublelist_T donor_prob_list = NULL, acceptor_prob_list = NULL;
+  Pair_T pair;
+#ifdef DEBUG
+  int i;
+#endif
+
+  while (pairs != NULL) {
+    pair = List_head(pairs);
+    if (pair->gapp == true && big_gap_p(pair,/*bysizep*/false) == true) {
+      donor_prob_list = Doublelist_push(donor_prob_list,pair->donor_prob);
+      acceptor_prob_list = Doublelist_push(acceptor_prob_list,pair->acceptor_prob);
+    }
+    pairs = List_next(pairs);
+  }
+
+  donor_prob_list = Doublelist_reverse(donor_prob_list);
+  acceptor_prob_list = Doublelist_reverse(acceptor_prob_list);
+  *donor_probs = Doublelist_to_array(&(*nintrons),donor_prob_list);
+  *acceptor_probs = Doublelist_to_array(&(*nintrons),acceptor_prob_list);
+  debug(
+	printf("%d introns: ",*nintrons);
+	for (i = 0; i < *nintrons; i++) {
+	  printf("%f+%f,",(*donor_probs)[i],(*acceptor_probs)[i]);
+	}
+	printf("\n");
+	);
+  Doublelist_free(&acceptor_prob_list);
+  Doublelist_free(&donor_prob_list);
+
+  return;
+}
+
+
 static const Except_T length_error = {"Negative exon or intron length"};
 
 static double
@@ -234,8 +411,9 @@ zero_net_gap (int *starti, int *startj, int i, int j, int *intronlengths) {
 
   debug(printf("zero_net_gap: best result is %d from %d to %d\n",bestnetgap,*starti,*startj));
 
-  if (bestnetgap > ZERONETGAP) {
-    debug(printf("zero_net_gap: not recommending any deletions\n"));
+  if (0 && bestnetgap > ZERONETGAP) {
+    debug(printf("zero_net_gap: not recommending any deletions because bestnetgap %d > zeronetgap %d\n",
+		 bestnetgap,ZERONETGAP));
     *starti = *startj = -1;
   }
 
@@ -291,8 +469,9 @@ find_internal_shorts_by_netgap (bool *deletep, int *exonmatches, int nexons,
   return exonstatus;
 }
 
+
 static int *
-find_internal_shorts_by_size (bool *shortp, bool *deletep, int *exonmatches, int nexons,
+find_internal_shorts_by_size (bool *shortp, bool *deletep, int *exonmatches, int *exonprotects, int nexons,
 			      int *intronlengths, int stage2_indexsize) {
   int *exonstatus;
   int i;
@@ -309,20 +488,158 @@ find_internal_shorts_by_size (bool *shortp, bool *deletep, int *exonmatches, int
   for (i = 1; i < nexons - 1; i++) {
     exonlen = exonmatches[i];
     intronlen = intronlengths[i-1]+intronlengths[i];
-    prob = compute_prob(exonlen+4,intronlen,stage2_indexsize); /* Hack: add 4 for possible canonical dinucleotides */
-    if (prob > DELETE_THRESHOLD) {
+    if ((double) exonprotects[i] > 0.50 * (double) exonlen) {
+      /* Keep protected exon */
+    } else {
+      prob = compute_prob(exonlen,intronlen,stage2_indexsize); /* Hack: add 4 for possible canonical dinucleotides */
+      if (prob > DELETE_THRESHOLD) {
+	*deletep = true;
+	exonstatus[i] = DELETE;
+      } else if (prob > MARK_THRESHOLD) {
+	*shortp = true;
+	exonstatus[i] = MARK;
+      }
+    }
+  }
+
+  return exonstatus;
+}
+
+
+static bool
+bad_intron_p (double donor_prob, double acceptor_prob, int intron_matches_left, int intron_denominator_left,
+	      int intron_matches_right, int intron_denominator_right, int total_matches, int total_denominator) {
+  double theta_left, theta_right;
+
+  if (donor_prob < 0.9) {
+    debug(printf("Intron with donor_prob %f is bad\n",donor_prob));
+    return true;
+  } else if (acceptor_prob < 0.9) {
+    debug(printf("Intron with acceptor_prob %f is bad\n",acceptor_prob));
+    return true;
+  } else {
+    theta_left = (double) (total_matches - intron_matches_left)/(double) (total_denominator - intron_denominator_left + 1);
+    if (theta_left > 1.0) {
+      theta_left = 1.0;
+    }
+    if (Pbinom(intron_matches_left,intron_denominator_left,theta_left) < 1e-3) {
+      debug(printf("Intron with matches %d/%d is bad with pvalue %f\n",
+		   intron_matches_left,intron_denominator_left,Pbinom(intron_matches_left,intron_denominator_left,theta_left)));
+      return true;
+    } else {
+      theta_right = (double) (total_matches - intron_matches_right)/(double) (total_denominator - intron_denominator_right + 1);
+      if (theta_right > 1.0) {
+	theta_right = 1.0;
+      }
+      if (Pbinom(intron_matches_right,intron_denominator_right,theta_right) < 1e-3) {
+	debug(printf("Intron with matches %d/%d is bad with pvalue %f\n",
+		     intron_matches_right,intron_denominator_right,Pbinom(intron_matches_right,intron_denominator_right,theta_right)));
+	return true;
+      } else {
+	debug(printf("Intron with matches %d/%d and %d/%d is okay with pvalues %f and %f\n",
+		     intron_matches_left,intron_denominator_left,intron_matches_right,intron_denominator_right,
+		     Pbinom(intron_matches_left,intron_denominator_left,theta_left),
+		     Pbinom(intron_matches_right,intron_denominator_right,theta_right)));
+	return false;
+      }
+    }
+  }
+}
+
+
+struct Smoothcell_T {
+  int exoni;
+  double pvalue;
+  int exonstatus;
+};
+
+static int
+Smoothcell_cmp (const void *x, const void *y) {
+  struct Smoothcell_T a = * (struct Smoothcell_T *) x;
+  struct Smoothcell_T b = * (struct Smoothcell_T *) y;
+
+  if (a.pvalue < b.pvalue) {
+    return -1;
+  } else if (b.pvalue < a.pvalue) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+static int *
+find_internal_bads_by_prob (bool *deletep, int *exonmatches, int *exon_denominator, int nexons,
+			    double *donor_probs, double *acceptor_probs,
+			    int *intron_matches_left, int *intron_denominator_left,
+			    int *intron_matches_right, int *intron_denominator_right,
+			    int total_matches, int total_denominator) {
+  struct Smoothcell_T *cells;
+  int *exonstatus;
+  int starti, startj, i, j;
+  int exonlen;
+  double theta_1, theta0, theta1;
+  int numerator_1, denominator_1, numerator0, denominator0, numerator1, denominator1;
+  bool intron1_bad_p, intron2_bad_p;
+  
+  double worst_exon_pvalue = 1.0, pvalue;
+  int worst_exoni = -1;
+
+  *deletep = false;
+  exonstatus = (int *) MALLOC(nexons * sizeof(int));
+  cells = (struct Smoothcell_T *) MALLOC(nexons * sizeof(struct Smoothcell_T));
+  for (i = 0; i < nexons; i++) {
+    exonstatus[i] = KEEP;
+    cells[i].exoni = i;
+    cells[i].pvalue = 1.0;
+    cells[i].exonstatus = KEEP;
+  }
+  
+  /* Mark short middle exons */
+  intron1_bad_p = bad_intron_p(donor_probs[0],acceptor_probs[0],intron_matches_left[0],intron_denominator_left[0],
+			       intron_matches_right[0],intron_denominator_right[0],total_matches,total_denominator);
+  for (i = 1; i < nexons - 1; i++) {
+    /* exonlen = exonmatches[i]; */
+    intron2_bad_p = bad_intron_p(donor_probs[i],acceptor_probs[i],intron_matches_left[i],intron_denominator_left[i],
+				 intron_matches_right[i],intron_denominator_right[i],total_matches,total_denominator);
+    debug(printf("For exon %d, left intron bad %d, right intron bad %d\n",i,intron1_bad_p,intron2_bad_p));
+
+    if (intron1_bad_p == true && intron2_bad_p == true) {
+      numerator0 = exonmatches[i];
+      denominator0 = exon_denominator[i];
+      theta0 = (double) (total_matches - numerator0 + 1)/(double) (total_denominator - denominator0 + 1);
+      debug(printf("  Checking %d matches, %d denominator, theta %f => pvalue %g\n",
+		   numerator0,denominator0,theta0,Pbinom(numerator0,denominator0,theta0)));
+      if ((pvalue = Pbinom(numerator0,denominator0,theta0)) < STRICT_EXON_PVALUE) {
+	cells[i].pvalue = pvalue;
+	cells[i].exonstatus = DELETE;
+      }
+
+    } else {
+      /* Do nothing */
+    }
+
+    intron1_bad_p = intron2_bad_p;
+  }
+
+  qsort(cells,nexons,sizeof(struct Smoothcell_T),Smoothcell_cmp);
+  i = 0;
+  while (i < nexons && cells[i].pvalue < STRICT_EXON_PVALUE) {
+    if (cells[i].exonstatus == DELETE) {
       *deletep = true;
-      exonstatus[i] = DELETE;
-    } else if (prob > MARK_THRESHOLD) {
-      *shortp = true;
-      exonstatus[i] = MARK;
+      exonstatus[cells[i].exoni] = DELETE;
+      exonstatus[cells[i].exoni - 1] = KEEP; /* Prevent consecutive deletes */
+      exonstatus[cells[i].exoni + 1] = KEEP; /* Prevent consecutive deletes */
     }
+    i++;
   }
+  FREE(cells);
 
   return exonstatus;
 }
 
 
+
 /* For ends, we turn off the indexsize parameter */
 static int *
 find_end_shorts (bool *deletep, int *exonmatches, int nexons, int *intronlengths) {
@@ -365,36 +682,56 @@ find_end_shorts (bool *deletep, int *exonmatches, int nexons, int *intronlengths
 }
 
 
-static List_T
-delete_and_mark_exons (List_T pairs,
-#ifdef WASTE
-		       Pairpool_T pairpool,
+#ifdef DEBUG
+static void
+print_exon_status (int *exonstatus, int *exonmatches, int *exonprotects, int nexons) {
+  int i;
+
+  if (exonprotects == NULL) {
+    for (i = 0; i < nexons; i++) {
+      if (exonstatus[i] == KEEP) {
+	printf("Long exon %d of %d matches => keep\n",i,exonmatches[i]);
+      } else if (exonstatus[i] == MARK) {
+	printf("Short exon %d of %d matches => mark\n",i,exonmatches[i]);
+      } else if (exonstatus[i] == DELETE) {
+	printf("Exon %d of %d matches => delete\n",i,exonmatches[i]);
+      } else {
+	abort();
+      }
+    }
+  } else {
+    for (i = 0; i < nexons; i++) {
+      if (exonstatus[i] == KEEP) {
+	printf("Long exon %d of %d matches (%d protected) => keep\n",i,exonmatches[i],exonprotects[i]);
+      } else if (exonstatus[i] == MARK) {
+	printf("Short exon %d of %d matches (%d protected) => mark\n",i,exonmatches[i],exonprotects[i]);
+      } else if (exonstatus[i] == DELETE) {
+	printf("Exon %d of %d matches (%d protected) => delete\n",i,exonmatches[i],exonprotects[i]);
+      } else {
+	abort();
+      }
+    }
+  }
+
+  return;
+}
 #endif
+
+
+static List_T
+delete_and_mark_exons (List_T pairs, Pairpool_T pairpool,
 		       int *exonstatus, bool markp, bool bysizep) {
-  List_T newpairs = NULL, pairptr;
+  List_T newpairs = NULL;
   Pair_T pair;
-  int currstatus, prevstatus;
+  int currstatus, prevstatus = KEEP;
   int i;
 
-  debug(
-	for (i = 0; i < nexons; i++) {
-	  if (exonstatus[i] == KEEP) {
-	    printf("Long exon %d of %d matches => keep\n",i,exonmatches[i]);
-	  } else if (exonstatus[i] == MARK) {
-	    printf("Short exon %d of %d matches => mark\n",i,exonmatches[i]);
-	  } else if (exonstatus[i] == DELETE) {
-	    printf("Exon %d of %d matches => delete\n",i,exonmatches[i]);
-	  } else {
-	    abort();
-	  }
-	}
-	);
-
   i = 0;
   currstatus = exonstatus[i];
   while (pairs != NULL) {
-    pairptr = pairs;
-    pairs = Pairpool_pop(pairs,&pair);
+    /* pairptr = pairs; */
+    /* pairs = Pairpool_pop(pairs,&pair); */
+    pair = (Pair_T) pairs->first;
     if (pair->gapp == true && big_gap_p(pair,bysizep) == true) {
       prevstatus = currstatus;
       currstatus = exonstatus[++i];
@@ -403,29 +740,48 @@ delete_and_mark_exons (List_T pairs,
 #ifdef WASTE
 	newpairs = Pairpool_push_existing(newpairs,pairpool,pair);
 #else
-	newpairs = List_push_existing(newpairs,pairptr);
+	newpairs = List_transfer_one(newpairs,&pairs);
 #endif
+      } else {
+	pairs = Pairpool_pop(pairs,&pair);
       }
 
     } else if (currstatus == KEEP) {
       /* debug(printf("Marking position %d as keep\n",pair->querypos)); */
+      if (prevstatus == DELETE) {
+	if (newpairs != NULL) {
+	  newpairs = Pairpool_push_gapholder(newpairs,pairpool,/*queryjump*/0,/*genomejump*/0,
+					     /*leftpair*/newpairs->first,/*rightpair*/pair,/*knownp*/false);
+	}
+	prevstatus = /*currstatus*/ KEEP;
+      }
+
 #ifdef WASTE
       newpairs = Pairpool_push_existing(newpairs,pairpool,pair);
 #else
-      newpairs = List_push_existing(newpairs,pairptr);
+      newpairs = List_transfer_one(newpairs,&pairs);
 #endif
     } else if (currstatus == MARK) {
       debug(printf("Marking position %d as short in pair %p\n",pair->querypos,pair));
+      if (prevstatus == DELETE) {
+	if (newpairs != NULL) {
+	  newpairs = Pairpool_push_gapholder(newpairs,pairpool,/*queryjump*/0,/*genomejump*/0,
+					     /*leftpair*/newpairs->first,/*rightpair*/pair,/*knownp*/false);
+	}
+	prevstatus = /*currstatus*/ MARK;
+      }
+
       if (markp == true) {
 	pair->shortexonp = true;
       }
 #ifdef WASTE
       newpairs = Pairpool_push_existing(newpairs,pairpool,pair);
 #else
-      newpairs = List_push_existing(newpairs,pairptr);
+      newpairs = List_transfer_one(newpairs,&pairs);
 #endif
     } else {
       debug(printf("Marking position %d for deletion\n",pair->querypos));
+      pairs = Pairpool_pop(pairs,&pair);
     }
   }
 
@@ -534,8 +890,9 @@ mark_exons (List_T pairs,
 #endif
 
 
-static void
-smooth_reset (List_T pairs) {
+
+void
+Smooth_reset (List_T pairs) {
   List_T p;
   Pair_T pair;
 
@@ -548,26 +905,27 @@ smooth_reset (List_T pairs) {
 
 
 
+/* Needed for low-identity alignments */
 /* Assumes pairs are from 1..querylength.  Reverses the pairs to be querylength..1 */
 List_T
 Smooth_pairs_by_netgap (bool *deletep, List_T pairs, Pairpool_T pairpool) {
   int *exonstatus;
-  int *exonlengths, *exonmatches, *intronlengths, nexons, nintrons;
+  int *exonlengths, *exonmatches, *exonprotects, *intronlengths, nexons, nintrons;
 #ifdef DEBUG
   int i;
 #endif
 
   *deletep = false;
-  smooth_reset(pairs);
+  /* smooth_reset(pairs); */
   if (pairs != NULL) {
     /* Remove internal shorts */
-    exonlengths = get_exonlengths(&exonmatches,&nexons,pairs,/*bysizep*/false);
+    exonlengths = get_exonlengths(&exonmatches,&exonprotects,&nexons,pairs,/*bysizep*/false);
     intronlengths = get_intronlengths(&nintrons,pairs,/*bysizep*/false);
 
     debug(
 	  printf("Beginning of smoothing.  Initial structure:\n");
 	  for (i = 0; i < nexons-1; i++) {
-	    printf("Exon %d of length %d (%d matches)\n",i,exonlengths[i],exonmatches[i]);
+	    printf("Exon %d of length %d (%d matches, %d protects)\n",i,exonlengths[i],exonmatches[i],exonprotects[i]);
 	    printf("Intron %d of length %d\n",i,intronlengths[i]);
 	  }
 	  printf("Exon %d of length %d (%d matches)\n",nexons-1,exonlengths[nexons-1],exonmatches[nexons-1]);
@@ -577,11 +935,8 @@ Smooth_pairs_by_netgap (bool *deletep, List_T pairs, Pairpool_T pairpool) {
     exonstatus = find_internal_shorts_by_netgap(&(*deletep),exonmatches,nexons,intronlengths);
     debug(printf("\nRemove internal shorts\n"));
     if (*deletep == true) {
-      pairs = delete_and_mark_exons(pairs,
-#ifdef WASTE
-				    pairpool,
-#endif
-				    exonstatus,/*markp*/false,/*bysizep*/false);
+      debug(print_exon_status(exonstatus,exonmatches,exonprotects,nexons));
+      pairs = delete_and_mark_exons(pairs,pairpool,exonstatus,/*markp*/false,/*bysizep*/false);
     }
     
 #if 0
@@ -598,6 +953,7 @@ Smooth_pairs_by_netgap (bool *deletep, List_T pairs, Pairpool_T pairpool) {
 
     FREE(exonstatus);
     FREE(intronlengths);
+    FREE(exonprotects);
     FREE(exonmatches);
     FREE(exonlengths);
 
@@ -612,63 +968,62 @@ Smooth_pairs_by_netgap (bool *deletep, List_T pairs, Pairpool_T pairpool) {
 List_T
 Smooth_pairs_by_size (bool *shortp, bool *deletep, List_T pairs, Pairpool_T pairpool, int stage2_indexsize) {
   int *exonstatus;
-  int *exonlengths, *exonmatches, *intronlengths, nexons, nintrons;
+  int *exonlengths, *exonmatches, *exonprotects, *intronlengths, nexons, nintrons;
   bool delete1p, delete2p;
 #ifdef DEBUG
   int i;
 #endif
 
   *shortp = *deletep = false;
-  smooth_reset(pairs);
+
+#if 0
+  /* Should be handled instead by trim_noncanonical_end5 and trim_noncanonical_end3 */
+  /* smooth_reset(pairs); */
   if (pairs != NULL) {
     /* Trim ends */
-    exonlengths = get_exonlengths(&exonmatches,&nexons,pairs,/*bysizep*/true);
+    exonlengths = get_exonlengths(&exonmatches,&exonprotects,&nexons,pairs,/*bysizep*/true);
     intronlengths = get_intronlengths(&nintrons,pairs,/*bysizep*/true);
 
     debug(printf("\nFind end shorts\n"));
     exonstatus = find_end_shorts(&delete1p,exonmatches,nexons,intronlengths);
     if (delete1p == true) {
       *deletep = true;
-      pairs = delete_and_mark_exons(pairs,
-#ifdef WASTE
-				    pairpool,
-#endif
-				    exonstatus,/*markp*/false,/*bysizep*/true);
+      debug(print_exon_status(exonstatus,exonmatches,exonprotects,nexons));
+      pairs = delete_and_mark_exons(pairs,pairpool,exonstatus,/*markp*/false,/*bysizep*/true);
     }
 
     FREE(exonstatus);
 
     FREE(intronlengths);
+    FREE(exonprotects);
     FREE(exonmatches);
     FREE(exonlengths);
   }
+#endif
 
   if (pairs != NULL) {
     /* Remove internal shorts */
-    exonlengths = get_exonlengths(&exonmatches,&nexons,pairs,/*bysizep*/true);
+    exonlengths = get_exonlengths(&exonmatches,&exonprotects,&nexons,pairs,/*bysizep*/true);
     intronlengths = get_intronlengths(&nintrons,pairs,/*bysizep*/true);
 
     debug(
 	  printf("Beginning of smoothing.  Initial structure:\n");
 	  for (i = 0; i < nexons-1; i++) {
-	    printf("Exon %d of length %d (%d matches)\n",i,exonlengths[i],exonmatches[i]);
+	    printf("Exon %d of length %d (%d matches, %d protects)\n",i,exonlengths[i],exonmatches[i],exonprotects[i]);
 	    printf("Intron %d of length %d\n",i,intronlengths[i]);
 	  }
 	  printf("Exon %d of length %d (%d matches)\n",nexons-1,exonlengths[nexons-1],exonmatches[nexons-1]);
 	  );
 
     debug(printf("\nFind internal shorts\n"));
-    exonstatus = find_internal_shorts_by_size(&(*shortp),&delete2p,exonmatches,nexons,intronlengths,stage2_indexsize);
+    exonstatus = find_internal_shorts_by_size(&(*shortp),&delete2p,exonmatches,exonprotects,nexons,intronlengths,stage2_indexsize);
     debug(printf("\nRemove internal shorts\n"));
     if (delete2p == true) {
       *deletep = true;
     }
     if (delete2p == true || *shortp == true) {
-      pairs = delete_and_mark_exons(pairs,
-#ifdef WASTE
-				    pairpool,
-#endif
-				    exonstatus,/*markp*/true,/*bysizep*/true);
+      debug(print_exon_status(exonstatus,exonmatches,exonprotects,nexons));
+      pairs = delete_and_mark_exons(pairs,pairpool,exonstatus,/*markp*/true,/*bysizep*/true);
     }
 
     debug(
@@ -682,6 +1037,7 @@ Smooth_pairs_by_size (bool *shortp, bool *deletep, List_T pairs, Pairpool_T pair
 
     FREE(exonstatus);
     FREE(intronlengths);
+    FREE(exonprotects);
     FREE(exonmatches);
     FREE(exonlengths);
 
@@ -705,7 +1061,7 @@ Smooth_mark_short_exons (List_T pairs, Pairpool_T pairpool, int stage2_indexsize
 #endif
 
   shortp = false;
-  smooth_reset(pairs);
+  /* smooth_reset(pairs); */
   if (pairs != NULL) {
     /* Trim ends */
     exonlengths = get_exonlengths(&exonmatches,&nexons,pairs,/*bysizep*/true);
@@ -728,13 +1084,13 @@ Smooth_mark_short_exons (List_T pairs, Pairpool_T pairpool, int stage2_indexsize
 
   if (pairs != NULL) {
     /* Find internal shorts */
-    exonlengths = get_exonlengths(&exonmatches,&nexons,pairs,/*bysizep*/true);
+    exonlengths = get_exonlengths(&exonmatches,&exonprotects,&nexons,pairs,/*bysizep*/true);
     intronlengths = get_intronlengths(&nintrons,pairs,/*bysizep*/true);
 
     debug(
 	  printf("Beginning of smoothing.  Initial structure:\n");
 	  for (i = 0; i < nexons-1; i++) {
-	    printf("Exon %d of length %d (%d matches)\n",i,exonlengths[i],exonmatches[i]);
+	    printf("Exon %d of length %d (%d matches, %d protects)\n",i,exonlengths[i],exonmatches[i],exonprotects[i]);
 	    printf("Intron %d of length %d\n",i,intronlengths[i]);
 	  }
 	  printf("Exon %d of length %d (%d matches)\n",nexons-1,exonlengths[nexons-1],exonmatches[nexons-1]);
@@ -772,3 +1128,85 @@ Smooth_mark_short_exons (List_T pairs, Pairpool_T pairpool, int stage2_indexsize
 #endif
 
 
+
+List_T
+Smooth_pairs_by_intronprobs (bool *badp, List_T pairs, Pairpool_T pairpool) {
+  int *exonstatus;
+  int *exonmatches, *exon_denominator, nexons, nintrons;
+  int *intron_matches_left, *intron_denominator_left, *intron_matches_right, *intron_denominator_right;
+  double *donor_probs, *acceptor_probs;
+  int total_matches, total_denominator;
+#ifdef DEBUG
+  int *intronlengths;
+  int i;
+#endif
+
+  debug(Pair_dump_list(pairs,true));
+
+  *badp = false;
+  /* smooth_reset(pairs); */
+  if (pairs != NULL) {
+    /* Remove internal shorts */
+    get_intronprobs(&donor_probs,&acceptor_probs,&nintrons,pairs);
+    if (nintrons > 0) {
+      get_exonmatches(&total_matches,&total_denominator,&exonmatches,&exon_denominator,&nexons,pairs);
+      debug(intronlengths = get_intronlengths(&nintrons,pairs,/*bysizep*/false));
+
+      pairs = get_intron_neighborhoods(&intron_matches_left,&intron_denominator_left,
+				       &intron_matches_right,&intron_denominator_right,nintrons,pairs);
+
+      debug(
+	    printf("Beginning of smoothing.  Initial structure:\n");
+	    for (i = 0; i < nexons-1; i++) {
+	      printf("Exon %d with %d matches and %d denominator\n",i,exonmatches[i],exon_denominator[i]);
+	      printf("Intron %d, length %d, with probs %f+%f and matches %d/%d and %d/%d\n",
+		     i,intronlengths[i],donor_probs[i],acceptor_probs[i],intron_matches_left[i],intron_denominator_left[i],
+		     intron_matches_right[i],intron_denominator_right[i]);
+	    }
+	    printf("Exon %d with %d matches and %d denominator\n",nexons-1,exonmatches[nexons-1],exon_denominator[nexons-1]);
+	    );
+
+      debug(printf("\nFind internal bads\n"));
+      exonstatus = find_internal_bads_by_prob(&(*badp),exonmatches,exon_denominator,nexons,
+					      donor_probs,acceptor_probs,
+					      intron_matches_left,intron_denominator_left,
+					      intron_matches_right,intron_denominator_right,
+					      total_matches,total_denominator);
+      debug(printf("\nRemove internal bads\n"));
+      if (*badp == false) {
+	debug(printf("No internal bads\n"));
+      } else {
+	debug(print_exon_status(exonstatus,exonmatches,/*exonprotects*/NULL,nexons));
+	pairs = delete_and_mark_exons(pairs,pairpool,exonstatus,/*markp*/true,/*bysizep*/false);
+      }
+    
+#if 0
+      /* This is not correct */
+      debug(
+	    printf("After removing internal shorts:\n");
+	    for (i = 0; i < nexons-1; i++) {
+	      printf("Exon %d of length %d (%d matches)\n",i,exonlengths[i],exonmatches[i]);
+	      printf("Intron %d of length %d\n",i,intronlengths[i]);
+	    }
+	    printf("Exon %d of length %d\n",nexons-1,exonlengths[nexons-1]);
+	    );
+#endif
+
+      debug(FREE(intronlengths));
+      FREE(exonstatus);
+      FREE(intron_denominator_right);
+      FREE(intron_matches_right);
+      FREE(intron_denominator_left);
+      FREE(intron_matches_left);
+      FREE(exon_denominator);
+      FREE(exonmatches);
+
+      debug(printf("Ending of smoothing\n\n"));
+    }
+
+    FREE(acceptor_probs);
+    FREE(donor_probs);
+  }
+
+  return pairs;
+}
diff --git a/src/smooth.h b/src/smooth.h
index 7391f38..cef8c6f 100644
--- a/src/smooth.h
+++ b/src/smooth.h
@@ -1,15 +1,19 @@
-/* $Id: smooth.h 90983 2013-04-01 19:42:40Z twu $ */
+/* $Id: smooth.h 106198 2013-08-28 23:07:34Z twu $ */
 #ifndef SMOOTH_INCLUDED
 #define SMOOTH_INCLUDED
 #include "list.h"
 #include "pairpool.h"
 
+extern void
+Smooth_reset (List_T pairs);
 extern List_T
 Smooth_pairs_by_netgap (bool *deletep, List_T pairs, Pairpool_T pairpool);
 extern List_T
 Smooth_pairs_by_size (bool *shortp, bool *deletep, List_T pairs, Pairpool_T pairpool, int stage2_indexsize);
 extern List_T
 Smooth_mark_short_exons (List_T pairs, Pairpool_T pairpool, int stage2_indexsize);
+extern List_T
+Smooth_pairs_by_intronprobs (bool *badp, List_T pairs, Pairpool_T pairpool);
 
 #endif
 
diff --git a/src/snpindex.c b/src/snpindex.c
index f7c991f..efe99f8 100644
--- a/src/snpindex.c
+++ b/src/snpindex.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: snpindex.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: snpindex.c 133555 2014-04-17 23:06:39Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -50,6 +50,7 @@ static char rcsid[] = "$Id: snpindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "access.h"
 #include "types.h"
 
+#include "compress-write.h"
 #include "compress.h"
 #include "interval.h"
 #include "complement.h"
@@ -65,8 +66,11 @@ static char rcsid[] = "$Id: snpindex.c 99737 2013-06-27 19:33:03Z twu $";
 #include "iit-read.h"
 #include "indexdb.h"
 #include "indexdb-write.h"
+#include "bitpack64-write.h"
 #include "getopt.h"
 
+#define POSITIONS8_HIGH_SHIFT 32
+#define POSITIONS8_LOW_MASK 0xFFFFFFFF
 
 #ifdef DEBUG
 #define debug(x) x
@@ -93,8 +97,6 @@ static char *user_sourcedir = NULL;
 static char *user_destdir = NULL;
 static char *dbroot = NULL;
 static char *fileroot = NULL;
-static int offsetscomp_basesize = 12;
-static int required_basesize = 0;
 static int index1part = 15;
 static int required_index1part = 0;
 static int index1interval = 3;
@@ -112,7 +114,6 @@ static struct option long_options[] = {
   /* Input options */
   {"sourcedir", required_argument, 0, 'D'},	/* user_sourcedir */
   {"db", required_argument, 0, 'd'}, /* dbroot */
-  {"basesize", required_argument, 0, 'b'}, /* required_basesize */
   {"kmer", required_argument, 0, 'k'},	   /* required_index1part */
   {"sampling", required_argument, 0, 'q'},  /* required_interval */
   {"destdir", required_argument, 0, 'V'},	/* user_destdir */
@@ -846,8 +847,11 @@ compute_positions (Positionsptr_T *offsets, IIT_T snps_iit, Univ_IIT_T chromosom
 
 
 static void
-merge_positions8 (FILE *positions_fp, UINT8 *start1, UINT8 *end1,
-		  UINT8 *start2, UINT8 *end2, Storedoligomer_T oligo, int index1part) {
+merge_positions8 (FILE *positions_high_fp, FILE *positions_low_fp,
+		  UINT8 *start1, UINT8 *end1, UINT8 *start2, UINT8 *end2, 
+		  Storedoligomer_T oligo, int index1part) {
+  unsigned char position8_high;
+  UINT4 position8_low;
   UINT8 *ptr1 = start1, *ptr2 = start2;
   char *nt;
 #ifdef WORDS_BIGENDIAN
@@ -856,6 +860,7 @@ merge_positions8 (FILE *positions_fp, UINT8 *start1, UINT8 *end1,
 
   while (ptr1 < end1 && ptr2 < end2) {
 #ifdef WORDS_BIGENDIAN
+    abort();
     position2 = Bigendian_convert_uint8(*ptr2);
     if (*ptr1 < position2) {
       FWRITE_UINT8(*ptr1,positions_fp);
@@ -878,10 +883,16 @@ merge_positions8 (FILE *positions_fp, UINT8 *start1, UINT8 *end1,
 #else
 
     if (*ptr1 < *ptr2) {
-      FWRITE_UINT8(*ptr1,positions_fp);
+      position8_high = *ptr1 >> POSITIONS8_HIGH_SHIFT;
+      position8_low = *ptr1 & POSITIONS8_LOW_MASK;
+      FWRITE_CHAR(position8_high,positions_high_fp);
+      FWRITE_UINT(position8_low,positions_low_fp);
       ptr1++;
     } else if (*ptr2 < *ptr1) {
-      FWRITE_UINT8(*ptr2,positions_fp);
+      position8_high = *ptr2 >> POSITIONS8_HIGH_SHIFT;
+      position8_low = *ptr2 & POSITIONS8_LOW_MASK;
+      FWRITE_CHAR(position8_high,positions_high_fp);
+      FWRITE_UINT(position8_low,positions_low_fp);
       ptr2++;
     } else {
       nt = shortoligo_nt(oligo,index1part);
@@ -898,7 +909,10 @@ merge_positions8 (FILE *positions_fp, UINT8 *start1, UINT8 *end1,
   }
 
   while (ptr1 < end1) {
-    FWRITE_UINT8(*ptr1,positions_fp);
+    position8_high = *ptr1 >> POSITIONS8_HIGH_SHIFT;
+    position8_low = *ptr1 & POSITIONS8_LOW_MASK;
+    FWRITE_CHAR(position8_high,positions_high_fp);
+    FWRITE_UINT(position8_low,positions_low_fp);
     ptr1++;
   }
 
@@ -909,7 +923,10 @@ merge_positions8 (FILE *positions_fp, UINT8 *start1, UINT8 *end1,
   }
 #else
   while (ptr2 < end2) {
-    FWRITE_UINT8(*ptr2,positions_fp);
+    position8_high = *ptr2 >> POSITIONS8_HIGH_SHIFT;
+    position8_low = *ptr2 & POSITIONS8_LOW_MASK;
+    FWRITE_CHAR(position8_high,positions_high_fp);
+    FWRITE_UINT(position8_low,positions_low_fp);
     ptr2++;
   }
 #endif
@@ -998,13 +1015,17 @@ merge_positions4 (FILE *positions_fp, UINT4 *start1, UINT4 *end1,
 int
 main (int argc, char *argv[]) {
   char *sourcedir = NULL, *destdir = NULL, *mapdir = NULL;
+  int compression_type;
   Univ_IIT_T chromosome_iit;
   IIT_T snps_iit;
   Genome_T genome;
   Positionsptr_T *offsets, *snp_offsets, *ref_offsets;
+  size_t totalcounts, i;
 #ifdef EXTRA_ALLOCATION
   Positionsptr_T npositions;
 #endif
+  unsigned char *ref_positions8_high;
+  UINT4 *ref_positions8_low;
   UINT8 *snp_positions8, *ref_positions8;
   UINT4 *snp_positions4, *ref_positions4;
   Univcoord_T nblocks;
@@ -1015,13 +1036,11 @@ main (int argc, char *argv[]) {
 #endif
 
   bool coord_values_8p;
+  Filenames_T filenames;
   char *filename, *filename1, *filename2;
-  char *gammaptrs_filename, *offsetscomp_filename, *positions_filename,
-    *gammaptrs_basename_ptr, *offsetscomp_basename_ptr, *positions_basename_ptr,
-    *gammaptrs_index1info_ptr, *offsetscomp_index1info_ptr, *positions_index1info_ptr;
-  FILE *genome_fp, *positions_fp, *ref_positions_fp;
-  int ref_positions_fd;
-  size_t ref_positions_len;
+  FILE *genome_fp, *genomebits_fp, *positions_high_fp, *positions_low_fp;
+  int ref_positions_high_fd, ref_positions_low_fd;
+  size_t ref_positions_high_len, ref_positions_low_len;
 #ifdef WORDS_BIGENDIAN
   Positionsptr_T offset1, offset2;
 #endif
@@ -1032,7 +1051,7 @@ main (int argc, char *argv[]) {
   int long_option_index = 0;
   const char *long_name;
 
-  while ((opt = getopt_long(argc,argv,"D:d:b:k:q:V:v:w:",
+  while ((opt = getopt_long(argc,argv,"D:d:k:q:V:v:w:",
 			    long_options,&long_option_index)) != -1) {
     switch (opt) {
     case 0: 
@@ -1052,7 +1071,6 @@ main (int argc, char *argv[]) {
 
     case 'D': user_sourcedir = optarg; break;
     case 'd': dbroot = optarg; break;
-    case 'b': required_basesize = atoi(optarg); break;
     case 'k': required_index1part = atoi(optarg); break;
     case 'q': required_interval = atoi(optarg); break;
     case 'V': user_destdir = optarg; break;
@@ -1112,7 +1130,7 @@ main (int argc, char *argv[]) {
       fprintf(stderr,"done\n");
     }
     FREE(filename);
-    /* FREE(mapdir); -- Freed at end of program */
+    FREE(mapdir);
   }
 
 
@@ -1134,8 +1152,8 @@ main (int argc, char *argv[]) {
   fprintf(stderr,"Chromosomes in the SNPs IIT file: ");
   IIT_dump_divstrings(stderr,snps_iit);
 
-  genome = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*uncompressedp*/false,
-		      /*access*/USE_MMAP_ONLY);
+  genome = Genome_new(sourcedir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+		      /*uncompressedp*/false,/*access*/USE_MMAP_ONLY);
 
   /* Copy genome */
   nblocks = Genome_totallength(genome)/32U;
@@ -1156,14 +1174,12 @@ main (int argc, char *argv[]) {
   }
 
 
-  Indexdb_get_filenames(&gammaptrs_filename,&offsetscomp_filename,&positions_filename,
-			&gammaptrs_basename_ptr,&offsetscomp_basename_ptr,&positions_basename_ptr,
-			&gammaptrs_index1info_ptr,&offsetscomp_index1info_ptr,&positions_index1info_ptr,
-			&offsetscomp_basesize,&index1part,&index1interval,
-			sourcedir,fileroot,IDX_FILESUFFIX,/*snps_root*/NULL,
-			required_basesize,required_index1part,required_interval);
+  filenames = Indexdb_get_filenames(&compression_type,&index1part,&index1interval,
+				    sourcedir,fileroot,IDX_FILESUFFIX,/*snps_root*/NULL,
+				    required_index1part,required_interval,
+				    /*offsets_only_p*/false);
 
-  /* Compute offsets and write genome */
+  /* Compute offsets and write genomecomp */
   oligospace = power(4,index1part);
   snp_offsets = compute_offsets(snps_iit,chromosome_iit,genome,snp_blocks,oligospace,index1part);
   fprintf(stderr,"last offset = %u\n",snp_offsets[oligospace]);
@@ -1178,10 +1194,30 @@ main (int argc, char *argv[]) {
   FWRITE_UINTS(snp_blocks,nblocks*3,genome_fp);
   fclose(genome_fp);
   FREE(snp_blocks);
-  FREE(filename);
   fprintf(stderr,"done\n");
 
 
+  /* Write genomebits */
+  if ((genome_fp = FOPEN_READ_BINARY(filename)) == NULL) {
+    fprintf(stderr,"Can't open file %s for genome\n",filename);
+    exit(9);
+  }
+  FREE(filename);
+
+  filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(fileroot)+
+			     strlen(".genomebits128.")+strlen(snps_root)+1,sizeof(char));
+  sprintf(filename,"%s/%s.genomebits128.%s",destdir,fileroot,snps_root);
+  if ((genomebits_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+    fprintf(stderr,"Can't open file %s for writing genome\n",filename);
+    exit(9);
+  }
+  fprintf(stderr,"Writing filename %s...",filename);
+  Compress_unshuffle_bits128(/*out*/genomebits_fp,/*in*/genome_fp);
+  fclose(genomebits_fp);
+  fclose(genome_fp);
+  FREE(filename);
+
+
   /* Compute positions */
   show_warnings_p = false;	/* Already shown in compute_offsets */
   if (coord_values_8p == true) {
@@ -1193,7 +1229,11 @@ main (int argc, char *argv[]) {
 
   /* Read reference offsets and update */
 #ifdef EXTRA_ALLOCATION
-  ref_offsets = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,offsetscomp_basesize,index1part);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    ref_offsets = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,index1part);
+  } else {
+    abort();
+  }
   offsets = (Positionsptr_T *) CALLOC(oligospace+1,sizeof(Positionsptr_T));
   offsets[0] = 0U;
   for (oligoi = 1; oligoi <= oligospace; oligoi++) {
@@ -1208,7 +1248,11 @@ main (int argc, char *argv[]) {
 
 #else
   /* This version saves on one allocation of oligospace * sizeof(Positionsptr_T) */
-  offsets = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,offsetscomp_basesize,index1part);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    offsets = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,index1part);
+  } else {
+    abort();
+  }
   for (oligoi = oligospace; oligoi >= 1; oligoi--) {
 #ifdef WORDS_BIGENDIAN
     offsets[oligoi] = Bigendian_convert_uint(offsets[oligoi]) - Bigendian_convert_uint(offsets[oligoi-1]);
@@ -1224,26 +1268,25 @@ main (int argc, char *argv[]) {
 
 
   /* Write offsets */
-  if (gammaptrs_basename_ptr == NULL) {
+  if (filenames->pointers_basename_ptr == NULL) {
     filename1 = (char *) NULL;
   } else {
-    filename1 = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(gammaptrs_basename_ptr)+
+    filename1 = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(filenames->pointers_basename_ptr)+
 				strlen(".")+strlen(snps_root)+1,sizeof(char));
-    sprintf(filename1,"%s/%s.%s",destdir,gammaptrs_basename_ptr,snps_root);
+    sprintf(filename1,"%s/%s.%s",destdir,filenames->pointers_basename_ptr,snps_root);
   }
 
-  filename2 = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(offsetscomp_basename_ptr)+
+  filename2 = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(filenames->offsets_basename_ptr)+
 			      strlen(".")+strlen(snps_root)+1,sizeof(char));
-  sprintf(filename2,"%s/%s.%s",destdir,offsetscomp_basename_ptr,snps_root);
+  sprintf(filename2,"%s/%s.%s",destdir,filenames->offsets_basename_ptr,snps_root);
 
 
   fprintf(stderr,"Writing %lu offsets with %u total positions\n",oligospace+1,offsets[oligospace]);
-#ifdef PRE_GAMMAS
-  FWRITE_UINTS(offsets,oligospace+1,offsets_fp);
-#else
-  Indexdb_write_gammaptrs(filename1,filename2,offsets,oligospace,
-			  /*blocksize*/power(4,index1part - offsetscomp_basesize));
-#endif
+  if (compression_type == BITPACK64_COMPRESSION) {
+    Bitpack64_write_differential(/*ptrsfile*/filename1,/*compfile*/filename2,offsets,oligospace);
+  } else {
+    abort();
+  }
   FREE(filename2);
   if (filename1 != NULL) {
     FREE(filename1);
@@ -1252,44 +1295,86 @@ main (int argc, char *argv[]) {
 
 
   /* Read reference positions and merge */
-  if ((ref_positions_fp = FOPEN_READ_BINARY(positions_filename)) == NULL) {
-    fprintf(stderr,"Can't open file %s\n",positions_filename);
+#if 0
+  if ((positions_low_fp = FOPEN_READ_BINARY(filenames->positions_low_filename)) == NULL) {
+    fprintf(stderr,"Can't open file %s\n",filenames->positions_low_filename);
     exit(9);
   } else {
-    fclose(ref_positions_fp);
+    fclose(positions_low_fp);
   }
+#endif
 
-#ifdef HAVE_MMAP
   if (coord_values_8p == true) {
-    ref_positions8 = (UINT8 *) Access_mmap(&ref_positions_fd,&ref_positions_len,
-					   positions_filename,sizeof(UINT8),/*randomp*/false);
-  } else {
-    ref_positions4 = (UINT4 *) Access_mmap(&ref_positions_fd,&ref_positions_len,
-					   positions_filename,sizeof(UINT4),/*randomp*/false);
-  }
+#ifdef HAVE_MMAP
+    ref_positions8_high = (unsigned char *) Access_mmap(&ref_positions_high_fd,&ref_positions_high_len,
+							filenames->positions_high_filename,sizeof(unsigned char),/*randomp*/false);
+    ref_positions8_low = (UINT4 *) Access_mmap(&ref_positions_low_fd,&ref_positions_low_len,
+					       filenames->positions_low_filename,sizeof(UINT4),/*randomp*/false);
 #else
-  if (coord_values_8p == true) {
-    ref_positions8 = (UINT8 *) Access_allocated(&ref_positions_len,&seconds,
-						positions_filename,sizeof(UINT8));
+    ref_positions8_high = (unsigned char *) Access_allocated(&ref_positions_high_len,&seconds,
+							     filenames->positions_high_filename,sizeof(unsigned char));
+    ref_positions8_low = (UINT4 *) Access_allocated(&ref_positions_low_len,&seconds,
+						     filenames->positions_low_filename,sizeof(UINT4));
+#endif
+    /* Unpack */
+    totalcounts = ref_positions_high_len/sizeof(unsigned char);
+    if (totalcounts > 4294967295) {
+      fprintf(stderr,"Program not yet designed to handle huge genomes\n");
+      abort();
+    }
+    ref_positions8 = (UINT8 *) CALLOC_NO_EXCEPTION(totalcounts,sizeof(UINT8));
+    for (i = 0; i < totalcounts; i++) {
+      ref_positions8[i] = ((UINT8) ref_positions8_high[i] << 32) + ref_positions8_low[i];
+    }
+#ifdef HAVE_MMAP
+    munmap((void *) ref_positions8_high,ref_positions_high_len);
+    munmap((void *) ref_positions8_low,ref_positions_low_len);
+    close(ref_positions_high_fd);
+    close(ref_positions_low_fd);
+#else
+    FREE(ref_positions8_high);
+    FREE(ref_positions8_low);
+#endif
+
   } else {
-    ref_positions4 = (UINT4 *) Access_allocated(&ref_positions_len,&seconds,
-						positions_filename,sizeof(UINT4));
-  }
+#ifdef HAVE_MMAP
+    ref_positions4 = (UINT4 *) Access_mmap(&ref_positions_low_fd,&ref_positions_low_len,
+					   filenames->positions_low_filename,sizeof(UINT4),/*randomp*/false);
+#else
+    ref_positions4 = (UINT4 *) Access_allocated(&ref_positions_low_len,&seconds,
+						filenames->positions_low_filename,sizeof(UINT4));
 #endif
+  }
 
 
-  filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(positions_basename_ptr)+
+  if (coord_values_8p == true) {
+    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(filenames->positions_high_basename_ptr)+
+			       strlen(".")+strlen(snps_root)+1,sizeof(char));
+    sprintf(filename,"%s/%s.%s",destdir,filenames->positions_high_basename_ptr,snps_root);
+    if ((positions_high_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+      fprintf(stderr,"Can't open file %s for writing\n",filename);
+      exit(9);
+    }
+    FREE(filename);
+  }
+
+  filename = (char *) CALLOC(strlen(destdir)+strlen("/")+strlen(filenames->positions_low_basename_ptr)+
 			     strlen(".")+strlen(snps_root)+1,sizeof(char));
-  sprintf(filename,"%s/%s.%s",destdir,positions_basename_ptr,snps_root);
-  if ((positions_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
+  sprintf(filename,"%s/%s.%s",destdir,filenames->positions_low_basename_ptr,snps_root);
+  if ((positions_low_fp = FOPEN_WRITE_BINARY(filename)) == NULL) {
     fprintf(stderr,"Can't open file %s for writing\n",filename);
     exit(9);
   }
   FREE(filename);
 
+
   fprintf(stderr,"Merging snp positions with reference positions\n");
 #ifndef EXTRA_ALLOCATION
-  ref_offsets = Indexdb_offsets_from_gammas(gammaptrs_filename,offsetscomp_filename,offsetscomp_basesize,index1part);
+  if (compression_type == BITPACK64_COMPRESSION) {
+    ref_offsets = Indexdb_offsets_from_bitpack(filenames->pointers_filename,filenames->offsets_filename,index1part);
+  } else {
+    abort();
+  }
 #endif
 
   if (coord_values_8p == true) {
@@ -1297,10 +1382,12 @@ main (int argc, char *argv[]) {
 #ifdef WORDS_BIGENDIAN
       offset1 = Bigendian_convert_uint(ref_offsets[oligoi]);
       offset2 = Bigendian_convert_uint(ref_offsets[oligoi+1]);
-      merge_positions8(positions_fp,&(snp_positions8[snp_offsets[oligoi]]),&(snp_positions8[snp_offsets[oligoi+1]]),
+      merge_positions8(positions_high_fp,positions_low_fp,
+		       &(snp_positions8[snp_offsets[oligoi]]),&(snp_positions8[snp_offsets[oligoi+1]]),
 		       &(ref_positions8[offset1]),&(ref_positions8[offset2]),oligoi,index1part);
 #else
-      merge_positions8(positions_fp,&(snp_positions8[snp_offsets[oligoi]]),&(snp_positions8[snp_offsets[oligoi+1]]),
+      merge_positions8(positions_high_fp,positions_low_fp,
+		       &(snp_positions8[snp_offsets[oligoi]]),&(snp_positions8[snp_offsets[oligoi+1]]),
 		       &(ref_positions8[ref_offsets[oligoi]]),&(ref_positions8[ref_offsets[oligoi+1]]),oligoi,index1part);
 #endif
     }
@@ -1309,10 +1396,10 @@ main (int argc, char *argv[]) {
 #ifdef WORDS_BIGENDIAN
       offset1 = Bigendian_convert_uint(ref_offsets[oligoi]);
       offset2 = Bigendian_convert_uint(ref_offsets[oligoi+1]);
-      merge_positions4(positions_fp,&(snp_positions4[snp_offsets[oligoi]]),&(snp_positions4[snp_offsets[oligoi+1]]),
+      merge_positions4(positions_low_fp,&(snp_positions4[snp_offsets[oligoi]]),&(snp_positions4[snp_offsets[oligoi+1]]),
 		       &(ref_positions4[offset1]),&(ref_positions4[offset2]),oligoi,index1part);
 #else
-      merge_positions4(positions_fp,&(snp_positions4[snp_offsets[oligoi]]),&(snp_positions4[snp_offsets[oligoi+1]]),
+      merge_positions4(positions_low_fp,&(snp_positions4[snp_offsets[oligoi]]),&(snp_positions4[snp_offsets[oligoi+1]]),
 		       &(ref_positions4[ref_offsets[oligoi]]),&(ref_positions4[ref_offsets[oligoi+1]]),oligoi,index1part);
 #endif
     }
@@ -1320,24 +1407,24 @@ main (int argc, char *argv[]) {
 
 
   FREE(ref_offsets);
-  fclose(positions_fp);
+  fclose(positions_low_fp);
+  if (coord_values_8p == true) {
+    fclose(positions_high_fp);
+  }
 
 
   /* Clean up */
-#ifdef HAVE_MMAP
-  if (coord_values_8p == true) {
-    munmap((void *) ref_positions8,ref_positions_len);
-  } else {
-    munmap((void *) ref_positions4,ref_positions_len);
-  }
-  close(ref_positions_fd);
-#else
   if (coord_values_8p == true) {
+    /* For both mmap and allocated, since we have already combined positions_high and positions_low */
     FREE(ref_positions8);
   } else {
+#ifdef HAVE_MMAP
+    munmap((void *) ref_positions4,ref_positions_low_len);
+    close(ref_positions_low_fd);
+#else
     FREE(ref_positions4);
-  }
 #endif
+  }
 
 
   if (coord_values_8p == true) {
@@ -1351,47 +1438,16 @@ main (int argc, char *argv[]) {
   Univ_IIT_free(&chromosome_iit);
   IIT_free(&snps_iit);
 
-  FREE(positions_filename);
-  FREE(offsetscomp_filename);
-  FREE(gammaptrs_filename);
-
-
-  /* Message about installing IIT file */
-  if (!strcmp(destdir,sourcedir)) {
-    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+ strlen(fileroot) + strlen(".maps/") +
-			       strlen(snps_root)+strlen(".iit")+1,sizeof(char));
-    sprintf(filename,"%s/%s.maps/%s.iit",destdir,fileroot,snps_root);
-  } else {
-    filename = (char *) CALLOC(strlen(destdir)+strlen("/")+
-			       strlen(snps_root)+strlen(".iit")+1,sizeof(char));
-    sprintf(filename,"%s/%s.iit",destdir,snps_root);
-  }
-
-  FREE(dbversion);
-  FREE(fileroot);
-  FREE(sourcedir);
+  Filenames_free(&filenames);
 
 
-  fprintf(stderr,"SNP genome indices created.\n");
-  if (Access_file_exists_p(filename) == true) {
-    if (Access_file_equal(filename,argv[1]) == false) {
-      fprintf(stderr,"IIT file already present as %s, but it is different from the given file %s\n",
-	      filename,argv[1]);
-      fprintf(stderr,"Please copy file %s as %s\n",argv[1],filename);
-    } else {
-      fprintf(stderr,"IIT file already present as %s, and it is the same as given file %s\n",
-	      filename,argv[1]);
-    }
-
-  } else if (argc > 1) {
-    fprintf(stderr,"Now installing IIT file %s as %s...",
-	    argv[1],filename);
-    Access_file_copy(/*dest*/filename,/*source*/argv[1]);
-    fprintf(stderr,"done\n");
-
-  } else {
-    fprintf(stderr,"Now copying IIT file from %s/%s.iit to %s...",
-	    mapdir,snps_root,filename);
+  if (argc <= 1) {
+    /* Program called using -v flag only.  No need to install. */
+    /* fprintf(stderr,"IIT file already present in .maps directory\n"); */
+#if 0
+    /* Old code used for copying IIT file to .maps directory */
+    /* To use this code, cannot free mapdir earlier */
+    fprintf(stderr,"Now copying IIT file from %s/%s.iit to %s...",mapdir,snps_root,filename);
     filename1 = (char *) CALLOC(strlen(mapdir)+strlen("/")+
 				strlen(snps_root)+strlen(".iit")+1,sizeof(char));
     sprintf(filename1,"%s/%s.iit",mapdir,snps_root);
@@ -1399,9 +1455,44 @@ main (int argc, char *argv[]) {
     fprintf(stderr,"done\n");
     FREE(filename1);
     FREE(mapdir);
+#endif
+
+  } else {
+    /* Install IIT file */
+    if (!strcmp(destdir,sourcedir)) {
+      filename = (char *) CALLOC(strlen(destdir)+strlen("/")+ strlen(fileroot) + strlen(".maps/") +
+				 strlen(snps_root)+strlen(".iit")+1,sizeof(char));
+      sprintf(filename,"%s/%s.maps/%s.iit",destdir,fileroot,snps_root);
+    } else {
+      filename = (char *) CALLOC(strlen(destdir)+strlen("/")+
+				 strlen(snps_root)+strlen(".iit")+1,sizeof(char));
+      sprintf(filename,"%s/%s.iit",destdir,snps_root);
+    }
+
+    fprintf(stderr,"SNP genome indices created.\n");
+    if (Access_file_exists_p(filename) == true) {
+      if (Access_file_equal(filename,argv[1]) == false) {
+	fprintf(stderr,"IIT file already present as %s, but it is different from the given file %s\n",
+		filename,argv[1]);
+	fprintf(stderr,"Please copy file %s as %s\n",argv[1],filename);
+      } else {
+	fprintf(stderr,"IIT file already present as %s, and it is the same as given file %s\n",
+		filename,argv[1]);
+      }
+
+    } else {
+      fprintf(stderr,"Now installing IIT file %s as %s...",
+	      argv[1],filename);
+      Access_file_copy(/*dest*/filename,/*source*/argv[1]);
+      fprintf(stderr,"done\n");
+    }
+
+    FREE(filename);
   }
 
-  FREE(filename);
+  FREE(dbversion);
+  FREE(fileroot);
+  FREE(sourcedir);
 
   return 0;
 }
@@ -1427,12 +1518,9 @@ for <genome>.\n\
   -k, --kmer=INT                 kmer size to use in genome database (allowed values: 16 or less).\n\
                                    If not specified, the program will find the highest available\n\
                                    kmer size in the genome database\n\
-  -b, --basesize=INT             Base size to use in genome database.  If not specified, the program\n\
-                                   will find the highest available base size in the genome database\n\
-                                   within selected k-mer size\n\
   -q, --sampling=INT             Sampling to use in genome database.  If not specified, the program\n\
                                    will find the smallest available sampling value in the genome database\n\
-                                   within selected basesize and k-mer size\n\
+                                   within selected k-mer size\n\
   -V, --destdir=directory        Directory where to write SNP index files (default is\n\
                                    GMAP genome directory specified at compile time)\n\
   -v, --snpsdb=STRING            Name of SNP database\n\
diff --git a/src/spanningelt.c b/src/spanningelt.c
index a14c7e5..70618fb 100644
--- a/src/spanningelt.c
+++ b/src/spanningelt.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: spanningelt.c 99756 2013-06-27 21:20:19Z twu $";
+static char rcsid[] = "$Id: spanningelt.c 129930 2014-03-13 03:29:20Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -88,7 +88,12 @@ Spanningelt_free (T *old) {
   if ((*old)->compoundpos != NULL) {
     Compoundpos_free(&((*old)->compoundpos));
   }
+#ifdef LARGE_GENOMES
+  FREE((*old)->positions_high_allocated);
+  FREE((*old)->positions_low_allocated);
+#else
   FREE((*old)->positions_allocated);
+#endif
   /* Should not free partner_positions */
 
   FREE(*old);
@@ -101,10 +106,20 @@ Spanningelt_reset (T this) {
   this->intersection_diagonals = this->intersection_diagonals_reset;
   this->intersection_ndiagonals = this->intersection_ndiagonals_reset;
 
+#ifdef LARGE_GENOMES
+  this->partner_positions_high = this->partner_positions_high_reset;
+  this->partner_positions_low = this->partner_positions_low_reset;
+#else
   this->partner_positions = this->partner_positions_reset;
+#endif
   this->partner_npositions = this->partner_npositions_reset;
 
+#ifdef LARGE_GENOMES
+  this->positions_high = this->positions_high_reset;
+  this->positions_low = this->positions_low_reset;
+#else
   this->positions = this->positions_reset;
+#endif
   this->npositions = this->npositions_reset;
 
   if (this->compoundpos != NULL) {
@@ -174,8 +189,12 @@ Spanningelt_print_set (List_T spanningset) {
 
 static T
 Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
-		 Univcoord_T ***stage1_positions, int **stage1_npositions,
-		 Indexdb_T indexdb, bool partnerp, int querypos1, int querypos2,
+#ifdef LARGE_GENOMES
+		 unsigned char ***stage1_positions_high, UINT4 ***stage1_positions_low,
+#else
+		 Univcoord_T ***stage1_positions,
+#endif
+		 int **stage1_npositions, Indexdb_T indexdb, bool partnerp, int querypos1, int querypos2,
 		 int query_lastpos, int querylength, bool plusp) {
   T new = (T) MALLOC(sizeof(*new));
   int partnerpos, querypos;
@@ -191,7 +210,12 @@ Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
   /* Handle partner */
   if ((new->partnerp = partnerp) == false) {
     debug(printf("partnerp is false, so querypos = querypos1 %d\n",querypos1));
+#ifdef LARGE_GENOMES
+    new->partner_positions_high = (unsigned char *) NULL;
+    new->partner_positions_low = (UINT4 *) NULL;
+#else
     new->partner_positions = (Univcoord_T *) NULL;
+#endif
     new->partner_npositions = 0;
     new->querypos = querypos = querypos1;
 
@@ -208,12 +232,22 @@ Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
       new->querypos = querypos = querypos2;
       new->partner_querypos = partnerpos = querypos1;
     }
+#ifdef LARGE_GENOMES
+    new->partner_positions_low = 
+      Indexdb_read_inplace(&new->partner_npositions,&new->partner_positions_high,indexdb,stage1_oligos[partnerpos]);
+#else
     new->partner_positions = 
       Indexdb_read_inplace(&new->partner_npositions,indexdb,stage1_oligos[partnerpos]);
+#endif
     new->partner_diagterm = plusp ? querylength - partnerpos : partnerpos + index1part; /* FORMULA */
 
     (*stage1_retrievedp)[partnerpos] = true;
+#ifdef LARGE_GENOMES
+    (*stage1_positions_high)[partnerpos] = new->partner_positions_high;
+    (*stage1_positions_low)[partnerpos] = new->partner_positions_low;
+#else
     (*stage1_positions)[partnerpos] = new->partner_positions;
+#endif
     (*stage1_npositions)[partnerpos] = new->partner_npositions;
     
   }
@@ -222,19 +256,36 @@ Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
   if (querypos >= 0 && querypos <= query_lastpos) {
     /* Ordinary position */
     new->compoundpos = NULL;
-    new->positions = 
-      Indexdb_read_inplace(&new->npositions,indexdb,stage1_oligos[querypos]);
+#ifdef LARGE_GENOMES
+    new->positions_low = Indexdb_read_inplace(&new->npositions,&new->positions_high,indexdb,stage1_oligos[querypos]);
+    if (free_positions_p == true) {
+      new->positions_high_allocated = new->positions_high;
+      new->positions_low_allocated = new->positions_low;
+    } else {
+      new->positions_high_allocated = (unsigned char *) NULL;
+      new->positions_low_allocated = (UINT4 *) NULL;
+    }
+#else
+    new->positions = Indexdb_read_inplace(&new->npositions,indexdb,stage1_oligos[querypos]);
     if (free_positions_p == true) {
       new->positions_allocated = new->positions;
     } else {
       new->positions_allocated = (Univcoord_T *) NULL;
     }
+#endif
     new->diagterm = plusp ? querylength - querypos : querypos + index1part; /* FORMULA */
 
   } else if (plusp) {
     /* Plus compoundpos */
-    new->positions = NULL;
-    new->positions_allocated = NULL;
+#ifdef LARGE_GENOMES
+    new->positions_high = (unsigned char *) NULL;
+    new->positions_high_allocated = (unsigned char *) NULL;
+    new->positions_low = (UINT4 *) NULL;
+    new->positions_low_allocated = (UINT4 *) NULL;
+#else
+    new->positions = (Univcoord_T *) NULL;
+    new->positions_allocated = (Univcoord_T *) NULL;
+#endif
     new->npositions = 0;
 
     if (querypos == -2) {
@@ -259,8 +310,15 @@ Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
 
   } else {
     /* Minus compoundpos */
-    new->positions = NULL;
-    new->positions_allocated = NULL;
+#ifdef LARGE_GENOMES
+    new->positions_high = (unsigned char *) NULL;
+    new->positions_high_allocated = (unsigned char *) NULL;
+    new->positions_low = (UINT4 *) NULL;
+    new->positions_low_allocated = (UINT4 *) NULL;
+#else
+    new->positions = (Univcoord_T *) NULL;
+    new->positions_allocated = (Univcoord_T *) NULL;
+#endif
     new->npositions = 0;
 
     if (querypos == -2) {
@@ -323,10 +381,16 @@ Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
   }
 
   /* Set for later reset */
+#ifdef LARGE_GENOMES
+  new->partner_positions_high_reset = new->partner_positions_high;
+  new->partner_positions_low_reset = new->partner_positions_low;
+  new->positions_high_reset = new->positions_high;
+  new->positions_low_reset = new->positions_low;
+#else
   new->partner_positions_reset = new->partner_positions;
-  new->partner_npositions_reset = new->partner_npositions;
-
   new->positions_reset = new->positions;
+#endif
+  new->partner_npositions_reset = new->partner_npositions;
   new->npositions_reset = new->npositions;
 
   return new;
@@ -336,8 +400,12 @@ Spanningelt_new (Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
 
 static List_T
 make_spanningset_aux (int *minscore, Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
-		      Univcoord_T ***stage1_positions, int **stage1_npositions,
-		      Indexdb_T indexdb, int query_lastpos, int querylength,
+#ifdef LARGE_GENOMES
+		      unsigned char ***stage1_positions_high, UINT4 ***stage1_positions_low,
+#else
+		      Univcoord_T ***stage1_positions,
+#endif
+		      int **stage1_npositions, Indexdb_T indexdb, int query_lastpos, int querylength,
 		      int first, int last, bool plusp) {
   List_T spanningset;
   T elt;
@@ -365,7 +433,12 @@ make_spanningset_aux (int *minscore, Storedoligomer_T *stage1_oligos, bool **sta
   /* Handle middle position first */
   diff = (last - first) % spansize;
   if (diff == 0) {
-    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),&(*stage1_positions),
+    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),
+#ifdef LARGE_GENOMES
+			  &(*stage1_positions_high),&(*stage1_positions_low),
+#else
+			  &(*stage1_positions),
+#endif
 			  &(*stage1_npositions),indexdb,/*partnerp*/false,/*querypos1*/worstpos,
 			  /*querypos2*/0,query_lastpos,querylength,plusp);
     leftpos = rightpos = worstpos;
@@ -379,7 +452,12 @@ make_spanningset_aux (int *minscore, Storedoligomer_T *stage1_oligos, bool **sta
       leftpos = partnerpos;
       rightpos = worstpos;
     }
-    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),&(*stage1_positions),
+    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),
+#ifdef LARGE_GENOMES
+			  &(*stage1_positions_high),&(*stage1_positions_low),
+#else
+			  &(*stage1_positions),
+#endif
 			  &(*stage1_npositions),indexdb,/*partnerp*/true,/*querypos1*/partnerpos,
 			  /*querypos2*/worstpos,query_lastpos,querylength,plusp);
   }
@@ -388,7 +466,12 @@ make_spanningset_aux (int *minscore, Storedoligomer_T *stage1_oligos, bool **sta
 
   /* Add left positions */
   for (querypos = first; querypos < leftpos; querypos += spansize) {
-    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),&(*stage1_positions),
+    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),
+#ifdef LARGE_GENOMES
+			  &(*stage1_positions_high),&(*stage1_positions_low),
+#else
+			  &(*stage1_positions),
+#endif
 			  &(*stage1_npositions),indexdb,/*partnerp*/false,/*querypos1*/querypos,
 			  /*querypos2*/0,query_lastpos,querylength,plusp);
     spanningset = List_push(spanningset,elt);
@@ -399,7 +482,12 @@ make_spanningset_aux (int *minscore, Storedoligomer_T *stage1_oligos, bool **sta
 
   /* Add right positions */
   for (querypos = last; querypos > rightpos; querypos -= spansize) {
-    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),&(*stage1_positions),
+    elt = Spanningelt_new(stage1_oligos,&(*stage1_retrievedp),
+#ifdef LARGE_GENOMES
+			  &(*stage1_positions_high),&(*stage1_positions_low),
+#else
+			  &(*stage1_positions),
+#endif
 			  &(*stage1_npositions),indexdb,/*partnerp*/false,/*querypos1*/querypos,
 			  /*querypos2*/0,query_lastpos,querylength,plusp);
     spanningset = List_push(spanningset,elt);
@@ -414,8 +502,12 @@ make_spanningset_aux (int *minscore, Storedoligomer_T *stage1_oligos, bool **sta
 
 List_T
 Spanningelt_set (int *minscore, Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
-		 Univcoord_T ***stage1_positions, int **stage1_npositions,
-		 Indexdb_T indexdb, int query_lastpos, int querylength,
+#ifdef LARGE_GENOMES
+		 unsigned char ***stage1_positions_high, UINT4 ***stage1_positions_low,
+#else
+		 Univcoord_T ***stage1_positions,
+#endif
+		 int **stage1_npositions, Indexdb_T indexdb, int query_lastpos, int querylength,
 		 int mod, bool plusp) {
   int first, last;
 
@@ -434,8 +526,12 @@ Spanningelt_set (int *minscore, Storedoligomer_T *stage1_oligos, bool **stage1_r
   }
 
   return make_spanningset_aux(&(*minscore),stage1_oligos,&(*stage1_retrievedp),
-			      &(*stage1_positions),&(*stage1_npositions),
-			      indexdb,query_lastpos,querylength,
+#ifdef LARGE_GENOMES
+			      &(*stage1_positions_high),&(*stage1_positions_low),
+#else
+			      &(*stage1_positions),
+#endif
+			      &(*stage1_npositions),indexdb,query_lastpos,querylength,
 			      first,last,plusp);
 }
 
@@ -470,16 +566,40 @@ Spanningelt_pruning_cmp (const void *a, const void *b) {
 
 
 /* Called only by exact/sub:1 procedures, so need to do Bigendian conversion */
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+static int
+binary_search (int lowi, int highi, unsigned char *positions_high, UINT4 *positions_low, Univcoord_T goal) {
+  int middlei;
+  Univcoord_T position;
+
+  while (lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
+    position = ((Univcoord_T) positions_high[middlei] << 32) + positions_low[middlei];
+    debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		   lowi,(positions_high[lowi] << 32) + positions_low[lowi],
+		   middlei,position,
+		   highi,(positions_high[highi] << 32) + positions_low[highi],goal));
+    if (goal < position) {
+      highi = middlei;
+    } else if (goal > position) {
+      lowi = middlei + 1;
+    } else {
+      return middlei;
+    }
+  }
+
+  return highi;
+}
+
+#elif defined(WORDS_BIGENDIAN)
 static int
 binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
-  bool foundp = false;
   int middlei;
 
   debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
 
-  while (!foundp && lowi < highi) {
-    middlei = (lowi+highi)/2;
+  while (lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
     debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
 		   lowi,Bigendian_convert_univcoord(positions[lowi]),middlei,Bigendian_convert_univcoord(positions[middlei]),
 		   highi,Bigendian_convert_univcoord(positions[highi]),goal));
@@ -488,28 +608,23 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
     } else if (goal > Bigendian_convert_univcoord(positions[middlei])) {
       lowi = middlei + 1;
     } else {
-      foundp = true;
+      debug10(printf("binary search returns %d\n",middlei));
+      return middlei;
     }
   }
 
-  if (foundp == true) {
-    debug10(printf("binary search returns %d\n",middlei));
-    return middlei;
-  } else {
-    debug10(printf("binary search returns %d\n",highi));
-    return highi;
-  }
+  debug10(printf("binary search returns %d\n",highi));
+  return highi;
 }
 #else
 static int
 binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
-  bool foundp = false;
   int middlei;
 
   debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
 
-  while (!foundp && lowi < highi) {
-    middlei = (lowi+highi)/2;
+  while (lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
     debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
 		   lowi,positions[lowi],middlei,positions[middlei],
 		   highi,positions[highi],goal));
@@ -518,39 +633,66 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
     } else if (goal > positions[middlei]) {
       lowi = middlei + 1;
     } else {
-      foundp = true;
+      debug10(printf("binary search returns %d\n",middlei));
+      return middlei;
     }
   }
 
-  if (foundp == true) {
-    debug10(printf("binary search returns %d\n",middlei));
-    return middlei;
-  } else {
-    debug10(printf("binary search returns %d\n",highi));
-    return highi;
-  }
+  debug10(printf("binary search returns %d\n",highi));
+  return highi;
 }
 #endif
 
 
 /* This procedure needs to eliminate duplicates, which can happen with a SNP-tolerant indexdb */
 static Univcoord_T *
-compute_intersection (int *ndiagonals, Univcoord_T *positionsa, int diagterma, int npositionsa, 
-		      Univcoord_T *positionsb, int diagtermb, int npositionsb) {
-  Univcoord_T *diagonals, *positions0, *positions1, local_goal, last_diagonal = 0U, this_diagonal;
+compute_intersection (int *ndiagonals,
+#ifdef LARGE_GENOMES
+		      unsigned char *positionsa_high, UINT4 *positionsa_low,
+#else
+		      Univcoord_T *positionsa,
+#endif
+		      int diagterma, int npositionsa, 
+#ifdef LARGE_GENOMES
+		      unsigned char *positionsb_high, UINT4 *positionsb_low,
+#else
+		      Univcoord_T *positionsb,
+#endif
+		      int diagtermb, int npositionsb) {
+  Univcoord_T *diagonals, local_goal, last_diagonal = 0U, this_diagonal;
+#ifdef LARGE_GENOMES
+  unsigned char *positions0_high, *positions1_high;
+  UINT4 *positions0_low, *positions1_low;
+#else
+  Univcoord_T *positions0, *positions1;
+#endif
   int npositions0, npositions1, delta, j, diagterm;
 
   if (npositionsa < npositionsb) {
+#ifdef LARGE_GENOMES
+    positions0_high = positionsa_high;
+    positions0_low = positionsa_low;
+    positions1_high = positionsb_high;
+    positions1_low = positionsb_low;
+#else
     positions0 = positionsa;
-    npositions0 = npositionsa;
     positions1 = positionsb;
+#endif
+    npositions0 = npositionsa;
     npositions1 = npositionsb;
     diagterm = diagtermb;	/* local_goal based on larger list */
     delta = diagterma - diagtermb; /* list0 + (diagterm0 - diagterm1) = list1 */
   } else {
+#ifdef LARGE_GENOMES
+    positions0_high = positionsb_high;
+    positions0_low = positionsb_low;
+    positions1_high = positionsa_high;
+    positions1_low = positionsa_low;
+#else
     positions0 = positionsb;
-    npositions0 = npositionsb;
     positions1 = positionsa;
+#endif
+    npositions0 = npositionsb;
     npositions1 = npositionsa;
     diagterm = diagterma;	/* local_goal based on larger list */
     delta = diagtermb - diagterma; /* list0 + (diagterm0 - diagterm1) = list1 */
@@ -569,7 +711,27 @@ compute_intersection (int *ndiagonals, Univcoord_T *positionsa, int diagterma, i
   }
 
   while (npositions0 > 0) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    local_goal = (((Univcoord_T) *positions0_high) << 32) + (*positions0_low) + delta;
+    debug(printf("intersection list 0: %d:%u => local_goal %u\n",
+		 npositions0,(((Univcoord_T) *positions0_high) << 32) + (*positions0_low),local_goal));
+    if (npositions1 > 0 &&
+	(((Univcoord_T) *positions1_high) << 32) + (*positions1_low) < local_goal) {
+      j = 1;
+      while (j < npositions1 &&
+	     ((Univcoord_T) positions1_high[j] << 32) + positions1_low[j] < local_goal) {
+	j <<= 1;		/* gallop by 2 */
+      }
+      if (j >= npositions1) {
+	j = binary_search(j >> 1,npositions1,positions1_high,positions1_low,local_goal);
+      } else {
+	j = binary_search(j >> 1,j,positions1_high,positions1_low,local_goal);
+      }
+      positions1_high += j;
+      positions1_low += j;
+      npositions1 -= j;
+    }
+#elif defined(WORDS_BIGENDIAN)
     local_goal = Bigendian_convert_univcoord(*positions0) + delta;
     debug(printf("intersection list 0: %d:%u => local_goal %u\n",
 		 npositions0,Bigendian_convert_univcoord(*positions0),local_goal));
@@ -604,7 +766,23 @@ compute_intersection (int *ndiagonals, Univcoord_T *positionsa, int diagterma, i
     }
 #endif
 
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    if (npositions1 <= 0) {
+      return diagonals;
+    } else if ((((Univcoord_T) *positions1_high) << 32) + (*positions1_low) == local_goal) {
+      /* Found local goal.  Save and advance */
+      debug(printf("    intersection list 1: %d:%u  found\n",
+		   npositions1,(((Univcoord_T) *positions1_high) << 32) + (*positions1_low)));
+      if ((this_diagonal = local_goal + diagterm) != last_diagonal) {
+	diagonals[(*ndiagonals)++] = this_diagonal;
+      }
+      last_diagonal = this_diagonal;
+      ++positions1_high;
+      ++positions1_low;
+      --npositions1;
+    }
+
+#elif defined(WORDS_BIGENDIAN)
     if (npositions1 <= 0) {
       return diagonals;
     } else if (Bigendian_convert_univcoord(*positions1) == local_goal) {
@@ -634,7 +812,12 @@ compute_intersection (int *ndiagonals, Univcoord_T *positionsa, int diagterma, i
     }
 #endif
 
+#ifdef LARGE_GENOMES
+    ++positions0_high;
+    ++positions0_low;
+#else
     ++positions0;
+#endif
     --npositions0;
   }
   debug(printf("\n"));
@@ -645,8 +828,13 @@ compute_intersection (int *ndiagonals, Univcoord_T *positionsa, int diagterma, i
 
 /* This procedure needs to eliminate duplicates, which can happen with a SNP-tolerant indexdb */
 static Univcoord_T *
-compoundpos_intersect (int *ndiagonals, Univcoord_T *positions0, int diagterm0, int npositions0, 
-		       Compoundpos_T compoundpos, int diagterm1) {
+compoundpos_intersect (int *ndiagonals,
+#ifdef LARGE_GENOMES
+		       unsigned char *positions0_high, UINT4 *positions0_low,
+#else
+		       Univcoord_T *positions0,
+#endif
+		       int diagterm0, int npositions0, Compoundpos_T compoundpos, int diagterm1) {
   Univcoord_T *diagonals, local_goal, last_local_goal;
   int delta;
   bool emptyp;
@@ -663,7 +851,9 @@ compoundpos_intersect (int *ndiagonals, Univcoord_T *positions0, int diagterm0,
   
   last_local_goal = 0U;
   while (npositions0 > 0) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    local_goal = (((Univcoord_T) *positions0_high) << 32) + (*positions0_low) + delta;
+#elif defined(WORDS_BIGENDIAN)
     local_goal = Bigendian_convert_univcoord(*positions0) + delta;
 #else
     local_goal = (*positions0) + delta;
@@ -684,7 +874,12 @@ compoundpos_intersect (int *ndiagonals, Univcoord_T *positions0, int diagterm0,
     }
     last_local_goal = local_goal;
     
+#ifdef LARGE_GENOMES
+    ++positions0_high;
+    ++positions0_low;
+#else
     ++positions0;
+#endif
     --npositions0;
   }
 
@@ -716,7 +911,13 @@ check_diagonals (Univcoord_T *diagonals, int ndiagonals) {
    compoundpos. */
 Univcoord_T *
 Spanningelt_diagonals (int *ndiagonals, T this, int *miss_querypos5, int *miss_querypos3) {
-  Univcoord_T *p, *q, last_diagonal;
+#ifdef LARGE_GENOMES
+  unsigned char *p_high;
+  UINT4 *p_low;
+#else
+  Univcoord_T *p;
+#endif
+  Univcoord_T *q, last_diagonal;
   int diagterm, i;
 
   *miss_querypos5 = this->miss_querypos5;
@@ -740,11 +941,23 @@ Spanningelt_diagonals (int *ndiagonals, T this, int *miss_querypos5, int *miss_q
 	*ndiagonals = this->intersection_ndiagonals = 0;
       } else {
 	q = this->intersection_diagonals = (Univcoord_T *) CALLOC(this->npositions,sizeof(Univcoord_T));
+#ifdef LARGE_GENOMES
+	p_high = this->positions_high;
+	p_low = this->positions_low;
+#else
 	p = this->positions;
+#endif
 	diagterm = this->diagterm;
 
 	last_diagonal = 0U;
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	for (i = 0; i < this->npositions; i++) {
+	  if ((((Univcoord_T) *p_high) << 32) + (*p_low) != last_diagonal) {
+	    *q++ = (((Univcoord_T) *p_high) << 32) + (*p_low) + diagterm;
+	  }
+	  last_diagonal = (((Univcoord_T) *p_high++) << 32) + (*p_low++);
+	}
+#elif defined(WORDS_BIGENDIAN)
 	for (i = 0; i < this->npositions; i++) {
 	  if (Bigendian_convert_univcoord(*p) != last_diagonal) {
 	    *q++ = Bigendian_convert_univcoord(*p) + diagterm;
@@ -789,10 +1002,17 @@ Spanningelt_diagonals (int *ndiagonals, T this, int *miss_querypos5, int *miss_q
     if (this->compoundpos == NULL) {
       debug(printf("Two positions.  Converting to diagonals\n"));
       /* Two positions */
+#ifdef LARGE_GENOMES
+      this->intersection_diagonals = 
+	compute_intersection(&this->intersection_ndiagonals,
+			     this->partner_positions_high,this->partner_positions_low,this->partner_diagterm,this->partner_npositions,
+			     this->positions_high,this->positions_low,this->diagterm,this->npositions);
+#else
       this->intersection_diagonals = 
 	compute_intersection(&this->intersection_ndiagonals,
 			     this->partner_positions,this->partner_diagterm,this->partner_npositions,
 			     this->positions,this->diagterm,this->npositions);
+#endif
       *ndiagonals = this->candidates_score = this->pruning_score = this->intersection_ndiagonals;
 
       this->intersection_diagonals_reset = this->intersection_diagonals;
@@ -805,7 +1025,12 @@ Spanningelt_diagonals (int *ndiagonals, T this, int *miss_querypos5, int *miss_q
       debug(printf("Compoundpos and positions.  Converting to diagonals\n"));
       /* Compoundpos + positions */
       this->intersection_diagonals = 
-	compoundpos_intersect(&this->intersection_ndiagonals,this->partner_positions,
+	compoundpos_intersect(&this->intersection_ndiagonals,
+#ifdef LARGE_GENOMES
+			      this->partner_positions_high,this->partner_positions_low,
+#else
+			      this->partner_positions,
+#endif			      
 			      this->partner_diagterm,this->partner_npositions,
 			      this->compoundpos,this->compoundpos_diagterm);
       *ndiagonals = this->candidates_score = this->pruning_score = this->intersection_ndiagonals;
diff --git a/src/spanningelt.h b/src/spanningelt.h
index 7c3e609..926a036 100644
--- a/src/spanningelt.h
+++ b/src/spanningelt.h
@@ -1,4 +1,4 @@
-/* $Id: spanningelt.h 99756 2013-06-27 21:20:19Z twu $ */
+/* $Id: spanningelt.h 115433 2013-11-18 18:24:33Z twu $ */
 #ifndef SPANNINGELT_INCLUDED
 #define SPANNINGELT_INCLUDED
 #include "bool.h"
@@ -20,15 +20,27 @@ struct T {
   Univcoord_T *intersection_diagonals;
   int intersection_ndiagonals;
 
+#ifdef LARGE_GENOMES
+  unsigned char *partner_positions_high;
+  UINT4 *partner_positions_low;
+#else
   Univcoord_T *partner_positions;
+#endif
   int partner_diagterm;
   int partner_npositions;
 
   Compoundpos_T compoundpos;
   int compoundpos_diagterm;
 
+#ifdef LARGE_GENOMES
+  unsigned char *positions_high_allocated;
+  unsigned char *positions_high;
+  UINT4 *positions_low_allocated;
+  UINT4 *positions_low;
+#else
   Univcoord_T *positions_allocated;
   Univcoord_T *positions;
+#endif
   int diagterm;
   int npositions;
   
@@ -40,9 +52,16 @@ struct T {
   /* Reset values */
   Univcoord_T *intersection_diagonals_reset;
   int intersection_ndiagonals_reset;
+#ifdef LARGE_GENOMES
+  unsigned char *partner_positions_high_reset;
+  UINT4 *partner_positions_low_reset;
+  unsigned char *positions_high_reset;
+  UINT4 *positions_low_reset;
+#else
   Univcoord_T *partner_positions_reset;
-  int partner_npositions_reset;
   Univcoord_T *positions_reset;
+#endif
+  int partner_npositions_reset;
   int npositions_reset;
 };
 
@@ -61,8 +80,12 @@ Spanningelt_print_set (List_T spanningset);
 
 extern List_T
 Spanningelt_set (int *minscore, Storedoligomer_T *stage1_oligos, bool **stage1_retrievedp,
-		 Univcoord_T ***stage1_positions, int **stage1_npositions,
-		 Indexdb_T indexdb, int query_lastpos, int querylength,
+#ifdef LARGE_GENOMES
+		 unsigned char ***stage1_positions_high, UINT4 ***stage1_positions_low,
+#else
+		 Univcoord_T ***stage1_positions,
+#endif
+		 int **stage1_npositions, Indexdb_T indexdb, int query_lastpos, int querylength,
 		 int mod, bool plusp);
 
 extern int
diff --git a/src/splice.c b/src/splice.c
new file mode 100644
index 0000000..d2c2d7c
--- /dev/null
+++ b/src/splice.c
@@ -0,0 +1,1628 @@
+static char rcsid[] = "$Id: splice.c 138745 2014-06-11 19:04:25Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "splice.h"
+
+#include <stdio.h>
+#include "mem.h"
+#include "sense.h"
+#include "genome128_hr.h"
+#include "genome_sites.h"
+#include "substring.h"
+#include "maxent.h"
+#include "maxent_hr.h"
+#include "stage3hr.h"
+
+
+#define LOWPROB_SUPPORT 20
+#define LOCALSPLICING_SLOP 0.05
+
+
+/* Splice_solve_single */
+#ifdef DEBUG1
+#define debug1(x) x
+#else
+#define debug1(x)
+#endif
+
+/* Splice_solve_double */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+/* Group by segmentj */
+#ifdef DEBUG9
+#define debug9(x) x
+#else
+#define debug9(x)
+#endif
+
+
+
+
+static bool novelsplicingp = true;
+static int min_shortend;
+
+void
+Splice_setup (int min_shortend_in) {
+  min_shortend = min_shortend_in;
+  return;
+}
+
+
+
+/* Do not compare against true or false */
+/* Loosest criterion */
+static int
+sufficient_splice_prob_local (int support, int nmismatches, double spliceprob) {
+  support -= 3*nmismatches;
+  if (support < 14) {
+    return (spliceprob > 0.95);
+  } else if (support < 20) {
+    return (spliceprob > 0.90);
+  } else if (support < 26) {
+    return (spliceprob > 0.85);
+  } else {
+    return (spliceprob > 0.70);
+  }
+}
+
+
+
+/* Note: knowni holds joffset + j + 1, so 0 represents no known site
+   and values greater than 0 represent a known site.  Need to subtract
+   1 to obtain joffset + j. */
+
+List_T
+Splice_solve_single (int *found_score, int *nhits, List_T hits, List_T *lowprob,
+
+		     bool *segmenti_usedp, bool *segmentj_usedp,
+		     Univcoord_T segmenti_left, Univcoord_T segmentj_left,
+		     Chrnum_T segmenti_chrnum, Univcoord_T segmenti_chroffset,
+		     Univcoord_T segmenti_chrhigh, Chrpos_T segmenti_chrlength,
+		     Chrnum_T segmentj_chrnum, Univcoord_T segmentj_chroffset,
+		     Univcoord_T segmentj_chrhigh, Chrpos_T segmentj_chrlength,
+		     
+		     int querylength, Compress_T query_compress,
+		     int *segmenti_donor_knownpos, int *segmentj_acceptor_knownpos,
+		     int *segmentj_antidonor_knownpos, int *segmenti_antiacceptor_knownpos,
+		     int *segmenti_donor_knowni, int *segmentj_acceptor_knowni,
+		     int *segmentj_antidonor_knowni, int *segmenti_antiacceptor_knowni,
+		     int segmenti_donor_nknown, int segmentj_acceptor_nknown,
+		     int segmentj_antidonor_nknown, int segmenti_antiacceptor_nknown,
+		     int splicing_penalty, int max_mismatches_allowed,
+		     bool plusp, int genestrand, bool first_read_p,
+		     bool subs_or_indels_p, bool sarrayp) {
+  Substring_T donor, acceptor;
+  int best_splice_pos, splice_pos_start, splice_pos_end, splice_pos, i, j;
+  int donor_positions_alloc[MAX_READLENGTH+1], acceptor_positions_alloc[MAX_READLENGTH+1];
+  int donor_knowni_alloc[MAX_READLENGTH+1], acceptor_knowni_alloc[MAX_READLENGTH+1];
+
+  int best_nmismatches, nmismatches;
+  int best_segmenti_nmismatches, best_segmentj_nmismatches, segmenti_nmismatches, segmentj_nmismatches;
+  int donor_support, acceptor_support;
+  Univcoord_T best_donor_splicecoord, best_acceptor_splicecoord;
+  int best_donor_knowni, best_acceptor_knowni;
+  double best_prob, best_donor_prob, best_acceptor_prob, probi, probj;
+  bool sufficient1p, sufficient2p, orig_plusp, sensep;
+  int sensedir;
+
+  int donori_nsites, acceptorj_nsites, antiacceptori_nsites, antidonorj_nsites;
+  int *donori_positions, *acceptorj_positions, *antiacceptori_positions, *antidonorj_positions;
+  int *donori_knowni, *acceptorj_knowni, *antiacceptori_knowni, *antidonorj_knowni;
+
+
+  debug1(printf("Splice_solve_single: Getting genome at lefti %u and leftj %u (diff: %d)\n",
+		segmenti_left,segmentj_left,segmentj_left-segmenti_left));
+  *nhits = 0;
+
+#if 0
+  int sum, lefti, righti;
+  splice_pos_start = querylength;
+  splice_pos_end = 0;
+  for (sum = 0; sum <= max_mismatches_allowed; sum++) {
+    for (lefti = 0; lefti <= sum && lefti < nmismatches_left; lefti++) {
+      if ((righti = sum - lefti) < nmismatches_right &&
+	  mismatch_positions_left[lefti] > mismatch_positions_right[righti]) {
+	debug1(printf("At %d+%d mismatches, splice_pos using right: %d\n",lefti,righti,mismatch_positions_right[righti]+1));
+	debug1(printf("At %d+%d mismatches, splice_pos using left: %d\n",lefti,righti,mismatch_positions_left[lefti]));
+	if (mismatch_positions_right[righti] + 1 < splice_pos_start) {
+	  splice_pos_start = mismatch_positions_right[righti] + 1;	/* This is leftmost position in righti+1 .. lefti */
+	}
+	if (mismatch_positions_left[lefti] > splice_pos_end) {
+	  splice_pos_end = mismatch_positions_left[lefti];	/* This is rightmost position in righti+1 .. lefti */
+	}
+      }
+    }
+  }
+
+  /* Exclude ends */
+  if (splice_pos_start < min_localsplicing_end_matches) {
+    splice_pos_start = min_localsplicing_end_matches;
+  }
+  if (splice_pos_end > querylength - min_localsplicing_end_matches) {
+    splice_pos_end = querylength - min_localsplicing_end_matches;
+  }
+#else
+  /* splice_pos_start = min_localsplicing_end_matches; */
+  /* splice_pos_end = querylength - min_localsplicing_end_matches; */
+  splice_pos_start = min_shortend;
+  splice_pos_end = querylength - min_shortend; /* ? off by 1, so -l 3 allows only ends of up to 2 */
+#endif
+
+
+  if (splice_pos_start <= splice_pos_end) {
+    /* Originally from plus strand.  No complement.  */
+    /* Sense (End 1 to End 2) or Antisense (End 5 to End 6) */
+    if (novelsplicingp && segmenti_left + splice_pos_start >= DONOR_MODEL_LEFT_MARGIN) {
+      donori_nsites = Genome_donor_positions(donor_positions_alloc,donor_knowni_alloc,
+					     segmenti_donor_knownpos,segmenti_donor_knowni,
+					     segmenti_left,splice_pos_start,splice_pos_end);
+      donori_positions = donor_positions_alloc;
+      donori_knowni = donor_knowni_alloc;
+    } else {
+      donori_nsites = segmenti_donor_nknown;
+      donori_positions = segmenti_donor_knownpos;
+      donori_knowni = segmenti_donor_knowni;
+    }
+
+#ifdef DEBUG1
+    printf("Found %d donori sites:",donori_nsites);
+    for (i = 0; i < donori_nsites; i++) {
+      printf(" %d",donori_positions[i]);
+      if (donori_knowni[i] >= 0) {
+	printf(" (%d)",donori_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    if (novelsplicingp && segmentj_left + splice_pos_start >= ACCEPTOR_MODEL_LEFT_MARGIN) {
+      acceptorj_nsites = Genome_acceptor_positions(acceptor_positions_alloc,acceptor_knowni_alloc,
+						   segmentj_acceptor_knownpos,segmentj_acceptor_knowni,
+						   segmentj_left,splice_pos_start,splice_pos_end);
+      acceptorj_positions = acceptor_positions_alloc;
+      acceptorj_knowni = acceptor_knowni_alloc;
+    } else {
+      acceptorj_nsites = segmentj_acceptor_nknown;
+      acceptorj_positions = segmentj_acceptor_knownpos;
+      acceptorj_knowni = segmentj_acceptor_knowni;
+    }
+
+#ifdef DEBUG1
+    printf("Found %d acceptorj sites:",acceptorj_nsites);
+    for (i = 0; i < acceptorj_nsites; i++) {
+      printf(" %d",acceptorj_positions[i]);
+      if (acceptorj_knowni[i] >= 0) {
+	printf(" (%d)",acceptorj_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    best_nmismatches = max_mismatches_allowed;
+    best_prob = 0.0;
+    orig_plusp = true;
+
+    i = j = 0;
+    while (i < donori_nsites && j < acceptorj_nsites) {
+      if ((splice_pos = donori_positions[i]) < acceptorj_positions[j]) {
+	i++;
+      } else if (splice_pos > acceptorj_positions[j]) {
+	j++;
+      } else {
+	segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos,
+								 plusp,genestrand,first_read_p);
+	segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos,/*pos3*/querylength,
+								 plusp,genestrand,first_read_p);
+	if ((nmismatches = segmenti_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
+	  if (donori_knowni[i] >= 0) {
+	    probi = 1.0; /* Needs to be 1.0 for output */
+	  } else {
+	    probi = Maxent_hr_donor_prob(segmenti_left + splice_pos,segmenti_chroffset);
+	  }
+
+	  if (acceptorj_knowni[j] >= 0) {
+	    probj = 1.0; /* Needs to be 1.0 for output */
+	  } else {
+	    probj = Maxent_hr_acceptor_prob(segmentj_left + splice_pos,segmentj_chroffset);
+	  }
+
+	  debug1(
+		 if (plusp == true) {
+		   printf("plus sense splice_pos  %d, i.donor %f, j.acceptor %f\n",splice_pos,probi,probj);
+		 } else {
+		   printf("minus antisense splice_pos  %d, i.donor %f, j.acceptor %f\n",splice_pos,probi,probj);
+		 });
+
+	  if (nmismatches < best_nmismatches ||
+	      (nmismatches == best_nmismatches && probi + probj > best_prob)) {
+	    /* Success */
+	    best_nmismatches = nmismatches;
+	    best_prob = probi + probj;
+
+	    best_donor_splicecoord = segmenti_left + splice_pos;
+	    best_acceptor_splicecoord = segmentj_left + splice_pos;
+	    best_donor_knowni = donori_knowni[i];
+	    best_acceptor_knowni = acceptorj_knowni[j];
+	    best_donor_prob = probi;
+	    best_acceptor_prob = probj;
+	    best_splice_pos = splice_pos;
+	    best_segmenti_nmismatches = segmenti_nmismatches;
+	    best_segmentj_nmismatches = segmentj_nmismatches;
+	  }
+	}
+	i++;
+	j++;
+      }
+    }
+
+
+    /* Originally from minus strand.  Complement. */
+    /* Antisense (End 7 to End 8) or Sense (End 3 to End 4) */
+    if (novelsplicingp && segmenti_left + splice_pos_start >= ACCEPTOR_MODEL_RIGHT_MARGIN) {
+      antiacceptori_nsites = Genome_antiacceptor_positions(acceptor_positions_alloc,acceptor_knowni_alloc,
+							   segmenti_antiacceptor_knownpos,segmenti_antiacceptor_knowni,
+							   segmenti_left,splice_pos_start,splice_pos_end);
+      antiacceptori_positions = acceptor_positions_alloc;
+      antiacceptori_knowni = acceptor_knowni_alloc;
+    } else {
+      antiacceptori_nsites = segmenti_antiacceptor_nknown;
+      antiacceptori_positions = segmenti_antiacceptor_knownpos;
+      antiacceptori_knowni = segmenti_antiacceptor_knowni;
+    }
+
+#ifdef DEBUG1
+    printf("Found %d antiacceptori sites:",antiacceptori_nsites);
+    for (i = 0; i < antiacceptori_nsites; i++) {
+      printf(" %d",antiacceptori_positions[i]);
+      if (antiacceptori_knowni[i] >= 0) {
+	printf(" (%d)",antiacceptori_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    if (novelsplicingp && segmentj_left + splice_pos_start >= DONOR_MODEL_RIGHT_MARGIN) {
+      antidonorj_nsites = Genome_antidonor_positions(donor_positions_alloc,donor_knowni_alloc,
+						     segmentj_antidonor_knownpos,segmentj_antidonor_knowni,
+						     segmentj_left,splice_pos_start,splice_pos_end);
+      antidonorj_positions = donor_positions_alloc;
+      antidonorj_knowni = donor_knowni_alloc;
+    } else {
+      antidonorj_nsites = segmentj_antidonor_nknown;
+      antidonorj_positions = segmentj_antidonor_knownpos;
+      antidonorj_knowni = segmentj_antidonor_knowni;
+    }
+
+#ifdef DEBUG1
+    printf("Found %d antidonorj sites:",antidonorj_nsites);
+    for (i = 0; i < antidonorj_nsites; i++) {
+      printf(" %d",antidonorj_positions[i]);
+      if (antidonorj_knowni[i] >= 0) {
+	printf(" (%d)",antidonorj_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    i = j = 0;
+    while (i < antiacceptori_nsites && j < antidonorj_nsites) {
+      if ((splice_pos = antiacceptori_positions[i]) < antidonorj_positions[j]) {
+	i++;
+      } else if (splice_pos > antidonorj_positions[j]) {
+	j++;
+      } else {
+	segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos,
+								 plusp,genestrand,first_read_p);
+	segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos,/*pos3*/querylength,
+								 plusp,genestrand,first_read_p);
+	if ((nmismatches = segmenti_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
+	  if (antiacceptori_knowni[i] >= 0) {
+	    probi = 1.0; /* Needs to be 1.0 for output */
+	  } else {
+	    probi = Maxent_hr_antiacceptor_prob(segmenti_left + splice_pos,segmenti_chroffset);
+	  }
+
+	  if (antidonorj_knowni[j] >= 0) {
+	    probj = 1.0; /* Needs to be 1.0 for output */
+	  } else {
+	    probj = Maxent_hr_antidonor_prob(segmentj_left + splice_pos,segmentj_chroffset);
+	  }
+
+	  debug1(
+		 if (plusp == true) {
+		   printf("plus antisense splice_pos  %d, j.donor %f, i.acceptor %f\n",splice_pos,probj,probi);
+		 } else {
+		   printf("minus sense splice_pos  %d, j.donor %f, i.acceptor %f\n",splice_pos,probj,probi);
+		 });
+	  
+	  if (nmismatches < best_nmismatches ||
+	      (nmismatches == best_nmismatches && probi + probj > best_prob)) {
+	    /* Success */
+	    best_nmismatches = nmismatches;
+	    best_prob = probi + probj;
+
+	    best_donor_splicecoord = segmentj_left + splice_pos;
+	    best_acceptor_splicecoord = segmenti_left + splice_pos;
+	    best_donor_knowni = antidonorj_knowni[j];
+	    best_acceptor_knowni = antiacceptori_knowni[i];
+	    best_donor_prob = probj;
+	    best_acceptor_prob = probi;
+	    best_splice_pos = splice_pos;
+	    best_segmentj_nmismatches = segmentj_nmismatches;
+	    best_segmenti_nmismatches = segmenti_nmismatches;
+	    orig_plusp = false;
+	  }
+	}
+	i++;
+	j++;
+      }
+    }
+
+    if (best_prob > 0.0) {
+      debug1(printf("best_prob = %f at splice_pos %d (%u,%u)\n",
+		    best_prob,best_splice_pos,best_donor_splicecoord,best_acceptor_splicecoord));
+      if (orig_plusp == true) {
+	/* Originally from plus strand.  No complement. */
+	sensep = (plusp == true) ? true : false;
+	sensedir = (plusp == true) ? SENSE_FORWARD : SENSE_ANTI;
+
+	donor = Substring_new_donor(best_donor_splicecoord,best_donor_knowni,
+				    best_splice_pos,best_segmenti_nmismatches,
+				    best_donor_prob,/*left*/segmenti_left,query_compress,
+				    querylength,plusp,genestrand,first_read_p,sensep,
+				    segmenti_chrnum,segmenti_chroffset,segmenti_chrhigh,segmenti_chrlength);
+
+	acceptor = Substring_new_acceptor(best_acceptor_splicecoord,best_acceptor_knowni,
+					  best_splice_pos,best_segmentj_nmismatches,
+					  best_acceptor_prob,/*left*/segmentj_left,query_compress,
+					  querylength,plusp,genestrand,first_read_p,sensep,
+					  segmentj_chrnum,segmentj_chroffset,segmentj_chrhigh,segmentj_chrlength);
+
+	if (donor == NULL || acceptor == NULL) {
+	  if (donor != NULL) Substring_free(&donor);
+	  if (acceptor != NULL) Substring_free(&acceptor);
+	} else {
+	  debug1(printf("Splice_solve_single success\n"));
+	  *segmenti_usedp = *segmentj_usedp = true;
+
+	  donor_support = best_splice_pos;
+	  acceptor_support = querylength - best_splice_pos;
+	  sufficient1p = sufficient_splice_prob_local(donor_support,best_segmenti_nmismatches,best_donor_prob);
+	  sufficient2p = sufficient_splice_prob_local(acceptor_support,best_segmentj_nmismatches,best_acceptor_prob);
+
+	  if (sufficient1p && sufficient2p) {
+	    *nhits += 1;
+	    return List_push(hits,(void *) Stage3end_new_splice(&(*found_score),best_segmenti_nmismatches,best_segmentj_nmismatches,
+								donor,acceptor,/*distance*/segmentj_left - segmenti_left,
+								/*shortdistancep*/true,splicing_penalty,querylength,
+								/*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								/*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir,
+								sarrayp));
+	  } else if (subs_or_indels_p == true) {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	    return hits;
+	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	    return hits;
+	  } else if (sufficient1p || sufficient2p) {
+	    *lowprob = List_push(*lowprob,
+				 (void *) Stage3end_new_splice(&(*found_score),best_segmenti_nmismatches,best_segmentj_nmismatches,
+							       donor,acceptor,/*distance*/segmentj_left - segmenti_left,
+							       /*shortdistancep*/true,splicing_penalty,querylength,
+							       /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+							       /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+							       /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+							       /*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir,
+							       sarrayp));
+	    return hits;
+	  } else {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  }
+	}
+
+      } else {
+	/* Originally from minus strand.  Complement. */
+	sensep = (plusp == true) ? false : true;
+	sensedir = (plusp == true) ? SENSE_ANTI : SENSE_FORWARD;
+
+	donor = Substring_new_donor(best_donor_splicecoord,best_donor_knowni,
+				    best_splice_pos,best_segmentj_nmismatches,
+				    best_donor_prob,/*left*/segmentj_left,query_compress,
+				    querylength,plusp,genestrand,first_read_p,sensep,
+				    segmentj_chrnum,segmentj_chroffset,segmentj_chrhigh,segmentj_chrlength);
+
+	acceptor = Substring_new_acceptor(best_acceptor_splicecoord,best_acceptor_knowni,
+					  best_splice_pos,best_segmenti_nmismatches,
+					  best_acceptor_prob,/*left*/segmenti_left,query_compress,
+					  querylength,plusp,genestrand,first_read_p,sensep,
+					  segmenti_chrnum,segmenti_chroffset,segmenti_chrhigh,segmenti_chrlength);
+
+	if (donor == NULL || acceptor == NULL) {
+	  if (donor != NULL) Substring_free(&donor);
+	  if (acceptor != NULL) Substring_free(&acceptor);
+	} else {
+	  debug1(printf("Splice_solve_single success\n"));
+	  *segmenti_usedp = *segmentj_usedp = true;
+
+	  acceptor_support = best_splice_pos;
+	  donor_support = querylength - best_splice_pos;
+	  sufficient1p = sufficient_splice_prob_local(acceptor_support,best_segmenti_nmismatches,best_acceptor_prob);
+	  sufficient2p = sufficient_splice_prob_local(donor_support,best_segmentj_nmismatches,best_donor_prob);
+	  if (sufficient1p && sufficient2p) {
+	    *nhits += 1;
+	    return List_push(hits,(void *) Stage3end_new_splice(&(*found_score),best_segmentj_nmismatches,best_segmenti_nmismatches,
+								donor,acceptor,/*distance*/segmentj_left - segmenti_left,
+								/*shortdistancep*/true,splicing_penalty,querylength,
+								/*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								/*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir,
+								sarrayp));
+	  } else if (subs_or_indels_p == true) {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	    return hits;
+	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	    return hits;
+	  } else if (sufficient1p || sufficient2p) {
+	    *lowprob = List_push(*lowprob,
+				 (void *) Stage3end_new_splice(&(*found_score),best_segmentj_nmismatches,best_segmenti_nmismatches,
+							       donor,acceptor,/*distance*/segmentj_left - segmenti_left,
+							       /*shortdistancep*/true,splicing_penalty,querylength,
+							       /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+							       /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+							       /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+							       /*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir,
+							       sarrayp));
+	    return hits;
+	  } else {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	    return hits;
+	  }
+	}
+      }
+    }
+  }
+
+  debug1(printf("Splice_solve_single fail\n"));
+  return hits;
+}
+
+
+List_T
+Splice_solve_double (int *found_score, int *nhits, List_T hits, List_T *lowprob,
+
+		     bool *segmenti_usedp, bool *segmentm_usedp, bool *segmentj_usedp,
+		     Univcoord_T segmenti_left, Univcoord_T segmentm_left, Univcoord_T segmentj_left,
+		     Chrnum_T segmenti_chrnum, Univcoord_T segmenti_chroffset,
+		     Univcoord_T segmenti_chrhigh, Chrpos_T segmenti_chrlength,
+		     Chrnum_T segmentm_chrnum, Univcoord_T segmentm_chroffset,
+		     Univcoord_T segmentm_chrhigh, Chrpos_T segmentm_chrlength,
+		     Chrnum_T segmentj_chrnum, Univcoord_T segmentj_chroffset,
+		     Univcoord_T segmentj_chrhigh, Chrpos_T segmentj_chrlength,
+
+		     int querylength, Compress_T query_compress,
+		     int *segmenti_donor_knownpos, int *segmentm_acceptor_knownpos, int *segmentm_donor_knownpos, int *segmentj_acceptor_knownpos,
+		     int *segmentj_antidonor_knownpos, int *segmentm_antiacceptor_knownpos, int *segmentm_antidonor_knownpos, int *segmenti_antiacceptor_knownpos,
+		     int *segmenti_donor_knowni, int *segmentm_acceptor_knowni, int *segmentm_donor_knowni, int *segmentj_acceptor_knowni,
+		     int *segmentj_antidonor_knowni, int *segmentm_antiacceptor_knowni, int *segmentm_antidonor_knowni, int *segmenti_antiacceptor_knowni,
+		     int segmenti_donor_nknown, int segmentm_acceptor_nknown, int segmentm_donor_nknown, int segmentj_acceptor_nknown,
+		     int segmentj_antidonor_nknown, int segmentm_antiacceptor_nknown, int segmentm_antidonor_nknown, int segmenti_antiacceptor_nknown,
+		     int splicing_penalty, int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p,
+		     bool subs_or_indels_p, bool sarrayp) {
+  Substring_T donor, shortexon, acceptor;
+  int best_splice_pos_1, best_splice_pos_2, splice_pos_start, splice_pos_end, splice_pos_1, splice_pos_2;
+  int i, a, b, j;
+  int donor1_positions_alloc[MAX_READLENGTH+1], acceptor1_positions_alloc[MAX_READLENGTH+1],
+    donor2_positions_alloc[MAX_READLENGTH+1], acceptor2_positions_alloc[MAX_READLENGTH+1];
+  int donor1_knowni_alloc[MAX_READLENGTH+1], acceptor1_knowni_alloc[MAX_READLENGTH+1],
+    donor2_knowni_alloc[MAX_READLENGTH+1], acceptor2_knowni_alloc[MAX_READLENGTH+1];
+
+  int best_nmismatches, nmismatches;
+  int best_segmenti_nmismatches, best_segmentm_nmismatches, best_segmentj_nmismatches,
+    segmenti_nmismatches, segmentm_nmismatches, segmentj_nmismatches;
+  int donor_support, acceptor_support, middle_support;
+  Univcoord_T best_donor1_splicecoord, best_acceptor1_splicecoord, best_donor2_splicecoord, best_acceptor2_splicecoord;
+  int best_donor1_knowni, best_acceptor1_knowni, best_donor2_knowni, best_acceptor2_knowni;
+  double best_prob, best_donor1_prob, best_acceptor1_prob, best_donor2_prob, best_acceptor2_prob,
+    probi, proba, probb, probj;
+  bool sufficient1p, sufficient2p, sufficient3p, sufficient4p, orig_plusp, sensep, matchp;
+  int sensedir;
+
+  int donori_nsites, acceptora_nsites, donorb_nsites, acceptorj_nsites,
+    antiacceptori_nsites, antidonora_nsites, antiacceptorb_nsites, antidonorj_nsites;
+  int *donori_positions, *acceptora_positions, *donorb_positions, *acceptorj_positions,
+    *antiacceptori_positions, *antidonora_positions, *antiacceptorb_positions, *antidonorj_positions;
+  int *donori_knowni, *acceptora_knowni, *donorb_knowni, *acceptorj_knowni,
+    *antiacceptori_knowni, *antidonora_knowni, *antiacceptorb_knowni, *antidonorj_knowni;
+
+
+  debug2(printf("Splice_solve_double: Getting genome at lefti %u, leftm %u, and leftj %u\n",
+		segmenti_left,segmentm_left,segmentj_left));
+
+  *nhits = 0;
+  splice_pos_start = min_shortend;
+  splice_pos_end = querylength - min_shortend; /* ? off by 1, so -l 3 allows only ends of up to 2 */
+
+  if (splice_pos_start <= splice_pos_end) {
+    /* Originally from plus strand.  No complement. */
+    /* Sense (End 1 to End 2) or Antisense (End 5 to End 6) */
+
+    /* Segment i */
+    if (novelsplicingp && segmenti_left + splice_pos_start >= DONOR_MODEL_LEFT_MARGIN) {
+      donori_nsites = Genome_donor_positions(donor1_positions_alloc,donor1_knowni_alloc,
+					     segmenti_donor_knownpos,segmenti_donor_knowni,
+					     segmenti_left,splice_pos_start,splice_pos_end);
+      donori_positions = donor1_positions_alloc;
+      donori_knowni = donor1_knowni_alloc;
+    } else {
+      donori_nsites = segmenti_donor_nknown;
+      donori_positions = segmenti_donor_knownpos;
+      donori_knowni = segmenti_donor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d donori sites:",donori_nsites);
+    for (i = 0; i < donori_nsites; i++) {
+      printf(" %d",donori_positions[i]);
+      if (donori_knowni[i] >= 0) {
+	printf(" (%d)",donori_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    /* Segment m1 */
+    if (novelsplicingp && segmentm_left + splice_pos_start >= ACCEPTOR_MODEL_LEFT_MARGIN) {
+      acceptora_nsites = Genome_acceptor_positions(acceptor1_positions_alloc,acceptor1_knowni_alloc,
+						   segmentm_acceptor_knownpos,segmentm_acceptor_knowni,
+						   segmentm_left,splice_pos_start,splice_pos_end);
+      acceptora_positions = acceptor1_positions_alloc;
+      acceptora_knowni = acceptor1_knowni_alloc;
+    } else {
+      acceptora_nsites = segmentm_acceptor_nknown;
+      acceptora_positions = segmentm_acceptor_knownpos;
+      acceptora_knowni = segmentm_acceptor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d acceptora sites:",acceptora_nsites);
+    for (i = 0; i < acceptora_nsites; i++) {
+      printf(" %d",acceptora_positions[i]);
+      if (acceptora_knowni[i] >= 0) {
+	printf(" (%d)",acceptora_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    /* Segment m2 */
+    if (novelsplicingp && segmentm_left + splice_pos_start >= DONOR_MODEL_LEFT_MARGIN) {
+      donorb_nsites = Genome_donor_positions(donor2_positions_alloc,donor2_knowni_alloc,
+					     segmentm_donor_knownpos,segmentm_donor_knowni,
+					     segmentm_left,splice_pos_start,splice_pos_end);
+      donorb_positions = donor2_positions_alloc;
+      donorb_knowni = donor2_knowni_alloc;
+    } else {
+      donorb_nsites = segmentm_donor_nknown;
+      donorb_positions = segmentm_donor_knownpos;
+      donorb_knowni = segmentm_donor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d donorb sites:",donorb_nsites);
+    for (i = 0; i < donorb_nsites; i++) {
+      printf(" %d",donorb_positions[i]);
+      if (donorb_knowni[i] >= 0) {
+	printf(" (%d)",donorb_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    /* Segment j */
+    if (novelsplicingp && segmentj_left + splice_pos_start >= ACCEPTOR_MODEL_LEFT_MARGIN) {
+      acceptorj_nsites = Genome_acceptor_positions(acceptor2_positions_alloc,acceptor2_knowni_alloc,
+						   segmentj_acceptor_knownpos,segmentj_acceptor_knowni,
+						   segmentj_left,splice_pos_start,splice_pos_end);
+      acceptorj_positions = acceptor2_positions_alloc;
+      acceptorj_knowni = acceptor2_knowni_alloc;
+    } else {
+      acceptorj_nsites = segmentj_acceptor_nknown;
+      acceptorj_positions = segmentj_acceptor_knownpos;
+      acceptorj_knowni = segmentj_acceptor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d acceptorj sites:",acceptorj_nsites);
+    for (i = 0; i < acceptorj_nsites; i++) {
+      printf(" %d",acceptorj_positions[i]);
+      if (acceptorj_knowni[i] >= 0) {
+	printf(" (%d)",acceptorj_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    best_nmismatches = max_mismatches_allowed;
+    best_prob = 0.0;
+    orig_plusp = true;
+
+    i = a = b = j = 0;
+    while (i < donori_nsites && a < acceptora_nsites) {
+      if ((splice_pos_1 = donori_positions[i]) < acceptora_positions[a]) {
+	i++;
+      } else if (splice_pos_1 > acceptora_positions[a]) {
+	a++;
+      } else {
+	while (b < donorb_nsites && donorb_positions[b] <= splice_pos_1) {
+	  b++;
+	}
+	while (j < acceptorj_nsites && acceptorj_positions[j] <= splice_pos_1) {
+	  j++;
+	}
+	matchp = false;
+	while (b < donorb_nsites && j < acceptorj_nsites && matchp == false) {
+	  if ((splice_pos_2 = donorb_positions[b]) < acceptorj_positions[j]) {
+	    b++;
+	  } else if (splice_pos_2 > acceptorj_positions[j]) {
+	    j++;
+	  } else {
+	    segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos_1,
+								     plusp,genestrand,first_read_p);
+	    segmentm_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentm_left,/*pos5*/splice_pos_1,/*pos3*/splice_pos_2,
+								     plusp,genestrand,first_read_p);
+	    segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos_2,/*pos3*/querylength,
+								     plusp,genestrand,first_read_p);
+	    if ((nmismatches = segmenti_nmismatches + segmentm_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
+	      if (donori_knowni[i] >= 0) {
+		probi = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		probi = Maxent_hr_donor_prob(segmenti_left + splice_pos_1,segmenti_chroffset);
+	      }
+
+	      if (acceptora_knowni[a] >= 0) {
+		proba = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		proba = Maxent_hr_acceptor_prob(segmentm_left + splice_pos_1,segmentm_chroffset);
+	      }
+
+	      if (donorb_knowni[b] >= 0) {
+		probb = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		probb = Maxent_hr_donor_prob(segmentm_left + splice_pos_2,segmentm_chroffset);
+	      }
+	      
+	      if (acceptorj_knowni[j] >= 0) {
+		probj = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		probj = Maxent_hr_acceptor_prob(segmentj_left + splice_pos_2,segmentj_chroffset);
+	      }
+
+	      debug2(
+		     if (plusp == true) {
+		       printf("plus sense splice_pos  %d, %d, i.donor %f, m.acceptor %f, m.donor %f, j.acceptor %f\n",
+			      splice_pos_1,splice_pos_2,probi,proba,probb,probj);
+		     } else {
+		       printf("minus antisense splice_pos  %d %d, i.donor %f, m.acceptor %f, m.donor %f, j.acceptor %f\n",
+			      splice_pos_1,splice_pos_2,probi,proba,probb,probj);
+		     });
+
+	      if (nmismatches < best_nmismatches ||
+		  (nmismatches == best_nmismatches && probi + proba + probb + probj > best_prob)) {
+		/* Success */
+		best_nmismatches = nmismatches;
+		best_prob = probi + proba + probb + probj;
+
+		best_donor1_splicecoord = segmenti_left + splice_pos_1;
+		best_acceptor1_splicecoord = segmentm_left + splice_pos_1;
+		best_donor2_splicecoord = segmentm_left + splice_pos_2;
+		best_acceptor2_splicecoord = segmentj_left + splice_pos_2;
+		best_donor1_knowni = donori_knowni[i];
+		best_acceptor1_knowni = acceptora_knowni[a];
+		best_donor2_knowni = donorb_knowni[b];
+		best_acceptor2_knowni = acceptorj_knowni[j];
+		best_donor1_prob = probi;
+		best_acceptor1_prob = proba;
+		best_donor2_prob = probb;
+		best_acceptor2_prob = probj;
+		best_splice_pos_1 = splice_pos_1;
+		best_splice_pos_2 = splice_pos_2;
+		best_segmenti_nmismatches = segmenti_nmismatches;
+		best_segmentm_nmismatches = segmentm_nmismatches;
+		best_segmentj_nmismatches = segmentj_nmismatches;
+	      }
+	    }
+	    /* b++; j++; Don't advance b or j, so next i/a can match */
+	    matchp = true;
+	  }
+	}
+	i++;
+	a++;
+      }
+    }
+
+
+    /* Originally from minus strand.  Complement. */
+    /* Antisense (End 7 to End 8) or Sense (End 3 to End 4) */
+
+    /* Segment i */
+    if (novelsplicingp && segmenti_left + splice_pos_start >= ACCEPTOR_MODEL_RIGHT_MARGIN) {
+      antiacceptori_nsites = Genome_antiacceptor_positions(acceptor1_positions_alloc,acceptor1_knowni_alloc,
+							   segmenti_antiacceptor_knownpos,segmenti_antiacceptor_knowni,
+							   segmenti_left,splice_pos_start,splice_pos_end);
+      antiacceptori_positions = acceptor1_positions_alloc;
+      antiacceptori_knowni = acceptor1_knowni_alloc;
+    } else {
+      antiacceptori_nsites = segmenti_antiacceptor_nknown;
+      antiacceptori_positions = segmenti_antiacceptor_knownpos;
+      antiacceptori_knowni = segmenti_antiacceptor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d antiacceptori sites:",antiacceptori_nsites);
+    for (i = 0; i < antiacceptori_nsites; i++) {
+      printf(" %d",antiacceptori_positions[i]);
+      if (antiacceptori_knowni[i] >= 0) {
+	printf(" (%d)",antiacceptori_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    /* Segment m1 */
+    if (novelsplicingp && segmentm_left + splice_pos_start >= DONOR_MODEL_RIGHT_MARGIN) {
+      antidonora_nsites = Genome_antidonor_positions(donor1_positions_alloc,donor1_knowni_alloc,
+						     segmentm_antidonor_knownpos,segmentm_antidonor_knowni,
+						     segmentm_left,splice_pos_start,splice_pos_end);
+      antidonora_positions = donor1_positions_alloc;
+      antidonora_knowni = donor1_knowni_alloc;
+    } else {
+      antidonora_nsites = segmentm_antidonor_nknown;
+      antidonora_positions = segmentm_antidonor_knownpos;
+      antidonora_knowni = segmentm_antidonor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d antidonora sites:",antidonora_nsites);
+    for (i = 0; i < antidonora_nsites; i++) {
+      printf(" %d",antidonora_positions[i]);
+      if (antidonora_knowni[i] >= 0) {
+	printf(" (%d)",antidonora_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    /* Segment m2 */
+    if (novelsplicingp && segmentm_left + splice_pos_start >= ACCEPTOR_MODEL_RIGHT_MARGIN) {
+      antiacceptorb_nsites = Genome_antiacceptor_positions(acceptor2_positions_alloc,acceptor2_knowni_alloc,
+							   segmentm_antiacceptor_knownpos,segmentm_antiacceptor_knowni,
+							   segmentm_left,splice_pos_start,splice_pos_end);
+      antiacceptorb_positions = acceptor2_positions_alloc;
+      antiacceptorb_knowni = acceptor2_knowni_alloc;
+    } else {
+      antiacceptorb_nsites = segmentm_antiacceptor_nknown;
+      antiacceptorb_positions = segmentm_antiacceptor_knownpos;
+      antiacceptorb_knowni = segmentm_antiacceptor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d antiacceptorb sites:",antiacceptorb_nsites);
+    for (i = 0; i < antiacceptorb_nsites; i++) {
+      printf(" %d",antiacceptorb_positions[i]);
+      if (antiacceptorb_knowni[i] >= 0) {
+	printf(" (%d)",antiacceptorb_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+    /* Segment j */
+    if (novelsplicingp && segmentj_left + splice_pos_start >= DONOR_MODEL_RIGHT_MARGIN) {
+      antidonorj_nsites = Genome_antidonor_positions(donor2_positions_alloc,donor2_knowni_alloc,
+						     segmentj_antidonor_knownpos,segmentj_antidonor_knowni,
+						     segmentj_left,splice_pos_start,splice_pos_end);
+      antidonorj_positions = donor2_positions_alloc;
+      antidonorj_knowni = donor2_knowni_alloc;
+    } else {
+      antidonorj_nsites = segmentj_antidonor_nknown;
+      antidonorj_positions = segmentj_antidonor_knownpos;
+      antidonorj_knowni = segmentj_antidonor_knowni;
+    }
+
+#ifdef DEBUG2
+    printf("Found %d antidonorj sites:",antidonorj_nsites);
+    for (i = 0; i < antidonorj_nsites; i++) {
+      printf(" %d",antidonorj_positions[i]);
+      if (antidonorj_knowni[i] >= 0) {
+	printf(" (%d)",antidonorj_knowni[i]);
+      }
+    }
+    printf("\n");
+#endif
+
+
+    i = a = b = j = 0;
+    while (i < antiacceptori_nsites && a < antidonora_nsites) {
+      if ((splice_pos_1 = antiacceptori_positions[i]) < antidonora_positions[a]) {
+	i++;
+      } else if (splice_pos_1 > antidonora_positions[a]) {
+	a++;
+      } else {
+	while (b < antiacceptorb_nsites && antiacceptorb_positions[b] <= splice_pos_1) {
+	  b++;
+	}
+	while (j < antidonorj_nsites && antidonorj_positions[j] <= splice_pos_1) {
+	  j++;
+	}
+	matchp = false;
+	while (b < antiacceptorb_nsites && j < antidonorj_nsites && matchp == false) {
+	  if ((splice_pos_2 = antiacceptorb_positions[b]) < antidonorj_positions[j]) {
+	    b++;
+	  } else if (splice_pos_2 > antidonorj_positions[j]) {
+	    j++;
+	  } else {
+	    segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos_1,
+								     plusp,genestrand,first_read_p);
+	    segmentm_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentm_left,/*pos5*/splice_pos_1,/*pos3*/splice_pos_2,
+								     plusp,genestrand,first_read_p);
+	    segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos_2,/*pos3*/querylength,
+								     plusp,genestrand,first_read_p);
+	    
+	    if ((nmismatches = segmenti_nmismatches + segmentm_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
+	      if (antiacceptori_knowni[i] >= 0) {
+		probi = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		probi = Maxent_hr_antiacceptor_prob(segmenti_left + splice_pos_1,segmenti_chroffset);
+	      }
+	    
+	      if (antidonora_knowni[a] >= 0) {
+		proba = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		proba = Maxent_hr_antidonor_prob(segmentm_left + splice_pos_1,segmentm_chroffset);
+	      }
+
+	      if (antiacceptorb_knowni[b] >= 0) {
+		probb = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		probb = Maxent_hr_antiacceptor_prob(segmentm_left + splice_pos_2,segmentm_chroffset);
+	      }
+
+	      if (antidonorj_knowni[j] >= 0) {
+		probj = 1.0; /* Needs to be 1.0 for output */
+	      } else {
+		probj = Maxent_hr_antidonor_prob(segmentj_left + splice_pos_2,segmentj_chroffset);
+	      }
+
+	      debug2(
+		     if (plusp == true) {
+		       printf("plus antisense splice_pos  %d, %d, i.antiacceptor %f, m.antidonor %f, m.antiacceptor %f, j.antidonor %f\n",
+			      splice_pos_1,splice_pos_2,probi,proba,probb,probj);
+		     } else {
+		       printf("minus sense splice_pos  %d, %d, i.antiacceptor %f, m.antidonor %f, m.antiacceptor %f, j.antidonor %f\n",
+			      splice_pos_1,splice_pos_2,probi,proba,probb,probj);
+		     });
+
+	      if (nmismatches < best_nmismatches ||
+		  (nmismatches == best_nmismatches && probi + proba + probb + probj > best_prob)) {
+		/* Success */
+		best_nmismatches = nmismatches;
+		best_prob = probi + proba + probb + probj;
+
+		best_acceptor1_splicecoord = segmenti_left + splice_pos_1;
+		best_donor1_splicecoord = segmentm_left + splice_pos_1;
+		best_acceptor2_splicecoord = segmentm_left + splice_pos_2;
+		best_donor2_splicecoord = segmentj_left + splice_pos_2;
+		best_acceptor1_knowni = antiacceptori_knowni[i];
+		best_donor1_knowni = antidonora_knowni[a];
+		best_acceptor2_knowni = antiacceptorb_knowni[b];
+		best_donor2_knowni = antidonorj_knowni[j];
+		best_acceptor1_prob = probi;
+		best_donor1_prob = proba;
+		best_acceptor2_prob = probb;
+		best_donor2_prob = probj;
+		best_splice_pos_1 = splice_pos_1;
+		best_splice_pos_2 = splice_pos_2;
+		best_segmenti_nmismatches = segmenti_nmismatches;
+		best_segmentm_nmismatches = segmentm_nmismatches;
+		best_segmentj_nmismatches = segmentj_nmismatches;
+		orig_plusp = false;
+	      }
+	    }
+	    /* b++; j++; Don't advance b or j, so next i/a can match */
+	    matchp = true;
+	  }
+	}
+	i++;
+	a++;
+      }
+    }
+
+
+    if (best_prob > 0.0) {
+      debug2(printf("best_prob = %f at splice_pos %d and %d\n",best_prob,best_splice_pos_1,best_splice_pos_2));
+      if (orig_plusp == true) {
+	/* Originally from plus strand.  No complement. */
+	sensep = (plusp == true) ? true : false;
+	sensedir = (plusp == true) ? SENSE_FORWARD : SENSE_ANTI;
+
+	donor = Substring_new_donor(best_donor1_splicecoord,best_donor1_knowni,
+				    best_splice_pos_1,best_segmenti_nmismatches,
+				    best_donor1_prob,/*left*/segmenti_left,query_compress,
+				    querylength,plusp,genestrand,first_read_p,sensep,
+				    segmenti_chrnum,segmenti_chroffset,segmenti_chrhigh,segmenti_chrlength);
+
+	shortexon = Substring_new_shortexon(best_acceptor1_splicecoord,best_acceptor1_knowni,
+					    best_donor2_splicecoord,best_donor2_knowni,
+					    /*acceptor_pos*/best_splice_pos_1,/*donor_pos*/best_splice_pos_2,best_segmentm_nmismatches,
+					    /*acceptor_prob*/best_acceptor1_prob,/*donor_prob*/best_donor2_prob,
+					    /*left*/segmentm_left,query_compress,
+					    querylength,plusp,genestrand,first_read_p,
+					    sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
+					    segmentm_chrnum,segmentm_chroffset,segmentm_chrhigh,segmentm_chrlength);
+
+	acceptor = Substring_new_acceptor(best_acceptor2_splicecoord,best_acceptor2_knowni,
+					  best_splice_pos_2,best_segmentj_nmismatches,
+					  best_acceptor2_prob,/*left*/segmentj_left,query_compress,
+					  querylength,plusp,genestrand,first_read_p,sensep,
+					  segmentj_chrnum,segmentj_chroffset,segmentj_chrhigh,segmentj_chrlength);
+
+	if (donor == NULL || shortexon == NULL || acceptor == NULL) {
+	  if (donor != NULL) Substring_free(&donor);
+	  if (shortexon != NULL) Substring_free(&shortexon);
+	  if (acceptor != NULL) Substring_free(&acceptor);
+	} else {
+	  *segmenti_usedp = *segmentm_usedp = *segmentj_usedp = true;
+
+	  donor_support = best_splice_pos_1;
+	  middle_support = best_splice_pos_2 - best_splice_pos_1;
+	  acceptor_support = querylength - best_splice_pos_2;
+	  sufficient1p = sufficient_splice_prob_local(donor_support,best_segmenti_nmismatches,best_donor1_prob);
+	  sufficient2p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_acceptor1_prob);
+	  sufficient3p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_donor2_prob);
+	  sufficient4p = sufficient_splice_prob_local(acceptor_support,best_segmentj_nmismatches,best_acceptor2_prob);
+	  if (sufficient1p && sufficient2p && sufficient3p && sufficient4p) {
+	    *nhits += 1;
+	    hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+								   /*acceptor_distance*/segmentm_left - segmenti_left,
+								   /*donor_distance*/segmentj_left - segmentm_left,
+								   /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+								   /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								   /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+								   splicing_penalty,querylength,sensedir,sarrayp));
+	  } else if (subs_or_indels_p == true) {
+	    /* Don't alter hits */
+	    if (donor != NULL) Substring_free(&donor);
+	    if (shortexon != NULL) Substring_free(&shortexon);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (shortexon != NULL) Substring_free(&shortexon);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  } else if ((sufficient1p || sufficient2p) && (sufficient3p || sufficient4p)) {
+	    *lowprob = List_push(*lowprob,
+				 (void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+								  /*acceptor_distance*/segmentm_left - segmenti_left,
+								  /*donor_distance*/segmentj_left - segmentm_left,
+								  /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+								  /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								  /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								  /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+								  splicing_penalty,querylength,sensedir,sarrayp));
+	  } else {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (shortexon != NULL) Substring_free(&shortexon);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  }
+	}
+
+      } else {
+	/* Originally from minus strand.  Complement. */
+	sensep = (plusp == true) ? false : true;
+	sensedir = (plusp == true) ? SENSE_ANTI : SENSE_FORWARD;
+
+	donor = Substring_new_donor(best_donor2_splicecoord,best_donor2_knowni,
+				    best_splice_pos_2,best_segmentj_nmismatches,
+				    best_donor2_prob,/*left*/segmentj_left,query_compress,
+				    querylength,plusp,genestrand,first_read_p,sensep,
+				    segmentj_chrnum,segmentj_chroffset,segmentj_chrhigh,segmentj_chrlength);
+
+	shortexon = Substring_new_shortexon(best_acceptor2_splicecoord,best_acceptor2_knowni,
+					    best_donor1_splicecoord,best_donor1_knowni,
+					    /*acceptor_pos*/best_splice_pos_2,/*donor_pos*/best_splice_pos_1,best_segmentm_nmismatches,
+					    /*acceptor_prob*/best_acceptor2_prob,/*donor_prob*/best_donor1_prob,
+					    /*left*/segmentm_left,query_compress,querylength,
+					    plusp,genestrand,first_read_p,sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
+					    segmentm_chrnum,segmentm_chroffset,segmentm_chrhigh,segmentm_chrlength);
+
+	acceptor = Substring_new_acceptor(best_acceptor1_splicecoord,best_acceptor1_knowni,
+					  best_splice_pos_1,best_segmenti_nmismatches,
+					  best_acceptor1_prob,/*left*/segmenti_left,query_compress,
+					  querylength,plusp,genestrand,first_read_p,sensep,
+					  segmenti_chrnum,segmenti_chroffset,segmenti_chrhigh,segmenti_chrlength);
+
+	if (donor == NULL || shortexon == NULL || acceptor == NULL) {
+	  if (donor != NULL) Substring_free(&donor);
+	  if (shortexon != NULL) Substring_free(&shortexon);
+	  if (acceptor != NULL) Substring_free(&acceptor);
+	} else {
+	  *segmenti_usedp = *segmentm_usedp = *segmentj_usedp = true;
+
+	  acceptor_support = best_splice_pos_1;
+	  middle_support = best_splice_pos_2 - best_splice_pos_1;
+	  donor_support = querylength - best_splice_pos_2;
+	  sufficient1p = sufficient_splice_prob_local(acceptor_support,best_segmenti_nmismatches,best_acceptor1_prob);
+	  sufficient2p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_donor1_prob);
+	  sufficient3p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_acceptor2_prob);
+	  sufficient4p = sufficient_splice_prob_local(donor_support,best_segmentj_nmismatches,best_donor2_prob);
+	  if (sufficient1p && sufficient2p && sufficient3p && sufficient4p) {
+	    *nhits += 1;
+	    hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+								   /*acceptor_distance*/segmentj_left - segmentm_left,
+								   /*donor_distance*/segmentm_left - segmenti_left,
+								   /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+								   /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								   /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+								   splicing_penalty,querylength,sensedir,sarrayp));
+	  } else if (subs_or_indels_p == true) {
+	    /* Don't alter hits */
+	    if (donor != NULL) Substring_free(&donor);
+	    if (shortexon != NULL) Substring_free(&shortexon);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (shortexon != NULL) Substring_free(&shortexon);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  } else if ((sufficient1p || sufficient2p) && (sufficient3p || sufficient4p)) {
+	    *lowprob = List_push(*lowprob,
+				 (void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+								  /*acceptor_distance*/segmentj_left - segmentm_left,
+								  /*donor_distance*/segmentm_left - segmenti_left,
+								  /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+								  /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								  /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								  /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+								  splicing_penalty,querylength,sensedir,sarrayp));
+	  } else {
+	    if (donor != NULL) Substring_free(&donor);
+	    if (shortexon != NULL) Substring_free(&shortexon);
+	    if (acceptor != NULL) Substring_free(&acceptor);
+	  }
+	}
+      }
+    }
+  }
+
+  return hits;
+}
+
+
+List_T
+Splice_group_by_segmenti (int *found_score, List_T localsplicing, List_T *ambiguous, 
+			  int querylength, bool first_read_p, bool sarrayp) {
+  List_T winners = NULL;
+  Stage3end_T *array, hit;
+  int n, j, i, k;
+  int n_good_spliceends;
+  Univcoord_T segmenti_left;
+  Substring_T donor, acceptor;
+  int best_nmismatches, nmismatches, nmismatches_donor, nmismatches_acceptor;
+  double best_prob, prob;
+
+  int sensedir;
+#ifdef LARGE_GENOMES
+  Uint8list_T ambcoords, ambcoords_left, ambcoords_right;
+#else
+  Uintlist_T ambcoords, ambcoords_left, ambcoords_right;
+#endif
+  Intlist_T amb_knowni, amb_nmismatches, amb_knowni_left, amb_knowni_right, amb_nmismatches_left, amb_nmismatches_right;
+
+  array = (Stage3end_T *) List_to_array_n(&n,localsplicing);
+  qsort(array,n,sizeof(Stage3end_T),Stage3end_chimera_segmenti_cmp);
+  List_free(&localsplicing);
+  
+  j = 0;
+  while (j + 1 < n) {
+    segmenti_left = Stage3end_chimera_segmenti_left(array[j]);
+    k = j + 1;
+    while (k < n && Stage3end_chimera_segmenti_left(array[k]) == segmenti_left) {
+      k++;
+    }
+    /* [j..(k-1)] constitutes a group of splices with the same segmenti */
+    debug9(printf("GROUP from %d to %d\n",j,k-1));
+    for (i = j; i < k; i++) {
+      debug9(printf("%d %u %u\n",i,Stage3end_chimera_segmenti_left(array[i]),Stage3end_chimera_segmentj_left(array[i])));
+    }
+    debug9(printf("\n"));
+
+    if (j == k - 1) {
+      /* Singleton */
+      debug9(printf("Saving hit %d\n",j));
+      winners = List_push(winners,(void *) array[j]);
+
+    } else {
+      best_nmismatches = querylength;
+      for (i = j; i < k; i++) {
+	hit = array[i];
+	debug9(printf("analyzing distance %d, nmismatches %d, probabilities %f and %f\n",
+		      Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+		      Substring_chimera_prob(Stage3end_substring_donor(hit)),
+		      Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	
+	if ((nmismatches = Stage3end_nmismatches_whole(hit)) < best_nmismatches) {
+	  best_nmismatches = nmismatches;
+	  best_prob = Stage3end_chimera_prob(hit);
+	} else if (nmismatches == best_nmismatches && (prob = Stage3end_chimera_prob(hit)) > best_prob) {
+	  best_prob = prob;
+	}
+      }
+
+      n_good_spliceends = 0;
+      for (i = j; i < k; i++) {
+	hit = array[i];
+	if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+	    (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	  debug9(printf("accepting distance %d, nmismatches %d, probabilities %f and %f\n",
+			Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	  n_good_spliceends += 1;
+	}
+      }
+	
+      if (n_good_spliceends == 1) {
+	for (i = j; i < k; i++) {
+	  hit = array[i];
+	  if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+	      (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	    debug9(printf("pushing distance %d, nmismatches %d, probabilities %f and %f\n",
+			  Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			  Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			  Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	    debug9(printf("Saving hit %d\n",i));
+	    winners = List_push(winners,(void *) hit);
+	  } else {
+	    debug9(printf("Freeing hit %d\n",i));
+	    Stage3end_free(&hit);
+	  }
+	}
+
+      } else {
+	/* Create ambiguous */
+	hit = array[j];
+	donor = Stage3end_substring_donor(hit);
+	acceptor = Stage3end_substring_acceptor(hit);
+	sensedir = Stage3end_sensedir(hit);
+
+	ambcoords = NULL;
+	amb_knowni = (Intlist_T) NULL;
+	amb_nmismatches = (Intlist_T) NULL;
+	if (Substring_left_genomicseg(donor) == segmenti_left) {
+	  for (i = j; i < k; i++) {
+	    hit = array[i];
+	    acceptor = Stage3end_substring_acceptor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(acceptor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(acceptor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(acceptor));
+	  }
+
+	  if (Substring_plusp(donor) == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  }
+
+	  nmismatches_acceptor = best_nmismatches - Substring_nmismatches_whole(donor);
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       /*nmismatches_donor*/Substring_nmismatches_whole(donor),nmismatches_acceptor,
+							       donor,/*acceptor*/NULL,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(donor) - nmismatches_acceptor,
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
+							       sensedir,sarrayp));
+#ifdef LARGE_GENOMES
+	  Uint8list_free(&ambcoords);
+#else
+	  Uintlist_free(&ambcoords);
+#endif
+	  Intlist_free(&amb_knowni);
+	  Intlist_free(&amb_nmismatches);
+	  
+	} else if (Substring_left_genomicseg(acceptor) == segmenti_left) {
+	  for (i = j; i < k; i++) {
+	    hit = array[i];
+	    donor = Stage3end_substring_donor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(donor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(donor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(donor));
+	  }
+
+	  if (Substring_plusp(acceptor) == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  }
+
+	  nmismatches_donor = best_nmismatches - Substring_nmismatches_whole(acceptor);
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       nmismatches_donor,/*nmismatches_acceptor*/Substring_nmismatches_whole(acceptor),
+							       /*donor*/NULL,acceptor,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(acceptor) - nmismatches_donor,
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
+							       sensedir,sarrayp));
+#ifdef LARGE_GENOMES
+	  Uint8list_free(&ambcoords);
+#else
+	  Uintlist_free(&ambcoords);
+#endif
+	  Intlist_free(&amb_knowni);
+	  Intlist_free(&amb_nmismatches);
+	      
+	} else {
+	  fprintf(stderr,"Unexpected: Neither donor left %u nor acceptor left %u equals segmenti_left %u\n",
+		  Substring_left_genomicseg(donor),Substring_left_genomicseg(acceptor),segmenti_left);
+	  abort();
+	}
+
+	for (i = j; i < k; i++) {
+	  hit = array[i];
+	  debug9(printf("Freeing hit %d\n",i));
+	  Stage3end_free(&hit);
+	}
+      }
+    }
+
+    j = k;
+  }
+
+  if (j < n) {
+    /* Singleton */
+    debug9(printf("Keeping hit %d\n",i));
+    winners = List_push(winners,(void *) array[j]);
+  }
+
+  FREE(array);
+
+  return winners;
+}
+
+
+
+
+List_T
+Splice_group_by_segmentj (int *found_score, List_T localsplicing, List_T *ambiguous, 
+			  int querylength, bool first_read_p, bool sarrayp) {
+  List_T winners = NULL;
+  Stage3end_T *array, hit;
+  int n, j, i, k;
+  int n_good_spliceends;
+  Univcoord_T segmentj_left;
+  Substring_T donor, acceptor;
+  int best_nmismatches, nmismatches, nmismatches_donor, nmismatches_acceptor;
+  double best_prob, prob;
+
+  int sensedir;
+#ifdef LARGE_GENOMES
+  Uint8list_T ambcoords, ambcoords_left, ambcoords_right;
+#else
+  Uintlist_T ambcoords, ambcoords_left, ambcoords_right;
+#endif
+  Intlist_T amb_knowni, amb_nmismatches, amb_knowni_left, amb_knowni_right, amb_nmismatches_left, amb_nmismatches_right;
+
+  array = (Stage3end_T *) List_to_array_n(&n,localsplicing);
+  qsort(array,n,sizeof(Stage3end_T),Stage3end_chimera_segmentj_cmp);
+  List_free(&localsplicing);
+  
+  j = 0;
+  while (j + 1 < n) {
+    segmentj_left = Stage3end_chimera_segmentj_left(array[j]);
+    k = j + 1;
+    while (k < n && Stage3end_chimera_segmentj_left(array[k]) == segmentj_left) {
+      k++;
+    }
+    /* [j..(k-1)] constitutes a group of splices with the same segmentj */
+    debug9(printf("GROUP from %d to %d\n",j,k-1));
+    for (i = j; i < k; i++) {
+      debug9(printf("%d %u %u\n",i,Stage3end_chimera_segmenti_left(array[i]),Stage3end_chimera_segmentj_left(array[i])));
+    }
+    debug9(printf("\n"));
+
+    if (j == k - 1) {
+      /* Singleton */
+      debug9(printf("Saving hit %d\n",j));
+      winners = List_push(winners,(void *) array[j]);
+
+    } else {
+      best_nmismatches = querylength;
+      for (i = j; i < k; i++) {
+	hit = array[i];
+	debug9(printf("analyzing distance %d, nmismatches %d, probabilities %f and %f\n",
+		      Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+		      Substring_chimera_prob(Stage3end_substring_donor(hit)),
+		      Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	if ((nmismatches = Stage3end_nmismatches_whole(hit)) < best_nmismatches) {
+	  best_nmismatches = nmismatches;
+	  best_prob = Stage3end_chimera_prob(hit);
+	} else if (nmismatches == best_nmismatches && (prob = Stage3end_chimera_prob(hit)) > best_prob) {
+	  best_prob = prob;
+	}
+      }
+
+      n_good_spliceends = 0;
+      for (i = j; i < k; i++) {
+	hit = array[i];
+	if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+	    (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	  debug9(printf("accepting distance %d, nmismatches %d, probabilities %f and %f\n",
+			Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	  n_good_spliceends += 1;
+	}
+      }
+	
+      if (n_good_spliceends == 1) {
+	for (i = j; i < k; i++) {
+	  hit = array[i];
+	  if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+	      (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	    debug9(printf("pushing distance %d, nmismatches %d, probabilities %f and %f\n",
+			  Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			  Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			  Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	    debug9(printf("Saving hit %d\n",i));
+	    winners = List_push(winners,(void *) hit);
+	  } else {
+	    debug9(printf("Freeing hit %d\n",i));
+	    Stage3end_free(&hit);
+	  }
+	}
+
+      } else {
+	/* Create ambiguous */
+	hit = array[j];
+	donor = Stage3end_substring_donor(hit);
+	acceptor = Stage3end_substring_acceptor(hit);
+	sensedir = Stage3end_sensedir(hit);
+
+	ambcoords = NULL;
+	amb_knowni = (Intlist_T) NULL;
+	amb_nmismatches = (Intlist_T) NULL;
+	if (Substring_left_genomicseg(donor) == segmentj_left) {
+	  for (i = j; i < k; i++) {
+	    hit = array[i];
+	    acceptor = Stage3end_substring_acceptor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(acceptor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(acceptor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(acceptor));
+	  }
+
+	  if (Substring_plusp(donor) == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  }
+
+	  nmismatches_acceptor = best_nmismatches - Substring_nmismatches_whole(donor);
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       /*nmismatches_donor*/Substring_nmismatches_whole(donor),nmismatches_acceptor,
+							       donor,/*acceptor*/NULL,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(donor) - nmismatches_acceptor,
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
+							       sensedir,sarrayp));
+#ifdef LARGE_GENOMES
+	  Uint8list_free(&ambcoords);
+#else
+	  Uintlist_free(&ambcoords);
+#endif
+	  Intlist_free(&amb_knowni);
+	  Intlist_free(&amb_nmismatches);
+	  
+	} else if (Substring_left_genomicseg(acceptor) == segmentj_left) {
+	  for (i = j; i < k; i++) {
+	    hit = array[i];
+	    donor = Stage3end_substring_donor(hit);
+#ifdef LARGE_GENOMES
+	    ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(donor));
+#else
+	    ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(donor));
+#endif
+	    amb_knowni = Intlist_push(amb_knowni,-1);
+	    amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(donor));
+	  }
+
+	  if (Substring_plusp(acceptor) == true) {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    }
+	  } else {
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+	  }
+
+	  nmismatches_donor = best_nmismatches - Substring_nmismatches_whole(acceptor);
+	  *ambiguous = List_push(*ambiguous,
+				 (void *) Stage3end_new_splice(&(*found_score),
+							       nmismatches_donor,/*nmismatches_acceptor*/Substring_nmismatches_whole(acceptor),
+							       /*donor*/NULL,acceptor,/*distance*/0U,
+							       /*shortdistancep*/false,/*penalty*/0,querylength,
+							       /*amb_nmatches*/querylength - Substring_match_length_orig(acceptor) - nmismatches_donor,
+							       ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+							       amb_nmismatches_left,amb_nmismatches_right,
+							       /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
+							       sensedir,sarrayp));
+	  
+#ifdef LARGE_GENOMES
+	  Uint8list_free(&ambcoords);
+#else
+	  Uintlist_free(&ambcoords);
+#endif
+	  Intlist_free(&amb_knowni);
+	  Intlist_free(&amb_nmismatches);
+	      
+	} else {
+	  fprintf(stderr,"Unexpected: Neither donor left %u nor acceptor left %u equals segmentj_left %u\n",
+		  Substring_left_genomicseg(donor),Substring_left_genomicseg(acceptor),segmentj_left);
+	  abort();
+	}
+
+	for (i = j; i < k; i++) {
+	  hit = array[i];
+	  debug9(printf("Freeing hit %d\n",i));
+	  Stage3end_free(&hit);
+	}
+      }
+    }
+
+    j = k;
+  }
+
+  if (j < n) {
+    /* Singleton */
+    debug9(printf("Keeping hit %d\n",i));
+    winners = List_push(winners,(void *) array[j]);
+  }
+
+  FREE(array);
+
+  return winners;
+}
+
+
diff --git a/src/splice.h b/src/splice.h
new file mode 100644
index 0000000..71ea07f
--- /dev/null
+++ b/src/splice.h
@@ -0,0 +1,65 @@
+/* $Id: splice.h 136085 2014-05-13 23:00:04Z twu $ */
+#ifndef SPLICE_INCLUDED
+#define SPLICE_INCLUDED
+#include "bool.h"
+#include "list.h"
+#include "chrnum.h"
+#include "genomicpos.h"
+#include "compress.h"
+
+extern void
+Splice_setup (int min_shortend_in);
+
+extern List_T
+Splice_solve_single (int *found_score, int *nhits, List_T hits, List_T *lowprob,
+
+		     bool *segmenti_usedp, bool *segmentj_usedp,
+		     Univcoord_T segmenti_left, Univcoord_T segmentj_left,
+		     Chrnum_T segmenti_chrnum, Univcoord_T segmenti_chroffset,
+		     Univcoord_T segmenti_chrhigh, Chrpos_T segmenti_chrlength,
+		     Chrnum_T segmentj_chrnum, Univcoord_T segmentj_chroffset,
+		     Univcoord_T segmentj_chrhigh, Chrpos_T segmentj_chrlength,
+		     
+		     int querylength, Compress_T query_compress,
+		     int *segmenti_donor_knownpos, int *segmentj_acceptor_knownpos,
+		     int *segmentj_antidonor_knownpos, int *segmenti_antiacceptor_knownpos,
+		     int *segmenti_donor_knowni, int *segmentj_acceptor_knowni,
+		     int *segmentj_antidonor_knowni, int *segmenti_antiacceptor_knowni,
+		     int segmenti_donor_nknown, int segmentj_acceptor_nknown,
+		     int segmentj_antidonor_nknown, int segmenti_antiacceptor_nknown,
+		     int splicing_penalty, int max_mismatches_allowed,
+		     bool plusp, int genestrand, bool first_read_p,
+		     bool subs_or_indels_p, bool sarrayp);
+
+extern List_T
+Splice_solve_double (int *found_score, int *nhits, List_T hits, List_T *lowprob,
+
+		     bool *segmenti_usedp, bool *segmentm_usedp, bool *segmentj_usedp,
+		     Univcoord_T segmenti_left, Univcoord_T segmentm_left, Univcoord_T segmentj_left,
+		     Chrnum_T segmenti_chrnum, Univcoord_T segmenti_chroffset,
+		     Univcoord_T segmenti_chrhigh, Chrpos_T segmenti_chrlength,
+		     Chrnum_T segmentm_chrnum, Univcoord_T segmentm_chroffset,
+		     Univcoord_T segmentm_chrhigh, Chrpos_T segmentm_chrlength,
+		     Chrnum_T segmentj_chrnum, Univcoord_T segmentj_chroffset,
+		     Univcoord_T segmentj_chrhigh, Chrpos_T segmentj_chrlength,
+
+		     int querylength, Compress_T query_compress,
+		     int *segmenti_donor_knownpos, int *segmentm_acceptor_knownpos, int *segmentm_donor_knownpos, int *segmentj_acceptor_knownpos,
+		     int *segmentj_antidonor_knownpos, int *segmentm_antiacceptor_knownpos, int *segmentm_antidonor_knownpos, int *segmenti_antiacceptor_knownpos,
+		     int *segmenti_donor_knowni, int *segmentm_acceptor_knowni, int *segmentm_donor_knowni, int *segmentj_acceptor_knowni,
+		     int *segmentj_antidonor_knowni, int *segmentm_antiacceptor_knowni, int *segmentm_antidonor_knowni, int *segmenti_antiacceptor_knowni,
+		     int segmenti_donor_nknown, int segmentm_acceptor_nknown, int segmentm_donor_nknown, int segmentj_acceptor_nknown,
+		     int segmentj_antidonor_nknown, int segmentm_antiacceptor_nknown, int segmentm_antidonor_nknown, int segmenti_antiacceptor_nknown,
+		     int splicing_penalty, int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p,
+		     bool subs_or_indels_p, bool sarrayp);
+
+extern List_T
+Splice_group_by_segmenti (int *found_score, List_T localsplicing, List_T *ambiguous, 
+			  int querylength, bool first_read_p, bool sarrayp);
+
+extern List_T
+Splice_group_by_segmentj (int *found_score, List_T localsplicing, List_T *ambiguous, 
+			  int querylength, bool first_read_p, bool sarrayp);
+
+#endif
+
diff --git a/src/splicestringpool.c b/src/splicestringpool.c
new file mode 100644
index 0000000..45794cd
--- /dev/null
+++ b/src/splicestringpool.c
@@ -0,0 +1,223 @@
+static char rcsid[] = "$Id: splicestringpool.c 135434 2014-05-07 21:30:37Z twu $";
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "splicestringpool.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>		/* For memcpy */
+#include "assert.h"
+#include "mem.h"
+#include "listdef.h"
+
+
+#define CHUNKSIZE 100000
+
+
+#ifdef DEBUG
+#define debug(x) x
+#else
+#define debug(x)
+#endif
+
+/* For mechanics of memory allocation and deallocation */
+#ifdef DEBUG1
+#define debug1(x) x
+#else
+#define debug1(x)
+#endif
+
+/* For popping */
+#ifdef DEBUG2
+#define debug2(x) x
+#else
+#define debug2(x)
+#endif
+
+
+#define T Splicestringpool_T
+struct T {
+  int nobjects;
+  int objectctr;
+  struct Splicestring_T *objectptr;
+  List_T objectchunks;
+
+  int nlistcells;
+  int listcellctr;
+  struct List_T *listcellptr;
+  List_T listcellchunks;
+};
+
+void
+Splicestringpool_free (T *old) {
+  List_T p;
+  struct Splicestring_T *objectptr;
+  struct List_T *listcellptr;
+
+  if (*old) {
+    for (p = (*old)->objectchunks; p != NULL; p = List_next(p)) {
+      objectptr = (struct Splicestring_T *) List_head(p);
+      FREE(objectptr);
+    }
+    List_free(&(*old)->objectchunks);
+    for (p = (*old)->listcellchunks; p != NULL; p = List_next(p)) {
+      listcellptr = (struct List_T *) List_head(p);
+      FREE(listcellptr);
+    }
+    List_free(&(*old)->listcellchunks);
+    FREE(*old);
+  }
+  return;
+}
+
+void
+Splicestringpool_free_memory (T this) {
+  List_T p;
+  struct Splicestring_T *objectptr;
+  struct List_T *listcellptr;
+
+  for (p = this->objectchunks; p != NULL; p = List_next(p)) {
+    objectptr = (struct Splicestring_T *) List_head(p);
+    FREE(objectptr);
+  }
+  List_free(&this->objectchunks);
+  for (p = this->listcellchunks; p != NULL; p = List_next(p)) {
+    listcellptr = (struct List_T *) List_head(p);
+    FREE(listcellptr);
+  }
+  List_free(&this->listcellchunks);
+
+  this->nobjects = 0;
+  this->objectctr = 0;
+  this->objectchunks = NULL;
+  /* this->objectptr = add_new_objectchunk(this); */
+
+  this->nlistcells = 0;
+  this->listcellctr = 0;
+  this->listcellchunks = NULL;
+  /* this->listcellptr = add_new_listcellchunk(this); */
+
+  return;
+}
+
+
+void
+Splicestringpool_report_memory (T this) {
+  printf("Splicestringpool has %d pairchunks and %d listcellchunks\n",
+	 List_length(this->objectchunks),List_length(this->listcellchunks));
+  return;
+}
+
+
+static struct Splicestring_T *
+add_new_objectchunk (T this) {
+  struct Splicestring_T *chunk;
+
+  chunk = (struct Splicestring_T *) MALLOC(CHUNKSIZE*sizeof(struct Splicestring_T));
+  this->objectchunks = List_push(this->objectchunks,(void *) chunk);
+  debug1(printf("Adding a new chunk of objects.  Ptr for object %d is %p\n",
+		this->nobjects,chunk));
+
+  this->nobjects += CHUNKSIZE;
+
+  return chunk;
+}
+
+static struct List_T *
+add_new_listcellchunk (T this) {
+  struct List_T *chunk;
+
+  chunk = (struct List_T *) MALLOC(CHUNKSIZE*sizeof(struct List_T));
+  this->listcellchunks = List_push(this->listcellchunks,(void *) chunk);
+  debug1(printf("Adding a new chunk of listcells.  Ptr for listcell %d is %p\n",
+	       this->nlistcells,chunk));
+
+  this->nlistcells += CHUNKSIZE;
+
+  return chunk;
+}
+
+T
+Splicestringpool_new (void) {
+  T new = (T) MALLOC(sizeof(*new));
+
+  new->nobjects = 0;
+  new->objectctr = 0;
+  new->objectchunks = NULL;
+  /* new->objectptr = add_new_objectchunk(new); */
+
+  new->nlistcells = 0;
+  new->listcellctr = 0;
+  new->listcellchunks = NULL;
+  /* new->listcellptr = add_new_listcellchunk(new); */
+
+  return new;
+}
+
+void
+Splicestringpool_reset (T this) {
+  this->objectctr = 0;
+  this->listcellctr = 0;
+  return;
+}
+
+List_T
+Splicestringpool_push (List_T list, T this, Genomecomp_T string, Genomecomp_T splicesite,
+		       Genomecomp_T splicesite_i) {
+  List_T listcell;
+  Splicestring_T new;
+  List_T p;
+  int n;
+
+  if (this->objectctr >= this->nobjects) {
+    this->objectptr = add_new_objectchunk(this);
+  } else if ((this->objectctr % CHUNKSIZE) == 0) {
+    for (n = this->nobjects - CHUNKSIZE, p = this->objectchunks;
+	 n > this->objectctr; p = p->rest, n -= CHUNKSIZE) ;
+    this->objectptr = (struct Splicestring_T *) p->first;
+    debug1(printf("Located object %d at %p\n",this->objectctr,this->objectptr));
+  }    
+  new = this->objectptr++;
+  this->objectctr++;
+
+
+  new->string = string;
+  new->splicesite = splicesite;
+  new->splicesite_i = splicesite_i;
+
+
+  if (this->listcellctr >= this->nlistcells) {
+    this->listcellptr = add_new_listcellchunk(this);
+  } else if ((this->listcellctr % CHUNKSIZE) == 0) {
+    for (n = this->nlistcells - CHUNKSIZE, p = this->listcellchunks;
+	 n > this->listcellctr; p = p->rest, n -= CHUNKSIZE) ;
+    this->listcellptr = (struct List_T *) p->first;
+    debug1(printf("Located listcell %d at %p\n",this->listcellctr,this->listcellptr));
+  }
+  listcell = this->listcellptr++;
+  this->listcellctr++;
+
+  listcell->first = (void *) new;
+  listcell->rest = list;
+
+  return listcell;
+}
+
+
+
+/* Note: this does not free the list cell */
+List_T
+Splicestringpool_pop (List_T list, Splicestring_T *x) {
+  List_T head;
+
+  if (list != NULL) {
+    head = list->rest;
+    *x = (Splicestring_T) list->first;
+    return head;
+  } else {
+    return list;
+  }
+}
+
+
diff --git a/src/splicestringpool.h b/src/splicestringpool.h
new file mode 100644
index 0000000..4ce22f0
--- /dev/null
+++ b/src/splicestringpool.h
@@ -0,0 +1,38 @@
+/* $Id: splicestringpool.h 135405 2014-05-07 19:16:09Z twu $ */
+#ifndef SPLICESTRINGPOOL_INCLUDED
+#define SPLICESTRINGPOOL_INCLUDED
+
+#include "list.h"
+#include "types.h"
+
+typedef struct Splicestring_T *Splicestring_T;
+struct Splicestring_T {
+  Genomecomp_T string;
+  Genomecomp_T splicesite;
+  Genomecomp_T splicesite_i;
+};
+
+
+#define T Splicestringpool_T
+typedef struct T *T;
+
+extern void
+Splicestringpool_free (T *old);
+extern void
+Splicestringpool_free_memory (T this);
+extern void
+Splicestringpool_report_memory (T this);
+extern T
+Splicestringpool_new (void);
+extern void
+Splicestringpool_reset (T this);
+extern List_T
+Splicestringpool_push (List_T list, T this, Genomecomp_T string, Genomecomp_T splicesite,
+		       Genomecomp_T splicesite_i);
+extern List_T
+Splicestringpool_pop (List_T list, Splicestring_T *x);
+
+#undef T
+#endif
+
+
diff --git a/src/splicetrie.c b/src/splicetrie.c
index ed74369..4b7b5af 100644
--- a/src/splicetrie.c
+++ b/src/splicetrie.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: splicetrie.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: splicetrie.c 133760 2014-04-20 05:16:56Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -13,8 +13,9 @@ static char rcsid[] = "$Id: splicetrie.c 99737 2013-06-27 19:33:03Z twu $";
 #include "mem.h"
 #include "iitdef.h"
 #include "interval.h"
-#include "genome_hr.h"
+#include "genome128_hr.h"
 #include "splicetrie_build.h"	/* For single_leaf_p and multiple_leaf_p macros */
+#include "dynprog_end.h"
 
 
 #if 0
@@ -305,9 +306,6 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 		int *dynprogindex, Dynprog_T dynprog, 
 		char *revsequence1, char *revsequenceuc1,
 		int length1, int length2, int revoffset1, int revoffset2,
-#ifdef PMAP
-		char *queryaaseq,
-#endif
 		int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		int extraband_end, double defect_rate) {
   Triecontent_T leaf;
@@ -341,11 +339,7 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 					  /*revsequence2*/&(splicejunction[length2-1]),/*revsequenceuc2*/&(splicejunction[length2-1]),
 					  /*revsequencealt2*/&(splicejunction_alt[length2-1]),
 					  length1,length2,revoffset1,spliceoffset2_anchor,spliceoffset2_far,
-					  chroffset,chrhigh,
-#ifdef PMAP
-					  queryaaseq,
-#endif
-					  cdna_direction,watsonp,jump_late_p,pairpool,
+					  chroffset,chrhigh,cdna_direction,watsonp,jump_late_p,pairpool,
 					  extraband_end,defect_rate,contlength);
 
       /* miss_score = perfect_score - score; */
@@ -440,11 +434,7 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 					    /*revsequence2*/&(splicejunction[length2-1]),/*revsequenceuc2*/&(splicejunction[length2-1]),
 					    /*revsequencealt2*/&(splicejunction_alt[length2-1]),
 					    length1,length2,revoffset1,spliceoffset2_anchor,spliceoffset2_far,
-					    chroffset,chrhigh,
-#ifdef PMAP
-					    queryaaseq,
-#endif
-					    cdna_direction,watsonp,jump_late_p,pairpool,
+					    chroffset,chrhigh,cdna_direction,watsonp,jump_late_p,pairpool,
 					    extraband_end,defect_rate,contlength);
 
 	/* miss_score = perfect_score - score; */
@@ -532,9 +522,6 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  revsequence1,revsequenceuc1,length1,length2,revoffset1,revoffset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
     if (offsetc > 0) {
@@ -547,9 +534,6 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  revsequence1,revsequenceuc1,length1,length2,revoffset1,revoffset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
     if (offsetg > 0) {
@@ -562,9 +546,6 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  revsequence1,revsequenceuc1,length1,length2,revoffset1,revoffset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
     if (offsett > 0) {
@@ -577,9 +558,6 @@ solve_end5_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  revsequence1,revsequenceuc1,length1,length2,revoffset1,revoffset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
   }
@@ -603,9 +581,6 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 		int *dynprogindex, Dynprog_T dynprog, 
 		char *sequence1, char *sequenceuc1,
 		int length1, int length2, int offset1, int offset2,
-#ifdef PMAP
-		char *queryaaseq,
-#endif
 		int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		int extraband_end, double defect_rate) {
   Triecontent_T leaf;
@@ -639,11 +614,7 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 					  /*sequence2*/splicejunction,/*sequenceuc2*/splicejunction,
 					  /*sequencealt2*/splicejunction_alt,
 					  length1,length2,offset1,spliceoffset2_anchor,spliceoffset2_far,
-					  chroffset,chrhigh,
-#ifdef PMAP
-					  queryaaseq,
-#endif
-					  cdna_direction,watsonp,jump_late_p,pairpool,
+					  chroffset,chrhigh,cdna_direction,watsonp,jump_late_p,pairpool,
 					  extraband_end,defect_rate,contlength);
 
       /* miss_score = perfect_score - score; */
@@ -736,11 +707,7 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 					    /*sequence2*/splicejunction,/*sequenceuc2*/splicejunction,
 					    /*sequencealt2*/splicejunction_alt,
 					    length1,length2,offset1,spliceoffset2_anchor,spliceoffset2_far,
-					    chroffset,chrhigh,
-#ifdef PMAP
-					    queryaaseq,
-#endif
-					    cdna_direction,watsonp,jump_late_p,pairpool,
+					    chroffset,chrhigh,cdna_direction,watsonp,jump_late_p,pairpool,
 					    extraband_end,defect_rate,contlength);
 
 	/* miss_score = perfect_score - score; */
@@ -827,9 +794,6 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  sequence1,sequenceuc1,length1,length2,offset1,offset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
     if (offsetc > 0) {
@@ -842,9 +806,6 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  sequence1,sequenceuc1,length1,length2,offset1,offset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
     if (offsetg > 0) {
@@ -857,9 +818,6 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  sequence1,sequenceuc1,length1,length2,offset1,offset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
     if (offsett > 0) {
@@ -872,9 +830,6 @@ solve_end3_aux (Univcoord_T **coordsptr, Univcoord_T *coords,
 				  splicelength,contlength,far_splicetype,
 				  chroffset,chrhigh,&(*dynprogindex),dynprog,
 				  sequence1,sequenceuc1,length1,length2,offset1,offset2,
-#ifdef PMAP
-				  queryaaseq,
-#endif
 				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     }
   }
@@ -896,9 +851,6 @@ Splicetrie_solve_end5 (List_T best_pairs, Triecontent_T *triecontents, Trieoffse
 		       int *dynprogindex, Dynprog_T dynprog, 
 		       char *revsequence1, char *revsequenceuc1,
 		       int length1, int length2, int revoffset1, int revoffset2,
-#ifdef PMAP
-		       char *queryaaseq,
-#endif
 		       int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		       int extraband_end, double defect_rate) {
   Univcoord_T *coordsptr, *coords, splicecoord0;
@@ -927,9 +879,6 @@ Splicetrie_solve_end5 (List_T best_pairs, Triecontent_T *triecontents, Trieoffse
 				splicelength,contlength,far_splicetype,
 				chroffset,chrhigh,&(*dynprogindex),dynprog,
 				revsequence1,revsequenceuc1,length1,length2,revoffset1,revoffset2,
-#ifdef PMAP
-				queryaaseq,
-#endif
 				cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     debug7(printf("\n"));
 
@@ -967,9 +916,6 @@ Splicetrie_solve_end3 (List_T best_pairs, Triecontent_T *triecontents, Trieoffse
 		       int *dynprogindex, Dynprog_T dynprog, 
 		       char *sequence1, char *sequenceuc1,
 		       int length1, int length2, int offset1, int offset2,
-#ifdef PMAP
-		       char *queryaaseq,
-#endif
 		       int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		       int extraband_end, double defect_rate) {
   Univcoord_T *coordsptr, *coords, splicecoord0;
@@ -998,9 +944,6 @@ Splicetrie_solve_end3 (List_T best_pairs, Triecontent_T *triecontents, Trieoffse
 				splicelength,contlength,far_splicetype,
 				chroffset,chrhigh,&(*dynprogindex),dynprog,
 				sequence1,sequenceuc1,length1,length2,offset1,offset2,
-#ifdef PMAP
-				queryaaseq,
-#endif
 				cdna_direction,watsonp,jump_late_p,pairpool,extraband_end,defect_rate);
     debug7(printf("\n"));
 
@@ -1037,7 +980,6 @@ dump_left_aux (int *best_nmismatches, Genomicposlist_T coords, Triecontent_T *tr
   Univcoord_T segment_left;
   int nleaves, i;
   Univcoord_T position;
-  Genomecomp_T query_shifted, flags, mask;
   int offseta, offsetc, offsetg, offsett;
   char c;
 
@@ -1053,9 +995,8 @@ dump_left_aux (int *best_nmismatches, Genomicposlist_T coords, Triecontent_T *tr
     } else if (charpos - 1 >= pos5) {
       if (pos3 - pos5 <= 16) {
 	/* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	query_shifted = Genome_query_shift_fragment_left(&flags,&mask,query_compress,pos5,pos3);
-	nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-						       splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	nmismatches = Genome_count_mismatches_fragment_left(query_compress,pos5,pos3,
+							    splicefrags_ref[leaf],splicefrags_alt[leaf]);
 	debug3(printf("Found leaf %u at %u, but still have characters to check against Genome: %.*s => %d mismatches by fragment\n",
 		      leaf,position,charpos + 1,&(queryptr[0]),nmismatches));
       } else {
@@ -1108,9 +1049,8 @@ dump_left_aux (int *best_nmismatches, Genomicposlist_T coords, Triecontent_T *tr
       } else if (charpos - 1 >= pos5) {
 	if (pos3 - pos5 <= 16) {
 	  /* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	  query_shifted = Genome_query_shift_fragment_left(&flags,&mask,query_compress,pos5,pos3);
-	  nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-							 splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	  nmismatches = Genome_count_mismatches_fragment_left(query_compress,pos5,pos3,
+							      splicefrags_ref[leaf],splicefrags_alt[leaf]);
 	} else {
 	  /* Can happen */
 	  segment_left = position - pos3;
@@ -1257,7 +1197,6 @@ dump_right_aux (int *best_nmismatches, Genomicposlist_T coords,
   Univcoord_T segment_left;
   int nleaves, i;
   Univcoord_T position;
-  Genomecomp_T query_shifted, flags, mask;
   int offseta, offsetc, offsetg, offsett;
   char c;
 
@@ -1273,9 +1212,8 @@ dump_right_aux (int *best_nmismatches, Genomicposlist_T coords,
     } else if (charpos + 1 < pos3) {
       if (pos3 - pos5 <= 16) {
 	/* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	query_shifted = Genome_query_shift_fragment_right(&flags,&mask,query_compress,pos5,pos3);
-	nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-						       splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	nmismatches = Genome_count_mismatches_fragment_right(query_compress,pos5,pos3,
+							     splicefrags_ref[leaf],splicefrags_alt[leaf]);
 	debug3(printf("Found leaf %u at %u, but still have characters to check against Genome: %.*s => %d mismatches by fragment\n",
 		      leaf,position,charpos + 1,&(queryptr[0]),nmismatches));
       } else {
@@ -1328,9 +1266,8 @@ dump_right_aux (int *best_nmismatches, Genomicposlist_T coords,
       } else if (charpos + 1 < pos3) {
 	if (pos3 - pos5 <= 16) {
 	  /* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	  query_shifted = Genome_query_shift_fragment_right(&flags,&mask,query_compress,pos5,pos3);
-	  nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-							 splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	  nmismatches = Genome_count_mismatches_fragment_right(query_compress,pos5,pos3,
+							       splicefrags_ref[leaf],splicefrags_alt[leaf]);
 	} else {
 	  /* Can happen */
 	  segment_left = position - pos5;
@@ -1479,12 +1416,11 @@ Splicetrie_dump_coords_right (int *best_nmismatches, Triecontent_T *triestart, i
 static Intlist_T
 search_left (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T splicesites_i,
 	     Triecontent_T *triecontents, char *queryptr, Compress_T query_compress,
-	     int pos5, int pos3, bool plusp, int genestrand, bool collect_all_p,
+	     int pos5, int pos3, bool plusp, int genestrand, bool first_read_p, bool collect_all_p,
 	     int max_mismatches_allowed, int nmismatches, int charpos, Univcoord_T limit_low) {
   Triecontent_T leaf;
   Univcoord_T segment_left, position;
   int nleaves, i;
-  Genomecomp_T query_shifted, flags, mask;
   int offseta, offsetc, offsetg, offsett;
   char c;
   
@@ -1508,14 +1444,13 @@ search_left (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T splic
     } else if (charpos - 1 >= pos5) {
       if (pos3 - pos5 <= 16) {
 	/* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	query_shifted = Genome_query_shift_fragment_left(&flags,&mask,query_compress,pos5,pos3);
-	nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-						       splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	nmismatches = Genome_count_mismatches_fragment_left(query_compress,pos5,pos3,
+							    splicefrags_ref[leaf],splicefrags_alt[leaf]);
       } else {
 	/* Can happen in search for short middle exon */
 	segment_left = splicesites[leaf] - pos3;
 	nmismatches =
-	  Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand);
+	  Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand,first_read_p);
       }
 
       debug2(printf("Found leaf %u at %u, but still have characters to check against Genome: %.*s => %d mismatches\n",
@@ -1581,14 +1516,13 @@ search_left (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T splic
       } else if (charpos - 1 >= pos5) {
 	if (pos3 - pos5 <= 16) {
 	  /* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	  query_shifted = Genome_query_shift_fragment_left(&flags,&mask,query_compress,pos5,pos3);
-	  nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-							 splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	  nmismatches = Genome_count_mismatches_fragment_left(query_compress,pos5,pos3,
+							      splicefrags_ref[leaf],splicefrags_alt[leaf]);
 	} else {
 	  /* Can happen in search for short middle exon */
 	  segment_left = splicesites[leaf] - pos3;
 	  nmismatches =
-	    Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand);
+	    Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand,first_read_p);
 	}
 
 	debug2(printf("Found leaf %u at %u => %d mismatches\n",leaf,position,nmismatches));
@@ -1660,28 +1594,28 @@ search_left (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T splic
     if (offseta > 0) {
       splicesites_i = search_left(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				  &(triecontents[-offseta]),queryptr,query_compress,
-				  pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				  pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				  nmismatches+(c != '\0' && c != 'A'),charpos-1,limit_low);
     }
       
     if (offsetc > 0) {
       splicesites_i = search_left(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				  &(triecontents[-offsetc]),queryptr,query_compress,
-				  pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				  pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				  nmismatches+(c != '\0' && c != 'C'),charpos-1,limit_low);
     }
 
     if (offsetg > 0) {
       splicesites_i = search_left(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				  &(triecontents[-offsetg]),queryptr,query_compress,
-				  pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				  pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				  nmismatches+(c != '\0' && c != 'G'),charpos-1,limit_low);
     }
 
     if (offsett > 0) {
       splicesites_i = search_left(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				  &(triecontents[-offsett]),queryptr,query_compress,
-				  pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				  pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				  nmismatches+(c != '\0' && c != 'T'),charpos-1,limit_low);
     }
 
@@ -1693,12 +1627,11 @@ search_left (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T splic
 static Intlist_T
 search_right (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T splicesites_i,
 	      Triecontent_T *triecontents, char *queryptr, Compress_T query_compress,
-	      int pos5, int pos3, bool plusp, int genestrand, bool collect_all_p,
+	      int pos5, int pos3, bool plusp, int genestrand, bool first_read_p, bool collect_all_p,
 	      int max_mismatches_allowed, int nmismatches, int charpos, Univcoord_T limit_high) {
   Triecontent_T leaf;
   Univcoord_T segment_left, position;
   int nleaves, i;
-  Genomecomp_T query_shifted, flags, mask;
   int offseta, offsetc, offsetg, offsett;
   char c;
   
@@ -1722,14 +1655,13 @@ search_right (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T spli
     } else if (charpos + 1 < pos3) {
       if (pos3 - pos5 <= 16) {
 	/* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	query_shifted = Genome_query_shift_fragment_right(&flags,&mask,query_compress,pos5,pos3);
-	nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-						       splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	nmismatches = Genome_count_mismatches_fragment_right(query_compress,pos5,pos3,
+							     splicefrags_ref[leaf],splicefrags_alt[leaf]);
       } else {
 	/* Can happen in search for short middle exon */
 	segment_left = splicesites[leaf] - pos5;
 	nmismatches =
-	  Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand);
+	  Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand,first_read_p);
       }
 
       debug2(printf("Found leaf %u at %u => %d mismatches\n",leaf,position,nmismatches));
@@ -1794,14 +1726,13 @@ search_right (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T spli
       } else if (charpos + 1 < pos3) {
 	if (pos3 - pos5 <= 16) {
 	  /* Recomputes entire segment to determine mismatches (necessary because of splicefrags) */
-	  query_shifted = Genome_query_shift_fragment_right(&flags,&mask,query_compress,pos5,pos3);
-	  nmismatches = Genome_count_mismatches_fragment(query_shifted,flags,mask,
-							 splicefrags_ref[leaf],splicefrags_alt[leaf]);
+	  nmismatches = Genome_count_mismatches_fragment_right(query_compress,pos5,pos3,
+							       splicefrags_ref[leaf],splicefrags_alt[leaf]);
 	} else {
 	  /* Can happen in search for short middle exon */
 	  segment_left = splicesites[leaf] - pos5;
 	  nmismatches =
-	    Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand);
+	    Genome_count_mismatches_substring(query_compress,segment_left,pos5,pos3,plusp,genestrand,first_read_p);
 	}
 
 	debug2(printf("Found leaf %u at %u => %d mismatches\n",leaf,position,nmismatches));
@@ -1873,28 +1804,28 @@ search_right (int *best_nmismatches, Intlist_T *nmismatches_list, Intlist_T spli
     if (offseta > 0) {
       splicesites_i = search_right(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				   &(triecontents[-offseta]),queryptr,query_compress,
-				   pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				   pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				   nmismatches+(c != '\0' && c != 'A'),charpos+1,limit_high);
     }
       
     if (offsetc > 0) {
       splicesites_i = search_right(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				   &(triecontents[-offsetc]),queryptr,query_compress,
-				   pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				   pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				   nmismatches+(c != '\0' && c != 'C'),charpos+1,limit_high);
     }
 
     if (offsetg > 0) {
       splicesites_i = search_right(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				   &(triecontents[-offsetg]),queryptr,query_compress,
-				   pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				   pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				   nmismatches+(c != '\0' && c != 'G'),charpos+1,limit_high);
     }
 
     if (offsett > 0) {
       splicesites_i = search_right(&(*best_nmismatches),&(*nmismatches_list),splicesites_i,
 				   &(triecontents[-offsett]),queryptr,query_compress,
-				   pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				   pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				   nmismatches+(c != '\0' && c != 'T'),charpos+1,limit_high);
     }
 
@@ -1912,7 +1843,7 @@ Intlist_T
 Splicetrie_find_left (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
 		      Univcoord_T origleft, int pos5, int pos3, Univcoord_T chroffset,
 		      Compress_T query_compress, char *queryptr, int querylength,
-		      int max_mismatches_allowed, bool plusp, int genestrand,
+		      int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p,
 		      bool collect_all_p) {
   Intlist_T splicesites_i = NULL, p, q;
   int closesti;
@@ -1956,7 +1887,7 @@ Splicetrie_find_left (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
   }
 
   nmismatches_int =
-    Genome_count_mismatches_substring(query_compress,origleft,pos3,spliceregion,plusp,genestrand);
+    Genome_count_mismatches_substring(query_compress,origleft,pos3,spliceregion,plusp,genestrand,first_read_p);
   debug2(printf("  internal at %u => %d nmismatches/%d\n",
 		origleft,nmismatches_int,SPLICE_REGION));
   if (nmismatches_int > SPLICE_REGION_MISMATCHES) {
@@ -2009,7 +1940,7 @@ Splicetrie_find_left (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
 
     splicesites_i = search_left(&best_nmismatches_obs,&(*nmismatches_list),/*splicesites_i*/NULL,
 				triestart_obs,queryptr,query_compress,
-				pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				/*nmismatches*/0,/*charpos*/pos3,/*limit_low*/chroffset+pos3-1);
     /* *penalty = 0; */
     *best_nmismatches = best_nmismatches_obs;
@@ -2032,7 +1963,7 @@ Splicetrie_find_left (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
 
     splicesites_i = search_left(&best_nmismatches_max,&(*nmismatches_list),splicesites_i,
 				triestart_max,queryptr,query_compress,
-				pos5,pos3,plusp,genestrand,collect_all_p,
+				pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,
 				/*max_mismatches_allowed*/best_nmismatches_obs - obsmax_penalty,
 				/*nmismatches*/0,/*charpos*/pos3,/*limit_low*/chroffset+pos3-1);
     debug2(printf("best_nmismatches_obs = %d, best_nmismatches_max = %d\n",
@@ -2109,7 +2040,7 @@ Intlist_T
 Splicetrie_find_right (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
 		       Univcoord_T origleft, int pos5, int pos3, Univcoord_T chrhigh,
 		       Compress_T query_compress, char *queryptr, int max_mismatches_allowed,
-		       bool plusp, int genestrand, bool collect_all_p) {
+		       bool plusp, int genestrand, bool first_read_p, bool collect_all_p) {
   Intlist_T splicesites_i = NULL, p, q;
   int closesti;
   int spliceregion;
@@ -2153,7 +2084,7 @@ Splicetrie_find_right (int *best_nmismatches, Intlist_T *nmismatches_list, int i
   }
 
   nmismatches_int = 
-    Genome_count_mismatches_substring(query_compress,origleft,spliceregion,pos5,plusp,genestrand);
+    Genome_count_mismatches_substring(query_compress,origleft,spliceregion,pos5,plusp,genestrand,first_read_p);
   debug2(printf("  internal at %u => %d nmismatches/%d\n",
 		origleft,nmismatches_int,SPLICE_REGION));
   if (nmismatches_int > SPLICE_REGION_MISMATCHES) {
@@ -2206,7 +2137,7 @@ Splicetrie_find_right (int *best_nmismatches, Intlist_T *nmismatches_list, int i
 
     splicesites_i = search_right(&best_nmismatches_obs,&(*nmismatches_list),/*splicesites_i*/NULL,
 				 triestart_obs,queryptr,query_compress,
-				 pos5,pos3,plusp,genestrand,collect_all_p,max_mismatches_allowed,
+				 pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,max_mismatches_allowed,
 				 /*nmismatches*/0,/*charpos*/pos5-1,/*limit_high*/chrhigh+pos5-pos3);
     /* *penalty = 0; */
     *best_nmismatches = best_nmismatches_obs;
@@ -2229,7 +2160,7 @@ Splicetrie_find_right (int *best_nmismatches, Intlist_T *nmismatches_list, int i
 
     splicesites_i = search_right(&best_nmismatches_max,&(*nmismatches_list),splicesites_i,
 				 triestart_max,queryptr,query_compress,
-				 pos5,pos3,plusp,genestrand,collect_all_p,
+				 pos5,pos3,plusp,genestrand,first_read_p,collect_all_p,
 				 /*max_mismatches_allowed*/best_nmismatches_obs - obsmax_penalty,
 				 /*nmismatches*/0,/*charpos*/pos5-1,/*limit_high*/chrhigh+pos5-pos3);
     debug2(printf("best_nmismatches_obs = %d, best_nmismatches_max = %d\n",
diff --git a/src/splicetrie.h b/src/splicetrie.h
index 2a4de41..ae905aa 100644
--- a/src/splicetrie.h
+++ b/src/splicetrie.h
@@ -42,9 +42,6 @@ Splicetrie_solve_end5 (List_T best_pairs, Triecontent_T *triecontents, Trieoffse
 		       int *dynprogindex, Dynprog_T dynprog, 
 		       char *revsequence1, char *revsequenceuc1,
 		       int length1, int length2, int revoffset1, int revoffset2,
-#ifdef PMAP
-		       char *queryaaseq,
-#endif
 		       int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		       int extraband_end, double defect_rate);
 
@@ -62,9 +59,6 @@ Splicetrie_solve_end3 (List_T best_pairs, Triecontent_T *triecontents, Trieoffse
 		       int *dynprogindex, Dynprog_T dynprog, 
 		       char *sequence1, char *sequenceuc1,
 		       int length1, int length2, int offset1, int offset2,
-#ifdef PMAP
-		       char *queryaaseq,
-#endif
 		       int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		       int extraband_end, double defect_rate);
 
@@ -88,14 +82,14 @@ extern Intlist_T
 Splicetrie_find_left (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
 		      Univcoord_T origleft, int pos5, int pos3, Univcoord_T chroffset,
 		      Compress_T query_compress, char *queryptr, int querylength,
-		      int max_mismatches_allowed, bool plusp, int genestrand,
+		      int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p,
 		      bool collect_all_p);
 
 extern Intlist_T
 Splicetrie_find_right (int *best_nmismatches, Intlist_T *nmismatches_list, int i,
 		       Univcoord_T origleft, int pos5, int pos3, Univcoord_T chrhigh,
 		       Compress_T query_compress, char *queryptr, int max_mismatches_allowed,
-		       bool plusp, int genestrand, bool collect_all_p);
+		       bool plusp, int genestrand, bool first_read_p, bool collect_all_p);
 #endif
 
 #endif
diff --git a/src/splicetrie_build.c b/src/splicetrie_build.c
index c1118c1..2908e80 100644
--- a/src/splicetrie_build.c
+++ b/src/splicetrie_build.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: splicetrie_build.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: splicetrie_build.c 135656 2014-05-09 01:47:27Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -13,7 +13,6 @@ static char rcsid[] = "$Id: splicetrie_build.c 99737 2013-06-27 19:33:03Z twu $"
 #include "mem.h"
 #include "iitdef.h"
 #include "interval.h"
-#include "genome_hr.h"
 
 
 #define MININTRONLEN 9
@@ -57,13 +56,6 @@ Splicetype_string (Splicetype_T splicetype) {
 }
 
 
-/*               87654321 */
-#define LEFT_A 0x00000000
-#define LEFT_C 0x40000000
-#define LEFT_G 0x80000000
-#define LEFT_T 0xC0000000
-#define HIGH2  0xC0000000
-
 #define RIGHT_A 0x00
 #define RIGHT_C 0x01
 #define RIGHT_G 0x02
@@ -76,18 +68,21 @@ Splicetype_string (Splicetype_T splicetype) {
 static void
 splicefrag_nt_leftward (char *nt, Genomecomp_T splicefrag) {
   int i, j;
-  Genomecomp_T lowbits;
+  Genomecomp_T highbits, lowbits;
+
+  highbits = splicefrag >> 16;
+  lowbits = splicefrag /* & 0x0000FFFF */;
 
   j = 15;
   for (i = 0; i < 16; i++) {
-    lowbits = splicefrag & LOW_TWO_BITS;
-    switch (lowbits) {
+    switch (((highbits & 0x01) << 1) | (lowbits & 0x01)) {
     case RIGHT_A: nt[j] = 'A'; break;
     case RIGHT_C: nt[j] = 'C'; break;
     case RIGHT_G: nt[j] = 'G'; break;
     case RIGHT_T: nt[j] = 'T'; break;
     }
-    splicefrag >>= 2;
+    highbits >>= 1;
+    lowbits >>= 1;
     j--;
   }
 
@@ -97,18 +92,21 @@ splicefrag_nt_leftward (char *nt, Genomecomp_T splicefrag) {
 static void
 splicefrag_nt_rightward (char *nt, Genomecomp_T splicefrag) {
   int i, j;
-  Genomecomp_T lowbits;
+  Genomecomp_T highbits, lowbits;
+
+  highbits = splicefrag >> 16;
+  lowbits = splicefrag /* & 0x0000FFFF */;
 
   j = 0;
   for (i = 0; i < 16; i++) {
-    lowbits = splicefrag & LOW_TWO_BITS;
-    switch (lowbits) {
+    switch (((highbits & 0x01) << 1) | (lowbits & 0x01)) {
     case RIGHT_A: nt[j] = 'A'; break;
     case RIGHT_C: nt[j] = 'C'; break;
     case RIGHT_G: nt[j] = 'G'; break;
     case RIGHT_T: nt[j] = 'T'; break;
     }
-    splicefrag >>= 2;
+    highbits >>= 1;
+    lowbits >>= 1;
     j++;
   }
 
@@ -183,6 +181,14 @@ Splicetrie_dump (Trieoffset_T *triestart, Univcoord_T *splicesites,
 }
 
 
+/*               87654321 */
+#define LEFT_A 0x00000000
+#define LEFT_C 0x40000000
+#define LEFT_G 0x80000000
+#define LEFT_T 0xC0000000
+#define HIGH2  0xC0000000
+
+
 /* Puts leftmost character into lowest bits */
 /* For right splicestrings, we want the leftmost character in the highest bits */
 
@@ -208,6 +214,7 @@ compress16 (bool *saw_n_p, char *buffer) {
   return low;
 }
 
+
 static Genomecomp_T
 uint4_reverse (Genomecomp_T forward) {
   Genomecomp_T reverse = 0U;
@@ -226,21 +233,58 @@ uint4_reverse (Genomecomp_T forward) {
 
 
 
-typedef struct Splicestring_T *Splicestring_T;
-struct Splicestring_T {
-  Genomecomp_T string;
-  Genomecomp_T splicesite;
-  Genomecomp_T splicesite_i;
-};
+/*                   87654321 */
+#define LEFT_SET   0x80000000
+#define LEFT_CLEAR 0x00000000
+
+/* Puts the odd bits in the top 16 bits, and the even bits in the
+   bottom 16 bits.  Needed to match genomebits format, although that
+   has 32-bit blocks instead of 16 bits. */
+static Genomecomp_T
+unshuffle16 (bool *saw_n_p, char *buffer) {
+  Genomecomp_T bits = 0U;
+  int c;
+  int i;
+
+  /* *saw_n_p = false; -- Want to check both ref and alt, so rely on caller to set */
+  /* Low bits */
+  for (i = 0; i < 16; i++) {
+    c = buffer[i];
+    bits >>= 1;
+    switch (c) {
+    case 'A': /* bits |= LEFT_CLEAR; */ break;
+    case 'C':    bits |= LEFT_SET; break;
+    case 'G': /* bits |= LEFT_CLEAR; */ break;
+    case 'T':    bits |= LEFT_SET; break;
+    default: *saw_n_p = true; break;
+    }
+  }
+
+  /* High bits */
+  for (i = 0; i < 16; i++) {
+    c = buffer[i];
+    bits >>= 1;
+    switch (c) {
+    case 'A': /* bits |= LEFT_CLEAR; */ break;
+    case 'C': /* bits |= LEFT_CLEAR; */ break;
+    case 'G':    bits |= LEFT_SET; break;
+    case 'T':    bits |= LEFT_SET; break;
+    default: *saw_n_p = true; break;
+    }
+  }
+
+  return bits;
+}
 
 
+#if 0
+/* Replaced by procedures in splicestringpool.c */
 static void
 Splicestring_free (Splicestring_T *old) {
   FREE(*old);
   return;
 }
 
-
 void
 Splicestring_gc (List_T *splicestrings, int nsplicesites) {
   int i;
@@ -259,7 +303,6 @@ Splicestring_gc (List_T *splicestrings, int nsplicesites) {
   return;
 }
 
-
 static Splicestring_T
 Splicestring_new (Genomecomp_T string, Genomecomp_T splicesite, int splicesite_i) {
   Splicestring_T new = (Splicestring_T) MALLOC(sizeof(*new));
@@ -269,6 +312,7 @@ Splicestring_new (Genomecomp_T string, Genomecomp_T splicesite, int splicesite_i
   new->splicesite_i = (Genomecomp_T) splicesite_i;
   return new;
 }
+#endif
 
 static int
 Splicestring_cmp (const void *a, const void *b) {
@@ -290,7 +334,8 @@ Splicestring_cmp (const void *a, const void *b) {
 
 
 static List_T
-allelic_combinations (Genomecomp_T refstring, Genomecomp_T altstring, Genomecomp_T splicesite, int splicesite_i) {
+allelic_combinations (Genomecomp_T refstring, Genomecomp_T altstring, Genomecomp_T splicesite, int splicesite_i,
+		      Splicestringpool_T splicestringpool) {
   List_T splicestrings = NULL;
   Uintlist_T combinations, newcombinations, temp, p;
   int refc, altc;
@@ -321,7 +366,8 @@ allelic_combinations (Genomecomp_T refstring, Genomecomp_T altstring, Genomecomp
   }
 
   for (p = combinations; p != NULL; p = Uintlist_next(p)) {
-    splicestrings = List_push(splicestrings,(void *) Splicestring_new(Uintlist_head(p),splicesite,splicesite_i));
+    splicestrings = Splicestringpool_push(splicestrings,splicestringpool,
+					  Uintlist_head(p),splicesite,splicesite_i);
   }
 
   Uintlist_free(&combinations);
@@ -343,7 +389,8 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 				     List_T **splicestrings, Genomecomp_T **splicefrags_ref, Genomecomp_T **splicefrags_alt,
 				     int *nsplicesites, IIT_T splicing_iit, int *splicing_divint_crosstable,
 				     int donor_typeint, int acceptor_typeint, Univ_IIT_T chromosome_iit,
-				     Genome_T genome, Genome_T genomealt, Chrpos_T shortsplicedist) {
+				     Genome_T genome, Genome_T genomealt, Chrpos_T shortsplicedist,
+				     Splicestringpool_T splicestringpool) {
   Univcoord_T *splicesites, chroffset, chrhigh, position;
   Chrpos_T chrlength, chrpos;
   Univcoord_T last_donor, last_antidonor, last_acceptor, last_antiacceptor;
@@ -354,6 +401,7 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
   int divno, nsplicesites1, i, k;
   Chrnum_T chrnum;
   Interval_T *intervals, interval;
+  struct Interval_T *interval_structs;
   char gbuffer_ref[17], gbuffer_alt[17], *chr;
   char *restofheader, *annot;
   bool firstp = true, saw_n_p, allocp, alloc_header_p;
@@ -403,7 +451,7 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 	last_donor = last_antidonor = last_acceptor = last_antiacceptor = 0U;
 	for (i = 0; i < nsplicesites1; i++) {
 	  interval = intervals[i];
-	  chrpos = Interval_low(intervals[i]);
+	  chrpos = Interval_low(interval);
 	  position = chrpos + chroffset;
 
 	  if (position >= chrhigh) {
@@ -478,6 +526,9 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
     *splicefrags_alt = (Genomecomp_T *) CALLOC(*nsplicesites,sizeof(Genomecomp_T));
   }
 
+  /* Use interval_structs instead of intervals, because we want to
+     copy information and avoid creating many Interval_T objects */
+
   k = 0;
   for (chrnum = 1; chrnum <= Univ_IIT_total_nintervals(chromosome_iit); chrnum++) {
     if ((divno = splicing_divint_crosstable[chrnum]) > 0) {
@@ -486,11 +537,11 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
       splicesites1 = IIT_get_with_divno(&nsplicesites1,splicing_iit,divno,
 					0U,chrlength-1U,/*sortp*/false);
       if (nsplicesites1 > 0) {
-	intervals = (Interval_T *) CALLOC(nsplicesites1,sizeof(Interval_T));
+	interval_structs = (struct Interval_T *) CALLOC(nsplicesites1,sizeof(struct Interval_T));
 	for (i = 0; i < nsplicesites1; i++) {
 	  /* intervals[i] = &(splicing_iit->intervals[divno][i]); */
 	  /* Copy so we can store distance information in Interval_high */
-	  intervals[i] = Interval_copy(&(splicing_iit->intervals[divno][i]));
+	  Interval_copy_existing(&(interval_structs[i]),&(splicing_iit->intervals[divno][i]));
 	  if (*distances_observed_p == false) {
 	    /* No, want to have essentially zero distance */
 	    /* Interval_store_length(intervals[i],shortsplicedist); */
@@ -506,9 +557,9 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 	      exit(9);
 	    } else if (distance > (int) shortsplicedist) {
 	      ntoolong++;
-	      Interval_store_length(intervals[i],distance + SPLICEDIST_EXTRA);  /* Previously stored shortsplicedist */
+	      Interval_store_length(&(interval_structs[i]),distance + SPLICEDIST_EXTRA);  /* Previously stored shortsplicedist */
 	    } else {
-	      Interval_store_length(intervals[i],distance + SPLICEDIST_EXTRA);
+	      Interval_store_length(&(interval_structs[i]),distance + SPLICEDIST_EXTRA);
 	    }
 	    if (alloc_header_p == true) {
 	      FREE(restofheader);
@@ -516,12 +567,12 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 	  }
 	}
 
-	qsort(intervals,nsplicesites1,sizeof(Interval_T),Interval_cmp_low);
+	qsort(interval_structs,nsplicesites1,sizeof(struct Interval_T),Interval_cmp_low_struct);
 
 	last_donor = last_antidonor = last_acceptor = last_antiacceptor = 0U;
 	for (i = 0; i < nsplicesites1; i++) {
-	  interval = intervals[i];
-	  chrpos = Interval_low(intervals[i]);
+	  interval = &(interval_structs[i]);
+	  chrpos = Interval_low(interval);
 	  position = chrpos + chroffset;
 
 	  if (position >= chrhigh) {
@@ -552,10 +603,12 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 
 		saw_n_p = false;
 		Genome_fill_buffer_simple(genome,position-16,16,gbuffer_ref);
-		refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
+		refstring = compress16(&saw_n_p,gbuffer_ref);
+		(*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 		if (genomealt) {
 		  Genome_fill_buffer_simple_alt(genome,genomealt,position-16,16,gbuffer_alt);
-		  altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
+		  altstring = compress16(&saw_n_p,gbuffer_alt);
+		  (*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 		}
 
 		if (saw_n_p == true) {
@@ -565,10 +618,10 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 		  if (allocp) FREE(chr);
 
 		} else if (genomealt) {
-		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		  k++;
 		} else {
-		  (*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		  (*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		  k++;
 		}
 	      }
@@ -591,12 +644,12 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 
 		saw_n_p = false;
 		Genome_fill_buffer_simple(genome,position,16,gbuffer_ref);
-		refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
-		refstring = uint4_reverse(refstring);
+		refstring = uint4_reverse(compress16(&saw_n_p,gbuffer_ref));
+		(*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 		if (genomealt) {
 		  Genome_fill_buffer_simple_alt(genome,genomealt,position,16,gbuffer_alt);
-		  altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
-		  altstring = uint4_reverse(altstring);
+		  altstring = uint4_reverse(compress16(&saw_n_p,gbuffer_alt));
+		  (*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 		}
 
 		if (saw_n_p == true) {
@@ -605,10 +658,10 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 			  chr,chrpos);
 		  if (allocp) FREE(chr);
 		} else if (genomealt) {
-		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		  k++;
 		} else {
-		  (*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		  (*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		  k++;
 		}
 	      }
@@ -633,12 +686,12 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 
 		saw_n_p = false;
 		Genome_fill_buffer_simple(genome,position,16,gbuffer_ref);
-		refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
-		refstring = uint4_reverse(refstring);
+		refstring = uint4_reverse(compress16(&saw_n_p,gbuffer_ref));
+		(*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 		if (genomealt) {
 		  Genome_fill_buffer_simple_alt(genome,genomealt,position,16,gbuffer_alt);
-		  altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
-		  altstring = uint4_reverse(altstring);
+		  altstring = uint4_reverse(compress16(&saw_n_p,gbuffer_alt));
+		  (*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 		}
 
 		if (saw_n_p == true) {
@@ -647,10 +700,10 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 			  chr,chrpos);
 		  if (allocp) FREE(chr);
 		} else if (genomealt) {
-		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		  k++;
 		} else {
-		  (*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		  (*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		  k++;
 		}
 	      }
@@ -673,10 +726,12 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 
 		saw_n_p = false;
 		Genome_fill_buffer_simple(genome,position-16,16,gbuffer_ref);
-		refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
+		refstring = compress16(&saw_n_p,gbuffer_ref);
+		(*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 		if (genomealt) {
 		  Genome_fill_buffer_simple_alt(genome,genomealt,position-16,16,gbuffer_alt);
-		  altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
+		  altstring = compress16(&saw_n_p,gbuffer_alt);
+		  (*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 		}
 
 		if (saw_n_p == true) {
@@ -685,10 +740,10 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 			  chr,chrpos);
 		  if (allocp) FREE(chr);
 		} else if (genomealt) {
-		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		  (*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		  k++;
 		} else {
-		  (*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		  (*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		  k++;
 		}
 	      }
@@ -697,10 +752,7 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 	  }
 	}
 
-	for (i = 0; i < nsplicesites1; i++) {
-	  Interval_free(&(intervals[i]));
-	}
-	FREE(intervals);
+	FREE(interval_structs);
 	FREE(splicesites1);
       }
     }
@@ -756,7 +808,8 @@ Splicetrie_retrieve_via_introns (
 				 Splicetype_T **splicetypes, Chrpos_T **splicedists,
 				 List_T **splicestrings, Genomecomp_T **splicefrags_ref, Genomecomp_T **splicefrags_alt,
 				 int *nsplicesites, IIT_T splicing_iit, int *splicing_divint_crosstable,
-				 Univ_IIT_T chromosome_iit, Genome_T genome, Genome_T genomealt) {
+				 Univ_IIT_T chromosome_iit, Genome_T genome, Genome_T genomealt,
+				 Splicestringpool_T splicestringpool) {
   Univcoord_T *splicesites, chroffset, chrhigh, position;
   Chrpos_T chrlength, chrpos;
   Univcoord_T last_donor, last_antidonor, last_acceptor, last_antiacceptor;
@@ -797,7 +850,7 @@ Splicetrie_retrieve_via_introns (
 	last_donor = last_antiacceptor = 0U;
 	for (i = 0; i < nintrons1; i++) {
 	  interval = intervals[i];
-	  chrpos = Interval_low(intervals[i]);
+	  chrpos = Interval_low(interval);
 	  position = chrpos + chroffset;
 
 	  if (position >= chrhigh) {
@@ -823,7 +876,7 @@ Splicetrie_retrieve_via_introns (
 	last_acceptor = last_antidonor = 0U;
 	for (i = 0; i < nintrons1; i++) {
 	  interval = intervals[i];
-	  chrpos = Interval_high(intervals[i]) - INTRON_HIGH_TO_LOW;
+	  chrpos = Interval_high(interval) - INTRON_HIGH_TO_LOW;
 	  position = chrpos + chroffset;
 
 	  if (position >= chrhigh) {
@@ -886,6 +939,7 @@ Splicetrie_retrieve_via_introns (
     *splicefrags_alt = (Genomecomp_T *) CALLOC(*nsplicesites,sizeof(Genomecomp_T));
   }
 
+
   k = 0;
   for (chrnum = 1; chrnum <= Univ_IIT_total_nintervals(chromosome_iit); chrnum++) {
     if ((divno = splicing_divint_crosstable[chrnum]) > 0) {
@@ -902,7 +956,7 @@ Splicetrie_retrieve_via_introns (
 	last_donor = last_antiacceptor = 0U;
 	for (i = 0; i < nintrons1; i++) {
 	  interval = intervals[i];
-	  chrpos = Interval_low(intervals[i]);
+	  chrpos = Interval_low(interval);
 	  position = chrpos + chroffset;
 
 	  if (position >= chrhigh) {
@@ -932,10 +986,12 @@ Splicetrie_retrieve_via_introns (
 
 	      saw_n_p = false;
 	      Genome_fill_buffer_simple(genome,position-16,16,gbuffer_ref);
-	      refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
+	      refstring = compress16(&saw_n_p,gbuffer_ref);
+	      (*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 	      if (genomealt) {
 		Genome_fill_buffer_simple_alt(genome,genomealt,position-16,16,gbuffer_alt);
-		altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
+		altstring = compress16(&saw_n_p,gbuffer_alt);
+		(*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 	      }
 
 	      if (saw_n_p == true) {
@@ -944,10 +1000,10 @@ Splicetrie_retrieve_via_introns (
 			chr,chrpos);
 		if (allocp) FREE(chr);
 	      } else if (genomealt) {
-		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		k++;
 	      } else {
-		(*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		(*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		k++;
 	      }
 	    }
@@ -970,10 +1026,12 @@ Splicetrie_retrieve_via_introns (
 
 	      saw_n_p = false;
 	      Genome_fill_buffer_simple(genome,position-16,16,gbuffer_ref);
-	      refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
+	      refstring = compress16(&saw_n_p,gbuffer_ref);
+	      (*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 	      if (genomealt) {
 		Genome_fill_buffer_simple_alt(genome,genomealt,position-16,16,gbuffer_alt);
-		altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
+		altstring = compress16(&saw_n_p,gbuffer_alt);
+		(*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 	      }
 
 	      if (saw_n_p == true) {
@@ -982,10 +1040,10 @@ Splicetrie_retrieve_via_introns (
 			chr,chrpos);
 		if (allocp) FREE(chr);
 	      } else if (genomealt) {
-		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		k++;
 	      } else {
-		(*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		(*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		k++;
 	      }
 	    }
@@ -997,7 +1055,7 @@ Splicetrie_retrieve_via_introns (
 	last_acceptor = last_antidonor = 0U;
 	for (i = 0; i < nintrons1; i++) {
 	  interval = intervals[i];
-	  chrpos = Interval_high(intervals[i]) - INTRON_HIGH_TO_LOW;
+	  chrpos = Interval_high(interval) - INTRON_HIGH_TO_LOW;
 	  position = chrpos + chroffset;
 
 	  if (position >= chrhigh) {
@@ -1027,12 +1085,12 @@ Splicetrie_retrieve_via_introns (
 
 	      saw_n_p = false;
 	      Genome_fill_buffer_simple(genome,position,16,gbuffer_ref);
-	      refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
-	      refstring = uint4_reverse(refstring);
+	      refstring = uint4_reverse(compress16(&saw_n_p,gbuffer_ref));
+	      (*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 	      if (genomealt) {
 		Genome_fill_buffer_simple_alt(genome,genomealt,position,16,gbuffer_alt);
-		altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
-		altstring = uint4_reverse(altstring);
+		altstring = uint4_reverse(compress16(&saw_n_p,gbuffer_alt));
+		(*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 	      }
 
 	      if (saw_n_p == true) {
@@ -1041,10 +1099,10 @@ Splicetrie_retrieve_via_introns (
 			chr,chrpos);
 		if (allocp) FREE(chr);
 	      } else if (genomealt) {
-		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		k++;
 	      } else {
-		(*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		(*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		k++;
 	      }
 	    }
@@ -1067,12 +1125,12 @@ Splicetrie_retrieve_via_introns (
 
 	      saw_n_p = false;
 	      Genome_fill_buffer_simple(genome,position,16,gbuffer_ref);
-	      refstring = (*splicefrags_ref)[k] = compress16(&saw_n_p,gbuffer_ref);
-	      refstring = uint4_reverse(refstring);
+	      refstring = uint4_reverse(compress16(&saw_n_p,gbuffer_ref));
+	      (*splicefrags_ref)[k] = unshuffle16(&saw_n_p,gbuffer_ref);
 	      if (genomealt) {
 		Genome_fill_buffer_simple_alt(genome,genomealt,position,16,gbuffer_alt);
-		altstring = (*splicefrags_alt)[k] = compress16(&saw_n_p,gbuffer_alt);
-		altstring = uint4_reverse(altstring);
+		altstring = uint4_reverse(compress16(&saw_n_p,gbuffer_alt));
+		(*splicefrags_alt)[k] = unshuffle16(&saw_n_p,gbuffer_alt);
 	      }
 
 	      if (saw_n_p == true) {
@@ -1081,10 +1139,10 @@ Splicetrie_retrieve_via_introns (
 			chr,chrpos);
 		if (allocp) FREE(chr);
 	      } else if (genomealt) {
-		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k);
+		(*splicestrings)[k] = allelic_combinations(refstring,altstring,position,k,splicestringpool);
 		k++;
 	      } else {
-		(*splicestrings)[k] = List_push(NULL,(void *) Splicestring_new(refstring,position,k));
+		(*splicestrings)[k] = Splicestringpool_push(NULL,splicestringpool,refstring,position,k);
 		k++;
 	      }
 	    }
@@ -1324,12 +1382,74 @@ Trie_new (Splicestring_T *sites, int nsites, int charpos) {
 #endif
 
 
+/* Based on original Trie_output_new, which used repeated calls to Uintlist_push */
+static int
+Trie_output_size (int size, Splicestring_T *sites, int nsites, int charpos) {
+  int i, k;
+  unsigned int posa, posc, posg, post;
+  int na, nc, ng, nt;
+
+  if (nsites == 0) {
+    debug0(printf("nsites == 0, so not adding anything\n"));
+
+  } else if (nsites == 1) {
+    debug0(printf("nsites == 1, so adding 1\n"));
+    size += 1;
+    
+  } else if (charpos >= 16) {
+    if (nsites > MAX_DUPLICATES) {
+      fprintf(stderr,"Warning: Splicetrie exceeded max duplicates value of %d\n",MAX_DUPLICATES);
+    } else {
+      size += 1;
+
+      for (i = 0; i < nsites; i++) {
+	debug0(printf(" %d",sites[i]->splicesite_i));
+	size += 1;
+      }
+      debug0(printf("\n"));
+    }
+      
+  } else {
+    na = nc = ng = nt = 0;
+    for (i = 0; i < nsites; i++) {
+      switch ((sites[i]->string >> (30 - 2*charpos)) & 0x03) {
+      case RIGHT_A: na++; break;
+      case RIGHT_C: nc++; break;
+      case RIGHT_G: ng++; break;
+      case RIGHT_T: nt++; break;
+      default: abort();
+      }
+    }
+    debug0(printf("%d A, %d C, %d G, %d T\n",na,nc,ng,nt));
+
+    k = 0;
+    size = Trie_output_size(size,&(sites[k]),na,charpos+1);
+
+    k += na;
+    size = Trie_output_size(size,&(sites[k]),nc,charpos+1);
+
+    k += nc;
+    size = Trie_output_size(size,&(sites[k]),ng,charpos+1);
+
+    k += ng;
+    size = Trie_output_size(size,&(sites[k]),nt,charpos+1);
+    /* k += nt; */
+
+    size += 5;
+  }
+
+  return size;
+}
+
+
+
+#ifdef USE_LIST
 /* Combination of Trie_new and Trie_output */
 /* Note that when *ptr = NULL_POINTER, we do not need to advance
    nprinted, because no entry is made into triecontents_list */
 static Uintlist_T
-Trie_output_new (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_list,
-		 Splicestring_T *sites, int nsites, int charpos) {
+Trie_output_list (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_list,
+		  Splicestring_T *sites, int nsites, int charpos) {
   int i, k;
   unsigned int posa, posc, posg, post;
   int na, nc, ng, nt;
@@ -1375,16 +1495,16 @@ Trie_output_new (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_list,
     debug0(printf("%d A, %d C, %d G, %d T\n",na,nc,ng,nt));
 
     k = 0;
-    triecontents_list = Trie_output_new(&posa,&(*nprinted),triecontents_list,
+    triecontents_list = Trie_output_list(&posa,&(*nprinted),triecontents_list,
 					&(sites[k]),na,charpos+1);
     k += na;
-    triecontents_list = Trie_output_new(&posc,&(*nprinted),triecontents_list,
+    triecontents_list = Trie_output_list(&posc,&(*nprinted),triecontents_list,
 					&(sites[k]),nc,charpos+1);
     k += nc;
-    triecontents_list = Trie_output_new(&posg,&(*nprinted),triecontents_list,
+    triecontents_list = Trie_output_list(&posg,&(*nprinted),triecontents_list,
 					&(sites[k]),ng,charpos+1);
     k += ng;
-    triecontents_list = Trie_output_new(&post,&(*nprinted),triecontents_list,
+    triecontents_list = Trie_output_list(&post,&(*nprinted),triecontents_list,
 					&(sites[k]),nt,charpos+1);
     /* k += nt; */
 
@@ -1417,6 +1537,99 @@ Trie_output_new (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_list,
   return triecontents_list;
 }
 
+#else
+
+/* ptr is for offsets */
+static unsigned int *
+Trie_output_array (unsigned int *ptr, int *nprinted, unsigned int *contents,
+		   Splicestring_T *sites, int nsites, int charpos) {
+  int i, k;
+  unsigned int posa, posc, posg, post;
+  int na, nc, ng, nt;
+
+  if (nsites == 0) {
+    debug0(printf("nsites == 0, so NULL\n"));
+    *ptr = NULL_POINTER;
+
+  } else if (nsites == 1) {
+    debug0(printf("nsites == 1, so pushing %d\n",sites[0]->splicesite_i));
+    *ptr = *nprinted;
+    *contents++ = sites[0]->splicesite_i;
+    *nprinted += 1;
+    
+  } else if (charpos >= 16) {
+    if (nsites > MAX_DUPLICATES) {
+      fprintf(stderr,"Warning: Splicetrie exceeded max duplicates value of %d\n",MAX_DUPLICATES);
+      *ptr = NULL_POINTER;
+    } else {
+      *ptr = *nprinted;
+
+      *contents++ = (Triecontent_T) (-nsites);
+      *nprinted += 1;
+      for (i = 0; i < nsites; i++) {
+	debug0(printf(" %d",sites[i]->splicesite_i));
+	*contents++ = sites[i]->splicesite_i;
+	*nprinted += 1;
+      }
+      debug0(printf("\n"));
+    }
+      
+  } else {
+    na = nc = ng = nt = 0;
+    for (i = 0; i < nsites; i++) {
+      switch ((sites[i]->string >> (30 - 2*charpos)) & 0x03) {
+      case RIGHT_A: na++; break;
+      case RIGHT_C: nc++; break;
+      case RIGHT_G: ng++; break;
+      case RIGHT_T: nt++; break;
+      default: abort();
+      }
+    }
+    debug0(printf("%d A, %d C, %d G, %d T\n",na,nc,ng,nt));
+
+    k = 0;
+    contents = Trie_output_array(&posa,&(*nprinted),contents,&(sites[k]),na,charpos+1);
+
+    k += na;
+    contents = Trie_output_array(&posc,&(*nprinted),contents,&(sites[k]),nc,charpos+1);
+
+    k += nc;
+    contents = Trie_output_array(&posg,&(*nprinted),contents,&(sites[k]),ng,charpos+1);
+
+    k += ng;
+    contents = Trie_output_array(&post,&(*nprinted),contents,&(sites[k]),nt,charpos+1);
+    /* k += nt; */
+
+    *ptr = *nprinted;
+    *contents++ = INTERNAL_NODE;
+
+    if (posa == NULL_POINTER) {
+      *contents++ = EMPTY_POINTER;
+    } else {
+      *contents++ = *ptr - posa;
+    }
+    if (posc == NULL_POINTER) {
+      *contents++ = EMPTY_POINTER;
+    } else {
+      *contents++ = *ptr - posc;
+    }
+    if (posg == NULL_POINTER) {
+      *contents++ = EMPTY_POINTER;
+    } else {
+      *contents++ = *ptr - posg;
+    }
+    if (post == NULL_POINTER) {
+      *contents++ = EMPTY_POINTER;
+    } else {
+      *contents++ = *ptr - post;
+    }
+    *nprinted += 5;
+  }
+
+  return contents;
+}
+#endif
+
 
 #if 0
 static void
@@ -1499,8 +1712,16 @@ Trie_print_compact (int *ptr, FILE *fp, Trie_T trie, int nprinted) {
 #endif
 
 
+#ifdef USE_2BYTE_RELOFFSETS
+#define TRIE_EMPTY_SIZE 3
+#else
+#define TRIE_EMPTY_SIZE 5
+#endif
+
+
+#ifdef USE_LIST
 static Uintlist_T
-Trie_output_empty (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_list) {
+Trie_output_empty_list (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_list) {
   *ptr = (unsigned int) *nprinted;
   triecontents_list = Uintlist_push(triecontents_list,INTERNAL_NODE);
 #ifdef USE_2BYTE_RELOFFSETS
@@ -1517,6 +1738,27 @@ Trie_output_empty (unsigned int *ptr, int *nprinted, Uintlist_T triecontents_lis
   return triecontents_list;
 }
 
+#else
+static unsigned int *
+Trie_output_empty_array (unsigned int *ptr, int *nprinted, unsigned int *contents) {
+  *ptr = (unsigned int) *nprinted;
+  *contents++ = INTERNAL_NODE;
+#ifdef USE_2BYTE_RELOFFSETS
+  *contents++ = EMPTY_POINTER;
+  *contents++ = EMPTY_POINTER;
+  *nprinted += 3;
+#else
+  *contents++ = EMPTY_POINTER;
+  *contents++ = EMPTY_POINTER;
+  *contents++ = EMPTY_POINTER;
+  *contents++ = EMPTY_POINTER;
+  *nprinted += 5;
+#endif
+  return contents;
+}
+
+#endif
+
 
 #if 0
 static Uintlist_T
@@ -1818,57 +2060,41 @@ Splicetrie_npartners (int **nsplicepartners_skip, int **nsplicepartners_obs, int
 }
 
 
+#define MAX_SITES_ALLOCATED 1000
 
-void
-Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T **trieoffsets_obs,
-				  Triecontent_T **triecontents_max, Trieoffset_T **trieoffsets_max,
-				  int *nsplicepartners_skip, int *nsplicepartners_obs, int *nsplicepartners_max,
-				  Splicetype_T *splicetypes, List_T *splicestrings, int nsplicesites) {
-  Uintlist_T triecontents_obs_list = NULL, triecontents_max_list = NULL;
+static void
+build_via_splicesites_size (int *trie_obs_size, int *trie_max_size,
+			    int *nsplicepartners_skip, int *nsplicepartners_obs, int *nsplicepartners_max,
+			    Splicetype_T *splicetypes, List_T *splicestrings, int nsplicesites,
+			    bool distances_observed_p) {
   List_T p;
   int nsites, j, j1;
-  Splicestring_T *sites;
-  int nprinted_obs = 0, nprinted_max = 0;
-  bool distances_observed_p;
-
-  if (nsplicepartners_obs == NULL) {
-    distances_observed_p = false;
-  } else {
-    distances_observed_p = true;
-  }
-
-  if (distances_observed_p == true) {
-    *trieoffsets_obs = (Trieoffset_T *) CALLOC(nsplicesites,sizeof(Trieoffset_T));
-  } else {
-    *trieoffsets_obs = (Trieoffset_T *) NULL;
-  }
-  *trieoffsets_max = (Trieoffset_T *) CALLOC(nsplicesites,sizeof(Trieoffset_T));
+  Splicestring_T *sites, sites_allocated[MAX_SITES_ALLOCATED];
+  int npartners;
 
   for (j = 0; j < nsplicesites; j++) {
     switch (splicetypes[j]) {
     case DONOR:
-      debug(
-	    if (distances_observed_p == true) {
-	      printf("donor #%d (%d partners obs, %d partners max):",
-		     j,nsplicepartners_obs[j],nsplicepartners_max[j]);
-	    } else {
-	      printf("donor #%d (%d partners max):",
-		     j,nsplicepartners_max[j]);
-	    });
-
       j1 = j + 1 + nsplicepartners_skip[j];
 
       if (distances_observed_p) {
-	if (nsplicepartners_obs[j] == 0) {
-	  triecontents_obs_list = Trie_output_empty(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#if 0
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  (*trie_obs_size) += TRIE_EMPTY_SIZE;
+#endif
 
 	} else {
-	  sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
 	  nsites = 0;
 	  while (nsites < nsplicepartners_obs[j]) {
 	    if (splicetypes[j1] == ACCEPTOR) {
 	      for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-		debug(printf(" %d",j1));
 		sites[nsites++] = (Splicestring_T) List_head(p);
 	      }
 	    }
@@ -1876,22 +2102,35 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	  }
 	  assert(nsites == nsplicepartners_obs[j]);
 	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	  triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+#if 0
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						  sites,nsites,/*charpos*/0);
-	  FREE(sites);
+#else
+	  *trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
 	}
       }
 
-      if (nsplicepartners_max[j] == 0) {
-	triecontents_max_list = Trie_output_empty(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#if 0
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	(*trie_max_size) += TRIE_EMPTY_SIZE;
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	while (nsites < nsplicepartners_max[j]) {
 	  if (splicetypes[j1] == ACCEPTOR) {
 	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	      debug(printf(" %d",j1));
 	      sites[nsites++] = (Splicestring_T) List_head(p);
 	    }
 	  }
@@ -1899,37 +2138,41 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	}
 	assert(nsites == nsplicepartners_max[j]);
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_max_list = Trie_output_new(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+#if 0
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#else
+	*trie_max_size = Trie_output_size(*trie_max_size,sites,nsites,/*charpos*/0);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
-      debug(printf("\n"));
       break;
 
     case ACCEPTOR:
-      debug(
-	    if (distances_observed_p == true) {
-	      printf("acceptor #%d (%d partners obs, %d partners max):",
-		     j,nsplicepartners_obs[j],nsplicepartners_max[j]);
-	    } else {
-	      printf("acceptor #%d (%d partners max):",
-		     j,nsplicepartners_max[j]);
-	    });
 
       j1 = j - 1 - nsplicepartners_skip[j];
 
       if (distances_observed_p) {
-	if (nsplicepartners_obs[j] == 0) {
-	  triecontents_obs_list = Trie_output_empty(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#if 0
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  (*trie_obs_size) += TRIE_EMPTY_SIZE;
+#endif
 
 	} else {
-	  sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
 	  nsites = 0;
 	  while (nsites < nsplicepartners_obs[j]) {
 	    if (splicetypes[j1] == DONOR) {
 	      for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-		debug(printf(" %d",j1));
 		sites[nsites++] = (Splicestring_T) List_head(p);
 	      }
 	    }
@@ -1937,17 +2180,423 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	  }
 	  assert(nsites == nsplicepartners_obs[j]);
 	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	  triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+#if 0
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+						  sites,nsites,/*charpos*/0);
+#else
+	  *trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
+	}
+      }
+
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#if 0
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	(*trie_max_size) += TRIE_EMPTY_SIZE;
+#endif
+
+      } else {
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
+	nsites = 0;
+	while (nsites < nsplicepartners_max[j]) {
+	  if (splicetypes[j1] == DONOR) {
+	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+	      sites[nsites++] = (Splicestring_T) List_head(p);
+	    }
+	  }
+	  j1--;
+	}
+	assert(nsites == nsplicepartners_max[j]);
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+						sites,nsites,/*charpos*/0);
+#else
+	*trie_max_size = Trie_output_size(*trie_max_size,sites,nsites,/*charpos*/0);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
+      }
+
+      break;
+
+    case ANTIDONOR:
+
+      j1 = j - 1 - nsplicepartners_skip[j];
+
+      if (distances_observed_p) {
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#if 0
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  (*trie_obs_size) += TRIE_EMPTY_SIZE;
+#endif
+
+	} else {
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated)[0];
+	  }
+	  nsites = 0;
+	  while (nsites < nsplicepartners_obs[j]) {
+	    if (splicetypes[j1] == ANTIACCEPTOR) {
+	      for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+		sites[nsites++] = (Splicestring_T) List_head(p);
+	      }
+	    }
+	    j1--;
+	  }
+	  assert(nsites == nsplicepartners_obs[j]);
+	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+						  sites,nsites,/*charpos*/0);
+#else
+	  *trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
+	}
+      }
+
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#if 0
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	(*trie_max_size) += TRIE_EMPTY_SIZE;
+#endif
+
+      } else {
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
+	nsites = 0;
+	while (nsites < nsplicepartners_max[j]) {
+	  if (splicetypes[j1] == ANTIACCEPTOR) {
+	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+	      sites[nsites++] = (Splicestring_T) List_head(p);
+	    }
+	  }
+	  j1--;
+	}
+	assert(nsites == nsplicepartners_max[j]);
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+						sites,nsites,/*charpos*/0);
+#else
+	*trie_max_size = Trie_output_size(*trie_max_size,sites,nsites,/*charpos*/0);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
+      }
+
+      break;
+
+    case ANTIACCEPTOR:
+
+      j1 = j + 1 + nsplicepartners_skip[j];
+
+      if (distances_observed_p) {
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#if 0
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  (*trie_obs_size) += TRIE_EMPTY_SIZE;
+#endif
+
+	} else {
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
+	  nsites = 0;
+	  while (nsites < nsplicepartners_obs[j]) {
+	    if (splicetypes[j1] == ANTIDONOR) {
+	      for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+		sites[nsites++] = (Splicestring_T) List_head(p);
+	      }
+	    }
+	    j1++;
+	  }
+	  assert(nsites == nsplicepartners_obs[j]);
+	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+						  sites,nsites,/*charpos*/0);
+#else
+	  *trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
+	}
+      }
+
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#if 0
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	(*trie_max_size) += TRIE_EMPTY_SIZE;
+#endif
+
+      } else {
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
+	nsites = 0;
+	while (nsites < nsplicepartners_max[j]) {
+	  if (splicetypes[j1] == ANTIDONOR) {
+	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+	      sites[nsites++] = (Splicestring_T) List_head(p);
+	    }
+	  }
+	  j1++;
+	}
+	assert(nsites == nsplicepartners_max[j]);
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+						sites,nsites,/*charpos*/0);
+#else
+	*trie_max_size = Trie_output_size(*trie_max_size,sites,nsites,/*charpos*/0);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
+      }
+
+      break;
+
+    default:
+      fprintf(stderr,"Unexpected splicetype %d\n",splicetypes[j]);
+      abort();
+    }
+  }
+
+  return;
+}
+
+
+
+void
+Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T **trieoffsets_obs,
+				  Triecontent_T **triecontents_max, Trieoffset_T **trieoffsets_max,
+				  int *nsplicepartners_skip, int *nsplicepartners_obs, int *nsplicepartners_max,
+				  Splicetype_T *splicetypes, List_T *splicestrings, int nsplicesites) {
+#ifdef USE_LIST
+  Uintlist_T triecontents_obs_list = NULL, triecontents_max_list = NULL;
+#else
+  unsigned int *triecontents_obs_ptr, *triecontents_max_ptr;
+#endif
+  List_T p;
+  int nsites, j, j1;
+  Splicestring_T *sites, sites_allocated[MAX_SITES_ALLOCATED];
+  int npartners;
+  int nprinted_obs = 0, nprinted_max = 0;
+  int trie_obs_size = 0, trie_max_size = 0;
+  bool distances_observed_p;
+
+  if (nsplicepartners_obs == NULL) {
+    distances_observed_p = false;
+  } else {
+    distances_observed_p = true;
+  }
+
+  if (distances_observed_p == true) {
+    *trieoffsets_obs = (Trieoffset_T *) CALLOC(nsplicesites,sizeof(Trieoffset_T));
+  } else {
+    *trieoffsets_obs = (Trieoffset_T *) NULL;
+  }
+  *trieoffsets_max = (Trieoffset_T *) CALLOC(nsplicesites,sizeof(Trieoffset_T));
+
+  build_via_splicesites_size(&trie_obs_size,&trie_max_size,
+			     nsplicepartners_skip,nsplicepartners_obs,nsplicepartners_max,
+			     splicetypes,splicestrings,nsplicesites,distances_observed_p);
+#ifndef USE_LIST
+  if (distances_observed_p) {
+    triecontents_obs_ptr = *triecontents_obs = (Triecontent_T *) MALLOC(trie_obs_size * sizeof(Triecontent_T));
+  } else {
+    *triecontents_obs = (Triecontent_T *) NULL;
+  }
+  triecontents_max_ptr = *triecontents_max = (Triecontent_T *) MALLOC(trie_max_size * sizeof(Triecontent_T));
+#endif
+
+
+  for (j = 0; j < nsplicesites; j++) {
+    switch (splicetypes[j]) {
+    case DONOR:
+      debug(
+	    if (distances_observed_p == true) {
+	      printf("donor #%d (%d partners obs, %d partners max):",
+		     j,nsplicepartners_obs[j],nsplicepartners_max[j]);
+	    } else {
+	      printf("donor #%d (%d partners max):",
+		     j,nsplicepartners_max[j]);
+	    });
+
+      j1 = j + 1 + nsplicepartners_skip[j];
+
+      if (distances_observed_p) {
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  triecontents_obs_ptr = Trie_output_empty_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr);
+#endif
+
+	} else {
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
+	  nsites = 0;
+	  while (nsites < nsplicepartners_obs[j]) {
+	    if (splicetypes[j1] == ACCEPTOR) {
+	      for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+		debug(printf(" %d",j1));
+		sites[nsites++] = (Splicestring_T) List_head(p);
+	      }
+	    }
+	    j1++;
+	  }
+	  assert(nsites == nsplicepartners_obs[j]);
+	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+						  sites,nsites,/*charpos*/0);
+#else
+	  triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
 						  sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
+	}
+      }
+
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	triecontents_max_ptr = Trie_output_empty_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr);
+#endif
+
+      } else {
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
+	nsites = 0;
+	while (nsites < nsplicepartners_max[j]) {
+	  if (splicetypes[j1] == ACCEPTOR) {
+	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+	      debug(printf(" %d",j1));
+	      sites[nsites++] = (Splicestring_T) List_head(p);
+	    }
+	  }
+	  j1++;
+	}
+	assert(nsites == nsplicepartners_max[j]);
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+						sites,nsites,/*charpos*/0);
+#else
+	triecontents_max_ptr = Trie_output_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr,
+						sites,nsites,/*charpos*/0);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
 	  FREE(sites);
 	}
       }
 
-      if (nsplicepartners_max[j] == 0) {
-	triecontents_max_list = Trie_output_empty(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+      debug(printf("\n"));
+      break;
+
+    case ACCEPTOR:
+      debug(
+	    if (distances_observed_p == true) {
+	      printf("acceptor #%d (%d partners obs, %d partners max):",
+		     j,nsplicepartners_obs[j],nsplicepartners_max[j]);
+	    } else {
+	      printf("acceptor #%d (%d partners max):",
+		     j,nsplicepartners_max[j]);
+	    });
+
+      j1 = j - 1 - nsplicepartners_skip[j];
+
+      if (distances_observed_p) {
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  triecontents_obs_ptr = Trie_output_empty_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr);
+#endif
+
+	} else {
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
+	  nsites = 0;
+	  while (nsites < nsplicepartners_obs[j]) {
+	    if (splicetypes[j1] == DONOR) {
+	      for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
+		debug(printf(" %d",j1));
+		sites[nsites++] = (Splicestring_T) List_head(p);
+	      }
+	    }
+	    j1--;
+	  }
+	  assert(nsites == nsplicepartners_obs[j]);
+	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+   	                                           sites,nsites,/*charpos*/0);
+#else
+	  triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
+	                                           sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
+	}
+      }
+
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	triecontents_max_ptr = Trie_output_empty_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr);
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	while (nsites < nsplicepartners_max[j]) {
 	  if (splicetypes[j1] == DONOR) {
@@ -1960,9 +2609,16 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	}
 	assert(nsites == nsplicepartners_max[j]);
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_max_list = Trie_output_new(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#else
+	triecontents_max_ptr = Trie_output_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr,
+						sites,nsites,/*charpos*/0);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       debug(printf("\n"));
@@ -1981,11 +2637,19 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
       j1 = j - 1 - nsplicepartners_skip[j];
 
       if (distances_observed_p) {
-	if (nsplicepartners_obs[j] == 0) {
-	  triecontents_obs_list = Trie_output_empty(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  triecontents_obs_ptr = Trie_output_empty_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr);
+#endif
 
 	} else {
-	  sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
 	  nsites = 0;
 	  while (nsites < nsplicepartners_obs[j]) {
 	    if (splicetypes[j1] == ANTIACCEPTOR) {
@@ -1998,17 +2662,32 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	  }
 	  assert(nsites == nsplicepartners_obs[j]);
 	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	  triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						  sites,nsites,/*charpos*/0);
-	  FREE(sites);
+#else
+	  triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
+						  sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
 	}
       }
 
-      if (nsplicepartners_max[j] == 0) {
-	triecontents_max_list = Trie_output_empty(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	triecontents_max_ptr = Trie_output_empty_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr);
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	while (nsites < nsplicepartners_max[j]) {
 	  if (splicetypes[j1] == ANTIACCEPTOR) {
@@ -2021,9 +2700,16 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	}
 	assert(nsites == nsplicepartners_max[j]);
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_max_list = Trie_output_new(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+						sites,nsites,/*charpos*/0);
+#else
+	triecontents_max_ptr = Trie_output_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       debug(printf("\n"));
@@ -2042,11 +2728,19 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
       j1 = j + 1 + nsplicepartners_skip[j];
 
       if (distances_observed_p) {
-	if (nsplicepartners_obs[j] == 0) {
-	  triecontents_obs_list = Trie_output_empty(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+	if ((npartners = nsplicepartners_obs[j]) == 0) {
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_empty_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list);
+#else
+	  triecontents_obs_ptr = Trie_output_empty_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr);
+#endif
 
 	} else {
-	  sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	  } else {
+	    sites = &(sites_allocated[0]);
+	  }
 	  nsites = 0;
 	  while (nsites < nsplicepartners_obs[j]) {
 	    if (splicetypes[j1] == ANTIDONOR) {
@@ -2059,17 +2753,32 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	  }
 	  assert(nsites == nsplicepartners_obs[j]);
 	  qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	  triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+#ifdef USE_LIST
+	  triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						  sites,nsites,/*charpos*/0);
-	  FREE(sites);
+#else
+	  triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
+						  sites,nsites,/*charpos*/0);
+#endif
+	  if (npartners > MAX_SITES_ALLOCATED) {
+	    FREE(sites);
+	  }
 	}
       }
 
-      if (nsplicepartners_max[j] == 0) {
-	triecontents_max_list = Trie_output_empty(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+      if ((npartners = nsplicepartners_max[j]) == 0) {
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_empty_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list);
+#else
+	triecontents_max_ptr = Trie_output_empty_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr);
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(npartners,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	while (nsites < nsplicepartners_max[j]) {
 	  if (splicetypes[j1] == ANTIDONOR) {
@@ -2082,9 +2791,16 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
 	}
 	assert(nsites == nsplicepartners_max[j]);
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_max_list = Trie_output_new(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+#ifdef USE_LIST
+	triecontents_max_list = Trie_output_list(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_list,
+						sites,nsites,/*charpos*/0);
+#else
+	triecontents_max_ptr = Trie_output_array(&((*trieoffsets_max)[j]),&nprinted_max,triecontents_max_ptr,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#endif
+	if (npartners > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       debug(printf("\n"));
@@ -2096,19 +2812,29 @@ Splicetrie_build_via_splicesites (Triecontent_T **triecontents_obs, Trieoffset_T
     }
   }
 
+
+  assert(nprinted_obs == trie_obs_size);
+  assert(nprinted_max == trie_max_size);
+
+
   if (distances_observed_p) {
     fprintf(stderr,"splicetrie_obs has %d entries...",nprinted_obs);
+#ifdef USE_LIST
     triecontents_obs_list = Uintlist_reverse(triecontents_obs_list);
     *triecontents_obs = Uintlist_to_array(&nprinted_obs,triecontents_obs_list);
     Uintlist_free(&triecontents_obs_list);
+#endif
   } else {
     *triecontents_obs = (Triecontent_T *) NULL;
   }
 
+
   fprintf(stderr,"splicetrie_max has %d entries...",nprinted_max);
+#ifdef USE_LIST
   triecontents_max_list = Uintlist_reverse(triecontents_max_list);
   *triecontents_max = Uintlist_to_array(&nprinted_max,triecontents_max_list);
   Uintlist_free(&triecontents_max_list);
+#endif
 
   return;
 }
@@ -2140,354 +2866,278 @@ dump_sites (Splicestring_T *sites, int nsites, Splicetype_T splicetype) {
 
 
 static void
-Splicetrie_build_one (Triecontent_T **triecontents_obs, Trieoffset_T **triestart_obs,
-		      Triecontent_T **triecontents_max, Trieoffset_T **triestart_max,
-		      int *nsplicepartners_skip, int *nsplicepartners_obs, int *nsplicepartners_max, 
-		      int j, Splicetype_T *splicetypes, List_T *splicestrings) {
-  Uintlist_T triecontents_obs_list = NULL, triecontents_max_list = NULL;
+build_via_introns_size (int *trie_obs_size, Univcoord_T *splicesites, Splicetype_T *splicetypes,
+			List_T *splicestrings, int nsplicesites,
+			Univ_IIT_T chromosome_iit, IIT_T splicing_iit, int *splicing_divint_crosstable) {
   List_T p;
-  int nsites, j1;
-  Splicestring_T *sites;
-  int nprinted_obs = 0, nprinted_max = 0;
-  unsigned int ptr_obs, ptr_max;
-  bool distances_observed_p;
-#ifdef DEBUG
-  Splicestring_T splicestring;
-  char gbuffer[17];
-#endif
+  int nsites, j, j1;
+  Splicestring_T *sites, sites_allocated[MAX_SITES_ALLOCATED];
+  
+  Univcoord_T chroffset, chrhigh;
+  Chrpos_T chrlength;
+  Chrpos_T *coords;
+  int ncoords, k;
+  Chrnum_T chrnum;
+  int divno;
+
 
-  if (nsplicepartners_obs == NULL) {
-    distances_observed_p = false;
-  } else {
-    distances_observed_p = true;
-  }
+  chrhigh = 0U;
+  for (j = 0; j < nsplicesites; j++) {
+    if (splicesites[j] > chrhigh) {
+      chrnum = Univ_IIT_get_one(chromosome_iit,splicesites[j],splicesites[j]);
+      Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,/*circular_typeint*/-1);
+      /* chrhigh += 1U; */
 
+      divno = splicing_divint_crosstable[chrnum];
+      assert(divno > 0);
+    }
 
-  debug(gbuffer[16] = '\0');
+    switch (splicetypes[j]) {
+    case DONOR:
+      nsites = 0;
+      coords = IIT_get_highs_for_low(&ncoords,splicing_iit,divno,splicesites[j]-chroffset);
 
-  switch (splicetypes[j]) {
-  case DONOR:
-    debug(
-	  if (distances_observed_p == true) {
-	    printf("donor #%d (%d partners obs, %d partners max):",
-		   j,nsplicepartners_obs[j],nsplicepartners_max[j]);
-	  } else {
-	    printf("donor #%d (%d partners max):",
-		   j,nsplicepartners_max[j]);
-	  });
+      j1 = j + 1;
+      k = 0;
+      while (j1 < nsplicesites && k < ncoords) {
+	if (splicetypes[j1] == ACCEPTOR && splicesites[j1] == coords[k] - INTRON_HIGH_TO_LOW + chroffset) {
+	  nsites += List_length(splicestrings[j1]);
+	  k++;
+	}
+	j1++;
+      }
+      /* assertion may not hold if last few introns are invalidated */
+      /* assert(k == ncoords); */
 
-    j1 = j + 1 + nsplicepartners_skip[j];
+      if (nsites == 0) {
+#if 0
+	(*trieoffsets_obs)[j] = NULL_POINTER;
+#endif
 
-    if (distances_observed_p) {
-      if (nsplicepartners_obs[j] == 0) {
-	triecontents_obs_list = Trie_output_empty(&ptr_obs,&nprinted_obs,triecontents_obs_list);
-      
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
-	while (nsites < nsplicepartners_obs[j]) {
-	  if (splicetypes[j1] == ACCEPTOR) {
+	j1 = j + 1;
+	k = 0;
+	while (j1 < nsplicesites && k < ncoords) {
+	  if (splicetypes[j1] == ACCEPTOR && splicesites[j1] == coords[k] - INTRON_HIGH_TO_LOW + chroffset) {
 	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	      debug(splicestring = (Splicestring_T) List_head(p));
-	      debug(splicefrag_nt_rightward(gbuffer,splicestring->string));
-	      debug(printf(" %d (%s)",j1,gbuffer));
 	      sites[nsites++] = (Splicestring_T) List_head(p);
 	    }
+	    k++;
 	  }
 	  j1++;
 	}
-	assert(nsites == nsplicepartners_obs[j]);
-	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	debug(printf("\n"));
-	debug(dump_sites(sites,nsites,splicetypes[j]));
 
-	triecontents_obs_list = Trie_output_new(&ptr_obs,&nprinted_obs,triecontents_obs_list,
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
-      }
-    }
-
-    if (nsplicepartners_max[j] == 0) {
-      triecontents_max_list = Trie_output_empty(&ptr_max,&nprinted_max,triecontents_max_list);
-      
-    } else {
-      sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
-      nsites = 0;
-      while (nsites < nsplicepartners_max[j]) {
-	if (splicetypes[j1] == ACCEPTOR) {
-	  for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	    debug(splicestring = (Splicestring_T) List_head(p));
-	    debug(splicefrag_nt_rightward(gbuffer,splicestring->string));
-	    debug(printf(" %d (%s)",j1,gbuffer));
-	    sites[nsites++] = (Splicestring_T) List_head(p);
-	  }
+#else
+	*trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
 	}
-	j1++;
       }
-      assert(nsites == nsplicepartners_max[j]);
-      qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-      debug(printf("\n"));
-      debug(dump_sites(sites,nsites,splicetypes[j]));
 
-      triecontents_max_list = Trie_output_new(&ptr_max,&nprinted_max,triecontents_max_list,
-					      sites,nsites,/*charpos*/0);
-      FREE(sites);
-    }
-
-    debug(printf("\n"));
-    break;
+      FREE(coords);
+      break;
 
-  case ACCEPTOR:
-    debug(
-	  if (distances_observed_p == true) {
-	    printf("acceptor #%d (%d partners obs, %d partners max):",
-		   j,nsplicepartners_obs[j],nsplicepartners_max[j]);
-	  } else {
-	    printf("acceptor #%d (%d partners max):",
-		   j,nsplicepartners_max[j]);
-	  });
+    case ACCEPTOR:
+      nsites = 0;
+      coords = IIT_get_lows_for_high(&ncoords,splicing_iit,divno,splicesites[j] + INTRON_HIGH_TO_LOW - chroffset);
 
-    j1 = j - 1 - nsplicepartners_skip[j];
+      j1 = j - 1;
+      k = 0;
+      while (j1 >= 0 && k < ncoords) {
+	if (splicetypes[j1] == DONOR && splicesites[j1] == coords[k] + chroffset) {
+	  nsites += List_length(splicestrings[j1]);
+	  k++;
+	}
+	j1--;
+      }
+      /* assertion may not hold if last few introns are invalidated */
+      /* assert(k == ncoords); */
 
-    if (distances_observed_p) {
-      if (nsplicepartners_obs[j] == 0) {
-	triecontents_obs_list = Trie_output_empty(&ptr_obs,&nprinted_obs,triecontents_obs_list);
+      if (nsites == 0) {
+#if 0
+	(*trieoffsets_obs)[j] = NULL_POINTER;
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
-	while (nsites < nsplicepartners_obs[j]) {
-	  if (splicetypes[j1] == DONOR) {
+	j1 = j - 1;
+	k = 0;
+	while (j1 >= 0 && k < ncoords) {
+	  if (splicetypes[j1] == DONOR && splicesites[j1] == coords[k] + chroffset) {
 	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	      debug(splicestring = (Splicestring_T) List_head(p));
-	      debug(splicefrag_nt_leftward(gbuffer,splicestring->string));
-	      debug(printf(" %d (%s)",j1,gbuffer));
 	      sites[nsites++] = (Splicestring_T) List_head(p);
 	    }
+	    k++;
 	  }
 	  j1--;
 	}
-	assert(nsites == nsplicepartners_obs[j]);
-	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	debug(printf("\n"));
-	debug(dump_sites(sites,nsites,splicetypes[j]));
 
-	triecontents_obs_list = Trie_output_new(&ptr_obs,&nprinted_obs,triecontents_obs_list,
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#else
+	*trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
-    }
 
-    if (nsplicepartners_max[j] == 0) {
-      triecontents_max_list = Trie_output_empty(&ptr_max,&nprinted_max,triecontents_max_list);
+      FREE(coords);
+      break;
 
-    } else {
-      sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
+    case ANTIDONOR:
       nsites = 0;
-      while (nsites < nsplicepartners_max[j]) {
-	if (splicetypes[j1] == DONOR) {
-	  for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	    debug(splicestring = (Splicestring_T) List_head(p));
-	    debug(splicefrag_nt_leftward(gbuffer,splicestring->string));
-	    debug(printf(" %d (%s)",j1,gbuffer));
-	    sites[nsites++] = (Splicestring_T) List_head(p);
-	  }
+      coords = IIT_get_lows_for_high(&ncoords,splicing_iit,divno,splicesites[j] + INTRON_HIGH_TO_LOW - chroffset);
+
+      j1 = j - 1;
+      k = 0;
+      while (j1 >= 0 && k < ncoords) {
+	if (splicetypes[j1] == ANTIACCEPTOR && splicesites[j1] == coords[k] + chroffset) {
+	  nsites += List_length(splicestrings[j1]);
+	  k++;
 	}
 	j1--;
       }
-      assert(nsites == nsplicepartners_max[j]);
-      qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-      debug(printf("\n"));
-      debug(dump_sites(sites,nsites,splicetypes[j]));
-
-      triecontents_max_list = Trie_output_new(&ptr_max,&nprinted_max,triecontents_max_list,
-					      sites,nsites,/*charpos*/0);
-      FREE(sites);
-    }
-
-    debug(printf("\n"));
-    break;
-
-  case ANTIDONOR:
-    debug(
-	  if (distances_observed_p == true) {
-	    printf("antidonor #%d (%d partners obs, %d partners max):",
-		   j,nsplicepartners_obs[j],nsplicepartners_max[j]);
-	  } else {
-	    printf("antidonor #%d (%d partners max):",
-		   j,nsplicepartners_max[j]);
-	  });
-
-    j1 = j - 1 - nsplicepartners_skip[j];
+      /* assertion may not hold if last few introns are invalidated */
+      /* assert(k == ncoords); */
 
-    if (distances_observed_p) {
-      if (nsplicepartners_obs[j] == 0) {
-	triecontents_obs_list = Trie_output_empty(&ptr_obs,&nprinted_obs,triecontents_obs_list);
+      if (nsites == 0) {
+#if 0
+	(*trieoffsets_obs)[j] = NULL_POINTER;
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
-	while (nsites < nsplicepartners_obs[j]) {
-	  if (splicetypes[j1] == ANTIACCEPTOR) {
+	j1 = j - 1;
+	k = 0;
+	while (j1 >= 0 && k < ncoords) {
+	  if (splicetypes[j1] == ANTIACCEPTOR && splicesites[j1] == coords[k] + chroffset) {
 	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	      debug(splicestring = (Splicestring_T) List_head(p));
-	      debug(splicefrag_nt_leftward(gbuffer,splicestring->string));
-	      debug(printf(" %d (%s)",j1,gbuffer));
 	      sites[nsites++] = (Splicestring_T) List_head(p);
 	    }
+	    k++;
 	  }
 	  j1--;
 	}
-	assert(nsites = nsplicepartners_obs[j]);
-	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	debug(printf("\n"));
-	debug(dump_sites(sites,nsites,splicetypes[j]));
 
-	triecontents_obs_list = Trie_output_new(&ptr_obs,&nprinted_obs,triecontents_obs_list,
+	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
+#if 0
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#else
+	*trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
-    }
 
-    if (nsplicepartners_max[j] == 0) {
-      triecontents_max_list = Trie_output_empty(&ptr_max,&nprinted_max,triecontents_max_list);
+      FREE(coords);
+      break;
 
-    } else {
-      sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
+    case ANTIACCEPTOR:
       nsites = 0;
-      while (nsites < nsplicepartners_max[j]) {
-	if (splicetypes[j1] == ANTIACCEPTOR) {
-	  for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	    debug(splicestring = (Splicestring_T) List_head(p));
-	    debug(splicefrag_nt_leftward(gbuffer,splicestring->string));
-	    debug(printf(" %d (%s)",j1,gbuffer));
-	    sites[nsites++] = (Splicestring_T) List_head(p);
-	  }
+      coords = IIT_get_highs_for_low(&ncoords,splicing_iit,divno,splicesites[j]-chroffset);
+
+      j1 = j + 1;
+      k = 0;
+      while (j1 < nsplicesites && k < ncoords) {
+	if (splicetypes[j1] == ANTIDONOR && splicesites[j1] == coords[k] - INTRON_HIGH_TO_LOW + chroffset) {
+	  nsites += List_length(splicestrings[j1]);
+	  k++;
 	}
-	j1--;
+	j1++;
       }
-      assert(nsites = nsplicepartners_max[j]);
-      qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-      debug(printf("\n"));
-      debug(dump_sites(sites,nsites,splicetypes[j]));
-
-      triecontents_max_list = Trie_output_new(&ptr_max,&nprinted_max,triecontents_max_list,
-					      sites,nsites,/*charpos*/0);
-      FREE(sites);
-    }
-
-    debug(printf("\n"));
-    break;
-
-  case ANTIACCEPTOR:
-    debug(
-	  if (distances_observed_p == true) {
-	    printf("antiacceptor #%d (%d partners obs, %d partners max):",
-		   j,nsplicepartners_obs[j],nsplicepartners_max[j]);
-	  } else {
-	    printf("antiacceptor #%d (%d partners max):",
-		   j,nsplicepartners_max[j]);
-	  });
-
-    j1 = j + 1 + nsplicepartners_skip[j];
+      /* assertion may not hold if last few introns are invalidated */
+      /* assert(k == ncoords); */
 
-    if (distances_observed_p) {
-      if (nsplicepartners_obs[j] == 0) {
-	triecontents_obs_list = Trie_output_empty(&ptr_obs,&nprinted_obs,triecontents_obs_list);
+      if (nsites == 0) {
+#if 0
+	(*trieoffsets_obs)[j] = NULL_POINTER;
+#endif
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsplicepartners_obs[j],sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
-	while (nsites < nsplicepartners_obs[j]) {
-	  if (splicetypes[j1] == ANTIDONOR) {
+	j1 = j + 1;
+	k = 0;
+	while (j1 < nsplicesites && k < ncoords) {
+	  if (splicetypes[j1] == ANTIDONOR && splicesites[j1] == coords[k] - INTRON_HIGH_TO_LOW + chroffset) {
 	    for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	      debug(splicestring = (Splicestring_T) List_head(p));
-	      debug(splicefrag_nt_rightward(gbuffer,splicestring->string));
-	      debug(printf(" %d (%s)",j1,gbuffer));
 	      sites[nsites++] = (Splicestring_T) List_head(p);
 	    }
+	    k++;
 	  }
 	  j1++;
 	}
-	assert(nsites = nsplicepartners_obs[j]);
 
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	debug(printf("\n"));
-	debug(dump_sites(sites,nsites,splicetypes[j]));
-
-	triecontents_obs_list = Trie_output_new(&ptr_obs,&nprinted_obs,triecontents_obs_list,
+#if 0
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
-      }
-    }
-
-    if (nsplicepartners_max[j] == 0) {
-      triecontents_max_list = Trie_output_empty(&ptr_max,&nprinted_max,triecontents_max_list);
-
-    } else {
-      sites = (Splicestring_T *) CALLOC(nsplicepartners_max[j],sizeof(Splicestring_T));
-      nsites = 0;
-      while (nsites < nsplicepartners_max[j]) {
-	if (splicetypes[j1] == ANTIDONOR) {
-	  for (p = splicestrings[j1]; p != NULL; p = List_next(p)) {
-	    debug(splicestring = (Splicestring_T) List_head(p));
-	    debug(splicefrag_nt_rightward(gbuffer,splicestring->string));
-	    debug(printf(" %d (%s)",j1,gbuffer));
-	    sites[nsites++] = (Splicestring_T) List_head(p);
-	  }
+#else
+	*trie_obs_size = Trie_output_size(*trie_obs_size,sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
 	}
-	j1++;
       }
-      assert(nsites = nsplicepartners_max[j]);
 
-      qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-      debug(printf("\n"));
-      debug(dump_sites(sites,nsites,splicetypes[j]));
+      FREE(coords);
+      break;
 
-      triecontents_max_list = Trie_output_new(&ptr_max,&nprinted_max,triecontents_max_list,
-					      sites,nsites,/*charpos*/0);
-      FREE(sites);
+    default: 
+      fprintf(stderr,"Unexpected splicetype %d\n",splicetypes[j]);
+      abort();
     }
-
-    debug(printf("\n"));
-    break;
-
-  default:
-    fprintf(stderr,"Unexpected splicetype %d at splicesites_i %d\n",splicetypes[j],j);
-    abort();
-
-  }
-
-  if (distances_observed_p) {
-    triecontents_obs_list = Uintlist_reverse(triecontents_obs_list);
-    *triecontents_obs = Uintlist_to_array(&nprinted_obs,triecontents_obs_list);
-    Uintlist_free(&triecontents_obs_list);
-    *triestart_obs = &((*triecontents_obs)[ptr_obs]);
-  } else {
-    *triecontents_obs = (Triecontent_T *) NULL;
-    *triestart_obs = (Trieoffset_T *) NULL;
   }
 
-  triecontents_max_list = Uintlist_reverse(triecontents_max_list);
-  *triecontents_max = Uintlist_to_array(&nprinted_max,triecontents_max_list);
-  Uintlist_free(&triecontents_max_list);
-  *triestart_max = &((*triecontents_max)[ptr_max]);
-
   return;
 }
 
 
-
 void
 Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **trieoffsets_obs,
 			      Univcoord_T *splicesites, Splicetype_T *splicetypes,
 			      List_T *splicestrings, int nsplicesites,
 			      Univ_IIT_T chromosome_iit, IIT_T splicing_iit, int *splicing_divint_crosstable) {
+#ifdef USE_LIST
   Uintlist_T triecontents_obs_list = NULL;
+#else
+  unsigned int *triecontents_obs_ptr;
+#endif
   List_T p;
   int nsites, j, j1;
-  Splicestring_T *sites;
+  Splicestring_T *sites, sites_allocated[MAX_SITES_ALLOCATED];
   int nprinted_obs = 0;
+  int trie_obs_size = 0;
 
   Univcoord_T chroffset, chrhigh;
   Chrpos_T chrlength;
@@ -2499,6 +3149,13 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 
   *trieoffsets_obs = (Trieoffset_T *) CALLOC(nsplicesites,sizeof(Trieoffset_T));
 
+  build_via_introns_size(&trie_obs_size,splicesites,splicetypes,splicestrings,nsplicesites,
+			 chromosome_iit,splicing_iit,splicing_divint_crosstable);
+#ifndef USE_LIST
+  triecontents_obs_ptr = *triecontents_obs = (Triecontent_T *) MALLOC(trie_obs_size * sizeof(Triecontent_T));
+#endif
+
+
   chrhigh = 0U;
   for (j = 0; j < nsplicesites; j++) {
     if (splicesites[j] > chrhigh) {
@@ -2531,7 +3188,11 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	(*trieoffsets_obs)[j] = NULL_POINTER;
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	j1 = j + 1;
 	k = 0;
@@ -2546,9 +3207,16 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	}
 
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+#ifdef USE_LIST
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+					      sites,nsites,/*charpos*/0);
+#else
+	triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
 					      sites,nsites,/*charpos*/0);
-	FREE(sites);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       FREE(coords);
@@ -2574,7 +3242,11 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	(*trieoffsets_obs)[j] = NULL_POINTER;
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	j1 = j - 1;
 	k = 0;
@@ -2589,9 +3261,16 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	}
 
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
-						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#ifdef USE_LIST
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+						 sites,nsites,/*charpos*/0);
+#else
+	triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
+						 sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       FREE(coords);
@@ -2617,7 +3296,11 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	(*trieoffsets_obs)[j] = NULL_POINTER;
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	j1 = j - 1;
 	k = 0;
@@ -2632,9 +3315,16 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	}
 
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+#ifdef USE_LIST
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
 						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#else
+	triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
+                                        	 sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       FREE(coords);
@@ -2660,7 +3350,11 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	(*trieoffsets_obs)[j] = NULL_POINTER;
 
       } else {
-	sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  sites = (Splicestring_T *) CALLOC(nsites,sizeof(Splicestring_T));
+	} else {
+	  sites = &(sites_allocated[0]);
+	}
 	nsites = 0;
 	j1 = j + 1;
 	k = 0;
@@ -2675,9 +3369,16 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
 	}
 
 	qsort(sites,nsites,sizeof(Splicestring_T),Splicestring_cmp);
-	triecontents_obs_list = Trie_output_new(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
-						sites,nsites,/*charpos*/0);
-	FREE(sites);
+#ifdef USE_LIST
+	triecontents_obs_list = Trie_output_list(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_list,
+						 sites,nsites,/*charpos*/0);
+#else
+	triecontents_obs_ptr = Trie_output_array(&((*trieoffsets_obs)[j]),&nprinted_obs,triecontents_obs_ptr,
+						 sites,nsites,/*charpos*/0);
+#endif
+	if (nsites > MAX_SITES_ALLOCATED) {
+	  FREE(sites);
+	}
       }
 
       FREE(coords);
@@ -2689,10 +3390,14 @@ Splicetrie_build_via_introns (Triecontent_T **triecontents_obs, Trieoffset_T **t
     }
   }
 
+  assert(nprinted_obs == trie_obs_size);
+
   fprintf(stderr,"splicetrie_obs has %d entries...",nprinted_obs);
+#ifdef USE_LIST
   triecontents_obs_list = Uintlist_reverse(triecontents_obs_list);
   *triecontents_obs = Uintlist_to_array(&nprinted_obs,triecontents_obs_list);
   Uintlist_free(&triecontents_obs_list);
+#endif
 
   return;
 }
diff --git a/src/splicetrie_build.h b/src/splicetrie_build.h
index 4f2af70..62abbdf 100644
--- a/src/splicetrie_build.h
+++ b/src/splicetrie_build.h
@@ -10,6 +10,8 @@ typedef enum {DONOR, ANTIDONOR, ACCEPTOR, ANTIACCEPTOR} Splicetype_T;
 #include "iit-read.h"
 #include "genome.h"
 #include "list.h"
+#include "splicestringpool.h"
+
 
 /* For offsets */
 /* #define USE_2BYTE_RELOFFSETS 1 */
@@ -27,13 +29,9 @@ typedef enum {DONOR, ANTIDONOR, ACCEPTOR, ANTIACCEPTOR} Splicetype_T;
 #define single_leaf_p(x) (x) < DUPLICATE_NODE
 #define multiple_leaf_p(x) (x) < INTERNAL_NODE
 
-
 extern char *
 Splicetype_string (Splicetype_T splicetype);
 
-extern void
-Splicestring_gc (List_T *splicestrings, int nsplicesites);
-
 extern Univcoord_T *
 Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 #ifdef GSNAP
@@ -43,7 +41,8 @@ Splicetrie_retrieve_via_splicesites (bool *distances_observed_p,
 				     List_T **splicestrings, Genomecomp_T **splicefrags_ref, Genomecomp_T **splicefrags_alt,
 				     int *nsplicesites, IIT_T splicing_iit, int *splicing_divint_crosstable,
 				     int donor_typeint, int acceptor_typeint, Univ_IIT_T chromosome_iit,
-				     Genome_T genome, Genome_T genomealt, Chrpos_T shortsplicedist);
+				     Genome_T genome, Genome_T genomealt, Chrpos_T shortsplicedist,
+				     Splicestringpool_T splicestringpool);
 extern Univcoord_T *
 Splicetrie_retrieve_via_introns (
 #ifdef GSNAP
@@ -52,7 +51,8 @@ Splicetrie_retrieve_via_introns (
 				 Splicetype_T **splicetypes, Chrpos_T **splicedists,
 				 List_T **splicestrings, Genomecomp_T **splicefrags_ref, Genomecomp_T **splicefrags_alt,
 				 int *nsplicesites, IIT_T splicing_iit, int *splicing_divint_crosstable,
-				 Univ_IIT_T chromosome_iit, Genome_T genome, Genome_T genomealt);
+				 Univ_IIT_T chromosome_iit, Genome_T genome, Genome_T genomealt,
+				 Splicestringpool_T splicestringpool);
 extern void
 Splicetrie_npartners (int **nsplicepartners_skip, int **nsplicepartners_obs, int **nsplicepartners_max,
 		      Univcoord_T *splicesites, Splicetype_T *splicetypes,
diff --git a/src/stage1.c b/src/stage1.c
index 7eaf720..29b8904 100644
--- a/src/stage1.c
+++ b/src/stage1.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stage1.c 101789 2013-07-17 14:56:20Z twu $";
+static char rcsid[] = "$Id: stage1.c 132710 2014-04-08 20:28:45Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -21,7 +21,6 @@ static char rcsid[] = "$Id: stage1.c 101789 2013-07-17 14:56:20Z twu $";
 #include "listdef.h"
 #include "matchdef.h"
 #include "match.h"
-#include "chrsubset.h"
 #include "gregion.h"
 #include "orderstat.h"
 
@@ -625,8 +624,8 @@ identify_singles (int *nnew, bool *overflowp, List_T matches, int merstart, Univ
 #ifdef DEBUG
 		  Width_T matchsize,
 #endif
-		  Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, Matchpool_T matchpool,
-		  bool forwardp, bool fivep, int maxentries) {
+		  Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
+		  Matchpool_T matchpool, bool forwardp, bool fivep, int maxentries) {
   List_T newmatches = NULL, p;
   Match_T match;
   Univcoord_T position;
@@ -645,7 +644,7 @@ identify_singles (int *nnew, bool *overflowp, List_T matches, int merstart, Univ
   Matchpool_save(matchpool);
 
   while (donep == false) {
-    if (!chrsubset || Chrsubset_includep(chrsubset,position,chromosome_iit) == true) {
+    if (position >= chrsubset_start && position < chrsubset_end) {
       if (++nentries > maxentries) {
 	donep = true;
       } else {
@@ -707,7 +706,7 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
   }
 
   while (!foundp && lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     debug4(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
 		      lowi,positions[lowi],middlei,positions[middlei],
 		      highi,positions[highi],goal));
@@ -741,8 +740,8 @@ identify_doubles (int *nnew, bool *overflowp, List_T matches, int merstart, Univ
 #ifdef DEBUG
 		  Width_T matchsize,
 #endif
-		  Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, Matchpool_T matchpool,
-		  bool forwardp, bool fivep, int maxentries) {
+		  Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
+		  Matchpool_T matchpool, bool forwardp, bool fivep, int maxentries) {
   List_T newmatches = NULL, p;
   Match_T match;
   Univcoord_T expected0, position0, expected1, position1;
@@ -830,7 +829,7 @@ identify_doubles (int *nnew, bool *overflowp, List_T matches, int merstart, Univ
       }
 
     } else {
-      if (!chrsubset || Chrsubset_includep(chrsubset,position0,chromosome_iit) == true) {
+      if (position0 >= chrsubset_start && position0 < chrsubset_end) {
 	if (++nentries > maxentries) {
 	  donep = true;
 	} else {
@@ -904,7 +903,7 @@ identify_triples (int *nnew, bool *overflowp, List_T matches, int merstart, Univ
 		  Width_T matchsize,
 #endif
 		  int expecteddist1, int expecteddist2, Univ_IIT_T chromosome_iit, 
-		  Chrsubset_T chrsubset, Matchpool_T matchpool,
+		  Univcoord_T chrsubset_start, Univcoord_T chrsubset_end, Matchpool_T matchpool,
 		  bool forwardp, bool fivep, int maxentries) {
   List_T newmatches = NULL, p;
   Match_T match;
@@ -1008,7 +1007,7 @@ identify_triples (int *nnew, bool *overflowp, List_T matches, int merstart, Univ
 
     } else {
       debug4(printf("Success at position %u\n",positions0[i]));
-      if (!chrsubset || Chrsubset_includep(chrsubset,position0,chromosome_iit) == true) {
+      if (position0 >= chrsubset_start && position0 < chrsubset_end) {
 	if (++nentries > maxentries) {
 	  donep = true;
 	} else {
@@ -1076,8 +1075,8 @@ identify_matches (int *nnew, bool *overflowp, List_T matches, int querypos, int
 		  Width_T oligosize, Width_T matchinterval,
 		  Univcoord_T **plus_positions, int *plus_npositions,
 		  Univcoord_T **minus_positions, int *minus_npositions, 
-		  Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, Matchpool_T matchpool,
-		  bool forwardp, bool fivep, int maxentries) {
+		  Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
+		  Matchpool_T matchpool, bool forwardp, bool fivep, int maxentries) {
   int prevpos, middlepos;
   int pos0, pos1;
   Univcoord_T **positions, positionadj = 0U;
@@ -1127,7 +1126,8 @@ identify_matches (int *nnew, bool *overflowp, List_T matches, int querypos, int
 #ifdef DEBUG
 			    matchsize,
 #endif
-			    chromosome_iit,chrsubset,matchpool,forwardp,fivep,maxentries);
+			    chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+			    forwardp,fivep,maxentries);
   } else if (matchsize <= 2*oligosize) {
     /* debug(printf("Using positions at %d and %d\n",pos0,pos1)); */
     return identify_doubles(&(*nnew),&(*overflowp),matches,merstart,positionadj,querylength,
@@ -1136,7 +1136,8 @@ identify_matches (int *nnew, bool *overflowp, List_T matches, int querypos, int
 #ifdef DEBUG
 			    matchsize,
 #endif
-			    chromosome_iit,chrsubset,matchpool,forwardp,fivep,maxentries);
+			    chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+			    forwardp,fivep,maxentries);
   } else if (matchsize == 3*oligosize) {
     /* This branch hasn't been tested very well */
     debug(printf("Using positions at %d and %d and %d\n",pos0,middlepos,pos1));
@@ -1152,7 +1153,8 @@ identify_matches (int *nnew, bool *overflowp, List_T matches, int querypos, int
 #else
 			    oligosize,oligosize,
 #endif
-			    chromosome_iit,chrsubset,matchpool,forwardp,fivep,maxentries);
+			    chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+			    forwardp,fivep,maxentries);
   } else {
     abort();
   }
@@ -1164,8 +1166,9 @@ static List_T
 find_5prime_matches (int *nnew, List_T matches5, T this, Width_T matchsize,
 		     Univcoord_T **plus_positions, int *plus_npositions,
 		     Univcoord_T **minus_positions, int *minus_npositions,
-		     Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, Matchpool_T matchpool,
-		     int querystart, int querylength, int maxentries, bool pairedp) {
+		     Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
+		     Matchpool_T matchpool, int querystart, int querylength,
+		     int maxentries, bool pairedp) {
   Width_T merstart;	   /* Note: negative values must be allowed */
   int nnewplus = 0, nnewminus = 0;
   bool overflowp;
@@ -1191,7 +1194,8 @@ find_5prime_matches (int *nnew, List_T matches5, T this, Width_T matchsize,
       matches5 = identify_matches(&nnewplus,&overflowp,matches5,querystart,querylength,
 				  this->oligosize,matchinterval,
 				  plus_positions,plus_npositions,minus_positions,minus_npositions,
-				  chromosome_iit,chrsubset,matchpool,/*forwardp*/true,/*fivep*/true,maxentries);
+				  chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				  /*forwardp*/true,/*fivep*/true,maxentries);
       if (overflowp == false) {
 	debug3(printf("  No overflow so setting plus_matchedp at %d to true\n",merstart));
 	this->plus_matchedp[merstart] = true;
@@ -1203,7 +1207,8 @@ find_5prime_matches (int *nnew, List_T matches5, T this, Width_T matchsize,
       matches5 = identify_matches(&nnewminus,&overflowp,matches5,querystart,querylength,
 				  this->oligosize,matchinterval,
 				  plus_positions,plus_npositions,minus_positions,minus_npositions,
-				  chromosome_iit,chrsubset,matchpool,/*forwardp*/false,/*fivep*/true,maxentries);
+				  chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				  /*forwardp*/false,/*fivep*/true,maxentries);
       if (overflowp == false) {
 	debug3(printf("  No overflow so setting minus_matchedp at %d to true\n",merstart));
 	this->minus_matchedp[merstart] = true;
@@ -1220,8 +1225,8 @@ static List_T
 find_3prime_matches (int *nnew, List_T matches3, T this, Width_T matchsize,
 		     Univcoord_T **plus_positions, int *plus_npositions,
 		     Univcoord_T **minus_positions, int *minus_npositions,
-		     Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, Matchpool_T matchpool,
-		     int queryend, int querylength, int maxentries, bool pairedp) {
+		     Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
+		     Matchpool_T matchpool, int queryend, int querylength, int maxentries, bool pairedp) {
   Width_T merstart;
   int nnewplus = 0, nnewminus = 0;
   bool overflowp;
@@ -1250,7 +1255,8 @@ find_3prime_matches (int *nnew, List_T matches3, T this, Width_T matchsize,
       matches3 = identify_matches(&nnewplus,&overflowp,matches3,queryend,querylength,
 				  this->oligosize,matchinterval,
 				  plus_positions,plus_npositions,minus_positions,minus_npositions,
-				  chromosome_iit,chrsubset,matchpool,/*forwardp*/true,/*fivep*/false,maxentries);
+				  chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				  /*forwardp*/true,/*fivep*/false,maxentries);
       if (overflowp == false) {
 	debug3(printf("  No overflow so setting plus_matchedp at %d to true\n",merstart));
 	this->plus_matchedp[merstart] = true;
@@ -1262,7 +1268,8 @@ find_3prime_matches (int *nnew, List_T matches3, T this, Width_T matchsize,
       matches3 = identify_matches(&nnewminus,&overflowp,matches3,queryend,querylength,
 				  this->oligosize,matchinterval,
 				  plus_positions,plus_npositions,minus_positions,minus_npositions,
-				  chromosome_iit,chrsubset,matchpool,/*forwardp*/false,/*fivep*/false,maxentries);
+				  chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				  /*forwardp*/false,/*fivep*/false,maxentries);
       if (overflowp == false) {
 	debug3(printf("  No overflow so setting minus_matchedp at %d to true\n",merstart));
 	this->minus_matchedp[merstart] = true;
@@ -1322,7 +1329,7 @@ check_fraction_paired (List_T matches5, List_T matches3) {
 static List_T
 stutter (List_T gregionlist, T this, Width_T matchsize,
 	 Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int genestrand,
-	 Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, 
+	 Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 	 Matchpool_T matchpool, int stutterhits) {
   List_T newmatches5 = NULL, newmatches3 = NULL;
   int stutterdist5 = 0, stutterdist3 = 0, maxbases, start5, start3;
@@ -1372,8 +1379,8 @@ stutter (List_T gregionlist, T this, Width_T matchsize,
     newmatches5 = find_5prime_matches(&nnew,newmatches5,this,matchsize,
 				      this->plus_positions,this->plus_npositions,
 				      this->minus_positions,this->minus_npositions,
-				      chromosome_iit,chrsubset,matchpool,this->querystart,
-				      this->querylength,this->maxentries,true);
+				      chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				      this->querystart,this->querylength,this->maxentries,true);
 
     stutterdist5 = Block_querypos(this->block5) - start5;
     if (nnew > 0) {
@@ -1405,8 +1412,8 @@ stutter (List_T gregionlist, T this, Width_T matchsize,
     newmatches3 = find_3prime_matches(&nnew,newmatches3,this,matchsize,
 				      this->plus_positions,this->plus_npositions,
 				      this->minus_positions,this->minus_npositions,
-				      chromosome_iit,chrsubset,matchpool,this->queryend,
-				      this->querylength,this->maxentries,true);
+				      chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				      this->queryend,this->querylength,this->maxentries,true);
 
     stutterdist3 = start3 - Block_querypos(this->block3);
     if (nnew > 0) {
@@ -1433,7 +1440,7 @@ stutter (List_T gregionlist, T this, Width_T matchsize,
 static List_T
 fill_in_5 (List_T gregionlist, T this, Width_T matchsize, List_T dangling3,
 	   Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int genestrand,
-	   Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, 
+	   Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 	   Matchpool_T matchpool) {
   List_T newmatches5 = NULL;
   int fillindist5 = 0, maxbases, start5;
@@ -1473,8 +1480,8 @@ fill_in_5 (List_T gregionlist, T this, Width_T matchsize, List_T dangling3,
     newmatches5 = find_5prime_matches(&nnew,newmatches5,this,matchsize,
 				      this->plus_positions,this->plus_npositions,
 				      this->minus_positions,this->minus_npositions,
-				      chromosome_iit,chrsubset,matchpool,this->querystart,
-				      this->querylength,this->maxentries,true);
+				      chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				      this->querystart,this->querylength,this->maxentries,true);
     fillindist5 = Block_querypos(this->block5) - start5;
 
     if (nnew > 0) {
@@ -1505,7 +1512,7 @@ fill_in_5 (List_T gregionlist, T this, Width_T matchsize, List_T dangling3,
 static List_T
 fill_in_3 (List_T gregionlist, T this, Width_T matchsize, List_T dangling5, 
 	   Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int genestrand,
-	   Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset,
+	   Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 	   Matchpool_T matchpool) {
   List_T newmatches3 = NULL;
   int fillindist3 = 0, maxbases, start3;
@@ -1545,8 +1552,8 @@ fill_in_3 (List_T gregionlist, T this, Width_T matchsize, List_T dangling5,
     newmatches3 = find_3prime_matches(&nnew,newmatches3,this,matchsize,
 				      this->plus_positions,this->plus_npositions,
 				      this->minus_positions,this->minus_npositions,
-				      chromosome_iit,chrsubset,matchpool,this->queryend,
-				      this->querylength,this->maxentries,true);
+				      chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+				      this->queryend,this->querylength,this->maxentries,true);
     fillindist3 = start3 - Block_querypos(this->block3);
 
     if (nnew > 0) {
@@ -1686,7 +1693,7 @@ find_range (int **querypositions, int *ninrange, int starti, int endi,
 
 static void
 find_extensions (Univcoord_T *extension5, Univcoord_T *extension3, T this,
-		 Gregion_T gregion, bool continuousp) {
+		 Gregion_T gregion, Chrpos_T maxtotallen, bool continuousp) {
   int *querypositions, querystart, queryend, ninrange, i, j, lastj;
   Univcoord_T *range, leftbound, rightbound, best_start, best_end, expectedi, expectedj;
   int best_concentration, concentration;
@@ -1734,23 +1741,27 @@ find_extensions (Univcoord_T *extension5, Univcoord_T *extension3, T this,
     for (i = 0; i < ninrange; i++) {
       debug2(printf("Looking at range %d = %u@%d (distance = %u)\n",
 		    i,range[i],querypositions[i],Gregion_genomicstart(gregion)-range[i]));
-      concentration = 1;
-      lastj = i;
-      for (j = i+1; j < ninrange; j++) {
-	debug2(printf("  %u@%d",range[j],querypositions[j]));
-	expectedj = range[i] + querypositions[j] - querypositions[i];
-	if (range[j] + 20 > expectedj && range[j] < expectedj + 20) {
-	  concentration++;
-	  lastj = j;
-	  debug2(printf("*"));
+      if (Gregion_genomicstart(gregion) > range[i] + maxtotallen) {
+	debug2(printf("  => Too far away, so skipping\n"));
+      } else {
+	concentration = 1;
+	lastj = i;
+	for (j = i+1; j < ninrange; j++) {
+	  debug2(printf("  %u@%d",range[j],querypositions[j]));
+	  expectedj = range[i] + querypositions[j] - querypositions[i];
+	  if (range[j] + 20 > expectedj && range[j] < expectedj + 20) {
+	    concentration++;
+	    lastj = j;
+	    debug2(printf("*"));
+	  }
+	}
+	debug2(printf("\nConcentration is %d\n\n",concentration));
+	if (concentration > best_concentration || 
+	    (concentration == best_concentration && range[i] > best_start)) {
+	  best_concentration = concentration;
+	  best_start = range[i];
+	  debug2(best_querystart = querypositions[i]);
 	}
-      }
-      debug2(printf("\nConcentration is %d\n\n",concentration));
-      if (concentration > best_concentration || 
-	  (concentration == best_concentration && range[i] > best_start)) {
-	best_concentration = concentration;
-	best_start = range[i];
-	debug2(best_querystart = querypositions[i]);
       }
     }
     FREE(querypositions);
@@ -1771,23 +1782,27 @@ find_extensions (Univcoord_T *extension5, Univcoord_T *extension3, T this,
     for (i = 0; i < ninrange; i++) {
       debug2(printf("Looking at range %d = %u@%d (distance = %u)\n",
 		    i,range[i],querypositions[i],range[i]-Gregion_genomicend(gregion)));
-      concentration = 1;
-      lastj = i;
-      for (j = i+1; j < ninrange; j++) {
-	debug2(printf("  %u@%d",range[j],querypositions[j]));
-	expectedi = range[j] + querypositions[j] - querypositions[i];
+      if (range[i] > Gregion_genomicend(gregion) + maxtotallen) {
+	debug2(printf("  => Too far away, so skipping\n"));
+      } else {
+	concentration = 1;
+	lastj = i;
+	for (j = i+1; j < ninrange; j++) {
+	  debug2(printf("  %u@%d",range[j],querypositions[j]));
+	  expectedi = range[j] + querypositions[j] - querypositions[i];
 	if (range[i] + 20 > expectedi && range[i] < expectedi + 20) {
 	  concentration++;
 	  lastj = j;
 	  debug2(printf("*"));
 	}
-      }
-      debug2(printf("\nConcentration is %d\n\n",concentration));
-      if (concentration > best_concentration ||
+	}
+	debug2(printf("\nConcentration is %d\n\n",concentration));
+	if (concentration > best_concentration ||
 	  (concentration == best_concentration && range[i] < best_start)) {
-	best_concentration = concentration;
-	best_start = range[i];
-	debug2(best_querystart = querypositions[i]);
+	  best_concentration = concentration;
+	  best_start = range[i];
+	  debug2(best_querystart = querypositions[i]);
+	}
       }
     }
     FREE(querypositions);
@@ -1812,23 +1827,27 @@ find_extensions (Univcoord_T *extension5, Univcoord_T *extension3, T this,
     for (i = 0; i < ninrange; i++) {
       debug2(printf("Looking at range %d = %u@%d (distance = %u)\n",
 		    i,range[i],querypositions[i],range[i]-Gregion_genomicend(gregion)));
-      concentration = 1;
-      lastj = i;
-      for (j = i+1; j < ninrange; j++) {
-	debug2(printf("  %u@%d",range[j],querypositions[j]));
-	expectedj = range[i] + querypositions[j] - querypositions[i];
-	if (range[j] + 20 > expectedj && range[j] < expectedj + 20) {
-	  concentration++;
-	  lastj = j;
-	  debug2(printf("*"));
+      if (range[i] > Gregion_genomicend(gregion) + maxtotallen) {
+	debug2(printf("  => Too far away, so skipping\n"));
+      } else {
+	concentration = 1;
+	lastj = i;
+	for (j = i+1; j < ninrange; j++) {
+	  debug2(printf("  %u@%d",range[j],querypositions[j]));
+	  expectedj = range[i] + querypositions[j] - querypositions[i];
+	  if (range[j] + 20 > expectedj && range[j] < expectedj + 20) {
+	    concentration++;
+	    lastj = j;
+	    debug2(printf("*"));
+	  }
+	}
+	debug2(printf("\nConcentration is %d\n\n",concentration));
+	if (concentration > best_concentration ||
+	    (concentration == best_concentration && range[lastj] < best_end)) {
+	  best_concentration = concentration;
+	  best_end = range[lastj];
+	  debug2(best_queryend = querypositions[lastj]);
 	}
-      }
-      debug2(printf("\nConcentration is %d\n\n",concentration));
-      if (concentration > best_concentration ||
-	  (concentration == best_concentration && range[lastj] < best_end)) {
-	best_concentration = concentration;
-	best_end = range[lastj];
-	debug2(best_queryend = querypositions[lastj]);
       }
     }
     FREE(querypositions);
@@ -1853,23 +1872,27 @@ find_extensions (Univcoord_T *extension5, Univcoord_T *extension3, T this,
     for (i = 0; i < ninrange; i++) {
       debug2(printf("Looking at range %d = %u@%d (distance = %u)\n",
 		    i,range[i],querypositions[i],Gregion_genomicstart(gregion)-range[i]));
-      concentration = 1;
-      lastj = i;
-      for (j = i+1; j < ninrange; j++) {
-	debug2(printf("  %u@%d",range[j],querypositions[j]));
-	expectedi = range[j] + querypositions[j] - querypositions[i];
-	if (range[i] + 20 > expectedi && range[i] < expectedi + 20) {
-	  concentration++;
-	  lastj = j;
-	  debug2(printf("*"));
+      if (Gregion_genomicstart(gregion) > range[i] + maxtotallen) {
+	debug2(printf("  => Too far away, so skipping\n"));
+      } else {
+	concentration = 1;
+	lastj = i;
+	for (j = i+1; j < ninrange; j++) {
+	  debug2(printf("  %u@%d",range[j],querypositions[j]));
+	  expectedi = range[j] + querypositions[j] - querypositions[i];
+	  if (range[i] + 20 > expectedi && range[i] < expectedi + 20) {
+	    concentration++;
+	    lastj = j;
+	    debug2(printf("*"));
+	  }
+	}
+	debug2(printf("\nConcentration is %d\n\n",concentration));
+	if (concentration > best_concentration ||
+	    (concentration == best_concentration && range[lastj] > best_end)) {
+	  best_concentration = concentration;
+	  best_end = range[lastj];
+	  debug2(best_queryend = querypositions[lastj]);
 	}
-      }
-      debug2(printf("\nConcentration is %d\n\n",concentration));
-      if (concentration > best_concentration ||
-	  (concentration == best_concentration && range[lastj] > best_end)) {
-	best_concentration = concentration;
-	best_end = range[lastj];
-	debug2(best_queryend = querypositions[lastj]);
       }
     }
     FREE(querypositions);
@@ -1889,7 +1912,7 @@ find_extensions (Univcoord_T *extension5, Univcoord_T *extension3, T this,
 static List_T
 find_first_pair (bool *foundpairp, List_T gregionlist, T this, Width_T matchsize,
 		 Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int genestrand,
-		 Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset,
+		 Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 		 Matchpool_T matchpool, int maxattempts) {
   List_T newmatches5 = NULL, newmatches3 = NULL;
   bool donep = false;
@@ -1941,8 +1964,8 @@ find_first_pair (bool *foundpairp, List_T gregionlist, T this, Width_T matchsize
 	newmatches5 = find_5prime_matches(&nnew,NULL,this,matchsize,
 					  this->plus_positions,this->plus_npositions,
 					  this->minus_positions,this->minus_npositions,chromosome_iit,
-					  chrsubset,matchpool,this->querystart,this->querylength,
-					  this->maxentries,true);
+					  chrsubset_start,chrsubset_end,matchpool,this->querystart,
+					  this->querylength,this->maxentries,true);
 	if (nnew > 0) {
 	  n5hits += 1.0/(double) (1 + nnew);
 	  debug(printf("    n5hits: %.1f, n3hits: %.1f\n",n5hits,n3hits));
@@ -1989,8 +2012,8 @@ find_first_pair (bool *foundpairp, List_T gregionlist, T this, Width_T matchsize
 	newmatches3 = find_3prime_matches(&nnew,NULL,this,matchsize,
 					  this->plus_positions,this->plus_npositions,
 					  this->minus_positions,this->minus_npositions,
-					  chromosome_iit,chrsubset,matchpool,this->queryend,
-					  this->querylength,this->maxentries,true);
+					  chromosome_iit,chrsubset_start,chrsubset_end,matchpool,
+					  this->queryend,this->querylength,this->maxentries,true);
 	if (nnew > 0) {
 	  n3hits += 1.0/(double) (1 + nnew);
 	  debug(printf("    n5hits: %.1f, n3hits: %.1f\n",n5hits,n3hits));
@@ -3344,9 +3367,10 @@ find_good_paths (List_T gregionlist, int nexons, int *prev, int *scores,
    so we should rely on our other method */
 
 static List_T
-scan_ends (List_T oldlist, T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int genestrand,
-	   Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset, Matchpool_T matchpool,
-	   int stutterhits, Diagnostic_T diagnostic, bool iteratep) {
+scan_ends (bool *shortseqp, bool second_pass_p, List_T oldlist, T this,
+	   Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int genestrand,
+	   Univ_IIT_T chromosome_iit, Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
+	   Matchpool_T matchpool, int stutterhits, Diagnostic_T diagnostic, bool iteratep) {
   List_T newlist = NULL;
   double dangling5_pct, dangling3_pct;
   List_T dangling5, dangling3;
@@ -3366,11 +3390,26 @@ scan_ends (List_T oldlist, T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
     matchsize = index1part + 12;
   }
 #endif
+  
+  /* Handle short query sequences */
+  if (second_pass_p == true) {
+    /* Use standard matchsize.  Can get higher specificity with longer matchsizes. */
+  } else {
+    /* Use small matchsize.  Can get higher sensitivity with smaller matchsizes. */
+    *shortseqp = false;
+    while (matchsize > this->querylength/4) {
+      *shortseqp = true;
+      matchsize -= 6;
+    }
+  }
+  if (matchsize < this->oligosize) {
+    matchsize = this->oligosize;
+  }
 
   while (loopp && matchsize >= this->oligosize && foundpairp == false) {
     newlist = find_first_pair(&foundpairp,newlist,this,matchsize,
 			      indexdb_fwd,indexdb_rev,genestrand,chromosome_iit,
-			      chrsubset,matchpool,maxattempts);
+			      chrsubset_start,chrsubset_end,matchpool,maxattempts);
     if (matchsize == this->oligosize) {
       loopp = false;
     } else if (foundpairp == false) {
@@ -3412,7 +3451,7 @@ scan_ends (List_T oldlist, T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
     diagnostic->firstpair_found_3 = Block_querypos(this->block3);
 
     newlist = stutter(newlist,this,matchsize,indexdb_fwd,indexdb_rev,
-		      genestrand,chromosome_iit,chrsubset,matchpool,stutterhits);
+		      genestrand,chromosome_iit,chrsubset_start,chrsubset_end,matchpool,stutterhits);
 
     diagnostic->stutter_searched_5 = Block_querypos(this->block5);
     diagnostic->stutter_searched_3 = Block_querypos(this->block3);
@@ -3433,7 +3472,7 @@ scan_ends (List_T oldlist, T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
     if (dangling5_pct > MAX_DANGLING_PCT) {
       dangling5 = get_dangling(this->matches5,matchpool);
       newlist = fill_in_3(newlist,this,matchsize,dangling5,indexdb_fwd,indexdb_rev,
-			  genestrand,chromosome_iit,chrsubset,matchpool);
+			  genestrand,chromosome_iit,chrsubset_start,chrsubset_end,matchpool);
       /* Not necessary to free */
       /* List_free(&dangling5); */
     }
@@ -3441,7 +3480,7 @@ scan_ends (List_T oldlist, T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
     if (dangling3_pct > MAX_DANGLING_PCT) {
       dangling3 = get_dangling(this->matches3,matchpool);
       newlist = fill_in_5(newlist,this,matchsize,dangling3,indexdb_fwd,indexdb_rev,
-			  genestrand,chromosome_iit,chrsubset,matchpool);
+			  genestrand,chromosome_iit,chrsubset_start,chrsubset_end,matchpool);
       /* Not necessary to free */
       /* List_free(&dangling3); */
     }
@@ -3480,7 +3519,8 @@ sufficient_gregion_p (List_T gregionlist) {
 
 List_T
 Stage1_compute (bool *lowidentityp, Sequence_T queryuc, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
-		int indexdb_size_threshold, Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset,
+		int indexdb_size_threshold, Univ_IIT_T chromosome_iit,
+		Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 		Matchpool_T matchpool, int stutterhits, Diagnostic_T diagnostic, Stopwatch_T stopwatch,
 		int nbest) {
   List_T gregionlist = NULL, p, q;
@@ -3490,6 +3530,7 @@ Stage1_compute (bool *lowidentityp, Sequence_T queryuc, Indexdb_T indexdb_fwd, I
   Chrpos_T maxtotallen;
   Univcoord_T extension5, extension3;
   Gregion_T gregion;
+  bool shortseqp;
 
   struct Segment_T *plus_segments = NULL, *minus_segments = NULL;
   int plus_nsegments = 0, minus_nsegments = 0, maxexons, k;
@@ -3555,9 +3596,16 @@ Stage1_compute (bool *lowidentityp, Sequence_T queryuc, Indexdb_T indexdb_fwd, I
   identify_repeated_oligos(this,/*oligobase*/index1part,this->querylength);
 #endif
 #ifdef SCAN_ENDS
-  gregionlist = scan_ends(gregionlist,this,indexdb_fwd,indexdb_rev,/*genestrand*/0,chromosome_iit,chrsubset,
+  gregionlist = scan_ends(&shortseqp,/*second_pass_p*/false,gregionlist,this,
+			  indexdb_fwd,indexdb_rev,/*genestrand*/0,chromosome_iit,chrsubset_start,chrsubset_end,
 			  matchpool,stutterhits,diagnostic,/*iteratep*/false);
   debug(printf("\nDangling5 = %f, Dangling3 = %f\n",dangling_pct(this->matches5),dangling_pct(this->matches3)));
+  if (shortseqp == true) {
+    gregionlist = scan_ends(&shortseqp,/*second_pass_p*/true,gregionlist,this,
+			    indexdb_fwd,indexdb_rev,/*genestrand*/0,chromosome_iit,chrsubset_start,chrsubset_end,
+			    matchpool,stutterhits,diagnostic,/*iteratep*/false);
+    debug(printf("\nDangling5 = %f, Dangling3 = %f\n",dangling_pct(this->matches5),dangling_pct(this->matches3)));
+  }
 #endif
 
   if (gregionlist == NULL) {
@@ -3672,7 +3720,7 @@ Stage1_compute (bool *lowidentityp, Sequence_T queryuc, Indexdb_T indexdb_fwd, I
     gregion = (Gregion_T) List_head(p);
     if (Gregion_extendedp(gregion) == false) {
       /* Need to extend, otherwise we won't align NM_003360 */
-      find_extensions(&extension5,&extension3,this,gregion,/*continuousp*/false);
+      find_extensions(&extension5,&extension3,this,gregion,this->maxtotallen,/*continuousp*/false);
       Gregion_extend(gregion,extension5,extension3,this->querylength,min_extra_end);
     }
   }
@@ -3718,16 +3766,24 @@ Stage1_compute (bool *lowidentityp, Sequence_T queryuc, Indexdb_T indexdb_fwd, I
     }
 #endif
 
+    debug0(printf("Before filtering for unique, %d regions\n",List_length(gregionlist)));
+    debug0(
+	  for (p = gregionlist; p != NULL; p = List_next(p)) {
+	    gregion = (Gregion_T) List_head(p);
+	    Gregion_print(gregion);
+	  }
+	  );
+
     gregionlist = Gregion_filter_unique(gregionlist);
-    debug(printf("After filtering for unique, %d regions\n",List_length(gregionlist)));
-    debug(
+    debug0(printf("After filtering for unique, %d regions\n",List_length(gregionlist)));
+    debug0(
 	  for (p = gregionlist; p != NULL; p = List_next(p)) {
 	    gregion = (Gregion_T) List_head(p);
 	    Gregion_print(gregion);
 	  }
 	  );
 
-    debug(
+    debug0(
 	  if (List_length(gregionlist) > MAX_GREGIONS_POST_UNIQUE) {
 	    printf("Too many gregions %d, so taking the top %d\n",List_length(gregionlist),MAX_GREGIONS_POST_UNIQUE);
 	  });
@@ -3770,7 +3826,8 @@ Stage1_compute (bool *lowidentityp, Sequence_T queryuc, Indexdb_T indexdb_fwd, I
 List_T
 Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
 			    Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
-			    int indexdb_size_threshold, Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset,
+			    int indexdb_size_threshold, Univ_IIT_T chromosome_iit,
+			    Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 			    Matchpool_T matchpool, int stutterhits, Diagnostic_T diagnostic, Stopwatch_T stopwatch,
 			    int nbest) {
   List_T gregionlist = NULL, p, q;
@@ -3781,6 +3838,7 @@ Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
   Chrpos_T maxtotallen;
   Univcoord_T extension5, extension3;
   Gregion_T gregion;
+  bool shortseqp;
 
   struct Segment_T *plus_segments_fwd = NULL, *minus_segments_fwd = NULL, *plus_segments_rev = NULL, *minus_segments_rev = NULL;
   int plus_nsegments_fwd = 0, minus_nsegments_fwd = 0, plus_nsegments_rev = 0, minus_nsegments_rev = 0, maxexons, k;
@@ -3852,10 +3910,17 @@ Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
 #endif
 
 #ifdef SCAN_ENDS
-  gregionlist = scan_ends(gregionlist,this_fwd,indexdb_fwd,indexdb_fwd,/*genestrand*/+1,chromosome_iit,chrsubset,
+  gregionlist = scan_ends(&shortseqp,/*second_pass_p*/false,gregionlist,this_fwd,
+			  indexdb_fwd,indexdb_fwd,/*genestrand*/+1,chromosome_iit,chrsubset_start,chrsubset_end,
 			  matchpool,stutterhits,diagnostic,/*iteratep*/false);
-#endif
   debug(printf("\nDangling5 = %f, Dangling3 = %f\n",dangling_pct(this_fwd->matches5),dangling_pct(this_fwd->matches3)));
+  if (shortseqp == true) {
+    gregionlist = scan_ends(&shortseqp,/*second_pass_p*/true,gregionlist,this_fwd,
+			    indexdb_fwd,indexdb_fwd,/*genestrand*/+1,chromosome_iit,chrsubset_start,chrsubset_end,
+			    matchpool,stutterhits,diagnostic,/*iteratep*/false);
+    debug(printf("\nDangling5 = %f, Dangling3 = %f\n",dangling_pct(this_fwd->matches5),dangling_pct(this_fwd->matches3)));
+  }
+#endif
 
   debug(printf("\nAfter scan_ends, fwd:\n"));
   debug(
@@ -3900,10 +3965,17 @@ Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
 #endif
 
 #ifdef SCAN_ENDS
-  gregionlist = scan_ends(gregionlist,this_rev,indexdb_rev,indexdb_rev,/*genestrand*/-1,chromosome_iit,chrsubset,
+  gregionlist = scan_ends(&shortseqp,/*second_pass_p*/false,gregionlist,this_rev,
+			  indexdb_rev,indexdb_rev,/*genestrand*/-1,chromosome_iit,chrsubset_start,chrsubset_end,
 			  matchpool,stutterhits,diagnostic,/*iteratep*/false);
-#endif
   debug(printf("\nDangling5 = %f, Dangling3 = %f\n",dangling_pct(this_rev->matches5),dangling_pct(this_rev->matches3)));
+  if (shortseqp == true) {
+    gregionlist = scan_ends(&shortseqp,/*second_pass_p*/true,gregionlist,this_rev,
+			    indexdb_rev,indexdb_rev,/*genestrand*/-1,chromosome_iit,chrsubset_start,chrsubset_end,
+			    matchpool,stutterhits,diagnostic,/*iteratep*/false);
+    debug(printf("\nDangling5 = %f, Dangling3 = %f\n",dangling_pct(this_rev->matches5),dangling_pct(this_rev->matches3)));
+  }
+#endif
 
   debug(printf("\nAfter scan_ends, rev:\n"));
   debug(
@@ -4094,10 +4166,10 @@ Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
     if (Gregion_extendedp(gregion) == false) {
       /* Need to extend, otherwise we won't align NM_003360 */
       if (Gregion_genestrand(gregion) > 0) {
-	find_extensions(&extension5,&extension3,this_fwd,gregion,/*continuousp*/false);
+	find_extensions(&extension5,&extension3,this_fwd,gregion,this_fwd->maxtotallen,/*continuousp*/false);
 	Gregion_extend(gregion,extension5,extension3,this_fwd->querylength,min_extra_end);
       } else {
-	find_extensions(&extension5,&extension3,this_rev,gregion,/*continuousp*/false);
+	find_extensions(&extension5,&extension3,this_rev,gregion,this_rev->maxtotallen,/*continuousp*/false);
 	Gregion_extend(gregion,extension5,extension3,this_rev->querylength,min_extra_end);
       }
     }
@@ -4145,15 +4217,15 @@ Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
 #endif
 
     gregionlist = Gregion_filter_unique(gregionlist);
-    debug(printf("After filtering for unique, %d regions\n",List_length(gregionlist)));
-    debug(
+    debug0(printf("After filtering for unique, %d regions\n",List_length(gregionlist)));
+    debug0(
 	  for (p = gregionlist; p != NULL; p = List_next(p)) {
 	    gregion = (Gregion_T) List_head(p);
 	    Gregion_print(gregion);
 	  }
 	  );
 
-    debug(
+    debug0(
 	  if (List_length(gregionlist) > MAX_GREGIONS_POST_UNIQUE) {
 	    printf("Too many gregions %d, so taking the top %d\n",List_length(gregionlist),MAX_GREGIONS_POST_UNIQUE);
 	  });
diff --git a/src/stage1.h b/src/stage1.h
index 6387951..096dd2c 100644
--- a/src/stage1.h
+++ b/src/stage1.h
@@ -1,4 +1,4 @@
-/* $Id: stage1.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: stage1.h 128855 2014-02-28 21:50:24Z twu $ */
 #ifndef STAGE1_INCLUDED
 #define STAGE1_INCLUDED
 #include "bool.h"
@@ -9,7 +9,6 @@
 #include "match.h"
 #include "matchpool.h"
 #include "iit-read-univ.h"
-#include "chrsubset.h"
 #include "genome.h"
 #include "stopwatch.h"
 #include "diagnostic.h"
@@ -32,14 +31,16 @@ Stage1_setup (int index1part_in, Chrpos_T maxextension_in, Chrpos_T maxtotallen_
 extern List_T
 Stage1_compute (bool *samplingp, Sequence_T queryuc,
 		Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
-		int indexdb_size_threshold, Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset,
+		int indexdb_size_threshold, Univ_IIT_T chromosome_iit,
+		Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 		Matchpool_T matchpool, int stutterhits, Diagnostic_T diagnostic, Stopwatch_T stopwatch,
 		int nbest);
 
 extern List_T
 Stage1_compute_nonstranded (bool *lowidentityp, Sequence_T queryuc,
 			    Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
-			    int indexdb_size_threshold, Univ_IIT_T chromosome_iit, Chrsubset_T chrsubset,
+			    int indexdb_size_threshold, Univ_IIT_T chromosome_iit,
+			    Univcoord_T chrsubset_start, Univcoord_T chrsubset_end,
 			    Matchpool_T matchpool, int stutterhits, Diagnostic_T diagnostic, Stopwatch_T stopwatch,
 			    int nbest);
 #undef T
diff --git a/src/stage1hr.c b/src/stage1hr.c
index b4d46ea..e0d1210 100644
--- a/src/stage1hr.c
+++ b/src/stage1hr.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stage1hr.c 102151 2013-07-19 23:48:17Z twu $";
+static char rcsid[] = "$Id: stage1hr.c 138745 2014-06-11 19:04:25Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -25,15 +25,25 @@ static char rcsid[] = "$Id: stage1hr.c 102151 2013-07-19 23:48:17Z twu $";
 #include "listdef.h"
 #include "intlist.h"
 #include "intlistdef.h"
+#include "splice.h"
+#include "indel.h"
 #include "stage3hr.h"
 #include "substring.h"
 #include "complement.h"
 #include "compress.h"
-#include "genome_hr.h"
+#include "genome128_hr.h"
+#include "genome_sites.h"
 #include "maxent.h"
 #include "maxent_hr.h"
 #include "iitdef.h"
-#include "interval.h"
+#include "univinterval.h"
+#ifdef LARGE_GENOMES
+#include "uint8list.h"
+#else
+#include "uintlist.h"
+#include "sarray-read.h"
+#endif
+
 #include "spanningelt.h"
 #include "cmet.h"
 #include "atoi.h"
@@ -55,13 +65,16 @@ static char rcsid[] = "$Id: stage1hr.c 102151 2013-07-19 23:48:17Z twu $";
 #endif
 
 
-/* Heapsort still turns out to be a bit faster than a global qsort,
-   because it takes advantage of the fact that the positions within
-   each batch are already sorted. */
-/* #define USE_QSORT 1 */
-#define USE_HEAPSORT 1
+/* Note: Heapsort still turns out to be a bit faster than a global
+   qsort, because it takes advantage of the fact that the positions
+   within each batch are already sorted.  Also, heapsort can handle
+   8-byte positions. */
 
 
+#define NO_EXTENSIONS_BEFORE_ZERO 1
+
+#define ALLOW_MIDDLE_ALIGNMENTS 1
+
 /* #define EXTRACT_GENOMICSEG 1 */
 #ifdef EXTRACT_GENOMICSEG
 #define MAX_INDEXSIZE 8
@@ -77,20 +90,33 @@ static char rcsid[] = "$Id: stage1hr.c 102151 2013-07-19 23:48:17Z twu $";
 /* MAX_NALIGNMENTS of 3 vs 2 gets 96 improvements in 275,000 reads */
 #define MAX_NALIGNMENTS 3
 
+#define MAX_NTERMINALS 100
+
+static bool use_sarray_p = true;
+
 /* Mode */
 static Mode_T mode;
 static bool snpp;
 static int maxpaths_search;
 
+/* For spliceable (really "joinable", if we consider indels) */
+static Chrpos_T overall_max_distance;
+
+/* Other distances */
+static Chrpos_T max_middle_insertions;
+static Chrpos_T max_middle_deletions;
+static Chrpos_T shortsplicedist;
+static Chrpos_T shortsplicedist_known;
+static Chrpos_T shortsplicedist_novelend;
+
 
 /* Penalties */
 static int terminal_threshold;
+static int terminal_output_minlength;
 
 static bool novelsplicingp;
 static bool knownsplicingp;
 static bool distances_observed_p;
-static int shortsplicedist_known;
-static int shortsplicedist_novelend;
 
 static Chrpos_T min_intronlength;
 
@@ -119,6 +145,7 @@ static int maxpeelback_distalmedial;
 static int extramaterial_end;
 static int extramaterial_paired;
 static int trigger_score_for_gmap;
+static int gmap_allowance;
 static int max_gmap_pairsearch;
 static int max_gmap_terminal;
 static int max_gmap_improvement;
@@ -139,7 +166,6 @@ static int ngap = 3;  /* 0? */
 #define G_CHAR 0x2
 #define T_CHAR 0x3
 
-#define NOT_APPLICABLE true
 
 /* Originally allowed only 1, to print only unique translocations.
    But need to allow enough to avoid missing some translocations. */
@@ -156,8 +182,6 @@ static int ngap = 3;  /* 0? */
 #define GOOD_GMAP_END 6
 #define GMAP_TERMINAL_TRIM 6
 
-#define LOWPROB_SUPPORT 20
-
 #define GREEDY_SHORTSPLICEDIST 30000
 
 static int index1part;
@@ -188,10 +212,8 @@ static int end_miss_two;	/* Used for computing max_terminal_length */
 #define FLOOR_MIDDLE(x) ((x < two_index1intervals) ? 0 : (x + spansize - two_index1intervals)/spansize)
 
 
-#define MAX_LOCALSPLICING_HITS 10000
-#define MAX_LOCALSPLICING_POTENTIAL 50
-
-#define GMAP_ALLOWANCE 3
+#define MAX_LOCALSPLICING_POTENTIAL 1000
+#define LOCALSPLICING_SLOP 0.05
 
 
 /* Overall flow */
@@ -229,22 +251,21 @@ static int end_miss_two;	/* Used for computing max_terminal_length */
 #define debug3(x)
 #endif
 
-/* solve_singlesplice */ 
+/* find_singlesplices */ 
 #ifdef DEBUG4P
 #define debug4p(x) x
 #else
 #define debug4p(x)
 #endif
 
-/* solve_doublesplice */
+/* find_doublesplices */
 #ifdef DEBUG4D
 #define debug4d(x) x
 #else
 #define debug4d(x)
 #endif
 
-
-/* find_splicesplices */
+/* find_singlesplices */
 #ifdef DEBUG4S
 #define debug4s(x) x
 #else
@@ -294,6 +315,13 @@ static int end_miss_two;	/* Used for computing max_terminal_length */
 #define debug4h(x)
 #endif
 
+/* Determining spliceable segments */
+#ifdef DEBUG5
+#define debug5(x) x
+#else
+#define debug5(x)
+#endif
+
 /* Heapify */
 #ifdef DEBUG6
 #define debug6(x) x
@@ -357,7 +385,7 @@ static int end_miss_two;	/* Used for computing max_terminal_length */
 #define debug13b(x)
 #endif
 
-/* identify_all_segments (heapsort vs qsort) */
+/* identify_all_segments */
 #ifdef DEBUG14
 #define debug14(x) x
 #else
@@ -371,6 +399,12 @@ static int end_miss_two;	/* Used for computing max_terminal_length */
 #define debug15(x)
 #endif
 
+/* consolidate_paired_results and choose_among_paired */ 
+#ifdef DEBUG16
+#define debug16(x) x
+#else
+#define debug16(x)
+#endif
 
 
 typedef struct Segment_T *Segment_T;
@@ -636,10 +670,21 @@ struct T {
   List_T plus_spanningset[MAX_INDEX1INTERVAL];
   List_T minus_spanningset[MAX_INDEX1INTERVAL];
 
+#ifdef LARGE_GENOMES
+  unsigned char **plus_positions_high_allocated;
+  unsigned char **plus_positions_high; /* points to above[index1interval-1] */
+  UINT4 **plus_positions_low_allocated;
+  UINT4 **plus_positions_low; /* points to above[index1interval-1] */
+  unsigned char **minus_positions_high_allocated;
+  unsigned char **minus_positions_high; /* points to above[index1interval-1] */
+  UINT4 **minus_positions_low_allocated;
+  UINT4 **minus_positions_low; /* points to above[index1interval-1] */
+#else
   Univcoord_T **plus_positions_allocated;
   Univcoord_T **plus_positions; /* points to above[index1interval-1] */
   Univcoord_T **minus_positions_allocated;
   Univcoord_T **minus_positions; /* points to above[index1interval-1] */
+#endif
 
   int *plus_npositions_allocated;
   int *plus_npositions;		/* points to above[index1interval-1] */
@@ -652,12 +697,16 @@ struct T {
   bool *minus_retrievedp_allocated;
   bool *minus_retrievedp;	/* points to above[index1interval-1] */
 
+#ifdef USE_ALLOCP
   bool *plus_allocp_allocated;
   bool *plus_allocp;		/* points to above[index1interval-1] */
   bool *minus_allocp_allocated;
   bool *minus_allocp;		/* points to above[index1interval-1] */
+#endif
 
+#ifdef USE_VALIDP
   bool *validp;
+#endif
   bool *omitted;
 
   Storedoligomer_T *forward_oligos_allocated;
@@ -670,6 +719,11 @@ struct T {
   int plus_nsegments;
   int minus_nsegments;
 
+  Segment_T *plus_spliceable; /* plus_segments with a following diagonal within shortsplicedist or splicedists[j] */
+  Segment_T *minus_spliceable; /* minus_segments with a following diagonal within shortsplicedist or splicedists[j] */
+  int plus_nspliceable;
+  int minus_nspliceable;
+
   bool all_positions_fetched_p;
 };
 
@@ -723,6 +777,9 @@ Stage1_free (T *old, int querylength) {
   /* Stage1hr_check(*old); */
 
   if (*old) {
+    FREE((*old)->plus_spliceable);
+    FREE((*old)->minus_spliceable);
+
     FREE((*old)->plus_segments);
     FREE((*old)->minus_segments);
 
@@ -743,33 +800,66 @@ Stage1_free (T *old, int querylength) {
     if (free_positions_p == true) {
       for (i = -index1interval+1; i < querylength; i++) {
 	if ((*old)->plus_retrievedp[i] == true) {
+#ifdef LARGE_GENOMES
+	  FREE((*old)->plus_positions_high[i]);
+	  FREE((*old)->plus_positions_low[i]);
+#else
 	  FREE((*old)->plus_positions[i]);
+#endif
 	}
 	if ((*old)->minus_retrievedp[i] == true) {
+#ifdef LARGE_GENOMES
+	  FREE((*old)->minus_positions_high[i]);
+	  FREE((*old)->minus_positions_low[i]);
+#else
 	  FREE((*old)->minus_positions[i]);
+#endif
 	}
       }
+#ifdef USE_ALLOCP
     } else {
       for (i = -index1interval+1; i < querylength; i++) {
 	if ((*old)->plus_allocp[i] == true) {
+#ifdef LARGE_GENOMES
+	  FREE((*old)->plus_positions_high[i]);
+	  FREE((*old)->plus_positions_low[i]);
+#else
 	  FREE((*old)->plus_positions[i]);
+#endif
 	}
 	if ((*old)->minus_allocp[i] == true) {
+#ifdef LARGE_GENOMES
+	  FREE((*old)->minus_positions_high[i]);
+	  FREE((*old)->minus_positions_low[i]);
+#else
 	  FREE((*old)->minus_positions[i]);
+#endif
 	}
       }
+#endif
     }
 
     FREE((*old)->revcomp_oligos_allocated);
     FREE((*old)->forward_oligos_allocated);
     FREE((*old)->omitted);
+#ifdef USE_VALIDP
     FREE((*old)->validp);
+#endif
+#ifdef LARGE_GENOMES
+    FREE((*old)->plus_positions_high_allocated);
+    FREE((*old)->plus_positions_low_allocated);
+    FREE((*old)->minus_positions_high_allocated);
+    FREE((*old)->minus_positions_low_allocated);
+#else
     FREE((*old)->plus_positions_allocated);
     FREE((*old)->minus_positions_allocated);
+#endif
     FREE((*old)->plus_npositions_allocated);
     FREE((*old)->minus_npositions_allocated);
+#ifdef USE_ALLOCP
     FREE((*old)->plus_allocp_allocated);
     FREE((*old)->minus_allocp_allocated);
+#endif
     FREE((*old)->plus_retrievedp_allocated);
     FREE((*old)->minus_retrievedp_allocated);
 
@@ -857,7 +947,7 @@ check_dinucleotides (char *sequence, int querylength) {
 
 static int
 read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
-	     int query_lastpos, int genestrand) {
+	     int query_lastpos, int genestrand, bool first_read_p) {
   Reader_T reader;
   int querypos, noligos = 0;
   Oligostate_T last_state = INIT;
@@ -871,7 +961,22 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
   /* Prevents us from processing invalid query 12-mers */
   for (querypos = 0; querypos <= query_lastpos; querypos++) {
     this->plus_retrievedp[querypos] = true;
+#ifdef LARGE_GENOMES
+    this->plus_positions_high[querypos] = (unsigned char *) NULL;
+    this->plus_positions_low[querypos] = (UINT4 *) NULL;
+#else
+    this->plus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
+    this->plus_npositions[querypos] = 0;
+
     this->minus_retrievedp[querypos] = true;
+#ifdef LARGE_GENOMES
+    this->minus_positions_high[querypos] = (unsigned char *) NULL;
+    this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
+    this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
+    this->minus_npositions[querypos] = 0;
   }
 
   /* Note: leftshifting is done here, rather than in Oligo_lookup */
@@ -883,14 +988,22 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
   if (mode == STANDARD) {
     while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				    reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+      this->plus_positions_high[querypos] = (unsigned char *) NULL;
+      this->plus_positions_low[querypos] = (UINT4 *) NULL;
+      this->minus_positions_high[querypos] = (unsigned char *) NULL;
+      this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
       this->plus_positions[querypos] = (Univcoord_T *) NULL;
       this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
       this->plus_npositions[querypos] = 0;
       this->minus_npositions[querypos] = 0;
 
       if (last_state == VALID) {
+#ifdef USE_VALIDP
 	this->validp[querypos] = true;
-
+#endif
 	this->plus_retrievedp[querypos] = false;
 	this->minus_retrievedp[querypos] = false;
 
@@ -902,24 +1015,49 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
       }
     }
 
-  } else if (mode == CMET_STRANDED) {
+  } else if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
     while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				    reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+      this->plus_positions_high[querypos] = (unsigned char *) NULL;
+      this->plus_positions_low[querypos] = (UINT4 *) NULL;
+      this->minus_positions_high[querypos] = (unsigned char *) NULL;
+      this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
       this->plus_positions[querypos] = (Univcoord_T *) NULL;
       this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
       this->plus_npositions[querypos] = 0;
       this->minus_npositions[querypos] = 0;
 
       if (last_state == VALID) {
+#ifdef USE_VALIDP
 	this->validp[querypos] = true;
-
+#endif
 	this->plus_retrievedp[querypos] = false;
 	this->minus_retrievedp[querypos] = false;
 
-	this->forward_oligos[querypos] = Cmet_reduce_ct(forward) & oligobase_mask;
-	this->revcomp_oligos[querypos] = Cmet_reduce_ga(revcomp >> leftreadshift) & oligobase_mask;
+	if (genestrand == +2) {
+	  if (first_read_p == false) {
+	    this->forward_oligos[querypos] = Cmet_reduce_ct(forward) & oligobase_mask;
+	    this->revcomp_oligos[querypos] = Cmet_reduce_ga(revcomp >> leftreadshift) & oligobase_mask;
+	  } else {
+	    this->forward_oligos[querypos] = Cmet_reduce_ga(forward) & oligobase_mask;
+	    this->revcomp_oligos[querypos] = Cmet_reduce_ct(revcomp >> leftreadshift) & oligobase_mask;
+	  }
+	} else {
+	  if (first_read_p == true) {
+	    this->forward_oligos[querypos] = Cmet_reduce_ct(forward) & oligobase_mask;
+	    this->revcomp_oligos[querypos] = Cmet_reduce_ga(revcomp >> leftreadshift) & oligobase_mask;
+	  } else {
+	    this->forward_oligos[querypos] = Cmet_reduce_ga(forward) & oligobase_mask;
+	    this->revcomp_oligos[querypos] = Cmet_reduce_ct(revcomp >> leftreadshift) & oligobase_mask;
+	  }
+	}
 
-	debug(printf("At querypos %d, read oligo = %06X\n",querypos,this->forward_oligos[querypos]));
+	debug(printf("At querypos %d, fwd oligo %06X => %06X and rev oligo %06X => %06X\n",
+		     querypos,forward & oligobase_mask,this->forward_oligos[querypos],
+		     (revcomp >> leftreadshift) & oligobase_mask,this->revcomp_oligos[querypos]));
 	noligos++;
       }
     }
@@ -928,14 +1066,22 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
     if (genestrand == +1) {
       while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				      reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+	this->plus_positions_high[querypos] = (unsigned char *) NULL;
+	this->plus_positions_low[querypos] = (UINT4 *) NULL;
+	this->minus_positions_high[querypos] = (unsigned char *) NULL;
+	this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
 	this->plus_positions[querypos] = (Univcoord_T *) NULL;
 	this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
 	this->plus_npositions[querypos] = 0;
 	this->minus_npositions[querypos] = 0;
 
 	if (last_state == VALID) {
+#ifdef USE_VALIDP
 	  this->validp[querypos] = true;
-
+#endif
 	  this->plus_retrievedp[querypos] = false;
 	  this->minus_retrievedp[querypos] = false;
 
@@ -949,14 +1095,22 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
     } else {
       while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				      reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+	this->plus_positions_high[querypos] = (unsigned char *) NULL;
+	this->plus_positions_low[querypos] = (UINT4 *) NULL;
+	this->minus_positions_high[querypos] = (unsigned char *) NULL;
+	this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
 	this->plus_positions[querypos] = (Univcoord_T *) NULL;
 	this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
 	this->plus_npositions[querypos] = 0;
 	this->minus_npositions[querypos] = 0;
 
 	if (last_state == VALID) {
+#ifdef USE_VALIDP
 	  this->validp[querypos] = true;
-
+#endif
 	  this->plus_retrievedp[querypos] = false;
 	  this->minus_retrievedp[querypos] = false;
 
@@ -972,19 +1126,32 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
   } else if (mode == ATOI_STRANDED) {
     while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				    reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+      this->plus_positions_high[querypos] = (unsigned char *) NULL;
+      this->plus_positions_low[querypos] = (UINT4 *) NULL;
+      this->minus_positions_high[querypos] = (unsigned char *) NULL;
+      this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
       this->plus_positions[querypos] = (Univcoord_T *) NULL;
       this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
       this->plus_npositions[querypos] = 0;
       this->minus_npositions[querypos] = 0;
 
       if (last_state == VALID) {
+#ifdef USE_VALIDP
 	this->validp[querypos] = true;
-
+#endif
 	this->plus_retrievedp[querypos] = false;
 	this->minus_retrievedp[querypos] = false;
 
-	this->forward_oligos[querypos] = Atoi_reduce_ag(forward) & oligobase_mask;
-	this->revcomp_oligos[querypos] = Atoi_reduce_tc(revcomp >> leftreadshift) & oligobase_mask;
+	if (first_read_p == true) {
+	  this->forward_oligos[querypos] = Atoi_reduce_ag(forward) & oligobase_mask;
+	  this->revcomp_oligos[querypos] = Atoi_reduce_tc(revcomp >> leftreadshift) & oligobase_mask;
+	} else {
+	  this->forward_oligos[querypos] = Atoi_reduce_tc(forward) & oligobase_mask;
+	  this->revcomp_oligos[querypos] = Atoi_reduce_ag(revcomp >> leftreadshift) & oligobase_mask;
+	}
 
 	debug(printf("At querypos %d, read oligo = %06X\n",querypos,this->forward_oligos[querypos]));
 	noligos++;
@@ -995,14 +1162,22 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
     if (genestrand == +1) {
       while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				      reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+	this->plus_positions_high[querypos] = (unsigned char *) NULL;
+	this->plus_positions_low[querypos] = (UINT4 *) NULL;
+	this->minus_positions_high[querypos] = (unsigned char *) NULL;
+	this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
 	this->plus_positions[querypos] = (Univcoord_T *) NULL;
 	this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
 	this->plus_npositions[querypos] = 0;
 	this->minus_npositions[querypos] = 0;
 
 	if (last_state == VALID) {
+#ifdef USE_VALIDP
 	  this->validp[querypos] = true;
-
+#endif
 	  this->plus_retrievedp[querypos] = false;
 	  this->minus_retrievedp[querypos] = false;
 	  
@@ -1016,14 +1191,22 @@ read_oligos (bool *allvalidp, T this, char *queryuc_ptr, int querylength,
     } else {
       while ((last_state = Oligo_next(last_state,&querypos,&forward,&revcomp,
 				      reader,/*cdnaend*/FIVE)) != DONE) {
+#ifdef LARGE_GENOMES
+	this->plus_positions_high[querypos] = (unsigned char *) NULL;
+	this->plus_positions_low[querypos] = (UINT4 *) NULL;
+	this->minus_positions_high[querypos] = (unsigned char *) NULL;
+	this->minus_positions_low[querypos] = (UINT4 *) NULL;
+#else
 	this->plus_positions[querypos] = (Univcoord_T *) NULL;
 	this->minus_positions[querypos] = (Univcoord_T *) NULL;
+#endif
 	this->plus_npositions[querypos] = 0;
 	this->minus_npositions[querypos] = 0;
 
 	if (last_state == VALID) {
+#ifdef USE_VALIDP
 	  this->validp[querypos] = true;
-
+#endif
 	  this->plus_retrievedp[querypos] = false;
 	  this->minus_retrievedp[querypos] = false;
 	  
@@ -1251,7 +1434,7 @@ omit_oligos_repetitive (bool *all_omitted_p, bool *any_omitted_p, T this, int qu
 static T
 Stage1_new (int querylength) {
   T new = (T) MALLOC(sizeof(*new));
-  int querypos, mod;
+  int mod;
   int overhang = index1interval-1;
 
   for (mod = 0; mod < index1interval; mod++) {
@@ -1259,34 +1442,55 @@ Stage1_new (int querylength) {
     new->minus_spanningset[mod] = (List_T) NULL;
   }
 
-  new->plus_positions_allocated = (Univcoord_T **) CALLOC(querylength+overhang,sizeof(Univcoord_T *));
+#ifdef LARGE_GENOMES
+  new->plus_positions_high_allocated = (unsigned char **) MALLOC((querylength+overhang) * sizeof(unsigned char *));
+  new->plus_positions_high = &(new->plus_positions_high_allocated[overhang]);
+  new->plus_positions_low_allocated = (UINT4 **) MALLOC((querylength+overhang) * sizeof(UINT4 *));
+  new->plus_positions_low = &(new->plus_positions_low_allocated[overhang]);
+
+  new->minus_positions_high_allocated = (unsigned char **) MALLOC((querylength+overhang) *sizeof(unsigned char *));
+  new->minus_positions_high = &(new->minus_positions_high_allocated[overhang]);
+  new->minus_positions_low_allocated = (UINT4 **) MALLOC((querylength+overhang) *sizeof(UINT4 *));
+  new->minus_positions_low = &(new->minus_positions_low_allocated[overhang]);
+#else
+  new->plus_positions_allocated = (Univcoord_T **) MALLOC((querylength+overhang) * sizeof(Univcoord_T *));
   new->plus_positions = &(new->plus_positions_allocated[overhang]);
-  new->minus_positions_allocated = (Univcoord_T **) CALLOC(querylength+overhang,sizeof(Univcoord_T *));
+  new->minus_positions_allocated = (Univcoord_T **) MALLOC((querylength+overhang) *sizeof(Univcoord_T *));
   new->minus_positions = &(new->minus_positions_allocated[overhang]);
+#endif
 
-  new->plus_npositions_allocated = (int *) CALLOC(querylength+overhang,sizeof(int));
+  new->plus_npositions_allocated = (int *) MALLOC((querylength+overhang) * sizeof(int));
   new->plus_npositions = &(new->plus_npositions_allocated[overhang]);
-  new->minus_npositions_allocated = (int *) CALLOC(querylength+overhang,sizeof(int));
+  new->minus_npositions_allocated = (int *) MALLOC((querylength+overhang) * sizeof(int));
   new->minus_npositions = &(new->minus_npositions_allocated[overhang]);
 
+#if 0
+  /* No need to initialize, since we assign all values below */
   for (querypos = -index1interval+1; querypos < querylength; querypos++) {
     new->plus_positions[querypos] = (Univcoord_T *) NULL;
     new->plus_npositions[querypos] = 0;
     new->minus_positions[querypos] = (Univcoord_T *) NULL;
     new->minus_npositions[querypos] = 0;
   }
+#endif
 
-  new->plus_retrievedp_allocated = (bool *) CALLOC(querylength+overhang,sizeof(bool));
-  new->minus_retrievedp_allocated = (bool *) CALLOC(querylength+overhang,sizeof(bool));
+  /* Can be MALLOC, since we initialize in read_oligos() */
+  new->plus_retrievedp_allocated = (bool *) MALLOC((querylength+overhang) * sizeof(bool));
+  new->minus_retrievedp_allocated = (bool *) MALLOC((querylength+overhang) * sizeof(bool));
   new->plus_retrievedp = &(new->plus_retrievedp_allocated[overhang]);
   new->minus_retrievedp = &(new->minus_retrievedp_allocated[overhang]);
 
+#ifdef USE_ALLOCP
+  /* Never set to true, so never used */
   new->plus_allocp_allocated = (bool *) CALLOC(querylength+overhang,sizeof(bool));
   new->minus_allocp_allocated = (bool *) CALLOC(querylength+overhang,sizeof(bool));
   new->plus_allocp = &(new->plus_allocp_allocated[overhang]);
   new->minus_allocp = &(new->minus_allocp_allocated[overhang]);
+#endif
 
+#ifdef USE_VALIDP
   new->validp = (bool *) CALLOC(querylength,sizeof(bool));
+#endif
   new->omitted = (bool *) CALLOC(querylength,sizeof(bool));
 
   new->forward_oligos_allocated = (Storedoligomer_T *) CALLOC(querylength+overhang,sizeof(Storedoligomer_T));
@@ -1299,6 +1503,11 @@ Stage1_new (int querylength) {
   new->plus_nsegments = 0;
   new->minus_nsegments = 0;
 
+  new->plus_spliceable = (Segment_T *) NULL;
+  new->minus_spliceable = (Segment_T *) NULL;
+  new->plus_nspliceable = 0;
+  new->minus_nspliceable = 0;
+
   new->all_positions_fetched_p = false;
 
   return new;
@@ -1356,6 +1565,10 @@ struct Batch_T {
   int npositions;
 
   Univcoord_T diagonal;
+#ifdef LARGE_GENOMES
+  unsigned char *positions_high;
+  UINT4 *positions_low;
+#endif
   Univcoord_T *positions;
 #ifdef DIAGONAL_ADD_QUERYPOS
   UINT8 diagonal_add_querypos;
@@ -1363,31 +1576,46 @@ struct Batch_T {
 };
 
 
-#ifdef USE_HEAPSORT
 static void
-Batch_init (Batch_T batch, int querypos, int diagterm, Univcoord_T *positions, int npositions, int querylength) {
+Batch_init (Batch_T batch, int querypos, int diagterm,
+#ifdef LARGE_GENOMES
+	    unsigned char *positions_high, UINT4 *positions_low,
+#else
+	    Univcoord_T *positions,
+#endif
+	    int npositions, int querylength) {
 
   batch->querypos = querypos;
   batch->diagterm = diagterm;
+#ifdef LARGE_GENOMES
+  batch->positions_high = positions_high;
+  batch->positions_low = positions_low;
+  batch->diagonal = (((Univcoord_T) *positions_high) << 32) + (*positions_low) + diagterm;
+#elif defined(WORDS_BIGENDIAN)
   batch->positions = positions;
-#ifdef WORDS_BIGENDIAN
   batch->diagonal = Bigendian_convert_univcoord(*positions) + diagterm;
 #else
+  batch->positions = positions;
   batch->diagonal = *positions + diagterm;
 #endif
   batch->npositions = npositions;
 
+#ifdef NO_EXTENSIONS_BEFORE_ZERO
+  /* This prevents us from finding insertions at the beginning of the genome */
   while (batch->npositions > 0 && batch->diagonal < (unsigned int) querylength) {
     debug11(printf("Eliminating diagonal %lu as straddling beginning of genome (Batch_init)\n",batch->diagonal));
     batch->npositions--;
     if (batch->npositions > 0) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+      batch->diagonal = ((Univcoord_T) *(++batch->positions_high) << 32) + *(++batch->positions_low) + diagterm;
+#elif defined(WORDS_BIGENDIAN)
       batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + diagterm;
 #else
       batch->diagonal = *(++batch->positions) + diagterm;
 #endif
     }
   }
+#endif
 
 
 #ifdef DIAGONAL_ADD_QUERYPOS
@@ -1398,7 +1626,6 @@ Batch_init (Batch_T batch, int querypos, int diagterm, Univcoord_T *positions, i
 
   return;
 }
-#endif
 
 
 static void
@@ -1422,7 +1649,6 @@ Batch_init_simple (Batch_T batch, Univcoord_T *diagonals, int ndiagonals, int qu
 }
 
 
-#ifdef USE_HEAPSORT
 static void
 min_heap_insert (Batch_T *heap, int *heapsize, Batch_T batch) {
   int i;
@@ -1454,7 +1680,6 @@ min_heap_insert (Batch_T *heap, int *heapsize, Batch_T batch) {
 
   return;
 }
-#endif
 
 
 static void
@@ -1497,14 +1722,15 @@ static List_T
 report_perfect_segment (int *found_score, int *nhits, List_T hits, Univcoord_T left,
 			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
 			Chrpos_T chrlength, int querylength, Compress_T query_compress,
-			int nmisses_allowed, bool plusp, int genestrand) {
+			int nmisses_allowed, bool plusp, int genestrand, bool first_read_p) {
   Stage3end_T hit;
   int nmismatches;
 
   if (snpp == true) {
     if ((hit = Stage3end_new_substitution(&(*found_score),/*nmismatches*/0,
 					  left,/*genomiclength*/querylength,query_compress,
-					  plusp,genestrand,chrnum,chroffset,chrhigh,chrlength)) == NULL) {
+					  plusp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+					  /*sarrayp*/false)) == NULL) {
       return hits;
     } else {
       *nhits += 1;
@@ -1514,16 +1740,18 @@ report_perfect_segment (int *found_score, int *nhits, List_T hits, Univcoord_T l
   } else if (mode != STANDARD || spansize != index1part) {
     /* Count actual number of mismatches.  May not be a perfect segment. */
     nmismatches = Genome_count_mismatches_limit(query_compress,left,/*pos5*/0,/*pos3*/querylength,
-						/*max_mismatches_allowed*/nmisses_allowed,plusp,
-						genestrand);
+						/*max_mismatches_allowed*/nmisses_allowed,
+						plusp,genestrand,first_read_p);
+    debug(printf("Got %d mismatches\n",nmismatches));
     if (nmismatches > nmisses_allowed) {
       return hits;
     } else {
       /* Don't use Stage3end_new_exact, because need to mark mismatches */
       if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
 					    left,/*genomiclength*/querylength,
-					    query_compress,plusp,genestrand,
-					    chrnum,chroffset,chrhigh,chrlength)) == NULL) {
+					    query_compress,plusp,genestrand,first_read_p,
+					    chrnum,chroffset,chrhigh,chrlength,
+					    /*sarrayp*/false)) == NULL) {
 	return hits;
       } else {
 	*nhits += 1;
@@ -1534,7 +1762,8 @@ report_perfect_segment (int *found_score, int *nhits, List_T hits, Univcoord_T l
   } else {
     /* mode == STANDARD && spansize == index1part */
     if ((hit = Stage3end_new_exact(&(*found_score),left,/*genomiclength*/querylength,
-				   query_compress,plusp,genestrand,chrnum,chroffset,chrhigh,chrlength)) == NULL) {
+				   query_compress,plusp,genestrand,first_read_p,
+				   chrnum,chroffset,chrhigh,chrlength,/*sarrayp*/false)) == NULL) {
       return hits;
     } else {
       *nhits += 1;
@@ -1561,8 +1790,9 @@ report_perfect_segment_dibase (int *found_score, int *nhits, List_T hits, Univco
   /* Need to fill buffer with nucleotide genome anyway */
   if ((hit = Stage3end_new_substitution(&(*found_score),/*nmismatches*/0,
 					left,/*genomiclength*/querylength,
-					query_compress,plusp,genestrand,
-					chrnum,chroffset,chrhigh,chrlength)) == NULL) {
+					query_compress,plusp,genestrand,first_read_p,
+					chrnum,chroffset,chrhigh,chrlength,
+					/*sarrayp*/false)) == NULL) {
     return hits;
   } else {
     *nhits += 1;
@@ -1581,7 +1811,7 @@ binary_search_bigendian (int lowi, int highi, Univcoord_T *positions, Univcoord_
   debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%lu\n",lowi,highi,goal));
 
   while (lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     debug10(printf("  binary: %d:%lu %d:%lu %d:%lu   vs. %lu\n",
 		   lowi,Bigendian_convert_univcoord(positions[lowi]),middlei,Bigendian_convert_univcoord(positions[middlei]),
 		   highi,Bigendian_convert_univcoord(positions[highi]),goal));
@@ -1601,6 +1831,37 @@ binary_search_bigendian (int lowi, int highi, Univcoord_T *positions, Univcoord_
 #endif
 
 
+#ifdef LARGE_GENOMES
+static int
+binary_search_large (int lowi, int highi, unsigned char *positions_high, UINT4 *positions_low, Univcoord_T goal) {
+  int middlei;
+  Univcoord_T position;
+
+  debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%lu\n",lowi,highi,goal));
+
+  while (lowi < highi) {
+    middlei = lowi + ((highi - lowi) / 2);
+    position = ((Univcoord_T) positions_high[middlei] << 32) + positions_low[middlei];
+    debug10(printf("  binary: %d:%lu %d:%lu %d:%lu   vs. %lu\n",
+		   lowi,(positions_high[lowi] << 32) + positions_low[lowi],
+		   middlei,position,
+		   highi,(positions_high[highi] << 32) + positions_low[highi],goal));
+    if (goal < position) {
+      highi = middlei;
+    } else if (goal > position) {
+      lowi = middlei + 1;
+    } else {
+      debug10(printf("binary search returns %d\n",middlei));
+      return middlei;
+    }
+  }
+
+  debug10(printf("binary search returns %d\n",highi));
+  return highi;
+}
+#endif
+
+
 static int
 binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
   int middlei;
@@ -1608,7 +1869,7 @@ binary_search (int lowi, int highi, Univcoord_T *positions, Univcoord_T goal) {
   debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%lu\n",lowi,highi,goal));
 
   while (lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     debug10(printf("  binary: %d:%lu %d:%lu %d:%lu   vs. %lu\n",
 		   lowi,positions[lowi],middlei,positions[middlei],
 		   highi,positions[highi],goal));
@@ -1634,7 +1895,7 @@ binary_search_segments (int lowi, int highi, struct Segment_T *segments, Univcoo
   debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%lu\n",lowi,highi,goal));
 
   while (lowi < highi) {
-    middlei = (lowi+highi)/2;
+    middlei = lowi + ((highi - lowi) / 2);
     if (segments[middlei].diagonal == (Univcoord_T) -1) {
       middlei_up = middlei + 1;
       middlei_down = middlei - 1;
@@ -1665,7 +1926,7 @@ static List_T
 identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroffset, Univcoord_T *chrhigh,
 			 Chrpos_T *chrlength, int *nhits, List_T hits, Univcoord_T goal, List_T prev, int *nempty,
 			 int *global_miss_querypos5, int *global_miss_querypos3,
-			 int querylength, Compress_T query_compress, bool plusp, int genestrand,
+			 int querylength, Compress_T query_compress, bool plusp, int genestrand, bool first_read_p,
 			 int nmisses_allowed, int nmisses_seen, int miss_querypos5, int miss_querypos3) {
   List_T spanningset;
   Stage3end_T hit;
@@ -1751,7 +2012,26 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	/* Partner is guaranteed to be atomic */
 	local_goal = goal - elt->partner_diagterm;
 
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	if (elt->partner_npositions > 0 &&
+	    (((Univcoord_T) *elt->partner_positions_high) << 32) + (*elt->partner_positions_low) < local_goal) {
+	  debug7(printf("  (%d>>",elt->partner_npositions));
+	  j = 1;
+	  while (j < elt->partner_npositions &&
+		 ((Univcoord_T) elt->partner_positions_high[j] << 32) + elt->partner_positions_low[j] < local_goal) {
+	    j <<= 1;		/* gallop by 2 */
+	  }
+	  if (j >= elt->partner_npositions) {
+	    j = binary_search_large(j >> 1,elt->partner_npositions,elt->partner_positions_high,elt->partner_positions_low,local_goal);
+	  } else {
+	    j = binary_search_large(j >> 1,j,elt->partner_positions_high,elt->partner_positions_low,local_goal);
+	  }
+	  elt->partner_positions_high += j;
+	  elt->partner_positions_low += j;
+	  elt->partner_npositions -= j;
+	  debug7(printf("  >>%d)",elt->partner_npositions));
+	}
+#elif defined(WORDS_BIGENDIAN)
 	if (elt->partner_npositions > 0 && Bigendian_convert_univcoord(*elt->partner_positions) < local_goal) {
 	  debug7(printf("  (%d>>",elt->partner_npositions));
 	  j = 1;
@@ -1803,7 +2083,21 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	    if (elt->miss_querypos3 > miss_querypos3) miss_querypos3 = elt->miss_querypos3;
 	    continue;		/* Don't need to check main list below */
 	  }
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	} else if ((((Univcoord_T) *elt->partner_positions_high) << 32) + (*elt->partner_positions_low) > local_goal) {
+	  /* Advanced past local_goal, so continue with one more miss seen. */
+	  debug7(printf(" not in partner --"));
+	  if (++nmisses_seen > nmisses_allowed) {
+	    debug7(printf(" nmisses seen %d > allowed %d, so returning\n",nmisses_seen,nmisses_allowed));
+	    return hits;
+	  } else {
+	    debug7(printf("  nmisses seen %d <= allowed %d, so continuing\n",nmisses_seen,nmisses_allowed));
+	    if (elt->miss_querypos5 < miss_querypos5) miss_querypos5 = elt->miss_querypos5;
+	    if (elt->miss_querypos3 > miss_querypos3) miss_querypos3 = elt->miss_querypos3;
+	    continue;		/* Don't need to check main list below */
+	  }
+
+#elif defined(WORDS_BIGENDIAN)
 	} else if (Bigendian_convert_univcoord(*elt->partner_positions) > local_goal) {
 	  /* Advanced past local_goal, so continue with one more miss seen. */
 	  debug7(printf(" not in partner --"));
@@ -1833,7 +2127,12 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	} else {
 	  /* Found local_goal.  Advance past local_goal and continue with rest of compound querypos */
 	  debug7(printf(" found in partner, so continue with rest of compound querypos\n"));
+#ifdef LARGE_GENOMES
+	  ++elt->partner_positions_high;
+	  ++elt->partner_positions_low;
+#else
 	  ++elt->partner_positions;
+#endif
 	  --elt->partner_npositions;
 	  /* Continue below with main list */
 	}
@@ -1881,7 +2180,26 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	/* Ordinary querypos */
 	local_goal = goal - elt->diagterm;
 
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	if (elt->npositions > 0 && (((Univcoord_T) *elt->positions_high) << 32) + (*elt->positions_low) < local_goal) {
+	  debug7(printf("  (%d>>",elt->npositions));
+	  j = 1;
+	  while (j < elt->npositions &&
+		 ((Univcoord_T) elt->positions_high[j] << 32) + elt->positions_low[j] < local_goal) {
+	    j <<= 1;		/* gallop by 2 */
+	  }
+	  if (j >= elt->npositions) {
+	    j = binary_search_large(j >> 1,elt->npositions,elt->positions_high,elt->positions_low,local_goal);
+	  } else {
+	    j = binary_search_large(j >> 1,j,elt->positions_high,elt->positions_low,local_goal);
+	  }
+	  elt->positions_high += j;
+	  elt->positions_low += j;
+	  elt->npositions -= j;
+	  debug7(printf("  >>%d)",elt->npositions));
+	}
+
+#elif defined(WORDS_BIGENDIAN)
 	if (elt->npositions > 0 && Bigendian_convert_univcoord(*elt->positions) < local_goal) {
 	  debug7(printf("  (%d>>",elt->npositions));
 	  j = 1;
@@ -1933,7 +2251,20 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	    if (elt->miss_querypos3 > miss_querypos3) miss_querypos3 = elt->miss_querypos3;
 	    /* continue; -- Naturally falls to end of loop */
 	  }
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	} else if ((((Univcoord_T) *elt->positions_high) << 32) + (*elt->positions_low) > local_goal) {
+	  /* Already advanced past goal, so continue with one more miss seen. */
+	  debug7(printf(" one miss %lu > %lu --",(((Univcoord_T) *elt->positions_high) << 32) + (*elt->positions_low),local_goal));
+	  if (++nmisses_seen > nmisses_allowed) {
+	    debug7(printf(" nmisses seen %d > allowed %d, so returning\n",nmisses_seen,nmisses_allowed));
+	    return hits;
+	  } else {
+	    debug7(printf("  nmisses seen %d <= allowed %d, so continuing\n",nmisses_seen,nmisses_allowed));
+	    if (elt->miss_querypos5 < miss_querypos5) miss_querypos5 = elt->miss_querypos5;
+	    if (elt->miss_querypos3 > miss_querypos3) miss_querypos3 = elt->miss_querypos3;
+	    /* continue; -- Naturally falls to end of loop */
+	  }
+#elif defined(WORDS_BIGENDIAN)
 	} else if (Bigendian_convert_univcoord(*elt->positions) > local_goal) {
 	  /* Already advanced past goal, so continue with one more miss seen. */
 	  debug7(printf(" one miss %lu > %lu --",Bigendian_convert_univcoord(*elt->positions),local_goal));
@@ -1963,7 +2294,12 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	} else {
 	  /* Found goal.  Advance past goal and continue with loop. */
 	  debug7(printf(" advancing\n"));
+#ifdef LARGE_GENOMES
+	  ++elt->positions_high;
+	  ++elt->positions_low;
+#else
 	  ++elt->positions;
+#endif
 	  --elt->npositions;
 	  /* continue; -- Naturally falls to end of loop */
 	}
@@ -1989,7 +2325,7 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
       return hits;
     } else {
       return report_perfect_segment(&(*found_score),&(*nhits),hits,left,*chrnum,*chroffset,*chrhigh,*chrlength,
-				    querylength,query_compress,nmisses_allowed,plusp,genestrand);
+				    querylength,query_compress,nmisses_allowed,plusp,genestrand,first_read_p);
     }
   } else {
     if (goal < (unsigned int) querylength) {
@@ -2012,11 +2348,11 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
       if (snpp || mode != STANDARD || spansize != index1part) {
 	debug7(printf("  Testing in entire query\n"));
 	nmismatches = Genome_count_mismatches_substring(query_compress,left,/*pos5*/0,/*pos3*/querylength,
-							plusp,genestrand);
+							plusp,genestrand,first_read_p);
       } else {
 	debug7(printf("  Testing in query bounds %d..%d\n",miss_querypos5,miss_querypos3));
 	nmismatches = Genome_count_mismatches_substring(query_compress,left,/*pos5*/miss_querypos5,/*pos3*/miss_querypos3,
-							plusp,genestrand);
+							plusp,genestrand,first_read_p);
 
       }
       debug7(printf("nmismatches = %d (vs %d misses allowed)\n",nmismatches,nmisses_allowed));
@@ -2029,8 +2365,9 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
 	debug(printf("Reporting hit with %d mismatches\n",nmismatches));
 	if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
 					      left,/*genomiclength*/querylength,
-					      query_compress,plusp,genestrand,
-					      *chrnum,*chroffset,*chrhigh,*chrlength)) == NULL) {
+					      query_compress,plusp,genestrand,first_read_p,
+					      *chrnum,*chroffset,*chrhigh,*chrlength,
+					      /*sarrayp*/false)) == NULL) {
 	  return hits;
 	} else {
 	  *nhits += 1;
@@ -2046,7 +2383,7 @@ identify_multimiss_iter (int *found_score, Chrnum_T *chrnum, Univcoord_T *chroff
    stored as compoundpos, we no longer want to use them for boosting */
 static void
 most_specific_oligomer_1 (int *best_plus_querypos, int *best_minus_querypos, T this,
-			  int query_lastpos, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev) {
+			  int query_lastpos, Indexdb_T plus_indexdb, Indexdb_T minus_indexdb) {
   int querypos;
   int best_plus_count, best_minus_count;
 
@@ -2063,8 +2400,8 @@ most_specific_oligomer_1 (int *best_plus_querypos, int *best_minus_querypos, T t
 #if 0
     if (this->validp[querypos] == true) {
 #endif
-      this->plus_npositions[querypos] = Indexdb_count_no_subst(indexdb_fwd,this->forward_oligos[querypos]);
-      this->minus_npositions[querypos] = Indexdb_count_no_subst(indexdb_rev,this->revcomp_oligos[querypos]);
+      this->plus_npositions[querypos] = Indexdb_count_no_subst(plus_indexdb,this->forward_oligos[querypos]);
+      this->minus_npositions[querypos] = Indexdb_count_no_subst(minus_indexdb,this->revcomp_oligos[querypos]);
       debug(printf("Counting at querypos %d, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		   querypos,this->plus_npositions[querypos],this->forward_oligos[querypos],
 		   this->minus_npositions[querypos],this->revcomp_oligos[querypos]));
@@ -2090,7 +2427,7 @@ most_specific_oligomer_1 (int *best_plus_querypos, int *best_minus_querypos, T t
    stored as compoundpos, we no longer want to use them for boosting */
 static void
 most_specific_oligomer_2 (int *best_plus_querypos, int *best_minus_querypos, T this,
-			  int query_lastpos, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev) {
+			  int query_lastpos, Indexdb_T plus_indexdb, Indexdb_T minus_indexdb) {
   int querypos, mod;
   int best_plus_count[2], best_minus_count[2];
 
@@ -2112,8 +2449,8 @@ most_specific_oligomer_2 (int *best_plus_querypos, int *best_minus_querypos, T t
     this->minus_npositions[-1] = 0;
   } else {
 #endif
-    this->plus_npositions[-1] = Indexdb_count_left_subst_1(indexdb_fwd,this->forward_oligos[0]);
-    this->minus_npositions[-1] = Indexdb_count_right_subst_1(indexdb_rev,this->revcomp_oligos[0]);
+    this->plus_npositions[-1] = Indexdb_count_left_subst_1(plus_indexdb,this->forward_oligos[0]);
+    this->minus_npositions[-1] = Indexdb_count_right_subst_1(minus_indexdb,this->revcomp_oligos[0]);
     debug(printf("Counting at querypos 0, neg 1, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		 this->plus_npositions[-1],this->forward_oligos[0],this->minus_npositions[-1],this->revcomp_oligos[0]));
     best_plus_count[1] = this->plus_npositions[-1];
@@ -2127,8 +2464,8 @@ most_specific_oligomer_2 (int *best_plus_querypos, int *best_minus_querypos, T t
     if (this->validp[querypos] == true) {
 #endif
       mod = querypos % 2;
-      this->plus_npositions[querypos] = Indexdb_count_no_subst(indexdb_fwd,this->forward_oligos[querypos]);
-      this->minus_npositions[querypos] = Indexdb_count_no_subst(indexdb_rev,this->revcomp_oligos[querypos]);
+      this->plus_npositions[querypos] = Indexdb_count_no_subst(plus_indexdb,this->forward_oligos[querypos]);
+      this->minus_npositions[querypos] = Indexdb_count_no_subst(minus_indexdb,this->revcomp_oligos[querypos]);
       debug(printf("Counting at querypos %d, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		   querypos,this->plus_npositions[querypos],this->forward_oligos[querypos],
 		   this->minus_npositions[querypos],this->revcomp_oligos[querypos]));
@@ -2156,8 +2493,8 @@ most_specific_oligomer_2 (int *best_plus_querypos, int *best_minus_querypos, T t
   } else {
 #endif
     mod = (querypos+1) % 2;
-    this->plus_npositions[querypos+1] = Indexdb_count_right_subst_1(indexdb_fwd,this->forward_oligos[querypos]);
-    this->minus_npositions[querypos+1] = Indexdb_count_left_subst_1(indexdb_rev,this->revcomp_oligos[querypos]);
+    this->plus_npositions[querypos+1] = Indexdb_count_right_subst_1(plus_indexdb,this->forward_oligos[querypos]);
+    this->minus_npositions[querypos+1] = Indexdb_count_left_subst_1(minus_indexdb,this->revcomp_oligos[querypos]);
     debug(printf("Counting at querypos %d, pos 1, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		 querypos,this->plus_npositions[querypos+1],this->forward_oligos[querypos],
 		 this->minus_npositions[querypos+1],this->revcomp_oligos[querypos]));
@@ -2185,7 +2522,7 @@ most_specific_oligomer_2 (int *best_plus_querypos, int *best_minus_querypos, T t
    stored as compoundpos, we no longer want to use them for boosting */
 static void
 most_specific_oligomer_3 (int *best_plus_querypos, int *best_minus_querypos, T this,
-			  int query_lastpos, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev) {
+			  int query_lastpos, Indexdb_T plus_indexdb, Indexdb_T minus_indexdb) {
   int querypos, mod;
   int best_plus_count[3], best_minus_count[3];
 
@@ -2211,15 +2548,15 @@ most_specific_oligomer_3 (int *best_plus_querypos, int *best_minus_querypos, T t
     this->minus_npositions[-1] = 0;
   } else {
 #endif
-    this->plus_npositions[-2] = Indexdb_count_left_subst_2(indexdb_fwd,this->forward_oligos[0]);
-    this->minus_npositions[-2] = Indexdb_count_right_subst_2(indexdb_rev,this->revcomp_oligos[0]);
+    this->plus_npositions[-2] = Indexdb_count_left_subst_2(plus_indexdb,this->forward_oligos[0]);
+    this->minus_npositions[-2] = Indexdb_count_right_subst_2(minus_indexdb,this->revcomp_oligos[0]);
     debug(printf("Counting at querypos 0, neg 2, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		 this->plus_npositions[-2],this->forward_oligos[0],this->minus_npositions[-2],this->revcomp_oligos[0]));
     best_plus_count[1] = this->plus_npositions[-2];
     best_minus_count[1] = this->minus_npositions[-2];
 
-    this->plus_npositions[-1] = Indexdb_count_left_subst_1(indexdb_fwd,this->forward_oligos[0]);
-    this->minus_npositions[-1] = Indexdb_count_right_subst_1(indexdb_rev,this->revcomp_oligos[0]);
+    this->plus_npositions[-1] = Indexdb_count_left_subst_1(plus_indexdb,this->forward_oligos[0]);
+    this->minus_npositions[-1] = Indexdb_count_right_subst_1(minus_indexdb,this->revcomp_oligos[0]);
     debug(printf("Counting at querypos 0, neg 1, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		 this->plus_npositions[-1],this->forward_oligos[0],this->minus_npositions[-1],this->revcomp_oligos[0]));
     best_plus_count[2] = this->plus_npositions[-1];
@@ -2233,8 +2570,8 @@ most_specific_oligomer_3 (int *best_plus_querypos, int *best_minus_querypos, T t
     if (this->validp[querypos] == true) {
 #endif
       mod = querypos % 3;
-      this->plus_npositions[querypos] = Indexdb_count_no_subst(indexdb_fwd,this->forward_oligos[querypos]);
-      this->minus_npositions[querypos] = Indexdb_count_no_subst(indexdb_rev,this->revcomp_oligos[querypos]);
+      this->plus_npositions[querypos] = Indexdb_count_no_subst(plus_indexdb,this->forward_oligos[querypos]);
+      this->minus_npositions[querypos] = Indexdb_count_no_subst(minus_indexdb,this->revcomp_oligos[querypos]);
       debug(printf("Counting at querypos %d, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		   querypos,this->plus_npositions[querypos],this->forward_oligos[querypos],
 		   this->minus_npositions[querypos],this->revcomp_oligos[querypos]));
@@ -2264,8 +2601,8 @@ most_specific_oligomer_3 (int *best_plus_querypos, int *best_minus_querypos, T t
   } else {
 #endif
     mod = (querypos+1) % 3;
-    this->plus_npositions[querypos+1] = Indexdb_count_right_subst_1(indexdb_fwd,this->forward_oligos[querypos]);
-    this->minus_npositions[querypos+1] = Indexdb_count_left_subst_1(indexdb_rev,this->revcomp_oligos[querypos]);
+    this->plus_npositions[querypos+1] = Indexdb_count_right_subst_1(plus_indexdb,this->forward_oligos[querypos]);
+    this->minus_npositions[querypos+1] = Indexdb_count_left_subst_1(minus_indexdb,this->revcomp_oligos[querypos]);
     debug(printf("Counting at querypos %d, pos 1, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		 querypos,this->plus_npositions[querypos+1],this->forward_oligos[querypos],
 		 this->minus_npositions[querypos+1],this->revcomp_oligos[querypos]));
@@ -2283,8 +2620,8 @@ most_specific_oligomer_3 (int *best_plus_querypos, int *best_minus_querypos, T t
 #endif
 
     mod = (querypos+2) % 3;
-    this->plus_npositions[querypos+2] = Indexdb_count_right_subst_2(indexdb_fwd,this->forward_oligos[querypos]);
-    this->minus_npositions[querypos+2] = Indexdb_count_left_subst_2(indexdb_rev,this->revcomp_oligos[querypos]);
+    this->plus_npositions[querypos+2] = Indexdb_count_right_subst_2(plus_indexdb,this->forward_oligos[querypos]);
+    this->minus_npositions[querypos+2] = Indexdb_count_left_subst_2(minus_indexdb,this->revcomp_oligos[querypos]);
     debug(printf("Counting at querypos %d, pos 2, plus_npositions = %d (oligo %06X), minus_npositions = %d (oligo %06X)\n",
 		 querypos,this->plus_npositions[querypos+2],this->forward_oligos[querypos],
 		 this->minus_npositions[querypos+2],this->revcomp_oligos[querypos]));
@@ -2310,14 +2647,19 @@ most_specific_oligomer_3 (int *best_plus_querypos, int *best_minus_querypos, T t
 
 
 static List_T
-find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestrand,
-			     int querylength, int query_lastpos, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
+find_spanning_exact_matches (int *found_score, int *nhits, List_T hits, T this, int genestrand, bool first_read_p,
+			     int querylength, int query_lastpos, Indexdb_T plus_indexdb, Indexdb_T minus_indexdb,
 			     Compress_T query_compress_fwd, Compress_T query_compress_rev) {
-  List_T hits = NULL;
   List_T spanningset, sorted;
   Spanningelt_T *array;
   int best_plus_querypos[MAX_INDEX1INTERVAL], best_minus_querypos[MAX_INDEX1INTERVAL];
-  Univcoord_T *diagonals0, *positions0, diagonal0;
+  Univcoord_T *diagonals0, diagonal0;
+#ifdef LARGE_GENOMES
+  unsigned char *positions0_high;
+  UINT4 *positions0_low;
+#else
+  Univcoord_T *positions0;
+#endif
   int diagterm0, ndiagonals0, npositions0;
   int boostpos, mod, nelts, minscore, i;
   int global_miss_querypos5, global_miss_querypos3, elt_miss_querypos5, elt_miss_querypos3;
@@ -2327,22 +2669,26 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
   Chrpos_T chrlength;
 
   debug(printf("Starting find_spanning_exact_matches\n"));
-  *nhits = 0;
 
   /* Use shortest list for candidate generation */
   if (index1interval == 3) {
-    most_specific_oligomer_3(best_plus_querypos,best_minus_querypos,this,query_lastpos,indexdb_fwd,indexdb_rev);
+    most_specific_oligomer_3(best_plus_querypos,best_minus_querypos,this,query_lastpos,plus_indexdb,minus_indexdb);
   } else if (index1interval == 2) {
-    most_specific_oligomer_2(best_plus_querypos,best_minus_querypos,this,query_lastpos,indexdb_fwd,indexdb_rev);
+    most_specific_oligomer_2(best_plus_querypos,best_minus_querypos,this,query_lastpos,plus_indexdb,minus_indexdb);
   } else {
-    most_specific_oligomer_1(best_plus_querypos,best_minus_querypos,this,query_lastpos,indexdb_fwd,indexdb_rev);
+    most_specific_oligomer_1(best_plus_querypos,best_minus_querypos,this,query_lastpos,plus_indexdb,minus_indexdb);
   }
 
   /* Plus */
   for (mod = 0; mod < index1interval; mod++) {
     chrhigh = 0U;
-    spanningset = Spanningelt_set(&minscore,this->forward_oligos,&this->plus_retrievedp,&this->plus_positions,
-				  &this->plus_npositions,indexdb_fwd,query_lastpos,querylength,mod,/*plusp*/true);
+    spanningset = Spanningelt_set(&minscore,this->forward_oligos,&this->plus_retrievedp,
+#ifdef LARGE_GENOMES
+				  &this->plus_positions_high,&this->plus_positions_low,
+#else
+				  &this->plus_positions,
+#endif
+				  &this->plus_npositions,plus_indexdb,query_lastpos,querylength,mod,/*plusp*/true);
     nelts = List_length(spanningset);
     array = (Spanningelt_T *) List_to_array(spanningset,NULL);
     List_free(&spanningset);
@@ -2361,10 +2707,21 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
       this->plus_spanningset[mod] = sorted;
 
       /* Get boost positions */
+#ifdef LARGE_GENOMES
+      this->plus_positions_low[boostpos] =
+	Indexdb_read_inplace(&(this->plus_npositions[boostpos]),&(this->plus_positions_high[boostpos]),
+			     plus_indexdb,this->forward_oligos[boostpos]);
+#else
       this->plus_positions[boostpos] =
-	Indexdb_read_inplace(&(this->plus_npositions[boostpos]),indexdb_fwd,this->forward_oligos[boostpos]);
+	Indexdb_read_inplace(&(this->plus_npositions[boostpos]),plus_indexdb,this->forward_oligos[boostpos]);
+#endif
       this->plus_retrievedp[boostpos] = true;
+#ifdef LARGE_GENOMES
+      positions0_high = this->plus_positions_high[boostpos];
+      positions0_low = this->plus_positions_low[boostpos];
+#else
       positions0 = this->plus_positions[boostpos];
+#endif
       npositions0 = this->plus_npositions[boostpos];
       diagterm0 = querylength - boostpos; /* FORMULA */
 
@@ -2378,7 +2735,10 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
       global_miss_querypos3 = 0;
 
       while (--npositions0 >= 0 && nempty == 0 && *nhits <= maxpaths_search) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	debug7(printf("diag0 %d:%lu+%d advancing\n",npositions0,(((Univcoord_T) *positions0_high++) << 32) + (*positions0_low++),diagterm0));
+	diagonal0 = (((Univcoord_T) *positions0_high++) << 32) + (*positions0_low++) + diagterm0;
+#elif defined(WORDS_BIGENDIAN)
 	debug7(printf("diag0 %d:%lu+%d advancing\n",npositions0,Bigendian_convert_univcoord(*positions0),diagterm0));
 	diagonal0 = Bigendian_convert_univcoord(*positions0++) + diagterm0;
 #else
@@ -2388,7 +2748,7 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal0,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_fwd,
-				       /*plusp*/true,genestrand,/*nmisses_allowed*/0,
+				       /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/0,
 				       /*nmisses_seen*/0,global_miss_querypos5,global_miss_querypos3);
       }
       List_free(&spanningset);
@@ -2420,7 +2780,7 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,*diagonals0++,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_fwd,
-				       /*plusp*/true,genestrand,/*nmisses_allowed*/0,
+				       /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/0,
 				       /*nmisses_seen*/0,global_miss_querypos5,global_miss_querypos3);
       }
       List_free(&spanningset);
@@ -2430,8 +2790,13 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
   /* Minus */
   for (mod = 0; mod < index1interval; mod++) {
     chrhigh = 0U;
-    spanningset = Spanningelt_set(&minscore,this->revcomp_oligos,&this->minus_retrievedp,&this->minus_positions,
-				  &this->minus_npositions,indexdb_rev,query_lastpos,querylength,mod,/*plusp*/false);
+    spanningset = Spanningelt_set(&minscore,this->revcomp_oligos,&this->minus_retrievedp,
+#ifdef LARGE_GENOMES
+				  &this->minus_positions_high,&this->minus_positions_low,
+#else
+				  &this->minus_positions,
+#endif
+				  &this->minus_npositions,minus_indexdb,query_lastpos,querylength,mod,/*plusp*/false);
     nelts = List_length(spanningset);
     array = (Spanningelt_T *) List_to_array(spanningset,NULL);
     List_free(&spanningset);
@@ -2450,10 +2815,21 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
       this->minus_spanningset[mod] = sorted;
 
       /* Get boost positions */
+#ifdef LARGE_GENOMES
+      this->minus_positions_low[boostpos] =
+	Indexdb_read_inplace(&(this->minus_npositions[boostpos]),&(this->minus_positions_high[boostpos]),
+			     minus_indexdb,this->revcomp_oligos[boostpos]);
+#else
       this->minus_positions[boostpos] =
-	Indexdb_read_inplace(&(this->minus_npositions[boostpos]),indexdb_rev,this->revcomp_oligos[boostpos]);
+	Indexdb_read_inplace(&(this->minus_npositions[boostpos]),minus_indexdb,this->revcomp_oligos[boostpos]);
+#endif
       this->minus_retrievedp[boostpos] = true;
+#ifdef LARGE_GENOMES
+      positions0_high = this->minus_positions_high[boostpos];
+      positions0_low = this->minus_positions_low[boostpos];
+#else
       positions0 = this->minus_positions[boostpos];
+#endif
       npositions0 = this->minus_npositions[boostpos];
       diagterm0 = boostpos + index1part; /* FORMULA */
 
@@ -2467,7 +2843,10 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
       global_miss_querypos3 = 0;
 
       while (--npositions0 >= 0 && nempty == 0 && *nhits <= maxpaths_search) {
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+	debug7(printf("diag0 %d:%lu+%d advancing\n",npositions0,(((Univcoord_T) *positions0_high++) << 32) + (*positions0_low++),diagterm0));
+	diagonal0 = (((Univcoord_T) *positions0_high++) << 32) + (*positions0_low++) + diagterm0;
+#elif defined(WORDS_BIGENDIAN)
 	debug7(printf("diag0 %d:%lu+%d advancing\n",npositions0,Bigendian_convert_univcoord(*positions0),diagterm0));
 	diagonal0 = Bigendian_convert_univcoord(*positions0++) + diagterm0;
 #else
@@ -2477,7 +2856,7 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal0,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_rev,
-				       /*plusp*/false,genestrand,/*nmisses_allowed*/0,
+				       /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/0,
 				       /*nmisses_seen*/0,global_miss_querypos5,global_miss_querypos3);
       }
       List_free(&spanningset);
@@ -2509,7 +2888,7 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,*diagonals0++,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_rev,
-				       /*plusp*/false,genestrand,/*nmisses_allowed*/0,
+				       /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/0,
 				       /*nmisses_seen*/0,global_miss_querypos5,global_miss_querypos3);
       }
       List_free(&spanningset);
@@ -2521,8 +2900,8 @@ find_spanning_exact_matches (int *found_score, int *nhits, T this, int genestran
 
 
 static List_T
-find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this, int genestrand, int querylength,
-			       Compress_T query_compress_fwd, Compress_T query_compress_rev) {
+find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this, int genestrand, bool first_read_p,
+			       int querylength, Compress_T query_compress_fwd, Compress_T query_compress_rev) {
   List_T spanningset, sorted;
   Spanningelt_T *array;
   Univcoord_T *diagonals0, *diagonals1, diagonal0, diagonal1;
@@ -2575,7 +2954,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal0,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_fwd,
-				       /*plusp*/true,genestrand,/*nmisses_allowed*/1,
+				       /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/1,
 				       /*nmisses_seen*/1+nempty,miss1_querypos5,miss1_querypos3);
 	++diagonals0;
 	--ndiagonals0;
@@ -2585,7 +2964,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal1,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_fwd,
-				       /*plusp*/true,genestrand,/*nmisses_allowed*/1,
+				       /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/1,
 				       /*nmisses_seen*/1+nempty,miss0_querypos5,miss0_querypos3);
 	++diagonals1;
 	--ndiagonals1;
@@ -2595,7 +2974,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal0,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_fwd,
-				       /*plusp*/true,genestrand,/*nmisses_allowed*/1,
+				       /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/1,
 				       /*nmisses_seen*/nempty,global_miss_querypos5,global_miss_querypos3);
 	++diagonals0;
 	--ndiagonals0;
@@ -2609,7 +2988,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
       hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,*diagonals0++,
 				     /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				     querylength,/*query_compress*/query_compress_fwd,
-				     /*plusp*/true,genestrand,/*nmisses_allowed*/1,
+				     /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/1,
 				     /*nmisses_seen*/1+nempty,miss1_querypos5,miss1_querypos3);
     }
 
@@ -2618,7 +2997,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
       hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,*diagonals1++,
 				     /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				     querylength,/*query_compress*/query_compress_fwd,
-				     /*plusp*/true,genestrand,/*nmisses_allowed*/1,
+				     /*plusp*/true,genestrand,first_read_p,/*nmisses_allowed*/1,
 				     /*nmisses_seen*/1+nempty,miss0_querypos5,miss0_querypos3);
     }
 
@@ -2663,7 +3042,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal0,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_rev,
-				       /*plusp*/false,genestrand,/*nmisses_allowed*/1,
+				       /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/1,
 				       /*nmisses_seen*/1+nempty,miss1_querypos5,miss1_querypos3);
 	++diagonals0;
 	--ndiagonals0;
@@ -2673,7 +3052,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal1,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_rev,
-				       /*plusp*/false,genestrand,/*nmisses_allowed*/1,
+				       /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/1,
 				       /*nmisses_seen*/1+nempty,miss0_querypos5,miss0_querypos3);
 	++diagonals1;
 	--ndiagonals1;
@@ -2683,7 +3062,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal0,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_rev,
-				       /*plusp*/false,genestrand,/*nmisses_allowed*/1,
+				       /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/1,
 				       /*nmisses_seen*/nempty,global_miss_querypos5,global_miss_querypos3);
 	++diagonals0;
 	--ndiagonals0;
@@ -2697,7 +3076,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
       hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,*diagonals0++,
 				     /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				     querylength,/*query_compress*/query_compress_rev,
-				     /*plusp*/false,genestrand,/*nmisses_allowed*/1,
+				     /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/1,
 				     /*nmisses_seen*/1+nempty,miss1_querypos5,miss1_querypos3);
     }
 
@@ -2706,7 +3085,7 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
       hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,*diagonals1++,
 				     /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				     querylength,/*query_compress*/query_compress_rev,
-				     /*plusp*/false,genestrand,/*nmisses_allowed*/1,
+				     /*plusp*/false,genestrand,first_read_p,/*nmisses_allowed*/1,
 				     /*nmisses_seen*/1+nempty,miss0_querypos5,miss0_querypos3);
     }
 
@@ -2718,8 +3097,8 @@ find_spanning_onemiss_matches (int *found_score, int *nhits, List_T hits, T this
 
 
 static List_T
-find_spanning_multimiss_matches (int *found_score, int *nhits, List_T hits, T this, int genestrand, int nrequired, int querylength,
-				 Compress_T query_compress_fwd, Compress_T query_compress_rev,
+find_spanning_multimiss_matches (int *found_score, int *nhits, List_T hits, T this, int genestrand, bool first_read_p,
+				 int nrequired, int querylength, Compress_T query_compress_fwd, Compress_T query_compress_rev,
 				 int nmisses_allowed) {
   Univcoord_T *diagonals, diagonal;
   List_T spanningset, sorted;
@@ -2854,7 +3233,7 @@ find_spanning_multimiss_matches (int *found_score, int *nhits, List_T hits, T th
 	    hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal,
 					   /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 					   querylength,/*query_compress*/query_compress_fwd,
-					   /*plusp*/true,genestrand,nmisses_allowed,
+					   /*plusp*/true,genestrand,first_read_p,nmisses_allowed,
 					   /*nmisses_seen*/nunion-count+nempty,global_miss_querypos5,global_miss_querypos3);
 	  }
 	  diagonal = batch->diagonal;
@@ -2898,7 +3277,7 @@ find_spanning_multimiss_matches (int *found_score, int *nhits, List_T hits, T th
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_fwd,
-				       /*plusp*/true,genestrand,nmisses_allowed,
+				       /*plusp*/true,genestrand,first_read_p,nmisses_allowed,
 				       /*nmisses_seen*/nunion-count+nempty,global_miss_querypos5,global_miss_querypos3);
       }
       List_free(&spanningset);
@@ -3015,7 +3394,7 @@ find_spanning_multimiss_matches (int *found_score, int *nhits, List_T hits, T th
 	    hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal,
 					   /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 					   querylength,/*query_compress*/query_compress_rev,
-					   /*plusp*/false,genestrand,nmisses_allowed,
+					   /*plusp*/false,genestrand,first_read_p,nmisses_allowed,
 					   /*nmisses_seen*/nunion-count+nempty,global_miss_querypos5,global_miss_querypos3);
 	  }
 	  diagonal = batch->diagonal;
@@ -3059,7 +3438,7 @@ find_spanning_multimiss_matches (int *found_score, int *nhits, List_T hits, T th
 	hits = identify_multimiss_iter(&(*found_score),&chrnum,&chroffset,&chrhigh,&chrlength,&(*nhits),hits,diagonal,
 				       /*prev*/spanningset,&nempty,&global_miss_querypos5,&global_miss_querypos3,
 				       querylength,/*query_compress*/query_compress_rev,
-				       /*plusp*/false,genestrand,nmisses_allowed,
+				       /*plusp*/false,genestrand,first_read_p,nmisses_allowed,
 				       /*nmisses_seen*/nunion-count+nempty,global_miss_querypos5,global_miss_querypos3);
       }
       List_free(&spanningset);
@@ -3125,7 +3504,7 @@ trim_ends_unknowns_only (int *trim5, int *trim3, char *sequence1, char *sequence
 static List_T
 find_complete_mm (int *found_score, int *nhits, List_T hits, struct Segment_T *segments, int nsegments,
 		  int querylength, Compress_T query_compress,
-		  int max_mismatches_allowed, bool plusp, int genestrand) {
+		  int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p) {
   Stage3end_T hit;
   int nmismatches;
   Univcoord_T left;
@@ -3137,12 +3516,13 @@ find_complete_mm (int *found_score, int *nhits, List_T hits, struct Segment_T *s
     } else if (segmenti->floor <= max_mismatches_allowed) {
       left = segmenti->diagonal - querylength;
       nmismatches = Genome_count_mismatches_limit(query_compress,left,/*pos5*/0,/*pos3*/querylength,
-						  max_mismatches_allowed,plusp,genestrand);
+						  max_mismatches_allowed,plusp,genestrand,first_read_p);
       if (nmismatches <= max_mismatches_allowed) {
 	if ((hit = Stage3end_new_substitution(&(*found_score),nmismatches,
 					      left,/*genomiclength*/querylength,
-					      query_compress,plusp,genestrand,segmenti->chrnum,
-					      segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength)) != NULL) {
+					      query_compress,plusp,genestrand,first_read_p,segmenti->chrnum,
+					      segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+					      /*sarrayp*/false)) != NULL) {
 	  segmenti->usedp = true;
 	  *nhits += 1;
 	  hits = List_push(hits,(void *) hit);
@@ -3155,12 +3535,14 @@ find_complete_mm (int *found_score, int *nhits, List_T hits, struct Segment_T *s
 }
 
 
-
-#ifdef USE_HEAPSORT
-/* For 32-bit computers.  Uses heapsort. */
 static struct Segment_T *
-identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
-		       bool *omitted, int querylength, int query_lastpos, Floors_T floors,
+identify_all_segments (int *nsegments, Segment_T **spliceable, int *nspliceable,
+#ifdef LARGE_GENOMES
+		       unsigned char **positions_high, UINT4 **positions_low,
+#else
+		       Univcoord_T **positions,
+#endif
+		       int *npositions, bool *omitted, int querylength, int query_lastpos, Floors_T floors,
 		       bool plusp) {
   struct Segment_T *segments = NULL;
   Batch_T batch, sentinel;
@@ -3174,7 +3556,7 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
   int *floors_from_neg3, *floors_from_xfirst, *floors_to_xlast, *floors_to_pos3;
   /* int exclude_xfirst, exclude_xlast; */
   Univcoord_T diagonal, segment_left, last_diagonal, chroffset = 0U, chrhigh = 0U;
-  Chrpos_T chrlength;
+  Chrpos_T chrlength, max_distance;
   Chrnum_T chrnum = 1;
 #ifdef OLD_FLOOR_ENDS
   int halfquerylength, halfquery_lastpos;
@@ -3187,6 +3569,8 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
   int joffset = 0, j;
 
   Segment_T ptr, ptr_chrstart;
+  Segment_T *ptr_spliceable;
+  bool next_spliceable_p;
 #ifdef DEBUG19
   Segment_T ptr0;
   int k;
@@ -3227,8 +3611,8 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
   sentinel = &sentinel_struct;
 
   /* Set up batches */
-  batchpool = (struct Batch_T *) CALLOC(query_lastpos+1,sizeof(struct Batch_T));
-  heap = (Batch_T *) CALLOC(2*(query_lastpos+1)+1+1,sizeof(Batch_T));
+  batchpool = (struct Batch_T *) MALLOC((query_lastpos+1) * sizeof(struct Batch_T));
+  heap = (Batch_T *) MALLOC((2*(query_lastpos+1)+1+1) * sizeof(Batch_T));
 
   /* Don't add entries for compoundpos positions (skip querypos -2, -1, lastpos+1, lastpos+2) */
   if (plusp) {
@@ -3240,7 +3624,12 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
 		      querypos,npositions[querypos],omitted[querypos]));
 	batch = &(batchpool[i]);
+#ifdef LARGE_GENOMES
+	Batch_init(batch,querypos,/*diagterm*/querylength - querypos,positions_high[querypos],positions_low[querypos],
+		   npositions[querypos],querylength);
+#else
 	Batch_init(batch,querypos,/*diagterm*/querylength - querypos,positions[querypos],npositions[querypos],querylength);
+#endif
 	total_npositions += npositions[querypos];
 	if (batch->npositions > 0) {
 	  min_heap_insert(heap,&heapsize,batch);
@@ -3260,7 +3649,12 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
 		      querypos,npositions[querypos],omitted[querypos]));
 	batch = &(batchpool[i]);
+#ifdef LARGE_GENOMES
+	Batch_init(batch,querypos,/*diagterm*/querypos + index1part,positions_high[querypos],positions_low[querypos],
+		   npositions[querypos],querylength);
+#else
 	Batch_init(batch,querypos,/*diagterm*/querypos + index1part,positions[querypos],npositions[querypos],querylength);
+#endif
 	total_npositions += npositions[querypos];
 	if (batch->npositions > 0) {
 	  min_heap_insert(heap,&heapsize,batch);
@@ -3291,8 +3685,13 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
   }
 
   /* Putting chr marker "segments" after each chromosome */
-  segments = (struct Segment_T *) CALLOC(total_npositions + nchromosomes,sizeof(struct Segment_T));
+  segments = (struct Segment_T *) MALLOC((total_npositions + nchromosomes) * sizeof(struct Segment_T));
   ptr_chrstart = ptr = &(segments[0]);
+  if (overall_max_distance == 0) {
+    ptr_spliceable = *spliceable = (Segment_T *) NULL;
+  } else {
+    ptr_spliceable = *spliceable = (Segment_T *) CALLOC(total_npositions,sizeof(Segment_T));
+  }
 
   /*
   if ((exclude_xfirst = firstbound-2-index1part-max_end_insertions) < 3) {
@@ -3364,7 +3763,9 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 
   } else {
     /* Use this batch for insertion (same querypos) */
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    batch->diagonal = ((Univcoord_T) *(++batch->positions_high) << 32) + *(++batch->positions_low) + batch->diagterm;
+#elif defined(WORDS_BIGENDIAN)
     batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + batch->diagterm;
 #else
     batch->diagonal = *(++batch->positions) + batch->diagterm;
@@ -3474,7 +3875,7 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
       if (last_diagonal > chrhigh) {
 	if (ptr > ptr_chrstart) {
 	  /* Add chr marker segment */
-	  debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
+	  debug14(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
 	  ptr->diagonal = (Univcoord_T) -1;
 	  ptr_chrstart = ++ptr;
 	}
@@ -3486,7 +3887,11 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 	/* chrhigh += 1; */
 #else
 	j = 1;
-	goal = last_diagonal - querylength;
+#ifdef NO_EXTENSIONS_BEFORE_ZERO
+	goal = last_diagonal - querylength + 1;
+#else
+	goal = last_diagonal + 1;
+#endif
 	while (j < nchromosomes_local && chrhighs_local[j] < goal) {
 	  j <<= 1;			/* gallop by 2 */
 	}
@@ -3497,9 +3902,9 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 	}
 	chrnum += j;
 #ifdef DEBUG15
-	if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
+	if (chrnum != Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength)) {
 	  fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-		  chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
+		  chrnum,Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength));
 	  abort();
 	}
 #endif
@@ -3517,6 +3922,7 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 
 	/* Save segment, but first advance splicesites past segment_left */
 	segment_left = last_diagonal - querylength;
+	max_distance = overall_max_distance;
 	if (splicesites_local[0] >= last_diagonal) {
 	  ptr->splicesites_i = -1;
 	} else if (Splicetrie_splicesite_p(segment_left,/*pos5*/1,/*pos3*/querylength) == false) {
@@ -3541,6 +3947,13 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 	    ptr->splicesites_i = -1;
 	  } else {
 	    ptr->splicesites_i = joffset;
+	    j = joffset;
+	    while (j < nsplicesites && splicesites[j] < last_diagonal) {
+	      if (splicedists[j] > max_distance) {
+		max_distance = splicedists[j];
+	      }
+	      j++;
+	    }
 	  }
 	}
 
@@ -3563,13 +3976,41 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 #if 0
 	ptr->leftspan = ptr->rightspan = -1;
 #endif
-	ptr++;
-      }
 
-      /* Prepare next diagonal */
-      first_querypos = querypos;
-      last_diagonal = diagonal;
-      floor_incr = floors_from_neg3[first_querypos] /* floors->score[-index1interval][first_querypos] */;
+#if 0
+	/* Not doing this, because the max_distance test is already good enough */
+	if (plusp) {
+	  /* For plus-strand splicing, require segmenti->querypos3 < segmentj->querypos5,
+	     so if segmenti->querypos3 is too high, then it is not spliceable */
+	  if (last_querypos > query_lastpos) {
+	    /* Not spliceable */
+	  } else if (diagonal <= last_diagonal + max_distance) {
+	    *ptr_spliceable++ = ptr;
+	  }
+	} else {
+	  /* For minus-strand splicing, require segmenti->querypos5 > segmentj->querypos3,
+	     so if segmenti->querypos5 is too low, then it is not spliceable */
+	  if (first_querypos < index1part) {
+	    /* Not spliceable */
+	  } else if (diagonal <= last_diagonal + max_distance) {
+	    *ptr_spliceable++ = ptr;
+	  }
+	}
+#endif
+	if (diagonal <= last_diagonal + max_distance) {
+	  *ptr_spliceable++ = ptr;
+	} else {
+	  debug4s(printf("plus diagonal %u is not spliceable because next one is at %u\n",
+			 last_diagonal,diagonal));
+	}
+	debug14(printf("Saving segment at %u\n",last_diagonal));
+	ptr++;
+      }
+
+      /* Prepare next diagonal */
+      first_querypos = querypos;
+      last_diagonal = diagonal;
+      floor_incr = floors_from_neg3[first_querypos] /* floors->score[-index1interval][first_querypos] */;
       floor = floor_incr;
       floor_xlast = floor_incr;
       floor_xfirst = floors_from_xfirst[first_querypos];  /* floors->score[xfirst_from][first_querypos]; */
@@ -3607,7 +4048,9 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 
     } else {
       /* Use this batch for insertion (same querypos) */
-#ifdef WORDS_BIGENDIAN
+#ifdef LARGE_GENOMES
+    batch->diagonal = ((Univcoord_T) *(++batch->positions_high) << 32) + *(++batch->positions_low) + batch->diagterm;
+#elif defined(WORDS_BIGENDIAN)
       batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + batch->diagterm;
 #else
       batch->diagonal = *(++batch->positions) + batch->diagterm;
@@ -3679,10 +4122,11 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
   debug1(printf("no more diagonals: last_querypos = %d => terminal values: floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
 		last_querypos,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
 
+  debug1(printf("last_diagonal %u vs chrhigh %u (looking for >)\n",last_diagonal,chrhigh));
   if (last_diagonal > chrhigh) {
     if (ptr > ptr_chrstart) {
       /* Add chr marker segment */
-      debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
+      debug14(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
       ptr->diagonal = (Univcoord_T) -1;
       ptr_chrstart = ++ptr;
     }
@@ -3694,7 +4138,11 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
     /* chrhigh += 1; */
 #else
     j = 1;
-    goal = last_diagonal - querylength;
+#ifdef NO_EXTENSIONS_BEFORE_ZERO
+    goal = last_diagonal - querylength + 1;
+#else
+    goal = last_diagonal + 1;
+#endif
     while (j < nchromosomes_local && chrhighs_local[j] < goal) {
       j <<= 1;			/* gallop by 2 */
     }
@@ -3705,9 +4153,9 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
     }
     chrnum += j;
 #ifdef DEBUG15
-    if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
+    if (chrnum != Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength)) {
       fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-	      chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
+	      chrnum,Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength));
       abort();
     }
 #endif
@@ -3718,6 +4166,8 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
     nchromosomes_local -= j;
 #endif
   }
+
+  debug1(printf("last_diagonal %u vs chrhigh %u (looking for <=)\n",last_diagonal,chrhigh));
   if (last_diagonal <= chrhigh) { /* FORMULA for high position */
     /* position of high end is within current chromosome */
     debug1(printf("  => multiple_mm, diagonal %lu, query %d..%d, chrbounds %lu..%lu, floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
@@ -3725,6 +4175,10 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 
     /* Save segment, but first advance splicesites past segment_left */
     segment_left = last_diagonal - querylength;
+#if 0
+    /* Last segment is not spliceable */
+    max_distance = overall_max_distance;
+#endif
     if (splicesites_local[0] >= last_diagonal) {
       ptr->splicesites_i = -1;
     } else if (Splicetrie_splicesite_p(segment_left,/*pos5*/1,/*pos3*/querylength) == false) {
@@ -3749,6 +4203,12 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 	ptr->splicesites_i = -1;
       } else {
 	ptr->splicesites_i = joffset;
+#if 0
+	/* Last segment is not spliceable */
+	if (splicedists[joffset] > overall_max_distance) {
+	  max_distance = splicedists[joffset];
+	}
+#endif
       }
     }
 
@@ -3771,13 +4231,15 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 #if 0
     ptr->leftspan = ptr->rightspan = -1;
 #endif
+    /* Last segment is not spliceable */
+    debug14(printf("Saving segment at %u\n",last_diagonal));
     ptr++;
   }
 
 
   if (ptr > ptr_chrstart) {
     /* Final chr marker segment */
-    debug1(printf("=== ptr %p > ptr_chrstart %p, so adding final chr marker segment\n",ptr,ptr_chrstart));
+    debug14(printf("=== ptr %p > ptr_chrstart %p, so adding final chr marker segment\n",ptr,ptr_chrstart));
     ptr->diagonal = (Univcoord_T) -1;
     /* ptr_chrstart = */ ++ptr;
   }
@@ -3796,10 +4258,11 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
      reverse before solving middle deletions */
 
   *nsegments = ptr - segments;
-  debug(printf("nsegments = %d (total_npositions = %d, nchromosomes = %d)\n",
-	       *nsegments,total_npositions,nchromosomes));
-  debug1(printf("nsegments = %d (total_npositions = %d, nchromosomes = %d)\n",
-		*nsegments,total_npositions,nchromosomes));
+  *nspliceable = ptr_spliceable - *spliceable;
+  debug(printf("nsegments = %d, of which %d are spliceable (total_npositions = %d, nchromosomes = %d)\n",
+	       *nsegments,*nspliceable,total_npositions,nchromosomes));
+  debug1(printf("nsegments = %d, of which %d are spliceable (total_npositions = %d, nchromosomes = %d)\n",
+		*nsegments,*nspliceable,total_npositions,nchromosomes));
 
   assert(*nsegments <= total_npositions + nchromosomes);
 
@@ -3809,229 +4272,142 @@ identify_all_segments (int *nsegments, Univcoord_T **positions, int *npositions,
 
   return segments;
 }
-#endif
 
-#ifdef USE_QSORT
-int
-UINT8_compare (const void *a, const void *b) {
-  UINT8 x = * (UINT8 *) a;
-  UINT8 y = * (UINT8 *) b;
-
-  if (x < y) {
-    return -1;
-  } else if (y < x) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-#endif
 
-#ifdef USE_QSORT
-/* Uses qsort.  Puts genomicpos in upper 32 bits and querypos in lower 32 bits */
+/* Specialized version of identify_all_segments that stores only floor_left and floor_right */
 static struct Segment_T *
-identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions,
-		       bool *omitted, int querylength, int query_lastpos, Floors_T floors,
-		       bool plusp) {
-  UINT8* all_diagonals_add_querypos;
+identify_all_segments_for_terminals (int *nsegments,
+#ifdef LARGE_GENOMES
+				     unsigned char **positions_high, UINT4 **positions_low,
+#else
+				     Univcoord_T **positions,
+#endif
+				     int *npositions, bool *omitted, int querylength, int query_lastpos,
+				     Floors_T floors, int max_mismatches_allowed, bool plusp) {
   struct Segment_T *segments = NULL;
-  int batch_diagterm;
-  int batch_npositions;
-  Genomicpos_T *batch_positions;
-  int k;
+  Batch_T batch, sentinel;
+  struct Batch_T sentinel_struct, *batchpool;
+  Batch_T *heap;
+  int heapsize = 0;
+  int parenti, smallesti, righti, i;
   int querypos, first_querypos, last_querypos;
-  int floor, floor_xfirst, floor_xlast;
   int floor_left, floor_right, floor_incr;
-  int *floors_from_neg3, *floors_from_xfirst, *floors_to_xlast, *floors_to_pos3;
+  int *floors_from_neg3, *floors_to_pos3;
   /* int exclude_xfirst, exclude_xlast; */
-  Genomicpos_T diagonal, segment_left, last_diagonal, chroffset = 0U, chrhigh = 0U, chrlength;
+  Univcoord_T diagonal, last_diagonal, chroffset = 0U, chrhigh = 0U;
+  Chrpos_T chrlength;
   Chrnum_T chrnum = 1;
 #ifdef OLD_FLOOR_ENDS
   int halfquerylength, halfquery_lastpos;
 #endif
-
+#ifdef DIAGONAL_ADD_QUERYPOS
   UINT8 diagonal_add_querypos;
-  int total_npositions;
-  int joffset = 0, j;
-
-  Segment_T ptr, ptr_chrstart;
-#ifdef DEBUG19
-  Segment_T ptr0;
 #endif
+  int total_npositions = 0;
+  Segment_T ptr, ptr_chrstart;
 #ifndef SLOW_CHR_UPDATE
-  Genomicpos_T goal;
-  int nchromosomes_local = nchromosomes;
-  Genomicpos_T *chrhighs_local = chrhighs;
+  Univcoord_T goal;
+  int j, nchromosomes_local = nchromosomes;
+  Univcoord_T *chrhighs_local = chrhighs;
 #endif
 
-  Genomicpos_T *splicesites_local;
-  int nsplicesites_local;
-
   debug(printf("*** Starting identify_all_segments ***\n"));
 
-  if (splicesites == NULL) {
-    splicesites_local = (Genomicpos_T *) CALLOC(1,sizeof(Genomicpos_T));
-    splicesites_local[0] = (Genomicpos_T) -1U;
-    nsplicesites_local = 0;
-  } else {
-    splicesites_local = splicesites;
-    nsplicesites_local = nsplicesites;
-  }
-
 #ifdef OLD_FLOOR_ENDS
   halfquerylength = querylength / 2;
   halfquery_lastpos = halfquerylength - index1part;
 #endif
 
-  /* Count total positions, but don't add entries for compoundpos positions (skip querypos -2, -1, lastpos+1, lastpos+2) */
-  total_npositions = 0;
-  for (querypos = 0; querypos <= query_lastpos; querypos++) {
-    if (omitted[querypos] == true) {
-#if 0
-    } else if (npositions[querypos] <= 0) {
-      /* This case is handled below */
+  /* Create sentinel */
+#ifdef DIAGONAL_ADD_QUERYPOS
+  sentinel_struct.diagonal_add_querypos = (UINT8) -1; /* infinity */
+  sentinel_struct.diagonal_add_querypos <<= 32;
+#else
+  sentinel_struct.querypos = querylength; /* essentially infinity */
+  sentinel_struct.diagonal = (Univcoord_T) -1; /* infinity */
 #endif
-    } else {
-      debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
-		    querypos,npositions[querypos],omitted[querypos]));
-      total_npositions += npositions[querypos];
-    }
-  }
+  sentinel = &sentinel_struct;
 
-  if (total_npositions == 0) {
-    *nsegments = 0;
-    if (splicesites == NULL) {
-      FREE(splicesites_local);
-    }
-    return (struct Segment_T *) NULL;
-  } else {
-    debug14(printf("Initial total_npositions = %d\n",total_npositions));
-    all_diagonals_add_querypos = (UINT8 *) CALLOC(total_npositions,sizeof(UINT8));
-  }
+  /* Set up batches */
+  batchpool = (struct Batch_T *) CALLOC(query_lastpos+1,sizeof(struct Batch_T));
+  heap = (Batch_T *) CALLOC(2*(query_lastpos+1)+1+1,sizeof(Batch_T));
 
-  /* Set up global list of diagonals.  At this point, total_npositions
-     includes positions that can be ignored because they are below
-     querylength */
+  /* Don't add entries for compoundpos positions (skip querypos -2, -1, lastpos+1, lastpos+2) */
   if (plusp) {
-    total_npositions = 0;
-    for (querypos = 0, batch_diagterm = querylength; querypos <= query_lastpos;
-	 querypos++, batch_diagterm--) {
+    for (querypos = 0, i = 0; querypos <= query_lastpos; querypos++) {
       if (omitted[querypos] == true) {
 	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
 		      querypos,npositions[querypos],omitted[querypos]));
-      } else if ((batch_npositions = npositions[querypos]) <= 0) {
-	/* This case is not handled below */
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else {
+      } else if (npositions[querypos] > 0) {
 	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
 		      querypos,npositions[querypos],omitted[querypos]));
-	/* batch_diagterm = querylength - querypos; */ /* for plus; now in for loop */
-	batch_positions = positions[querypos];
-
-#ifdef WORDS_BIGENDIAN
-	diagonal_add_querypos = Bigendian_convert_uint(*batch_positions) + batch_diagterm;
-#else
-	diagonal_add_querypos = *batch_positions + batch_diagterm;
-#endif
-	/* batch_npositions = npositions[querypos]; */
-	while (--batch_npositions >= 0 && diagonal_add_querypos < (UINT8) querylength) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
-#else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
-#endif
-	}
-	if (diagonal_add_querypos >= (UINT8) querylength) {
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
-	}
-	while (--batch_npositions >= 0) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
+	batch = &(batchpool[i]);
+#ifdef LARGE_GENOMES
+	Batch_init(batch,querypos,/*diagterm*/querylength - querypos,positions_high[querypos],positions_low[querypos],
+		   npositions[querypos],querylength);
 #else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
+	Batch_init(batch,querypos,/*diagterm*/querylength - querypos,positions[querypos],npositions[querypos],querylength);
 #endif
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
+	total_npositions += npositions[querypos];
+	if (batch->npositions > 0) {
+	  min_heap_insert(heap,&heapsize,batch);
+	  i++;
 	}
+      } else {
+	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
+		      querypos,npositions[querypos],omitted[querypos]));
       }
     }
-
   } else {
-    total_npositions = 0;
-    for (querypos = 0, batch_diagterm = index1part; querypos <= query_lastpos;
-	 querypos++, batch_diagterm++) {
+    for (querypos = 0, i = 0; querypos <= query_lastpos; querypos++) {
       if (omitted[querypos] == true) {
 	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
 		      querypos,npositions[querypos],omitted[querypos]));
-      } else if ((batch_npositions = npositions[querypos]) <= 0) {
-	/* This case is not handled below */
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else {
+      } else if (npositions[querypos] > 0) {
 	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
 		      querypos,npositions[querypos],omitted[querypos]));
-	/* batch_diagterm = querypos + index1part; */ /* for minus; now in for loop */
-	batch_positions = positions[querypos];
-
-#ifdef WORDS_BIGENDIAN
-	diagonal_add_querypos = Bigendian_convert_uint(*batch_positions) + batch_diagterm;
-#else
-	diagonal_add_querypos = *batch_positions + batch_diagterm;
-#endif
-	/* batch_npositions = npositions[querypos]; */
-	while (--batch_npositions >= 0 && diagonal_add_querypos < (UINT8) querylength) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
-#else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
-#endif
-	}
-	if (diagonal_add_querypos >= (UINT8) querylength) {
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
-	}
-	while (--batch_npositions >= 0) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
+	batch = &(batchpool[i]);
+#ifdef LARGE_GENOMES
+	Batch_init(batch,querypos,/*diagterm*/querypos + index1part,positions_high[querypos],positions_low[querypos],
+		   npositions[querypos],querylength);
 #else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
+	Batch_init(batch,querypos,/*diagterm*/querypos + index1part,positions[querypos],npositions[querypos],querylength);
 #endif
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
+	total_npositions += npositions[querypos];
+	if (batch->npositions > 0) {
+	  min_heap_insert(heap,&heapsize,batch);
+	  i++;
 	}
+      } else {
+	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
+		      querypos,npositions[querypos],omitted[querypos]));
       }
     }
   }
-  debug14(printf("Final total_npositions = %d\n",total_npositions));
 
-  if (total_npositions == 0) {
-    /* Because we omitted cases where diagonal_add_querypos < querylength */
+
+  if (i == 0) {
+    FREE(heap);
+    FREE(batchpool);
     *nsegments = 0;
-    if (splicesites == NULL) {
-      FREE(splicesites_local);
-    }
-    FREE(all_diagonals_add_querypos);
     return (struct Segment_T *) NULL;
-  } else {
-    qsort(all_diagonals_add_querypos,total_npositions,sizeof(UINT8),UINT8_compare);
   }
 
-  /* Putting chr marker "segments" after each chromosome. */
+  /* Set up rest of heap */
+  for (i = heapsize+1; i <= 2*heapsize+1; i++) {
+    heap[i] = sentinel;
+  }
+
+  /* Putting chr marker "segments" after each chromosome */
   segments = (struct Segment_T *) CALLOC(total_npositions + nchromosomes,sizeof(struct Segment_T));
   ptr_chrstart = ptr = &(segments[0]);
 
   /*
-  if ((exclude_xfirst = firstbound-2-index1part-max_end_insertions) < 3) {
-    exclude_xfirst = 3;
+  if ((exclude_xfirst = firstbound-2-index1part-max_end_insertions) < index1interval) {
+    exclude_xfirst = index1interval;
   }
-  if ((exclude_xlast = lastbound+1+max_end_insertions) > query_lastpos-3) {
-    exclude_xlast = query_lastpos-3;
+  if ((exclude_xlast = lastbound+1+max_end_insertions) > query_lastpos-index1interval) {
+    exclude_xlast = query_lastpos-index1interval;
   }
   */
 
@@ -4039,7 +4415,7 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
   /* Should account for firstbound and lastbound */
   floors_from_xfirst = floors->scorefrom[/* xfirst_from = */ firstbound-index1interval+max_end_insertions];
   floors_to_xlast = floors->scoreto[/* xlast_to = */ lastbound+1+index1interval-index1part-max_end_insertions];
-#else
+#elif 0
   if (spansize /* +max_end_insertions */ > query_lastpos + index1interval) {
     floors_from_xfirst = floors->scorefrom[query_lastpos+index1interval];
   } else {
@@ -4056,21 +4432,24 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
 
 
   /* Initialize loop */
-  first_querypos = last_querypos = all_diagonals_add_querypos[0] & 0xFFFFFFFF;
-  last_diagonal = all_diagonals_add_querypos[0] >> 32;
+  batch = heap[1];
+  first_querypos = last_querypos = querypos = batch->querypos;
+  last_diagonal = diagonal = batch->diagonal;
 
   floor_incr = floors_from_neg3[first_querypos];
+#if 0
   floor = floor_incr;
   floor_xlast = floor_incr;
   floor_xfirst = floors_from_xfirst[first_querypos] /* floors->scorefrom[xfirst_from][first_querypos] */;
+#endif
 
 #ifdef OLD_FLOOR_ENDS
-  if (first_querypos < halfquery_lastpos) {
+  if (querypos < halfquery_lastpos) {
     floor_left = floor_incr;
   } else {
     floor_left = floors->scorefrom[-index1interval][halfquery_lastpos];
   }
-  if (first_querypos < halfquerylength) {
+  if (querypos < halfquerylength) {
     floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos];
   } else {
     floor_right = floors->scorefrom[halfquerylength-index1interval][first_querypos];
@@ -4082,22 +4461,84 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
 #endif
 #endif
 
-  debug1(printf("multiple_mm_%s, diagonal %u, querypos %d\n",plusp ? "plus" : "minus",last_diagonal,querypos));
-  debug1(printf("first_querypos = %d => initial values: floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-	        first_querypos,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
+
+  debug1(printf("multiple_mm_%s, diagonal %lu, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
+  debug1(printf("first_querypos = %d => initial values: floor_left %d, floor_right %d\n",
+	        first_querypos,floor_left,floor_right));
+
+  if (--batch->npositions <= 0) {
+    /* Use last entry in heap for insertion */
+    batch = heap[heapsize];
+    querypos = batch->querypos;
+    heap[heapsize--] = sentinel;
+
+  } else {
+    /* Use this batch for insertion (same querypos) */
+#ifdef LARGE_GENOMES
+    batch->diagonal = ((Univcoord_T) *(++batch->positions_high) << 32) + *(++batch->positions_low) + batch->diagterm;
+#elif defined(WORDS_BIGENDIAN)
+    batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + batch->diagterm;
+#else
+    batch->diagonal = *(++batch->positions) + batch->diagterm;
+#endif
+#ifdef DIAGONAL_ADD_QUERYPOS
+    batch->diagonal_add_querypos = (UINT8) batch->diagonal;
+    batch->diagonal_add_querypos <<= 32;
+    batch->diagonal_add_querypos |= querypos /* Previously added 2 because querypos was -2: + 2*/;
+#endif
+  }
+
+  /* heapify */
+  parenti = 1;
+#ifdef DIAGONAL_ADD_QUERYPOS
+  diagonal_add_querypos = batch->diagonal_add_querypos;
+  smallesti = (heap[3]->diagonal_add_querypos < heap[2]->diagonal_add_querypos) ? 3 : 2;
+  while (diagonal_add_querypos > heap[smallesti]->diagonal_add_querypos) {
+    heap[parenti] = heap[smallesti];
+    parenti = smallesti;
+    smallesti = LEFT(parenti);
+    righti = smallesti+1;
+    if (heap[righti]->diagonal_add_querypos < heap[smallesti]->diagonal_add_querypos) {
+      smallesti = righti;
+    }
+  }
+#else
+  diagonal = batch->diagonal;
+  smallesti = ((heap[3]->diagonal < heap[2]->diagonal) ||
+	       ((heap[3]->diagonal == heap[2]->diagonal) &&
+		(heap[3]->querypos < heap[2]->querypos))) ? 3 : 2;
+  /* Note that diagonal/querypos will never exceed a sentinel diagonal/querypos */
+  while (diagonal > heap[smallesti]->diagonal ||
+	 (diagonal == heap[smallesti]->diagonal &&
+	  querypos > heap[smallesti]->querypos)) {
+    heap[parenti] = heap[smallesti];
+    parenti = smallesti;
+    smallesti = LEFT(parenti);
+    righti = smallesti+1;
+    if ((heap[righti]->diagonal < heap[smallesti]->diagonal) ||
+		  ((heap[righti]->diagonal == heap[smallesti]->diagonal) &&
+		   (heap[righti]->querypos < heap[smallesti]->querypos))) {
+      smallesti = righti;
+    }
+  }
+#endif
+  heap[parenti] = batch;
+
 
   /* Continue after initialization */
-  for (k = 1; k < total_npositions; k++) {
-    querypos = all_diagonals_add_querypos[k] & 0xFFFFFFFF;
-    diagonal = all_diagonals_add_querypos[k] >> 32;
-    debug14(printf("diagonal = %u, querypos = %d\n",diagonal,querypos));
+  while (heapsize > 0) {
+    batch = heap[1];
+    querypos = batch->querypos;
+    diagonal = batch->diagonal;
 
     if (diagonal == last_diagonal) {
       /* Continuing exact match or substitution */
       floor_incr = floors->scorefrom[last_querypos][querypos];
+#if 0
       floor += floor_incr;
       floor_xfirst += floor_incr;
       floor_xlast += floor_incr;
+#endif
 
 #ifdef OLD_FLOOR_ENDS
       /* Why is this here?  Just set floor_left at start and floor_right at end. */
@@ -4117,16 +4558,18 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
       }
 #endif
 
-      debug1(printf("diagonal %u unchanged: last_querypos = %d, querypos = %d => floor increments by %d\n",
+      debug1(printf("diagonal %lu unchanged: last_querypos = %d, querypos = %d => floor increments by %d\n",
 		    diagonal,last_querypos,querypos,floor_incr));
-      debug1(printf("*multiple_mm_%s, diagonal %u, querypos %d, floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-		    plusp ? "plus" : "minus",diagonal,querypos,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
+      debug1(printf("*multiple_mm_%s, diagonal %lu, querypos %d, floor_left %d, floor_right %d\n",
+		    plusp ? "plus" : "minus",diagonal,querypos,floor_left,floor_right));
     } else {
       /* End of diagonal */
       floor_incr = floors_to_pos3[last_querypos]  /* floors->score[last_querypos][query_lastpos+index1interval] */;
+#if 0
       floor += floor_incr;
       floor_xfirst += floor_incr;
       floor_xlast += floors_to_xlast[last_querypos];  /* floors->score[last_querypos][xlast_to]; */
+#endif
 
 #ifdef OLD_FLOOR_ENDS
       if (last_querypos < halfquery_lastpos) {
@@ -4140,14 +4583,14 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
       floor_right = floor_incr;
 #endif
 
-      debug1(printf("new diagonal %u > last diagonal %u: last_querypos = %d => final values: floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-		    diagonal,last_diagonal,last_querypos,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
+      debug1(printf("new diagonal %lu > last diagonal %lu: last_querypos = %d => final values: floor_left %d, floor_right %d, chrhigh %u\n",
+		    diagonal,last_diagonal,last_querypos,floor_left,floor_right,chrhigh));
 
       if (last_diagonal > chrhigh) {
 	if (ptr > ptr_chrstart) {
 	  /* Add chr marker segment */
 	  debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
-	  ptr->diagonal = -1U;
+	  ptr->diagonal = (Univcoord_T) -1;
 	  ptr_chrstart = ++ptr;
 	}
 
@@ -4155,10 +4598,14 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
 #ifdef SLOW_CHR_UPDATE
 	chrnum = Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength);
 	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
-	/* chrhigh += 1U; */
+	/* chrhigh += 1; */
 #else
 	j = 1;
-	goal = last_diagonal - querylength;
+#ifdef NO_EXTENSIONS_BEFORE_ZERO
+	goal = last_diagonal - querylength + 1;
+#else
+	goal = last_diagonal + 1;
+#endif
 	while (j < nchromosomes_local && chrhighs_local[j] < goal) {
 	  j <<= 1;			/* gallop by 2 */
 	}
@@ -4169,9 +4616,9 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
 	}
 	chrnum += j;
 #ifdef DEBUG15
-	if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
+	if (chrnum != Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength)) {
 	  fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-		  chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
+		  chrnum,Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength));
 	  abort();
 	}
 #endif
@@ -4184,67 +4631,43 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
       }
       if (last_diagonal <= chrhigh) { /* FORMULA for high position */
 	/* position of high end is within current chromosome */
-	debug1(printf("  => multiple_mm, diagonal %u, query %d..%d, chrbounds %u..%u, floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-		      last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
-
-	/* Save segment, but first advance splicesites past segment_left */
-	segment_left = last_diagonal - querylength;
-	if (splicesites_local[0] >= last_diagonal) {
-	  ptr->splicesites_i = -1;
-	} else if (Splicetrie_splicesite_p(segment_left,/*pos5*/1,/*pos3*/querylength) == false) {
-	  ptr->splicesites_i = -1;
-	} else {
-	  if (splicesites_local[0] < segment_left) {
-	    j = 1;
-	    while (j < nsplicesites_local && splicesites_local[j] < segment_left) {
-	      j <<= 1;		/* gallop by 2 */
-	    }
-	    if (j >= nsplicesites_local) {
-	      j = binary_search(j >> 1,nsplicesites_local,splicesites_local,segment_left);
-	    } else {
-	      j = binary_search(j >> 1,j,splicesites_local,segment_left);
-	    }
-	    joffset += j;
-	    splicesites_local += j;
-	    nsplicesites_local -= j;
-	  }
-	    
-	  if (splicesites_local[0] >= last_diagonal) {
-	    ptr->splicesites_i = -1;
-	  } else {
-	    ptr->splicesites_i = joffset;
-	  }
-	}
-
-	/* Save segment */
-	ptr->diagonal = last_diagonal;
-	ptr->chrnum = chrnum;
-	ptr->chroffset = chroffset;
-	ptr->chrhigh = chrhigh;
-	ptr->chrlength = chrlength;
-	ptr->querypos5 = first_querypos;
-	ptr->querypos3 = last_querypos;
-	ptr->floor = floor;
-	ptr->floor_xfirst = floor_xfirst;
-	ptr->floor_xlast = floor_xlast;
-	ptr->floor_left = floor_left;
-	ptr->floor_right = floor_right;
-	ptr->leftmost = ptr->rightmost = -1;
-	ptr->left_splice_p = ptr->right_splice_p = false;
-	ptr->usedp = false;
+	debug1(printf("  => multiple_mm, diagonal %lu, query %d..%d, chrbounds %lu..%lu, floor_left %d, floor_right %d\n",
+		      last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor_left,floor_right));
+	if (floor_left <= max_mismatches_allowed || floor_right <= max_mismatches_allowed) {
+	  /* Save segment */
+	  ptr->diagonal = last_diagonal;
+	  ptr->chrnum = chrnum;
+	  ptr->chroffset = chroffset;
+	  ptr->chrhigh = chrhigh;
+	  ptr->chrlength = chrlength;
+	  ptr->querypos5 = first_querypos;
+	  ptr->querypos3 = last_querypos;
 #if 0
-	ptr->leftspan = ptr->rightspan = -1;
+	  ptr->floor = floor;
+	  ptr->floor_xfirst = floor_xfirst;
+	  ptr->floor_xlast = floor_xlast;
 #endif
-	ptr++;
+	  ptr->floor_left = floor_left;
+	  ptr->floor_right = floor_right;
+#if 0
+	  ptr->leftmost = ptr->rightmost = -1;
+	  ptr->left_splice_p = ptr->right_splice_p = false;
+	  ptr->leftspan = ptr->rightspan = -1;
+#endif
+	  ptr->usedp = false;
+	  ptr++;
+	}
       }
 
       /* Prepare next diagonal */
       first_querypos = querypos;
       last_diagonal = diagonal;
       floor_incr = floors_from_neg3[first_querypos] /* floors->score[-index1interval][first_querypos] */;
+#if 0
       floor = floor_incr;
       floor_xlast = floor_incr;
       floor_xfirst = floors_from_xfirst[first_querypos];  /* floors->score[xfirst_from][first_querypos]; */
+#endif
 
 #ifdef OLD_FLOOR_ENDS
       if (querypos < halfquery_lastpos) {
@@ -4260,23 +4683,83 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
 #else
       floor_left = floor_incr;
 #ifdef DEBUG1
-      floor_right = -99;	/* For debugging output */
+      floor_right = -99;
 #endif
 #endif
 
-      debug1(printf("*multiple_mm_%s, diagonal %u, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
-      debug1(printf("start of diagonal %u, first_querypos = %d => initial values: floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-		    diagonal,first_querypos,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
+      debug1(printf("*multiple_mm_%s, diagonal %lu, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
+      debug1(printf("start of diagonal %lu, first_querypos = %d => initial values: floor_left %d, floor_right %d\n",
+		    diagonal,first_querypos,floor_left,floor_right));
     }
     last_querypos = querypos;
+
+
+    if (--batch->npositions <= 0) {
+      /* Use last entry in heap for insertion */
+      batch = heap[heapsize];
+      querypos = batch->querypos;
+      heap[heapsize--] = sentinel;
+
+    } else {
+      /* Use this batch for insertion (same querypos) */
+#ifdef LARGE_GENOMES
+      batch->diagonal = ((Univcoord_T) *(++batch->positions_high) << 32) + *(++batch->positions_low) + batch->diagterm;
+#elif defined(WORDS_BIGENDIAN)
+      batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + batch->diagterm;
+#else
+      batch->diagonal = *(++batch->positions) + batch->diagterm;
+#endif
+#ifdef DIAGONAL_ADD_QUERYPOS
+      batch->diagonal_add_querypos = (UINT8) batch->diagonal;
+      batch->diagonal_add_querypos <<= 32;
+      batch->diagonal_add_querypos |= querypos /* Previously added 2 because querypos was -2: + 2*/;
+#endif
+    }
+
+    /* heapify */
+    parenti = 1;
+#ifdef DIAGONAL_ADD_QUERYPOS
+    diagonal_add_querypos = batch->diagonal_add_querypos;
+    smallesti = (heap[3]->diagonal_add_querypos < heap[2]->diagonal_add_querypos) ? 3 : 2;
+    while (diagonal_add_querypos > heap[smallesti]->diagonal_add_querypos) {
+      heap[parenti] = heap[smallesti];
+      parenti = smallesti;
+      smallesti = LEFT(parenti);
+      righti = smallesti+1;
+      if (heap[righti]->diagonal_add_querypos < heap[smallesti]->diagonal_add_querypos) {
+	smallesti = righti;
+      }
+    }
+#else
+    diagonal = batch->diagonal;
+    smallesti = ((heap[3]->diagonal < heap[2]->diagonal) ||
+		 ((heap[3]->diagonal == heap[2]->diagonal) &&
+		  (heap[3]->querypos < heap[2]->querypos))) ? 3 : 2;
+    /* Note that diagonal/querypos will never exceed a sentinel diagonal/querypos */
+    while (diagonal > heap[smallesti]->diagonal ||
+	   (diagonal == heap[smallesti]->diagonal &&
+	    querypos > heap[smallesti]->querypos)) {
+      heap[parenti] = heap[smallesti];
+      parenti = smallesti;
+      smallesti = LEFT(parenti);
+      righti = smallesti+1;
+      if ((heap[righti]->diagonal < heap[smallesti]->diagonal) ||
+	  ((heap[righti]->diagonal == heap[smallesti]->diagonal) &&
+	   (heap[righti]->querypos < heap[smallesti]->querypos))) {
+	smallesti = righti;
+      }
+    }
+#endif
+    heap[parenti] = batch;
   }
-  debug14(printf("\n"));
 
   /* Terminate loop. */
   floor_incr = floors_to_pos3[last_querypos];   /* floors->score[last_querypos][query_lastpos+index1interval]; */
+#if 0
   floor += floor_incr;
   floor_xfirst += floor_incr;
   floor_xlast += floors_to_xlast[last_querypos];  /* floors->score[last_querypos][xlast_to]; */
+#endif
 
 #ifdef OLD_FLOOR_ENDS
   if (last_querypos < halfquery_lastpos) {
@@ -4289,26 +4772,31 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
 #else
   floor_right = floor_incr;
 #endif
+
   
-  debug1(printf("no more diagonals: last_querypos = %d => terminal values: floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-		last_querypos,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
+  debug1(printf("no more diagonals: last_querypos = %d => terminal values: floor_left %d, floor_right %d\n",
+		last_querypos,floor_left,floor_right));
 
   if (last_diagonal > chrhigh) {
     if (ptr > ptr_chrstart) {
       /* Add chr marker segment */
       debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
-      ptr->diagonal = -1U;
+      ptr->diagonal = (Univcoord_T) -1;
       ptr_chrstart = ++ptr;
     }
 
     /* update chromosome bounds, based on low end */
 #ifdef SLOW_CHR_UPDATE
-    chrnum = IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength);
-    IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
-    /* chrhigh += 1U; */
+    chrnum = Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength);
+    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
+    /* chrhigh += 1; */
 #else
     j = 1;
-    goal = last_diagonal - querylength;
+#ifdef NO_EXTENSIONS_BEFORE_ZERO
+    goal = last_diagonal - querylength + 1;
+#else
+    goal = last_diagonal + 1;
+#endif
     while (j < nchromosomes_local && chrhighs_local[j] < goal) {
       j <<= 1;			/* gallop by 2 */
     }
@@ -4319,9 +4807,9 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
     }
     chrnum += j;
 #ifdef DEBUG15
-    if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
+    if (chrnum != Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength)) {
       fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-	      chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
+	      chrnum,Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength));
       abort();
     }
 #endif
@@ -4331,4211 +4819,1792 @@ identify_all_segments (int *nsegments, Genomicpos_T **positions, int *npositions
     chrhighs_local += j;
     nchromosomes_local -= j;
 #endif
-
   }
   if (last_diagonal <= chrhigh) { /* FORMULA for high position */
     /* position of high end is within current chromosome */
-    debug1(printf("  => multiple_mm, diagonal %u, query %d..%d, chrbounds %u..%u, floor %d, floor_xfirst %d, floor_xlast %d, floor_left %d, floor_right %d\n",
-		  last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor,floor_xfirst,floor_xlast,floor_left,floor_right));
-
-    /* Save segment, but first advance splicesites past segment_left */
-    segment_left = last_diagonal - querylength;
-    if (splicesites_local[0] >= last_diagonal) {
-      ptr->splicesites_i = -1;
-    } else if (Splicetrie_splicesite_p(segment_left,/*pos5*/1,/*pos3*/querylength) == false) {
-      ptr->splicesites_i = -1;
-    } else {
-      if (splicesites_local[0] < segment_left) {
-	j = 1;
-	while (j < nsplicesites_local && splicesites_local[j] < segment_left) {
-	  j <<= 1;		/* gallop by 2 */
-	}
-	if (j >= nsplicesites_local) {
-	  j = binary_search(j >> 1,nsplicesites_local,splicesites_local,segment_left);
-	} else {
-	  j = binary_search(j >> 1,j,splicesites_local,segment_left);
-	}
-	joffset += j;
-	splicesites_local += j;
-	nsplicesites_local -= j;
-      }
-
-      if (splicesites_local[0] >= last_diagonal) {
-	ptr->splicesites_i = -1;
-      } else {
-	ptr->splicesites_i = joffset;
-      }
-    }
-
-    /* Save segment */
-    ptr->diagonal = last_diagonal;
-    ptr->chrnum = chrnum;
-    ptr->chroffset = chroffset;
-    ptr->chrhigh = chrhigh;
-    ptr->chrlength = chrlength;
-    ptr->querypos5 = first_querypos;
-    ptr->querypos3 = last_querypos;
-    ptr->floor = floor;
-    ptr->floor_xfirst = floor_xfirst;
-    ptr->floor_xlast = floor_xlast;
-    ptr->floor_left = floor_left;
-    ptr->floor_right = floor_right;
-    ptr->leftmost = ptr->rightmost = -1;
-    ptr->left_splice_p = ptr->right_splice_p = false;
-    ptr->usedp = false;
+    debug1(printf("  => multiple_mm, diagonal %lu, query %d..%d, chrbounds %lu..%lu, floor_left %d, floor_right %d\n",
+		  last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor_left,floor_right));
+    if (floor_left <= max_mismatches_allowed || floor_right <= max_mismatches_allowed) {
+      /* Save segment */
+      ptr->diagonal = last_diagonal;
+      ptr->chrnum = chrnum;
+      ptr->chroffset = chroffset;
+      ptr->chrhigh = chrhigh;
+      ptr->chrlength = chrlength;
+      ptr->querypos5 = first_querypos;
+      ptr->querypos3 = last_querypos;
 #if 0
-    ptr->leftspan = ptr->rightspan = -1;
+      ptr->floor = floor;
+      ptr->floor_xfirst = floor_xfirst;
+      ptr->floor_xlast = floor_xlast;
 #endif
-    ptr++;
+      ptr->floor_left = floor_left;
+      ptr->floor_right = floor_right;
+#if 0
+      ptr->leftmost = ptr->rightmost = -1;
+      ptr->left_splice_p = ptr->right_splice_p = false;
+      ptr->leftspan = ptr->rightspan = -1;
+#endif
+      ptr->usedp = false;
+      ptr++;
+    }
   }
 
   if (ptr > ptr_chrstart) {
     /* Final chr marker segment */
     debug1(printf("=== ptr %p > ptr_chrstart %p, so adding final chr marker segment\n",ptr,ptr_chrstart));
-    ptr->diagonal = -1U;
+    ptr->diagonal = (Univcoord_T) -1;
     /* ptr_chrstart = */ ++ptr;
   }
 
-#ifdef DEBUG19
-  for (k = 0, ptr0 = segments; ptr0 < ptr; k++, ptr0++) {
-    printf("%d %u\n",k,ptr0->diagonal);
-  }
-  printf("total_npositions = %d, nchromosomes = %d\n",total_npositions,nchromosomes);
-#endif
 
-  FREE(all_diagonals_add_querypos);
+  FREE(heap);
+  FREE(batchpool);
 
   /* Note: segments is in descending diagonal order.  Will need to
      reverse before solving middle deletions */
 
   *nsegments = ptr - segments;
-  debug(printf("nsegments = %d (total_npositions = %d, nchromosomes = %d)\n",
-	       *nsegments,total_npositions,nchromosomes));
-  debug1(printf("nsegments = %d (total_npositions = %d, nchromosomes = %d)\n",
-		*nsegments,total_npositions,nchromosomes));
+  debug1(printf("nsegments = %d\n",*nsegments));
+  debug(printf("nsegments = %d (total_npositions = %d)\n",*nsegments,total_npositions));
 
   assert(*nsegments <= total_npositions + nchromosomes);
 
-  if (splicesites == NULL) {
-    FREE(splicesites_local);
-  }
-
   return segments;
 }
-#endif
 
 
 
-#ifdef USE_HEAPSORT
-/* For 32-bit computers.  Uses heapsort */
-/* Specialized version of identify_all_segments that stores only floor_left and floor_right */
-static struct Segment_T *
-identify_all_segments_for_terminals (int *nsegments, Univcoord_T **positions, int *npositions,
-				     bool *omitted, int querylength, int query_lastpos,
-				     Floors_T floors, int max_mismatches_allowed, bool plusp) {
-  struct Segment_T *segments = NULL;
-  Batch_T batch, sentinel;
-  struct Batch_T sentinel_struct, *batchpool;
-  Batch_T *heap;
-  int heapsize = 0;
-  int parenti, smallesti, righti, i;
-  int querypos, first_querypos, last_querypos;
-  int floor_left, floor_right, floor_incr;
-  int *floors_from_neg3, *floors_from_xfirst, *floors_to_xlast, *floors_to_pos3;
-  /* int exclude_xfirst, exclude_xlast; */
-  Univcoord_T diagonal, last_diagonal, chroffset = 0U, chrhigh = 0U;
-  Chrpos_T chrlength;
-  Chrnum_T chrnum = 1;
-#ifdef OLD_FLOOR_ENDS
-  int halfquerylength, halfquery_lastpos;
-#endif
-#ifdef DIAGONAL_ADD_QUERYPOS
-  UINT8 diagonal_add_querypos;
-#endif
-  int total_npositions = 0;
-  Segment_T ptr, ptr_chrstart;
-#ifndef SLOW_CHR_UPDATE
-  Univcoord_T goal;
-  int j, nchromosomes_local = nchromosomes;
-  Univcoord_T *chrhighs_local = chrhighs;
-#endif
-
-  debug(printf("*** Starting identify_all_segments ***\n"));
-
-#ifdef OLD_FLOOR_ENDS
-  halfquerylength = querylength / 2;
-  halfquery_lastpos = halfquerylength - index1part;
-#endif
-
-  /* Create sentinel */
-#ifdef DIAGONAL_ADD_QUERYPOS
-  sentinel_struct.diagonal_add_querypos = (UINT8) -1; /* infinity */
-  sentinel_struct.diagonal_add_querypos <<= 32;
-#else
-  sentinel_struct.querypos = querylength; /* essentially infinity */
-  sentinel_struct.diagonal = (Univcoord_T) -1; /* infinity */
-#endif
-  sentinel = &sentinel_struct;
+/*
 
-  /* Set up batches */
-  batchpool = (struct Batch_T *) CALLOC(query_lastpos+1,sizeof(struct Batch_T));
-  heap = (Batch_T *) CALLOC(2*(query_lastpos+1)+1+1,sizeof(Batch_T));
+The pattern below is a middle insertion on plus strand, or middle deletion on minus strand:
 
-  /* Don't add entries for compoundpos positions (skip querypos -2, -1, lastpos+1, lastpos+2) */
-  if (plusp) {
-    for (querypos = 0, i = 0; querypos <= query_lastpos; querypos++) {
-      if (omitted[querypos] == true) {
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else if (npositions[querypos] > 0) {
-	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-	batch = &(batchpool[i]);
-	Batch_init(batch,querypos,/*diagterm*/querylength - querypos,positions[querypos],npositions[querypos],querylength);
-	total_npositions += npositions[querypos];
-	if (batch->npositions > 0) {
-	  min_heap_insert(heap,&heapsize,batch);
-	  i++;
-	}
-      } else {
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      }
-    }
-  } else {
-    for (querypos = 0, i = 0; querypos <= query_lastpos; querypos++) {
-      if (omitted[querypos] == true) {
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else if (npositions[querypos] > 0) {
-	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-	batch = &(batchpool[i]);
-	Batch_init(batch,querypos,/*diagterm*/querypos + index1part,positions[querypos],npositions[querypos],querylength);
-	total_npositions += npositions[querypos];
-	if (batch->npositions > 0) {
-	  min_heap_insert(heap,&heapsize,batch);
-	  i++;
-	}
-      } else {
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      }
-    }
-  }
+diagonal 2354, querypos 18
+diagonal 2354, querypos 19
+diagonal 2354, querypos 20
+diagonal 2354, querypos 21
+diagonal 2354, querypos 22
+diagonal 2354, querypos 23
+diagonal 2354, querypos 24
+diagonal 2356, querypos 0
+diagonal 2356, querypos 1
+diagonal 2356, querypos 2
+diagonal 2356, querypos 3
+diagonal 2356, querypos 4
+diagonal 2356, querypos 5
 
 
-  if (i == 0) {
-    FREE(heap);
-    FREE(batchpool);
-    *nsegments = 0;
-    return (struct Segment_T *) NULL;
-  }
+The pattern below is a middle deletion on plus strand, or middle insertion on minus strand:
 
-  /* Set up rest of heap */
-  for (i = heapsize+1; i <= 2*heapsize+1; i++) {
-    heap[i] = sentinel;
-  }
+diagonal 2354, querypos 0
+diagonal 2354, querypos 1
+diagonal 2354, querypos 2
+diagonal 2354, querypos 3
+diagonal 2354, querypos 4
+diagonal 2354, querypos 5
+diagonal 2354, querypos 6
+diagonal 2354, querypos 7
+diagonal 2356, querypos 18
+diagonal 2356, querypos 19
+diagonal 2356, querypos 20
+diagonal 2356, querypos 21
+diagonal 2356, querypos 22
+diagonal 2356, querypos 23
+diagonal 2356, querypos 24
 
-  /* Putting chr marker "segments" after each chromosome */
-  segments = (struct Segment_T *) CALLOC(total_npositions + nchromosomes,sizeof(struct Segment_T));
-  ptr_chrstart = ptr = &(segments[0]);
+*/
 
-  /*
-  if ((exclude_xfirst = firstbound-2-index1part-max_end_insertions) < index1interval) {
-    exclude_xfirst = index1interval;
-  }
-  if ((exclude_xlast = lastbound+1+max_end_insertions) > query_lastpos-index1interval) {
-    exclude_xlast = query_lastpos-index1interval;
-  }
-  */
 
-#if 0
-  /* Should account for firstbound and lastbound */
-  floors_from_xfirst = floors->scorefrom[/* xfirst_from = */ firstbound-index1interval+max_end_insertions];
-  floors_to_xlast = floors->scoreto[/* xlast_to = */ lastbound+1+index1interval-index1part-max_end_insertions];
-#else
-  if (spansize /* +max_end_insertions */ > query_lastpos + index1interval) {
-    floors_from_xfirst = floors->scorefrom[query_lastpos+index1interval];
-  } else {
-    floors_from_xfirst = floors->scorefrom[spansize /* +max_end_insertions */];
-  }
-  if (query_lastpos-spansize /* -max_end_insertions */ < -index1interval) {
-    floors_to_xlast = floors->scoreto[-index1interval];
-  } else {
-    floors_to_xlast = floors->scoreto[query_lastpos-spansize /* -max_end_insertions */];
-  }
+static List_T
+find_middle_indels (int *found_score, int *nhits, List_T hits,
+		    Segment_T *plus_spliceable, int plus_nspliceable,
+		    Segment_T *minus_spliceable, int minus_nspliceable,
+#ifdef DEBUG2
+		    char *queryuc_ptr, char *queryrc, 
 #endif
-  floors_from_neg3 = floors->scorefrom[-index1interval];
-  floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
+		    Floors_T floors, int querylength, int query_lastpos,
+		    Compress_T query_compress_fwd, Compress_T query_compress_rev,
+		    int max_mismatches_allowed, int genestrand, bool first_read_p) {
+  Segment_T segmenti, segmentj, segmentj_end, *ptr;
+  int indels, floor, pos, prev, middle;
+  int *floors_from_neg3, *floors_to_pos3;
+  bool foundp;
 
+  debug(printf("*** find_middle_indels with querylength %d and max_mismatches_allowed %d ***\n",
+	       querylength,max_mismatches_allowed));
 
-  /* Initialize loop */
-  batch = heap[1];
-  first_querypos = last_querypos = querypos = batch->querypos;
-  last_diagonal = diagonal = batch->diagonal;
+  /* Plus segments */
+  if (floors != NULL) {
+    floors_from_neg3 = floors->scorefrom[-index1interval];
+    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
 
-  floor_incr = floors_from_neg3[first_querypos];
-#if 0
-  floor = floor_incr;
-  floor_xlast = floor_incr;
-  floor_xfirst = floors_from_xfirst[first_querypos] /* floors->scorefrom[xfirst_from][first_querypos] */;
+    debug2(printf("plus_nspliceable = %d\n",plus_nspliceable));
+    for (ptr = plus_spliceable; ptr < &(plus_spliceable[plus_nspliceable]); ptr++) {
+      segmenti = *ptr;
+      debug2(printf("\nplus segmenti:  diagonal %lu, querypos %d..%d\n",
+		    segmenti->diagonal,segmenti->querypos5,segmenti->querypos3));
+      if (1 || segmenti->diagonal < (Univcoord_T) -1) { /* No markers were stored in spliceable */
+	/* Identify potential segmentj for segmenti */
+	segmentj_end = segmenti+1;
+	while (
+#ifdef NO_MARKER_SEGMENTS
+	       segmentj_end < &(plus_segments[plus_nsegments]) && segmentj_end->chrnum == segmenti->chrnum &&
 #endif
+	       segmentj_end->diagonal <= segmenti->diagonal + max_middle_insertions) {
+	  segmentj_end++;
+	}
+	  
+	for (segmentj = segmenti+1; segmentj < segmentj_end; segmentj++) {
+	  debug2(printf("plus insertion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
+			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
+			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
+	  /* j5 j3 i5 i3 */
+	  if (segmentj->querypos3 < segmenti->querypos5) {
+	    indels = segmentj->diagonal - segmenti->diagonal; /* positive */
+	    floor = floors_from_neg3[segmentj->querypos5] + floors_to_pos3[segmenti->querypos3]
+	      /* floors->score[-index1interval][segmentj->querypos5] + floors->score[segmenti->querypos3][query_lastpos+index1interval] */ ;
+	    if (floors->prev_omitted == NULL) {
+	      if ((middle = FLOOR_MIDDLE(segmenti->querypos5 - segmentj->querypos3 - indels)) > 0) {
+		middle--;	/* for insertion, which looks like a mismatch */
+	      }
+	      debug2(printf("\nmiddle (no omission): %d\n",middle));
+	      floor += middle;
+	    } else {
+	      pos = segmenti->querypos5;
+	      debug2(printf("\nmiddle (omission):"));
+	      while (pos > segmentj->querypos3) {
+		if ((prev = floors->prev_omitted[pos]) < segmentj->querypos3) {
+		  prev = segmentj->querypos3;
+		}
+		if ((middle = FLOOR_MIDDLE(pos - prev - indels)) > 0) {
+		  middle--;	/* for insertion, which looks like a mismatch */
+		}
+		floor += middle;
+		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
+		pos = prev;
+	      }
+	      debug2(printf("\n"));
+	    }
+	    if (floor <= max_mismatches_allowed) {
+	      debug2(printf("successful insertion, floor = %d+middle+%d=%d, indels = %d\n",
+			    floors->scorefrom[-index1interval][segmentj->querypos5],
+			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
+			    floor,indels));
+	      hits = Indel_solve_middle_insertion(&foundp,&(*found_score),&(*nhits),hits,
+						  /*left*/segmenti->diagonal - querylength,
+						  segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+						  indels,/*query_compress*/query_compress_fwd,
+						  querylength,max_mismatches_allowed,
+						  /*plusp*/true,genestrand,first_read_p,/*sarrayp*/false);
+	    } else {
+	      debug2(printf("too many mismatches, because floor %d+middle+%d=%d > %d\n",
+			    floors->scorefrom[-index1interval][segmentj->querypos5],
+			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
+			    floor,max_mismatches_allowed));
+	    }
+	  } else {
+	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
+			  segmentj->querypos3,segmenti->querypos5));
+	  }
+	}
 
-#ifdef OLD_FLOOR_ENDS
-  if (querypos < halfquery_lastpos) {
-    floor_left = floor_incr;
-  } else {
-    floor_left = floors->scorefrom[-index1interval][halfquery_lastpos];
-  }
-  if (querypos < halfquerylength) {
-    floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos];
-  } else {
-    floor_right = floors->scorefrom[halfquerylength-index1interval][first_querypos];
-  }
-#else
-  floor_left = floor_incr;
-#ifdef DEBUG1
-  floor_right = -99;
-#endif
+	/* Identify potential segmentj for segmenti */
+	segmentj_end = segmenti+1;
+	while (
+#ifdef NO_MARKER_SEGMENTS
+	       segmentj_end < &(plus_segments[plus_nsegments]) && segmentj_end->chrnum == segmenti->chrnum &&
 #endif
+	       segmentj_end->diagonal <= segmenti->diagonal + max_middle_deletions) {
+	  segmentj_end++;
+	}
 
-
-  debug1(printf("multiple_mm_%s, diagonal %lu, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
-  debug1(printf("first_querypos = %d => initial values: floor_left %d, floor_right %d\n",
-	        first_querypos,floor_left,floor_right));
-
-  if (--batch->npositions <= 0) {
-    /* Use last entry in heap for insertion */
-    batch = heap[heapsize];
-    querypos = batch->querypos;
-    heap[heapsize--] = sentinel;
-
-  } else {
-    /* Use this batch for insertion (same querypos) */
-#ifdef WORDS_BIGENDIAN
-    batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + batch->diagterm;
-#else
-    batch->diagonal = *(++batch->positions) + batch->diagterm;
-#endif
-#ifdef DIAGONAL_ADD_QUERYPOS
-    batch->diagonal_add_querypos = (UINT8) batch->diagonal;
-    batch->diagonal_add_querypos <<= 32;
-    batch->diagonal_add_querypos |= querypos /* Previously added 2 because querypos was -2: + 2*/;
-#endif
-  }
-
-  /* heapify */
-  parenti = 1;
-#ifdef DIAGONAL_ADD_QUERYPOS
-  diagonal_add_querypos = batch->diagonal_add_querypos;
-  smallesti = (heap[3]->diagonal_add_querypos < heap[2]->diagonal_add_querypos) ? 3 : 2;
-  while (diagonal_add_querypos > heap[smallesti]->diagonal_add_querypos) {
-    heap[parenti] = heap[smallesti];
-    parenti = smallesti;
-    smallesti = LEFT(parenti);
-    righti = smallesti+1;
-    if (heap[righti]->diagonal_add_querypos < heap[smallesti]->diagonal_add_querypos) {
-      smallesti = righti;
-    }
-  }
-#else
-  diagonal = batch->diagonal;
-  smallesti = ((heap[3]->diagonal < heap[2]->diagonal) ||
-	       ((heap[3]->diagonal == heap[2]->diagonal) &&
-		(heap[3]->querypos < heap[2]->querypos))) ? 3 : 2;
-  /* Note that diagonal/querypos will never exceed a sentinel diagonal/querypos */
-  while (diagonal > heap[smallesti]->diagonal ||
-	 (diagonal == heap[smallesti]->diagonal &&
-	  querypos > heap[smallesti]->querypos)) {
-    heap[parenti] = heap[smallesti];
-    parenti = smallesti;
-    smallesti = LEFT(parenti);
-    righti = smallesti+1;
-    if ((heap[righti]->diagonal < heap[smallesti]->diagonal) ||
-		  ((heap[righti]->diagonal == heap[smallesti]->diagonal) &&
-		   (heap[righti]->querypos < heap[smallesti]->querypos))) {
-      smallesti = righti;
+	for (segmentj = segmenti+1; segmentj < segmentj_end; segmentj++) {
+	  debug2(printf("plus deletion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
+			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
+			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
+	  /* i5 i3 j5 j3 */
+	  if (segmenti->querypos3 < segmentj->querypos5) {
+	    indels = segmenti->diagonal - segmentj->diagonal; /* negative */
+	    floor = floors_from_neg3[segmenti->querypos5] + floors_to_pos3[segmentj->querypos3]
+	      /* floors->score[-index1interval][segmenti->querypos5] + floors->score[segmentj->querypos3][query_lastpos+index1interval] */;
+	    if (floors->prev_omitted == NULL) {
+	      if ((middle = FLOOR_MIDDLE(segmentj->querypos5 - segmenti->querypos3 /*- indels*/)) > 0) {
+		middle--;	/* for deletion, which looks like a mismatch */
+	      }
+	      debug2(printf("\nmiddle (no omission): %d\n",middle));
+	      floor += middle;
+	    } else {
+	      pos = segmentj->querypos5;
+	      debug2(printf("\nmiddle (omission):"));
+	      while (pos > segmenti->querypos3) {
+		if ((prev = floors->prev_omitted[pos]) < segmenti->querypos3) {
+		  prev = segmenti->querypos3;
+		}
+		if ((middle = FLOOR_MIDDLE(pos - prev /*- indels*/)) > 0) {
+		  middle--;	/* for deletion, which looks like a mismatch */
+		}
+		floor += middle;
+		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
+		pos = prev;
+	      }
+	      debug2(printf("\n"));
+	    }
+	    if (floor <= max_mismatches_allowed) {
+	      debug2(printf("successful deletion, floor = %d+middle+%d=%d, indels = %d\n",
+			    floors->scorefrom[-index1interval][segmenti->querypos5],
+			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
+			    floor,indels));
+	      hits = Indel_solve_middle_deletion(&foundp,&(*found_score),&(*nhits),hits,
+						 /*left*/segmenti->diagonal - querylength,
+						 segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+						 indels,/*query_compress*/query_compress_fwd,
+						 querylength,max_mismatches_allowed,
+						 /*plusp*/true,genestrand,first_read_p,/*sarrayp*/false);
+	    } else {
+	      debug2(printf("too many mismatches, because floor = %d+middle+%d=%d > %d\n",
+			    floors->scorefrom[-index1interval][segmenti->querypos5],
+			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
+			    floor,max_mismatches_allowed));
+	    }
+	  } else {
+	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
+			  segmenti->querypos3,segmentj->querypos5));
+	  }
+	}
+      }
     }
-  }
-#endif
-  heap[parenti] = batch;
 
+    /* Minus segments */
+    floors_from_neg3 = floors->scorefrom[-index1interval];
+    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
 
-  /* Continue after initialization */
-  while (heapsize > 0) {
-    batch = heap[1];
-    querypos = batch->querypos;
-    diagonal = batch->diagonal;
-
-    if (diagonal == last_diagonal) {
-      /* Continuing exact match or substitution */
-      floor_incr = floors->scorefrom[last_querypos][querypos];
-#if 0
-      floor += floor_incr;
-      floor_xfirst += floor_incr;
-      floor_xlast += floor_incr;
+    debug2(printf("minus_nspliceable = %d\n",minus_nspliceable));
+    for (ptr = minus_spliceable; ptr < &(minus_spliceable[minus_nspliceable]); ptr++) {
+      segmenti = *ptr;
+      debug2(printf("\nminus segmenti:  diagonal %lu, querypos %d..%d\n",
+		    segmenti->diagonal,segmenti->querypos5,segmenti->querypos3));
+      if (1 || segmenti->diagonal < (Univcoord_T) -1) { /* No markers were stored in spliceable */
+	/* Identify potential segmentj for segmenti */
+	segmentj_end = segmenti+1;
+	while (
+#ifdef NO_MARKER_SEGMENTS
+	       segmentj_end < &(minus_segments[minus_nsegments]) && segmentj_end->chrnum == segmenti->chrnum &&
 #endif
+	       segmentj_end->diagonal <= segmenti->diagonal + max_middle_deletions) {
+	  segmentj_end++;
+	}
 
-#ifdef OLD_FLOOR_ENDS
-      /* Why is this here?  Just set floor_left at start and floor_right at end. */
-      if (querypos < halfquery_lastpos) {
-	floor_left += floor_incr;
-      } else if (last_querypos < halfquery_lastpos) {
-	/* Finish floor_left */
-	floor_left += floors->scorefrom[last_querypos][halfquery_lastpos+index1interval];
-      }
-      if (querypos >= halfquerylength) {
-	if (last_querypos < halfquerylength) {
-	  /* Start floor_right */
-	  floor_right = floors->scorefrom[halfquerylength-index1interval][querypos];
-	} else {
-	  floor_right += floor_incr;
+	for (segmentj = segmenti+1; segmentj < segmentj_end; segmentj++) {
+	  debug2(printf("minus deletion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
+			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
+			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
+	  /* j5 j3 i5 i3 */
+	  if (segmentj->querypos3 < segmenti->querypos5) {
+	    indels = segmenti->diagonal - segmentj->diagonal; /* negative */
+	    floor = floors_from_neg3[segmentj->querypos5] + floors_to_pos3[segmenti->querypos3]
+	      /* floors->score[-index1interval][segmentj->querypos5] + floors->score[segmenti->querypos3][query_lastpos+index1interval] */;
+	    if (floors->prev_omitted == NULL) {
+	      if ((middle = FLOOR_MIDDLE(segmenti->querypos5 - segmentj->querypos3 /*- indels*/)) > 0) {
+		middle--;	/* for deletion, which looks like a mismatch */
+	      }
+	      debug2(printf("\nmiddle (no omission): %d\n",middle));
+	      floor += middle;
+	    } else {
+	      pos = segmenti->querypos5;
+	      debug2(printf("\nmiddle (omission):"));
+	      while (pos > segmentj->querypos3) {
+		if ((prev = floors->prev_omitted[pos]) < segmentj->querypos3) {
+		  prev = segmentj->querypos3;
+		}
+		if ((middle = FLOOR_MIDDLE(pos - prev /*- indels*/)) > 0) {
+		  middle--; /* for deletion, which looks like a mismatch */
+		}
+		floor += middle;
+		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
+		pos = prev;
+	      }
+	      debug2(printf("\n"));
+	    }
+	    if (floor <= max_mismatches_allowed) {
+	      debug2(printf("successful deletion, floor = %d+middle+%d=%d, indels = %d\n",
+			    floors->scorefrom[-index1interval][segmentj->querypos5],
+			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
+			    floor,indels));
+	      hits = Indel_solve_middle_deletion(&foundp,&(*found_score),&(*nhits),hits,
+						 /*left*/segmenti->diagonal - querylength,
+						 segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+						 indels,/*query_compress*/query_compress_rev,
+						 querylength,max_mismatches_allowed,
+						 /*plusp*/false,genestrand,first_read_p,/*sarrayp*/false);
+	    } else {
+	      debug2(printf("too many mismatches, because floor = %d+middle+%d=%d > %d\n",
+			    floors->scorefrom[-index1interval][segmentj->querypos5],
+			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
+			    floor,max_mismatches_allowed));
+	      debug2(printf("too many mismatches, because floor %d > %d\n",floor,max_mismatches_allowed));
+	    }
+	  } else {
+	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
+			  segmentj->querypos3,segmenti->querypos5));
+	  }
 	}
-      }
-#endif
 
-      debug1(printf("diagonal %lu unchanged: last_querypos = %d, querypos = %d => floor increments by %d\n",
-		    diagonal,last_querypos,querypos,floor_incr));
-      debug1(printf("*multiple_mm_%s, diagonal %lu, querypos %d, floor_left %d, floor_right %d\n",
-		    plusp ? "plus" : "minus",diagonal,querypos,floor_left,floor_right));
-    } else {
-      /* End of diagonal */
-      floor_incr = floors_to_pos3[last_querypos]  /* floors->score[last_querypos][query_lastpos+index1interval] */;
-#if 0
-      floor += floor_incr;
-      floor_xfirst += floor_incr;
-      floor_xlast += floors_to_xlast[last_querypos];  /* floors->score[last_querypos][xlast_to]; */
+	/* Identify potential segmentj for segmenti */
+	segmentj_end = segmenti+1;
+	while (
+#ifdef NO_MARKER_SEGMENTS
+	       segmentj_end < &(minus_segments[minus_nsegments]) && segmentj_end->chrnum == segmenti->chrnum &&
 #endif
+	       segmentj_end->diagonal <= segmenti->diagonal + max_middle_insertions) {
+	  segmentj_end++;
+	}
 
-#ifdef OLD_FLOOR_ENDS
-      if (last_querypos < halfquery_lastpos) {
-	floor_left += floors->scorefrom[last_querypos][halfquery_lastpos+index1interval];
-	floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos+index1interval];
-      }
-      if (last_querypos >= halfquerylength) {
-	floor_right += floor_incr;
+	for (segmentj = segmenti+1; segmentj < segmentj_end; segmentj++) {
+	  debug2(printf("minus insertion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
+			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
+			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
+	  /* i5 i3 j5 j3 */
+	  if (segmenti->querypos3 < segmentj->querypos5) {
+	    indels = segmentj->diagonal - segmenti->diagonal; /* positive */
+	    floor = floors_from_neg3[segmenti->querypos5] + floors_to_pos3[segmentj->querypos3]
+	      /* floors->score[-index1interval][segmenti->querypos5] + floors->score[segmentj->querypos3][query_lastpos+index1interval] */;
+	    if (floors->prev_omitted == NULL) {
+	      if ((middle = FLOOR_MIDDLE(segmentj->querypos5 - segmenti->querypos3 - indels)) > 0) {
+		middle--;	/* for insertion, which looks like a mismatch */
+	      }
+	      debug2(printf("\nmiddle (no omission): %d\n",middle));
+	      floor += middle;
+	    } else {
+	      pos = segmentj->querypos5;
+	      debug2(printf("\nmiddle (omission):"));
+	      while (pos > segmenti->querypos3) {
+		if ((prev = floors->prev_omitted[pos]) < segmenti->querypos3) {
+		  prev = segmenti->querypos3;
+		}
+		if ((middle = FLOOR_MIDDLE(pos - prev - indels)) > 0) {
+		  middle--;	/* for insertion, which looks like a mismatch */
+		}
+		floor += middle;
+		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
+		pos = prev;
+	      }
+	      debug2(printf("\n"));
+	    }
+	    if (floor <= max_mismatches_allowed) {
+	      debug2(printf("successful insertion, floor = %d+middle+%d=%d, indels = %d\n",
+			    floors->scorefrom[-index1interval][segmenti->querypos5],
+			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
+			    floor,indels));
+	      hits = Indel_solve_middle_insertion(&foundp,&(*found_score),&(*nhits),hits,
+						  /*left*/segmenti->diagonal - querylength,
+						  segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+						  indels,/*query_compress*/query_compress_rev,
+						  querylength,max_mismatches_allowed,
+						  /*plusp*/false,genestrand,first_read_p,/*sarrayp*/false);
+	    } else {
+	      debug2(printf("too many mismatches, because floor %d+middle+%d=%d > %d\n",
+			    floors->scorefrom[-index1interval][segmenti->querypos5],
+			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
+			    floor,max_mismatches_allowed));
+	    }
+	  } else {
+	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
+			  segmenti->querypos3,segmentj->querypos5));
+	  }
+	}
       }
-#else
-      floor_right = floor_incr;
-#endif
+    }
+  }
 
-      debug1(printf("new diagonal %lu > last diagonal %lu: last_querypos = %d => final values: floor_left %d, floor_right %d\n",
-		    diagonal,last_diagonal,last_querypos,floor_left,floor_right));
+  return hits;
+}
 
-      if (last_diagonal > chrhigh) {
-	if (ptr > ptr_chrstart) {
-	  /* Add chr marker segment */
-	  debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
-	  ptr->diagonal = (Univcoord_T) -1;
-	  ptr_chrstart = ++ptr;
-	}
 
-	/* update chromosome bounds, based on low end */
-#ifdef SLOW_CHR_UPDATE
-	chrnum = Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength);
-	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
-	/* chrhigh += 1; */
-#else
-	j = 1;
-	goal = last_diagonal - querylength;
-	while (j < nchromosomes_local && chrhighs_local[j] < goal) {
-	  j <<= 1;			/* gallop by 2 */
-	}
-	if (j >= nchromosomes_local) {
-	  j = binary_search(j >> 1,nchromosomes_local,chrhighs_local,goal);
-	} else {
-	  j = binary_search(j >> 1,j,chrhighs_local,goal);
-	}
-	chrnum += j;
-#ifdef DEBUG15
-	if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
-	  fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-		  chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
-	  abort();
-	}
-#endif
-	chroffset = chroffsets[chrnum-1];
-	chrhigh = chrhighs[chrnum-1];
-	chrlength = chrlengths[chrnum-1];
-	chrhighs_local += j;
-	nchromosomes_local -= j;
-#endif
-      }
-      if (last_diagonal <= chrhigh) { /* FORMULA for high position */
-	/* position of high end is within current chromosome */
-	debug1(printf("  => multiple_mm, diagonal %lu, query %d..%d, chrbounds %lu..%lu, floor_left %d, floor_right %d\n",
-		      last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor_left,floor_right));
-	if (floor_left <= max_mismatches_allowed || floor_right <= max_mismatches_allowed) {
-	  /* Save segment */
-	  ptr->diagonal = last_diagonal;
-	  ptr->chrnum = chrnum;
-	  ptr->chroffset = chroffset;
-	  ptr->chrhigh = chrhigh;
-	  ptr->chrlength = chrlength;
-	  ptr->querypos5 = first_querypos;
-	  ptr->querypos3 = last_querypos;
-#if 0
-	  ptr->floor = floor;
-	  ptr->floor_xfirst = floor_xfirst;
-	  ptr->floor_xlast = floor_xlast;
-#endif
-	  ptr->floor_left = floor_left;
-	  ptr->floor_right = floor_right;
-#if 0
-	  ptr->leftmost = ptr->rightmost = -1;
-	  ptr->left_splice_p = ptr->right_splice_p = false;
-	  ptr->leftspan = ptr->rightspan = -1;
-#endif
-	  ptr->usedp = false;
-	  ptr++;
-	}
-      }
+/************************************************************************/
 
-      /* Prepare next diagonal */
-      first_querypos = querypos;
-      last_diagonal = diagonal;
-      floor_incr = floors_from_neg3[first_querypos] /* floors->score[-index1interval][first_querypos] */;
-#if 0
-      floor = floor_incr;
-      floor_xlast = floor_incr;
-      floor_xfirst = floors_from_xfirst[first_querypos];  /* floors->score[xfirst_from][first_querypos]; */
-#endif
+/************************************************************************
+ *   right deletion: use <  / indel_pos = [conti]
+ *   right insertion: use - sep <  / indel_pos = [conti]
+ *   left deletion: use >  / indel_pos = [conti] + 1
+ *   left insertion: use + sep >   / indel_pos = [conti]-sep+1
+ ************************************************************************/
 
-#ifdef OLD_FLOOR_ENDS
-      if (querypos < halfquery_lastpos) {
-	floor_left = floor_incr;
-      } else {
-	floor_left = floors->scorefrom[-index1interval][halfquery_lastpos];
-      }
-      if (querypos < halfquerylength) {
-	floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos];
-      } else {
-	floor_right = floors->scorefrom[halfquerylength-index1interval][first_querypos];
-      }
-#else
-      floor_left = floor_incr;
-#ifdef DEBUG1
-      floor_right = -99;
-#endif
+static int
+compute_end_indels_right (int *indels, int *nmismatches_longcont, int *nmismatches_shift,
+			  int *mismatch_positions_long, int nmismatches_avail_long,
+			  int breakpoint, int querylength, Univcoord_T left, Compress_T query_compress,
+			  int min_indel_end_matches, int max_end_insertions, int max_end_deletions,
+			  int max_mismatches_short, bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG2E
+  int i;
 #endif
-
-      debug1(printf("*multiple_mm_%s, diagonal %lu, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
-      debug1(printf("start of diagonal %lu, first_querypos = %d => initial values: floor_left %d, floor_right %d\n",
-		    diagonal,first_querypos,floor_left,floor_right));
-    }
-    last_querypos = querypos;
-
-
-    if (--batch->npositions <= 0) {
-      /* Use last entry in heap for insertion */
-      batch = heap[heapsize];
-      querypos = batch->querypos;
-      heap[heapsize--] = sentinel;
-
-    } else {
-      /* Use this batch for insertion (same querypos) */
-#ifdef WORDS_BIGENDIAN
-      batch->diagonal = Bigendian_convert_univcoord(*(++batch->positions)) + batch->diagterm;
+  int length1;
+  int sep, end;
+  int nmismatches_avail_shift, nmatches;
+  int mismatch_positions_shift[MAX_READLENGTH+1];
+  int sum, best_sum = MAX_READLENGTH;
+  int conti, shifti;
+  int best_indel_pos = -1, endlength;
+#ifdef OLD_END_INDELS
+  int indel_pos;
 #else
-      batch->diagonal = *(++batch->positions) + batch->diagterm;
-#endif
-#ifdef DIAGONAL_ADD_QUERYPOS
-      batch->diagonal_add_querypos = (UINT8) batch->diagonal;
-      batch->diagonal_add_querypos <<= 32;
-      batch->diagonal_add_querypos |= querypos /* Previously added 2 because querypos was -2: + 2*/;
+  int indel_pos_cont, indel_pos_shift;
 #endif
-    }
 
-    /* heapify */
-    parenti = 1;
-#ifdef DIAGONAL_ADD_QUERYPOS
-    diagonal_add_querypos = batch->diagonal_add_querypos;
-    smallesti = (heap[3]->diagonal_add_querypos < heap[2]->diagonal_add_querypos) ? 3 : 2;
-    while (diagonal_add_querypos > heap[smallesti]->diagonal_add_querypos) {
-      heap[parenti] = heap[smallesti];
-      parenti = smallesti;
-      smallesti = LEFT(parenti);
-      righti = smallesti+1;
-      if (heap[righti]->diagonal_add_querypos < heap[smallesti]->diagonal_add_querypos) {
-	smallesti = righti;
-      }
-    }
-#else
-    diagonal = batch->diagonal;
-    smallesti = ((heap[3]->diagonal < heap[2]->diagonal) ||
-		 ((heap[3]->diagonal == heap[2]->diagonal) &&
-		  (heap[3]->querypos < heap[2]->querypos))) ? 3 : 2;
-    /* Note that diagonal/querypos will never exceed a sentinel diagonal/querypos */
-    while (diagonal > heap[smallesti]->diagonal ||
-	   (diagonal == heap[smallesti]->diagonal &&
-	    querypos > heap[smallesti]->querypos)) {
-      heap[parenti] = heap[smallesti];
-      parenti = smallesti;
-      smallesti = LEFT(parenti);
-      righti = smallesti+1;
-      if ((heap[righti]->diagonal < heap[smallesti]->diagonal) ||
-	  ((heap[righti]->diagonal == heap[smallesti]->diagonal) &&
-	   (heap[righti]->querypos < heap[smallesti]->querypos))) {
-	smallesti = righti;
-      }
-    }
+  debug2e(printf("Entered compute_end_indels_right with breakpoint = %d, max_mismatches_short %d\n",
+		 breakpoint,max_mismatches_short));
+  length1 = querylength - breakpoint;
+#if 0
+  /* Should not need to reset max_end_deletions */
+  if (max_end_deletions > length1 - min_indel_end_matches) {
+    max_end_deletions = length1 - min_indel_end_matches;
+  }
 #endif
-    heap[parenti] = batch;
+  if (max_end_insertions > length1 - min_indel_end_matches) {
+    max_end_insertions = length1 - min_indel_end_matches;
   }
 
-  /* Terminate loop. */
-  floor_incr = floors_to_pos3[last_querypos];   /* floors->score[last_querypos][query_lastpos+index1interval]; */
-#if 0
-  floor += floor_incr;
-  floor_xfirst += floor_incr;
-  floor_xlast += floors_to_xlast[last_querypos];  /* floors->score[last_querypos][xlast_to]; */
-#endif
+  if (max_end_deletions > 0) {
+    for (sep = 1; sep <= max_end_deletions; sep++) {
+      /* *indels = -sep; */
+      nmismatches_avail_shift = Genome_mismatches_right(mismatch_positions_shift,
+							max_mismatches_short,query_compress,
+							left-(-sep),/*pos5*/0,/*pos3*/querylength,
+							plusp,genestrand,first_read_p);
+      debug2e(
+	      printf("A. Trying deletion of %d.  ",-sep);
+	      printf("%d mismatches on right at:",nmismatches_avail_shift);
+	      for (i = 0; i <= nmismatches_avail_shift; i++) {
+		printf(" %d",mismatch_positions_shift[i]);
+	      }
+	      printf(".  ");
+	      );
 
-#ifdef OLD_FLOOR_ENDS
-  if (last_querypos < halfquery_lastpos) {
-    floor_left += floors->scorefrom[last_querypos][halfquery_lastpos+index1interval];
-    floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos+index1interval];
-  }
-  if (last_querypos >= halfquerylength) {
-    floor_right += floor_incr;
-  }
-#else
-  floor_right = floor_incr;
-#endif
+      if (nmismatches_avail_shift == 0) {
+	/* Skip, because we have an exact match on the shift */
+      } else {
+#ifdef OLD_END_INDELS
+	/* Compute over mismatch_positions_shift[n-1] to querylength */
+	/* A. Right deletion: Primary loop along Genome_mismatches_right (shifti) to get lowest coordinate */
+	shifti = 0;
+	conti = nmismatches_avail_long - 1;
+	while (shifti < nmismatches_avail_shift) {
+	  while (conti >= 0 && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
+	    conti--;
+	  }
+	  sum = shifti + conti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]+1));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_shift[shifti] + 1;
+	    if ((endlength = querylength - indel_pos) >= min_indel_end_matches && endlength >= sep) {
+	      /* Don't want to delete more than the amount matched */
+	      nmatches = endlength - shifti;
+	      if (nmatches - 3*shifti - 4 >= 0) {
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		/* Want more matches than mismatches */
+		best_indel_pos = indel_pos;
+		*indels = -sep;
+		*nmismatches_longcont = conti + 1;
+		*nmismatches_shift = shifti;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  shifti++;
+	}
+	debug2e(printf("\n"));
 
-  
-  debug1(printf("no more diagonals: last_querypos = %d => terminal values: floor_left %d, floor_right %d\n",
-		last_querypos,floor_left,floor_right));
+	/* A. Right deletion: Primary loop along Genome_mismatches_left (conti) to see if we missed anything */
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
 
-  if (last_diagonal > chrhigh) {
-    if (ptr > ptr_chrstart) {
-      /* Add chr marker segment */
-      debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
-      ptr->diagonal = (Univcoord_T) -1;
-      ptr_chrstart = ++ptr;
-    }
+	/* Start in region */
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
 
-    /* update chromosome bounds, based on low end */
-#ifdef SLOW_CHR_UPDATE
-    chrnum = Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength);
-    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
-    /* chrhigh += 1; */
-#else
-    j = 1;
-    goal = last_diagonal - querylength;
-    while (j < nchromosomes_local && chrhighs_local[j] < goal) {
-      j <<= 1;			/* gallop by 2 */
-    }
-    if (j >= nchromosomes_local) {
-      j = binary_search(j >> 1,nchromosomes_local,chrhighs_local,goal);
-    } else {
-      j = binary_search(j >> 1,j,chrhighs_local,goal);
-    }
-    chrnum += j;
-#ifdef DEBUG15
-    if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
-      fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-	      chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
-      abort();
-    }
-#endif
-    chroffset = chroffsets[chrnum-1];
-    chrhigh = chrhighs[chrnum-1];
-    chrlength = chrlengths[chrnum-1];
-    chrhighs_local += j;
-    nchromosomes_local -= j;
-#endif
-  }
-  if (last_diagonal <= chrhigh) { /* FORMULA for high position */
-    /* position of high end is within current chromosome */
-    debug1(printf("  => multiple_mm, diagonal %lu, query %d..%d, chrbounds %lu..%lu, floor_left %d, floor_right %d\n",
-		  last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor_left,floor_right));
-    if (floor_left <= max_mismatches_allowed || floor_right <= max_mismatches_allowed) {
-      /* Save segment */
-      ptr->diagonal = last_diagonal;
-      ptr->chrnum = chrnum;
-      ptr->chroffset = chroffset;
-      ptr->chrhigh = chrhigh;
-      ptr->chrlength = chrlength;
-      ptr->querypos5 = first_querypos;
-      ptr->querypos3 = last_querypos;
-#if 0
-      ptr->floor = floor;
-      ptr->floor_xfirst = floor_xfirst;
-      ptr->floor_xlast = floor_xlast;
-#endif
-      ptr->floor_left = floor_left;
-      ptr->floor_right = floor_right;
-#if 0
-      ptr->leftmost = ptr->rightmost = -1;
-      ptr->left_splice_p = ptr->right_splice_p = false;
-      ptr->leftspan = ptr->rightspan = -1;
-#endif
-      ptr->usedp = false;
-      ptr++;
-    }
-  }
-
-  if (ptr > ptr_chrstart) {
-    /* Final chr marker segment */
-    debug1(printf("=== ptr %p > ptr_chrstart %p, so adding final chr marker segment\n",ptr,ptr_chrstart));
-    ptr->diagonal = (Univcoord_T) -1;
-    /* ptr_chrstart = */ ++ptr;
-  }
-
-
-  FREE(heap);
-  FREE(batchpool);
-
-  /* Note: segments is in descending diagonal order.  Will need to
-     reverse before solving middle deletions */
-
-  *nsegments = ptr - segments;
-  debug1(printf("nsegments = %d\n",*nsegments));
-  debug(printf("nsegments = %d (total_npositions = %d)\n",*nsegments,total_npositions));
-
-  assert(*nsegments <= total_npositions + nchromosomes);
-
-  return segments;
-}
-
-#endif
-
-#ifdef USE_QSORT
-/* Uses qsort */
-/* Specialized version of identify_all_segments_qsort that stores only floor_left and floor_right */
-static struct Segment_T *
-identify_all_segments_for_terminals (int *nsegments, Genomicpos_T **positions, int *npositions,
-				     bool *omitted, int querylength, int query_lastpos,
-				     Floors_T floors, int max_mismatches_allowed, bool plusp) {
-  UINT8* all_diagonals_add_querypos;
-  struct Segment_T *segments = NULL;
-  int batch_diagterm;
-  int batch_npositions;
-  Genomicpos_T *batch_positions;
-  int k;
-  int querypos, first_querypos, last_querypos;
-  int floor_left, floor_right, floor_incr;
-  int *floors_from_neg3, *floors_from_xfirst, *floors_to_xlast, *floors_to_pos3;
-  /* int exclude_xfirst, exclude_xlast; */
-  Genomicpos_T diagonal, last_diagonal, chroffset = 0U, chrhigh = 0U, chrlength;
-  Chrnum_T chrnum = 1;
-#ifdef OLD_FLOOR_ENDS
-  int halfquerylength, halfquery_lastpos;
-#endif
-
-  UINT8 diagonal_add_querypos;
-  int total_npositions = 0;
-  Segment_T ptr, ptr_chrstart;
-#ifndef SLOW_CHR_UPDATE
-  Genomicpos_T goal;
-  int j, nchromosomes_local = nchromosomes;
-  Genomicpos_T *chrhighs_local = chrhighs;
-#endif
-
-  debug(printf("*** Starting identify_all_segments_for_terminals ***\n"));
-
-#ifdef OLD_FLOOR_ENDS
-  halfquerylength = querylength / 2;
-  halfquery_lastpos = halfquerylength - index1part;
-#endif
-
-
-  /* Count total positions, but don't add entries for compoundpos positions (skip querypos -2, -1, lastpos+1, lastpos+2) */
-  total_npositions = 0;
-  for (querypos = 0; querypos <= query_lastpos; querypos++) {
-    if (omitted[querypos] == true) {
-#if 0
-    } else if (npositions[querypos] <= 0) {
-      /* This case is handled below */
-#endif
-    } else {
-      total_npositions += npositions[querypos];
-    }
-  }
-
-  if (total_npositions == 0) {
-    *nsegments = 0;
-    return (struct Segment_T *) NULL;
-  } else {
-    all_diagonals_add_querypos = (UINT8 *) CALLOC(total_npositions,sizeof(UINT8));
-  }
-
-  /* Set up global list of diagonals.  At this point, total_npositions
-     includes positions that can be ignored because they are below
-     querylength */
-  if (plusp) {
-    total_npositions = 0;
-    for (querypos = 0, batch_diagterm = querylength; querypos <= query_lastpos;
-	 querypos++, batch_diagterm--) {
-      if (omitted[querypos] == true) {
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else if ((batch_npositions = npositions[querypos]) <= 0) {
-	/* This case is not handled below */
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else {
-	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-	/* batch_diagterm = querylength - querypos; */ /* for plus; now in for loop */
-	batch_positions = positions[querypos];
-
-#ifdef WORDS_BIGENDIAN
-	diagonal_add_querypos = Bigendian_convert_uint(*batch_positions) + batch_diagterm;
-#else
-	diagonal_add_querypos = *batch_positions + batch_diagterm;
-#endif
-	/* batch_npositions = npositions[querypos]; */
-	while (--batch_npositions >= 0 && diagonal_add_querypos < (UINT8) querylength) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
-#else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
-#endif
-	}
-	if (diagonal_add_querypos >= (UINT8) querylength) {
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
-	}
-	while (--batch_npositions >= 0) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
-#else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
-#endif
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
-	}
-      }
-    }
-
-  } else {
-    total_npositions = 0;
-    for (querypos = 0, batch_diagterm = index1part; querypos <= query_lastpos;
-	 querypos++, batch_diagterm++) {
-      if (omitted[querypos] == true) {
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else if ((batch_npositions = npositions[querypos]) <= 0) {
-	/* This case is not handled below */
-	debug1(printf("Not adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-      } else {
-	debug1(printf("Adding batch for querypos %d with %d positions, omitted %d\n",
-		      querypos,npositions[querypos],omitted[querypos]));
-	/* batch_diagterm = querypos + index1part; */ /* for minus, now in for loop */
-	batch_positions = positions[querypos];
-
-#ifdef WORDS_BIGENDIAN
-	diagonal_add_querypos = Bigendian_convert_uint(*batch_positions) + batch_diagterm;
-#else
-	diagonal_add_querypos = *batch_positions + batch_diagterm;
-#endif
-	/* batch_npositions = npositions[querypos]; */
-	while (--batch_npositions >= 0 && diagonal_add_querypos < (UINT8) querylength) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
-#else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
-#endif
-	}
-	if (diagonal_add_querypos >= (UINT8) querylength) {
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
-	}
-	while (--batch_npositions >= 0) {
-#ifdef WORDS_BIGENDIAN
-	  diagonal_add_querypos = Bigendian_convert_uint(*(++batch_positions)) + batch_diagterm;
-#else
-	  diagonal_add_querypos = *(++batch_positions) + batch_diagterm;
-#endif
-	  diagonal_add_querypos <<= 32;
-	  diagonal_add_querypos |= querypos;
-	  all_diagonals_add_querypos[total_npositions++] = diagonal_add_querypos;
-	}
-      }
-    }
-  }
-
-  if (total_npositions == 0) {
-    /* Because we omitted cases where diagonal_add_querypos < querylength */
-    *nsegments = 0;
-    FREE(all_diagonals_add_querypos);
-    return (struct Segment_T *) NULL;
-  } else {
-    qsort(all_diagonals_add_querypos,total_npositions,sizeof(UINT8),UINT8_compare);
-  }
-
-  /* Putting chr marker "segments" after each chromosome */
-  segments = (struct Segment_T *) CALLOC(total_npositions + nchromosomes,sizeof(struct Segment_T));
-  ptr_chrstart = ptr = &(segments[0]);
-
-  /*
-  if ((exclude_xfirst = firstbound-2-index1part-max_end_insertions) < index1interval) {
-    exclude_xfirst = index1interval;
-  }
-  if ((exclude_xlast = lastbound+1+max_end_insertions) > query_lastpos-index1interval) {
-    exclude_xlast = query_lastpos-index1interval;
-  }
-  */
-
-#if 0
-  /* Should account for firstbound and lastbound */
-  floors_from_xfirst = floors->scorefrom[/* xfirst_from = */ firstbound-index1interval+max_end_insertions];
-  floors_to_xlast = floors->scoreto[/* xlast_to = */ lastbound+1+index1interval-index1part-max_end_insertions];
-#else
-  if (spansize /* +max_end_insertions */ > query_lastpos + index1interval) {
-    floors_from_xfirst = floors->scorefrom[query_lastpos+index1interval];
-  } else {
-    floors_from_xfirst = floors->scorefrom[spansize /* +max_end_insertions */];
-  }
-  if (query_lastpos-spansize /* -max_end_insertions */ < -index1interval) {
-    floors_to_xlast = floors->scoreto[-index1interval];
-  } else {
-    floors_to_xlast = floors->scoreto[query_lastpos-spansize /* -max_end_insertions */];
-  }
-#endif
-  floors_from_neg3 = floors->scorefrom[-index1interval];
-  floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
-
-
-  /* Initialize loop */
-  first_querypos = last_querypos = all_diagonals_add_querypos[0] & 0xFFFFFFFF;
-  last_diagonal = all_diagonals_add_querypos[0] >> 32;
-
-  floor_incr = floors_from_neg3[first_querypos];
-#if 0
-  floor = floor_incr;
-  floor_xlast = floor_incr;
-  floor_xfirst = floors_from_xfirst[first_querypos] /* floors->scorefrom[xfirst_from][first_querypos] */;
-#endif
-
-#ifdef OLD_FLOOR_ENDS
-  if (querypos < halfquery_lastpos) {
-    floor_left = floor_incr;
-  } else {
-    floor_left = floors->scorefrom[-index1interval][halfquery_lastpos];
-  }
-  if (querypos < halfquerylength) {
-    floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos];
-  } else {
-    floor_right = floors->scorefrom[halfquerylength-index1interval][first_querypos];
-  }
-#else
-  floor_left = floor_incr;
-#ifdef DEBUG1
-  floor_right = -99;
-#endif
-#endif
-
-  debug1(printf("multiple_mm_%s, diagonal %u, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
-  debug1(printf("first_querypos = %d => initial values: floor_left %d, floor_right %d\n",
-	        first_querypos,floor_left,floor_right));
-
-  /* Continue after initialization */
-  for (k = 1; k < total_npositions; k++) {
-    querypos = all_diagonals_add_querypos[k] & 0xFFFFFFFF;
-    diagonal = all_diagonals_add_querypos[k] >> 32;
-
-    if (diagonal == last_diagonal) {
-      /* Continuing exact match or substitution */
-      floor_incr = floors->scorefrom[last_querypos][querypos];
-#if 0
-      floor += floor_incr;
-      floor_xfirst += floor_incr;
-      floor_xlast += floor_incr;
-#endif
-
-#ifdef OLD_FLOOR_ENDS
-      /* Why is this here?  Just set floor_left at start and floor_right at end. */
-      if (querypos < halfquery_lastpos) {
-	floor_left += floor_incr;
-      } else if (last_querypos < halfquery_lastpos) {
-	/* Finish floor_left */
-	floor_left += floors->scorefrom[last_querypos][halfquery_lastpos+index1interval];
-      }
-      if (querypos >= halfquerylength) {
-	if (last_querypos < halfquerylength) {
-	  /* Start floor_right */
-	  floor_right = floors->scorefrom[halfquerylength-index1interval][querypos];
-	} else {
-	  floor_right += floor_incr;
-	}
-      }
-#endif
-
-      debug1(printf("diagonal %u unchanged: last_querypos = %d, querypos = %d => floor increments by %d\n",
-		    diagonal,last_querypos,querypos,floor_incr));
-      debug1(printf("*multiple_mm_%s, diagonal %u, querypos %d, floor_left %d, floor_right %d\n",
-		    plusp ? "plus" : "minus",diagonal,querypos,floor_left,floor_right));
-    } else {
-      /* End of diagonal */
-      floor_incr = floors_to_pos3[last_querypos]  /* floors->score[last_querypos][query_lastpos+index1interval] */;
-#if 0
-      floor += floor_incr;
-      floor_xfirst += floor_incr;
-      floor_xlast += floors_to_xlast[last_querypos];  /* floors->score[last_querypos][xlast_to]; */
-#endif
-
-#ifdef OLD_FLOOR_ENDS
-      if (last_querypos < halfquery_lastpos) {
-	floor_left += floors->scorefrom[last_querypos][halfquery_lastpos+index1interval];
-	floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos+index1interval];
-      }
-      if (last_querypos >= halfquerylength) {
-	floor_right += floor_incr;
-      }
-#else
-      floor_right = floor_incr;
-#endif
-
-      debug1(printf("new diagonal %u > last diagonal %u: last_querypos = %d => final values: floor_left %d, floor_right %d\n",
-		    diagonal,last_diagonal,last_querypos,floor_left,floor_right));
-
-      if (last_diagonal > chrhigh) {
-	if (ptr > ptr_chrstart) {
-	  /* Add chr marker segment */
-	  debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
-	  ptr->diagonal = -1U;
-	  ptr_chrstart = ++ptr;
-	}
-
-	/* update chromosome bounds, based on low end */
-#ifdef SLOW_CHR_UPDATE
-	chrnum = Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength);
-	Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
-	/* chrhigh += 1U; */
-#else
-	j = 1;
-	goal = last_diagonal - querylength;
-	while (j < nchromosomes_local && chrhighs_local[j] < goal) {
-	  j <<= 1;			/* gallop by 2 */
-	}
-	if (j >= nchromosomes_local) {
-	  j = binary_search(j >> 1,nchromosomes_local,chrhighs_local,goal);
-	} else {
-	  j = binary_search(j >> 1,j,chrhighs_local,goal);
-	}
-	chrnum += j;
-#ifdef DEBUG15
-	if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
-	  fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-		  chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
-	  abort();
-	}
-#endif
-	chroffset = chroffsets[chrnum-1];
-	chrhigh = chrhighs[chrnum-1];
-	chrlength = chrlengths[chrnum-1];
-	chrhighs_local += j;
-	nchromosomes_local -= j;
-#endif
-      }
-      if (last_diagonal <= chrhigh) { /* FORMULA for high position */
-	/* position of high end is within current chromosome */
-	debug1(printf("  => multiple_mm, diagonal %u, query %d..%d, chrbounds %u..%u, floor_left %d, floor_right %d\n",
-		      last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor_left,floor_right));
-	if (floor_left <= max_mismatches_allowed || floor_right <= max_mismatches_allowed) {
-	  /* Save segment */
-	  ptr->diagonal = last_diagonal;
-	  ptr->chrnum = chrnum;
-	  ptr->chroffset = chroffset;
-	  ptr->chrhigh = chrhigh;
-	  ptr->chrlength = chrlength;
-	  ptr->querypos5 = first_querypos;
-	  ptr->querypos3 = last_querypos;
-#if 0
-	  ptr->floor = floor;
-	  ptr->floor_xfirst = floor_xfirst;
-	  ptr->floor_xlast = floor_xlast;
-#endif
-	  ptr->floor_left = floor_left;
-	  ptr->floor_right = floor_right;
-#if 0
-	  ptr->leftmost = ptr->rightmost = -1;
-	  ptr->left_splice_p = ptr->right_splice_p = false;
-	  ptr->leftspan = ptr->rightspan = -1;
-#endif
-	  ptr->usedp = false;
-	  ptr++;
-	}
-      }
-
-      /* Prepare next diagonal */
-      first_querypos = querypos;
-      last_diagonal = diagonal;
-      floor_incr = floors_from_neg3[first_querypos] /* floors->score[-index1interval][first_querypos] */;
-#if 0
-      floor = floor_incr;
-      floor_xlast = floor_incr;
-      floor_xfirst = floors_from_xfirst[first_querypos];  /* floors->score[xfirst_from][first_querypos]; */
-#endif
-
-#ifdef OLD_FLOOR_ENDS
-      if (querypos < halfquery_lastpos) {
-	floor_left = floor_incr;
-      } else {
-	floor_left = floors->scorefrom[-index1interval][halfquery_lastpos];
-      }
-      if (querypos < halfquerylength) {
-	floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos];
-      } else {
-	floor_right = floors->scorefrom[halfquerylength-index1interval][first_querypos];
-      }
-#else
-      floor_left = floor_incr;
-#ifdef DEBUG1
-      floor_right = -99;
-#endif
-#endif
-
-      debug1(printf("*multiple_mm_%s, diagonal %u, querypos %d\n",plusp ? "plus" : "minus",diagonal,querypos));
-      debug1(printf("start of diagonal %u, first_querypos = %d => initial values: floor_left %d, floor_right %d\n",
-		    diagonal,first_querypos,floor_left,floor_right));
-    }
-    last_querypos = querypos;
-  }
-
-  /* Terminate loop. */
-  floor_incr = floors_to_pos3[last_querypos];   /* floors->score[last_querypos][query_lastpos+index1interval]; */
-#if 0
-  floor += floor_incr;
-  floor_xfirst += floor_incr;
-  floor_xlast += floors_to_xlast[last_querypos];  /* floors->score[last_querypos][xlast_to]; */
-#endif
-
-#ifdef OLD_FLOOR_ENDS
-  if (last_querypos < halfquery_lastpos) {
-    floor_left += floors->scorefrom[last_querypos][halfquery_lastpos+index1interval];
-    floor_right = floors->scorefrom[halfquerylength-index1interval][query_lastpos+index1interval];
-  }
-  if (last_querypos >= halfquerylength) {
-    floor_right += floor_incr;
-  }
-#else
-  floor_right = floor_incr;
-#endif
-
-  
-  debug1(printf("no more diagonals: last_querypos = %d => terminal values: floor_left %d, floor_right %d\n",
-		last_querypos,floor_left,floor_right));
-
-  if (last_diagonal > chrhigh) {
-    if (ptr > ptr_chrstart) {
-      /* Add chr marker segment */
-      debug1(printf("=== ptr %p > ptr_chrstart %p, so adding chr marker segment\n",ptr,ptr_chrstart));
-      ptr->diagonal = -1U;
-      ptr_chrstart = ++ptr;
-    }
-
-    /* update chromosome bounds, based on low end */
-#ifdef SLOW_CHR_UPDATE
-    chrnum = Univ_IIT_get_one(chromosome_iit,last_diagonal-querylength,last_diagonal-querylength);
-    Univ_IIT_interval_bounds(&chroffset,&chrhigh,&chrlength,chromosome_iit,chrnum,circular_typeint);
-    /* chrhigh += 1U; */
-#else
-    j = 1;
-    goal = last_diagonal - querylength;
-    while (j < nchromosomes_local && chrhighs_local[j] < goal) {
-      j <<= 1;			/* gallop by 2 */
-    }
-    if (j >= nchromosomes_local) {
-      j = binary_search(j >> 1,nchromosomes_local,chrhighs_local,goal);
-    } else {
-      j = binary_search(j >> 1,j,chrhighs_local,goal);
-    }
-    chrnum += j;
-#ifdef DEBUG15
-    if (chrnum != IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength)) {
-      fprintf(stderr,"Got chrnum %d, but wanted %d\n",
-	      chrnum,IIT_get_one(chromosome_iit,/*divstring*/NULL,last_diagonal-querylength,last_diagonal-querylength));
-      abort();
-    }
-#endif
-    chroffset = chroffsets[chrnum-1];
-    chrhigh = chrhighs[chrnum-1];
-    chrlength = chrlengths[chrnum-1];
-    chrhighs_local += j;
-    nchromosomes_local -= j;
-#endif
-  }
-  if (last_diagonal <= chrhigh) { /* FORMULA for high position */
-    /* position of high end is within current chromosome */
-    debug1(printf("  => multiple_mm, diagonal %u, query %d..%d, chrbounds %u..%u, floor_left %d, floor_right %d\n",
-		  last_diagonal,first_querypos,last_querypos,chroffset,chrhigh,floor_left,floor_right));
-    if (floor_left <= max_mismatches_allowed || floor_right <= max_mismatches_allowed) {
-      /* Save segment */
-      ptr->diagonal = last_diagonal;
-      ptr->chrnum = chrnum;
-      ptr->chroffset = chroffset;
-      ptr->chrhigh = chrhigh;
-      ptr->chrlength = chrlength;
-      ptr->querypos5 = first_querypos;
-      ptr->querypos3 = last_querypos;
-#if 0
-      ptr->floor = floor;
-      ptr->floor_xfirst = floor_xfirst;
-      ptr->floor_xlast = floor_xlast;
-#endif
-      ptr->floor_left = floor_left;
-      ptr->floor_right = floor_right;
-#if 0
-      ptr->leftmost = ptr->rightmost = -1;
-      ptr->left_splice_p = ptr->right_splice_p = false;
-      ptr->leftspan = ptr->rightspan = -1;
-#endif
-      ptr->usedp = false;
-      ptr++;
-    }
-  }
-
-  if (ptr > ptr_chrstart) {
-    /* Final chr marker segment */
-    debug1(printf("=== ptr %p > ptr_chrstart %p, so adding final chr marker segment\n",ptr,ptr_chrstart));
-    ptr->diagonal = -1U;
-    /* ptr_chrstart = */ ++ptr;
-  }
-
-  /* Note: segments is in descending diagonal order.  Will need to
-     reverse before solving middle deletions */
-
-  *nsegments = ptr - segments;
-  debug1(printf("nsegments = %d\n",*nsegments));
-  debug(printf("nsegments = %d (total_npositions = %d)\n",*nsegments,total_npositions));
-
-  assert(*nsegments <= total_npositions + nchromosomes);
-
-  return segments;
-}
-#endif
-
-
-/* indels is positive here */
-static List_T
-solve_middle_insertion (int *found_score, int *nhits, List_T hits, Segment_T ptr, Segment_T ptr2,
-			int indels, Compress_T query_compress,
-#ifdef DEBUG2
-			char *queryptr,
-#endif
-			int querylength, int min_indel_end_matches, int indel_penalty_middle,
-			int max_mismatches_allowed, bool plusp, int genestrand) {
-#ifdef DEBUG2
-  int i;
-  char gbuffer[MAX_READLENGTH+1];
-#endif
-  Stage3end_T hit;
-  Univcoord_T left;
-  int best_indel_pos, query_indel_pos, indel_pos;
-  int mismatch_positions_left[MAX_READLENGTH], mismatch_positions_right[MAX_READLENGTH];
-  int nmismatches_left, nmismatches_right;
-  int best_sum, sum, nmismatches_lefti, nmismatches_righti, lefti, righti;
-  int nmismatches1, nmismatches2;
-
-
-  /* query has insertion.  Get |indels| less from genome; trim from left. */
-  left = ptr->diagonal - querylength;
-
-  debug2(Genome_fill_buffer_blocks(left+indels,querylength-indels,gbuffer));
-  debug2(printf("solve_middle_indel, plus, insertion: Getting genome at diagonal %lu - querylength %d + indels %d = %lu\n",
-		ptr->diagonal,querylength,indels,left+indels));
-  debug2(printf("g1: %s\n",gbuffer));
-  debug2(printf("q:  %s\n",queryptr));
-  debug2(printf("g2: %s\n",&(gbuffer[indels])));
-
-  /* No need to check chromosome bounds */
-  nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
-					    query_compress,left+indels,/*pos5*/0,/*pos3*/querylength,
-					    plusp,genestrand);
-  debug2(
-	 printf("%d mismatches on left at:",nmismatches_left);
-	 for (i = 0; i <= nmismatches_left; i++) {
-	   printf(" %d",mismatch_positions_left[i]);
-	 }
-	 printf("\n");
-	 );
-
-
-  /* No need to check chromosome bounds */
-  nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
-					      query_compress,left,/*pos5*/0,/*pos3*/querylength,
-					      plusp,genestrand);
-  debug2(
-	 printf("%d mismatches on right at:",nmismatches_right);
-	 for (i = 0; i <= nmismatches_right; i++) {
-	   printf(" %d",mismatch_positions_right[i]);
-	 }
-	 printf("\n");
-	 );
-
-  best_sum = querylength;
-
-  /* Modeled after end D to get lowest possible coordinate */
-  righti = 0;
-  lefti = nmismatches_left - 1;
-
-  while (righti < nmismatches_right) {
-    while (lefti >= 0 && mismatch_positions_left[lefti] > mismatch_positions_right[righti] - indels) {
-      lefti--;
-    }
-    sum = righti + lefti + 1;
-    debug2(printf("(Case D) sum %d=%d+%d at indel_pos %d.  ",
-		  sum,righti,lefti+1,mismatch_positions_right[righti]-indels+1));
-    if (sum <= best_sum) {
-      indel_pos = mismatch_positions_right[righti] - indels + 1;
-      if (indel_pos >= min_indel_end_matches && indel_pos + indels <= querylength - min_indel_end_matches) {
-	best_indel_pos = indel_pos;
-	nmismatches_righti = righti;
-	nmismatches_lefti = lefti + 1;
-	debug2(printf("**"));
-	best_sum = sum;
-      }
-    }
-    righti++;
-  }
-  debug2(printf("\n"));
-
-
-  /* Try from other side to see if we missed anything */
-  lefti = 0;
-  righti = nmismatches_right - 1;
-
-  while (lefti < nmismatches_left) {
-    while (righti >= 0 && mismatch_positions_right[righti] < mismatch_positions_left[lefti] + indels) {
-      righti--;
-    }
-    sum = lefti + righti + 1;
-    debug2(printf("(Case D2) sum %d=%d+%d at indel_pos %d.  ",
-		  sum,lefti,righti+1,mismatch_positions_left[lefti]));
-    if (sum < best_sum) {
-      indel_pos = mismatch_positions_left[lefti];
-      if (indel_pos >= min_indel_end_matches && indel_pos + indels <= querylength - min_indel_end_matches) {
-	best_indel_pos = indel_pos;
-	nmismatches_righti = righti + 1;
-	nmismatches_lefti = lefti;
-	debug2(printf("**"));
-	best_sum = sum;
-      }
-    } else if (sum == best_sum) {
-      indel_pos = mismatch_positions_left[lefti];
-      if (indel_pos < best_indel_pos) {
-	if (indel_pos >= min_indel_end_matches && indel_pos + indels <= querylength - min_indel_end_matches) {
-	  best_indel_pos = indel_pos;
-	  nmismatches_righti = righti + 1;
-	  nmismatches_lefti = lefti;
-	  debug2(printf("**"));
-	  /* best_sum = sum; */
-	}
-      }
-    }
-    lefti++;
-  }
-  debug2(printf("\n"));
-
-
-  if (best_sum <= max_mismatches_allowed) {
-    if (plusp == true) {
-      query_indel_pos = best_indel_pos;
-      nmismatches1 = nmismatches_lefti;
-      nmismatches2 = nmismatches_righti;
-    } else {
-      query_indel_pos = querylength - best_indel_pos - indels;
-      nmismatches1 = nmismatches_righti;
-      nmismatches2 = nmismatches_lefti;
-    }
-
-    if ((hit = Stage3end_new_insertion(&(*found_score),indels,query_indel_pos,
-				       nmismatches1,nmismatches2,
-				       /*left*/left+indels,/*genomiclength*/querylength-indels,
-				       query_compress,querylength,plusp,genestrand,
-				       ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
-				       indel_penalty_middle)) != NULL) {
-      debug2(printf("successful insertion with %d=%d+%d mismatches and indel_pos at %d\n",
-		    sum,nmismatches_lefti,nmismatches_righti,best_indel_pos));
-      ptr->usedp = ptr2->usedp = true;
-      *nhits += 1;
-      hits = List_push(hits,(void *) hit);
-    }
-  }
-
-  return hits;
-}
-
-
-
-/* indels is negative here */
-static List_T
-solve_middle_deletion (int *found_score, int *nhits, List_T hits, Segment_T ptr, Segment_T ptr2,
-		       int indels, Compress_T query_compress,
-#ifdef DEBUG2
-		       char *queryptr,
-#endif
-		       int querylength, int min_indel_end_matches, int indel_penalty_middle,
-		       int max_mismatches_allowed, bool plusp, int genestrand) {
-#ifdef DEBUG2
-  int i;
-  char *gbuffer;
-#endif
-  Stage3end_T hit;
-  Univcoord_T left;
-  int best_indel_pos, query_indel_pos, indel_pos;
-  int mismatch_positions_left[MAX_READLENGTH], mismatch_positions_right[MAX_READLENGTH];
-  int nmismatches_left, nmismatches_right;
-  int best_sum, sum, nmismatches_lefti, nmismatches_righti, lefti, righti;
-  int nmismatches1, nmismatches2;
-
-
-  /* query has deletion.  Get |indels| more from genome; add to right. */
-  left = ptr->diagonal - querylength;
-
-  debug2(gbuffer = (char *) CALLOC(querylength-indels+1,sizeof(char)));
-  debug2(Genome_fill_buffer_blocks(left,querylength-indels,gbuffer));
-  debug2(printf("solve_middle_indel, plus, deletion: Getting genome at diagonal %lu - querylength %d = %lu\n",
-		ptr->diagonal,querylength,left));
-  debug2(printf("g1: %s\n",gbuffer));
-  debug2(printf("q:  %s\n",queryptr));
-  debug2(printf("g2: %s\n",&(gbuffer[-indels])));
-  debug2(FREE(gbuffer));
-
-  /* No need to check chromosome bounds */
-  nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
-					    query_compress,left,/*pos5*/0,/*pos3*/querylength,
-					    plusp,genestrand);
-
-  debug2(
-	 printf("%d mismatches on left at:",nmismatches_left);
-	 for (i = 0; i <= nmismatches_left; i++) {
-	   printf(" %d",mismatch_positions_left[i]);
-	 }
-	 printf("\n");
-	 );
-
-  /* No need to check chromosome bounds */
-  nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
-					      query_compress,left-indels,/*pos5*/0,/*pos3*/querylength,
-					      plusp,genestrand);
-
-  debug2(
-	 printf("%d mismatches on right at:",nmismatches_right);
-	 for (i = 0; i <= nmismatches_right; i++) {
-	   printf(" %d",mismatch_positions_right[i]);
-	 }
-	 printf("\n");
-	 );
-
-  best_sum = querylength;
-
-  /* Modeled after end C to get lowest possible coordinate */
-  righti = 0;
-  lefti = nmismatches_left - 1;
-
-  while (righti < nmismatches_right) {
-    while (lefti >= 0 && mismatch_positions_left[lefti] > mismatch_positions_right[righti]) {
-      lefti--;
-    }
-    sum = righti + lefti + 1;
-    debug2(printf("(Case C1) sum %d=%d+%d at indel_pos %d.  ",
-		  sum,righti,lefti+1,mismatch_positions_right[righti]+1));
-    if (sum <= best_sum) {
-      indel_pos = mismatch_positions_right[righti] + 1;
-      if (indel_pos >= min_indel_end_matches && indel_pos <= querylength - min_indel_end_matches) {
-	best_indel_pos = indel_pos;
-	nmismatches_righti = righti;
-	nmismatches_lefti = lefti + 1;
-	debug2(printf("**"));
-	best_sum = sum;
-      }
-    }
-    righti++;
-  }
-  debug2(printf("\n"));
-
-  /* Try from other side to see if we missed anything */
-  lefti = 0;
-  righti = nmismatches_right - 1;
-
-  while (lefti < nmismatches_left) {
-    while (righti >= 0 && mismatch_positions_right[righti] < mismatch_positions_left[lefti]) {
-      righti--;
-    }
-    sum = lefti + righti + 1;
-    debug2(printf("(Case C2) sum %d=%d+%d at indel_pos %d.  ",
-		  sum,lefti,righti+1,mismatch_positions_left[lefti]));
-    if (sum < best_sum) {
-      indel_pos = mismatch_positions_left[lefti];
-      if (indel_pos >= min_indel_end_matches && indel_pos <= querylength - min_indel_end_matches) {
-	best_indel_pos = indel_pos;
-	nmismatches_lefti = lefti;
-	nmismatches_righti = righti + 1;
-	debug2(printf("**"));
-	best_sum = sum;
-      }
-    } else if (sum == best_sum) {
-      indel_pos = mismatch_positions_left[lefti];
-      if (indel_pos < best_indel_pos) {
-	if (indel_pos >= min_indel_end_matches && indel_pos <= querylength - min_indel_end_matches) {
-	  best_indel_pos = indel_pos;
-	  nmismatches_lefti = lefti;
-	  nmismatches_righti = righti + 1;
-	  debug2(printf("**"));
-	  /* best_sum = sum; */
-	}
-      }
-    }
-    lefti++;
-  }
-  debug2(printf("\n"));
-
-
-  if (best_sum <= max_mismatches_allowed) {
-    if (plusp == true) {
-      query_indel_pos = best_indel_pos;
-      nmismatches1 = nmismatches_lefti;
-      nmismatches2 = nmismatches_righti;
-    } else {
-      query_indel_pos = querylength - best_indel_pos;
-      nmismatches1 = nmismatches_righti;
-      nmismatches2 = nmismatches_lefti;
-    }
-
-    if ((hit = Stage3end_new_deletion(&(*found_score),-indels,query_indel_pos,
-				      nmismatches1,nmismatches2,
-				      left,/*genomiclength*/querylength-indels,
-				      query_compress,querylength,plusp,genestrand,
-				      ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
-				      indel_penalty_middle)) != NULL) {
-      debug2(printf("successful middle deletion with %d=%d+%d mismatches and indel_pos at %d and nindels %d\n",
-		    best_sum,nmismatches_lefti,nmismatches_righti,best_indel_pos,-indels));
-      ptr->usedp = ptr2->usedp = true;
-      *nhits += 1;
-      hits = List_push(hits,(void *) hit);
-    }
-  }
-
-  return hits;
-}
-
-
-/*
-
-The pattern below is a middle insertion on plus strand, or middle deletion on minus strand:
-
-diagonal 2354, querypos 18
-diagonal 2354, querypos 19
-diagonal 2354, querypos 20
-diagonal 2354, querypos 21
-diagonal 2354, querypos 22
-diagonal 2354, querypos 23
-diagonal 2354, querypos 24
-diagonal 2356, querypos 0
-diagonal 2356, querypos 1
-diagonal 2356, querypos 2
-diagonal 2356, querypos 3
-diagonal 2356, querypos 4
-diagonal 2356, querypos 5
-
-
-The pattern below is a middle deletion on plus strand, or middle insertion on minus strand:
-
-diagonal 2354, querypos 0
-diagonal 2354, querypos 1
-diagonal 2354, querypos 2
-diagonal 2354, querypos 3
-diagonal 2354, querypos 4
-diagonal 2354, querypos 5
-diagonal 2354, querypos 6
-diagonal 2354, querypos 7
-diagonal 2356, querypos 18
-diagonal 2356, querypos 19
-diagonal 2356, querypos 20
-diagonal 2356, querypos 21
-diagonal 2356, querypos 22
-diagonal 2356, querypos 23
-diagonal 2356, querypos 24
-
-*/
-
-
-static List_T
-find_middle_indels (int *found_score, int *nhits, List_T hits,
-		    struct Segment_T *plus_segments, struct Segment_T *minus_segments,
-		    int plus_nsegments, int minus_nsegments,
-#ifdef DEBUG2
-		    char *queryuc_ptr, char *queryrc, 
-#endif
-		    Floors_T floors, int querylength, int query_lastpos,
-		    Compress_T query_compress_fwd, Compress_T query_compress_rev,
-		    int max_middle_insertions, int max_middle_deletions, int min_indel_end_matches,
-		    int indel_penalty_middle, int max_mismatches_allowed, int genestrand) {
-  int indels, floor, pos, prev, middle;
-  int *floors_from_neg3, *floors_to_pos3;
-  Segment_T segmenti, segmentj;
-
-
-  debug(printf("*** find_middle_indels with querylength %d and max_mismatches_allowed %d ***\n",
-	       querylength,max_mismatches_allowed));
-
-  if (plus_nsegments > 1) {
-    floors_from_neg3 = floors->scorefrom[-index1interval];
-    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
-
-    for (segmenti = plus_segments; segmenti < &(plus_segments[plus_nsegments]); segmenti++) {
-      if (segmenti->diagonal < (Univcoord_T) -1) {
-#if 0
-	debug2(printf("\nplus segmenti:  diagonal %lu, querypos %d..%d\n",
-		      segmenti->diagonal,segmenti->querypos5,segmenti->querypos3));
-#endif
-
-	for (segmentj = segmenti+1;
-#ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(plus_segments[plus_nsegments]) && segmentj->chrnum == segmenti->chrnum &&
-#endif
-	       segmentj->diagonal <= segmenti->diagonal + max_middle_insertions; segmentj++) {
-	  
-	  debug2(printf("plus insertion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
-			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	  /* j5 j3 i5 i3 */
-	  if (segmentj->querypos3 < segmenti->querypos5) {
-	    indels = segmentj->diagonal - segmenti->diagonal; /* positive */
-	    floor = floors_from_neg3[segmentj->querypos5] + floors_to_pos3[segmenti->querypos3]
-	      /* floors->score[-index1interval][segmentj->querypos5] + floors->score[segmenti->querypos3][query_lastpos+index1interval] */ ;
-	    if (floors->prev_omitted == NULL) {
-	      if ((middle = FLOOR_MIDDLE(segmenti->querypos5 - segmentj->querypos3 - indels)) > 0) {
-		middle--;	/* for insertion, which looks like a mismatch */
-	      }
-	      debug2(printf("\nmiddle (no omission): %d\n",middle));
-	      floor += middle;
-	    } else {
-	      pos = segmenti->querypos5;
-	      debug2(printf("\nmiddle (omission):"));
-	      while (pos > segmentj->querypos3) {
-		if ((prev = floors->prev_omitted[pos]) < segmentj->querypos3) {
-		  prev = segmentj->querypos3;
-		}
-		if ((middle = FLOOR_MIDDLE(pos - prev - indels)) > 0) {
-		  middle--;	/* for insertion, which looks like a mismatch */
-		}
-		floor += middle;
-		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
-		pos = prev;
-	      }
-	      debug2(printf("\n"));
-	    }
-	    if (floor <= max_mismatches_allowed) {
-	      debug2(printf("successful insertion, floor = %d+middle+%d=%d, indels = %d\n",
-			    floors->scorefrom[-index1interval][segmentj->querypos5],
-			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
-			    floor,indels));
-	      hits = solve_middle_insertion(&(*found_score),&(*nhits),hits,segmenti,segmentj,indels,
-					    /*query_compress*/query_compress_fwd,
-#ifdef DEBUG2
-					    /*queryptr*/queryuc_ptr,
-#endif
-					    querylength,min_indel_end_matches,
-					    indel_penalty_middle,max_mismatches_allowed,
-					    /*plusp*/true,genestrand);
-	    } else {
-	      debug2(printf("too many mismatches, because floor %d+middle+%d=%d > %d\n",
-			    floors->scorefrom[-index1interval][segmentj->querypos5],
-			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
-			    floor,max_mismatches_allowed));
-	    }
-	  } else {
-	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
-			  segmentj->querypos3,segmenti->querypos5));
-	  }
-	}
-
-	for (segmentj = segmenti+1;
-#ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(plus_segments[plus_nsegments]) && segmentj->chrnum == segmenti->chrnum &&
-#endif
-	       segmentj->diagonal <= segmenti->diagonal + max_middle_deletions; segmentj++) {
-	  debug2(printf("plus deletion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
-			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	  /* i5 i3 j5 j3 */
-	  if (segmenti->querypos3 < segmentj->querypos5) {
-	    indels = segmenti->diagonal - segmentj->diagonal; /* negative */
-	    floor = floors_from_neg3[segmenti->querypos5] + floors_to_pos3[segmentj->querypos3]
-	      /* floors->score[-index1interval][segmenti->querypos5] + floors->score[segmentj->querypos3][query_lastpos+index1interval] */;
-	    if (floors->prev_omitted == NULL) {
-	      if ((middle = FLOOR_MIDDLE(segmentj->querypos5 - segmenti->querypos3 /*- indels*/)) > 0) {
-		middle--;	/* for deletion, which looks like a mismatch */
-	      }
-	      debug2(printf("\nmiddle (no omission): %d\n",middle));
-	      floor += middle;
-	    } else {
-	      pos = segmentj->querypos5;
-	      debug2(printf("\nmiddle (omission):"));
-	      while (pos > segmenti->querypos3) {
-		if ((prev = floors->prev_omitted[pos]) < segmenti->querypos3) {
-		  prev = segmenti->querypos3;
-		}
-		if ((middle = FLOOR_MIDDLE(pos - prev /*- indels*/)) > 0) {
-		  middle--;	/* for deletion, which looks like a mismatch */
-		}
-		floor += middle;
-		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
-		pos = prev;
-	      }
-	      debug2(printf("\n"));
-	    }
-	    if (floor <= max_mismatches_allowed) {
-	      debug2(printf("successful deletion, floor = %d+middle+%d=%d, indels = %d\n",
-			    floors->scorefrom[-index1interval][segmenti->querypos5],
-			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
-			    floor,indels));
-	      hits = solve_middle_deletion(&(*found_score),&(*nhits),hits,segmenti,segmentj,indels,
-					   /*query_compress*/query_compress_fwd,
-#ifdef DEBUG2
-					   /*queryptr*/queryuc_ptr,
-#endif
-					   querylength,min_indel_end_matches,indel_penalty_middle,
-					   max_mismatches_allowed,/*plusp*/true,genestrand);
-	    } else {
-	      debug2(printf("too many mismatches, because floor = %d+middle+%d=%d > %d\n",
-			    floors->scorefrom[-index1interval][segmenti->querypos5],
-			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
-			    floor,max_mismatches_allowed));
-	    }
-	  } else {
-	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
-			  segmenti->querypos3,segmentj->querypos5));
-	  }
-	}
-      }
-    }
-  }
-
-  if (minus_nsegments > 1) {
-    floors_from_neg3 = floors->scorefrom[-index1interval];
-    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
-
-    for (segmenti = minus_segments; segmenti < &(minus_segments[minus_nsegments]); segmenti++) {
-      if (segmenti->diagonal < (Univcoord_T) -1) {
-#if 0
-	debug2(printf("\nminus segmenti:  diagonal %lu, querypos %d..%d\n",
-		      segmenti->diagonal,segmenti->querypos5,segmenti->querypos3));
-#endif
-
-	for (segmentj = segmenti+1;
-#ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(minus_segments[minus_nsegments]) && segmentj->chrnum == segmenti->chrnum &&
-#endif
-	       segmentj->diagonal <= segmenti->diagonal + max_middle_deletions; segmentj++) {
-	  debug2(printf("minus deletion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
-			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	  /* j5 j3 i5 i3 */
-	  if (segmentj->querypos3 < segmenti->querypos5) {
-	    indels = segmenti->diagonal - segmentj->diagonal; /* negative */
-	    floor = floors_from_neg3[segmentj->querypos5] + floors_to_pos3[segmenti->querypos3]
-	      /* floors->score[-index1interval][segmentj->querypos5] + floors->score[segmenti->querypos3][query_lastpos+index1interval] */;
-	    if (floors->prev_omitted == NULL) {
-	      if ((middle = FLOOR_MIDDLE(segmenti->querypos5 - segmentj->querypos3 /*- indels*/)) > 0) {
-		middle--;	/* for deletion, which looks like a mismatch */
-	      }
-	      debug2(printf("\nmiddle (no omission): %d\n",middle));
-	      floor += middle;
-	    } else {
-	      pos = segmenti->querypos5;
-	      debug2(printf("\nmiddle (omission):"));
-	      while (pos > segmentj->querypos3) {
-		if ((prev = floors->prev_omitted[pos]) < segmentj->querypos3) {
-		  prev = segmentj->querypos3;
-		}
-		if ((middle = FLOOR_MIDDLE(pos - prev /*- indels*/)) > 0) {
-		  middle--; /* for deletion, which looks like a mismatch */
-		}
-		floor += middle;
-		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
-		pos = prev;
-	      }
-	      debug2(printf("\n"));
-	    }
-	    if (floor <= max_mismatches_allowed) {
-	      debug2(printf("successful deletion, floor = %d+middle+%d=%d, indels = %d\n",
-			    floors->scorefrom[-index1interval][segmentj->querypos5],
-			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
-			    floor,indels));
-	      hits = solve_middle_deletion(&(*found_score),&(*nhits),hits,segmenti,segmentj,indels,
-					   /*query_compress*/query_compress_rev,
-#ifdef DEBUG2
-					   /*queryptr*/queryrc,
-#endif
-					   querylength,min_indel_end_matches,indel_penalty_middle,
-					   max_mismatches_allowed,/*plusp*/false,genestrand);
-	    } else {
-	      debug2(printf("too many mismatches, because floor = %d+middle+%d=%d > %d\n",
-			    floors->scorefrom[-index1interval][segmentj->querypos5],
-			    floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
-			    floor,max_mismatches_allowed));
-	      debug2(printf("too many mismatches, because floor %d > %d\n",floor,max_mismatches_allowed));
-	    }
-	  } else {
-	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
-			  segmentj->querypos3,segmenti->querypos5));
-	  }
-	}
-
-	for (segmentj = segmenti+1;
-#ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(minus_segments[minus_nsegments]) && segmentj->chrnum == segmenti->chrnum &&
-#endif
-	       segmentj->diagonal <= segmenti->diagonal + max_middle_insertions; segmentj++) {
-	  debug2(printf("minus insertion?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
-			segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	  /* i5 i3 j5 j3 */
-	  if (segmenti->querypos3 < segmentj->querypos5) {
-	    indels = segmentj->diagonal - segmenti->diagonal; /* positive */
-	    floor = floors_from_neg3[segmenti->querypos5] + floors_to_pos3[segmentj->querypos3]
-	      /* floors->score[-index1interval][segmenti->querypos5] + floors->score[segmentj->querypos3][query_lastpos+index1interval] */;
-	    if (floors->prev_omitted == NULL) {
-	      if ((middle = FLOOR_MIDDLE(segmentj->querypos5 - segmenti->querypos3 - indels)) > 0) {
-		middle--;	/* for insertion, which looks like a mismatch */
-	      }
-	      debug2(printf("\nmiddle (no omission): %d\n",middle));
-	      floor += middle;
-	    } else {
-	      pos = segmentj->querypos5;
-	      debug2(printf("\nmiddle (omission):"));
-	      while (pos > segmenti->querypos3) {
-		if ((prev = floors->prev_omitted[pos]) < segmenti->querypos3) {
-		  prev = segmenti->querypos3;
-		}
-		if ((middle = FLOOR_MIDDLE(pos - prev - indels)) > 0) {
-		  middle--;	/* for insertion, which looks like a mismatch */
-		}
-		floor += middle;
-		debug2(printf("(%d..%d)+%d,",prev,pos,middle));
-		pos = prev;
-	      }
-	      debug2(printf("\n"));
-	    }
-	    if (floor <= max_mismatches_allowed) {
-	      debug2(printf("successful insertion, floor = %d+middle+%d=%d, indels = %d\n",
-			    floors->scorefrom[-index1interval][segmenti->querypos5],
-			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
-			    floor,indels));
-	      hits = solve_middle_insertion(&(*found_score),&(*nhits),hits,segmenti,segmentj,indels,
-					    /*query_compress*/query_compress_rev,
-#ifdef DEBUG2
-					    /*queryptr*/queryrc,
-#endif
-					    querylength,min_indel_end_matches,indel_penalty_middle,
-					    max_mismatches_allowed,/*plusp*/false,genestrand);
-	    } else {
-	      debug2(printf("too many mismatches, because floor %d+middle+%d=%d > %d\n",
-			    floors->scorefrom[-index1interval][segmenti->querypos5],
-			    floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
-			    floor,max_mismatches_allowed));
-	    }
-	  } else {
-	    debug2(printf("garbage, because querypos3 %d >= querypos5 %d\n",
-			  segmenti->querypos3,segmentj->querypos5));
-	  }
-	}
-      }
-    }
-  }
-
-  return hits;
-}
-
-
-/************************************************************************/
-
-/************************************************************************
- *   right deletion: use <  / indel_pos = [conti]
- *   right insertion: use - sep <  / indel_pos = [conti]
- *   left deletion: use >  / indel_pos = [conti] + 1
- *   left insertion: use + sep >   / indel_pos = [conti]-sep+1
- ************************************************************************/
-
-static int
-compute_end_indels_right (int *indels, int *nmismatches_longcont, int *nmismatches_shift,
-			  int *mismatch_positions_long, int nmismatches_avail_long,
-			  int breakpoint, int querylength, Univcoord_T left, Compress_T query_compress,
-			  int min_indel_end_matches, int max_end_insertions, int max_end_deletions,
-			  int max_mismatches_short, bool plusp, int genestrand) {
-#ifdef DEBUG2E
-  int i;
-#endif
-  int length1;
-  int sep, end;
-  int nmismatches_avail_shift, nmatches;
-  int mismatch_positions_shift[MAX_READLENGTH+1];
-  int sum, best_sum = MAX_READLENGTH;
-  int conti, shifti;
-  int best_indel_pos = -1, endlength;
-#ifdef OLD_END_INDELS
-  int indel_pos;
-#else
-  int indel_pos_cont, indel_pos_shift;
-#endif
-
-  debug2e(printf("Entered compute_end_indels_right with breakpoint = %d, max_mismatches_short %d\n",
-		 breakpoint,max_mismatches_short));
-  length1 = querylength - breakpoint;
-#if 0
-  /* Should not need to reset max_end_deletions */
-  if (max_end_deletions > length1 - min_indel_end_matches) {
-    max_end_deletions = length1 - min_indel_end_matches;
-  }
-#endif
-  if (max_end_insertions > length1 - min_indel_end_matches) {
-    max_end_insertions = length1 - min_indel_end_matches;
-  }
-
-  if (max_end_deletions > 0) {
-    for (sep = 1; sep <= max_end_deletions; sep++) {
-      /* *indels = -sep; */
-      nmismatches_avail_shift = Genome_mismatches_right(mismatch_positions_shift,
-							max_mismatches_short,query_compress,
-							left-(-sep),/*pos5*/0,/*pos3*/querylength,
-							plusp,genestrand);
-      debug2e(
-	      printf("A. Trying deletion of %d.  ",-sep);
-	      printf("%d mismatches on right at:",nmismatches_avail_shift);
-	      for (i = 0; i <= nmismatches_avail_shift; i++) {
-		printf(" %d",mismatch_positions_shift[i]);
-	      }
-	      printf(".  ");
-	      );
-
-      if (nmismatches_avail_shift == 0) {
-	/* Skip, because we have an exact match on the shift */
-      } else {
-#ifdef OLD_END_INDELS
-	/* Compute over mismatch_positions_shift[n-1] to querylength */
-	/* A. Right deletion: Primary loop along Genome_mismatches_right (shifti) to get lowest coordinate */
-	shifti = 0;
-	conti = nmismatches_avail_long - 1;
-	while (shifti < nmismatches_avail_shift) {
-	  while (conti >= 0 && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
-	    conti--;
-	  }
-	  sum = shifti + conti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]+1));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_shift[shifti] + 1;
-	    if ((endlength = querylength - indel_pos) >= min_indel_end_matches && endlength >= sep) {
-	      /* Don't want to delete more than the amount matched */
-	      nmatches = endlength - shifti;
-	      if (nmatches - 3*shifti - 4 >= 0) {
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		/* Want more matches than mismatches */
-		best_indel_pos = indel_pos;
-		*indels = -sep;
-		*nmismatches_longcont = conti + 1;
-		*nmismatches_shift = shifti;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  shifti++;
-	}
-	debug2e(printf("\n"));
-
-	/* A. Right deletion: Primary loop along Genome_mismatches_left (conti) to see if we missed anything */
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-
-	/* Start in region */
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-
-	while (conti < nmismatches_avail_long) {
-	  while (shifti >= 0 && mismatch_positions_shift[shifti] < mismatch_positions_long[conti]) {
-	    shifti--;
-	  }
-	  sum = conti + shifti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_long[conti];
-	    if ((endlength = querylength - indel_pos) >= min_indel_end_matches && endlength >= sep) {
-	      /* Don't want to delete more than the amount matched */
-	      nmatches = endlength - (shifti + 1);
-	      if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		best_indel_pos = indel_pos;
-		*indels = -sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = shifti + 1;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  conti++;
-	}
-	debug2e(printf("\n"));
-#else
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-	indel_pos_cont = mismatch_positions_long[conti];
-	indel_pos_shift = mismatch_positions_shift[shifti] + 1;
-
-	while (conti < nmismatches_avail_long && shifti >= 0) {
-	  if (indel_pos_cont < indel_pos_shift) {
-	    sum = shifti + conti + 1;
-	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
-	    if (sum < best_sum) {
-	      if ((endlength = querylength - indel_pos_cont) >= min_indel_end_matches && endlength >= sep) {
-		/* Don't want to delete more than the amount matched */
-		nmatches = endlength - (shifti + 1);
-		if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  /* Values -3 and -4 correspond to defaults for trim_mismatch_score and trim_indel_score */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		  best_indel_pos = indel_pos_cont;
-		  *indels = -sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti + 1;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    indel_pos_cont = mismatch_positions_long[conti];
-
-	  } else if (indel_pos_shift < indel_pos_cont) {
-	    sum = shifti + conti;
-	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]+1));
-	    if (sum < best_sum) {
-	      if ((endlength = querylength - indel_pos_shift) >= min_indel_end_matches && endlength >= sep) {
-		/* Don't want to delete more than the amount matched */
-		nmatches = endlength - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = -sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    shifti--;
-	    indel_pos_shift = mismatch_positions_shift[shifti] + 1;
-
-	  } else {
-	    sum = shifti + conti;
-	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,indel_pos_cont));
-	    if (sum < best_sum) {
-	      if ((endlength = querylength - indel_pos_shift) >= min_indel_end_matches && endlength >= sep) {
-		/* Don't want to delete more than the amount matched */
-		nmatches = endlength - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = -sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    shifti--;
-	    indel_pos_cont = mismatch_positions_long[conti];
-	    indel_pos_shift = mismatch_positions_shift[shifti] + 1;
-	  }
-	}
-	
-	if (shifti < 0) {
-	  sum = conti /*+ shifti + 1*/;
-	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,indel_pos_cont));
-	  if (sum < best_sum) {
-	    if ((endlength = querylength - indel_pos_cont) >= min_indel_end_matches && endlength >= sep) {
-	      /* Don't want to delete more than the amount matched */
-	      nmatches = endlength /*- (shifti + 1)*/;
-	      if (nmatches >= /*shifti + 1*/ + 4) {
-		/* Want more matches than mismatches */
-		best_indel_pos = indel_pos_cont;
-		*indels = -sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = 0 /*shifti + 1*/;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	}
-
-	debug2e(printf("\n"));
-#endif
-
-      }
-    }
-  }
-  
-  if (max_end_insertions > 0) {
-    if (left < (unsigned int) max_end_insertions) {
-      debug2e(printf("left %lu < max_end_insertions %d, so end = left\n",left,max_end_insertions));
-      end = left;
-    } else {
-      end = max_end_insertions;
-    }
-
-    for (sep = 1; sep <= end; sep++) {
-      /* *indels = +sep; */
-      nmismatches_avail_shift = Genome_mismatches_right(mismatch_positions_shift,
-							max_mismatches_short,query_compress,
-							left-(+sep),/*pos5*/0,/*pos3*/querylength,
-							plusp,genestrand);
-
-      debug2e(
-	      printf("B. Trying insertion of %d.  ",+sep);
-	      printf("%d mismatches on right at:",nmismatches_avail_shift);
-	      for (i = 0; i <= nmismatches_avail_shift; i++) {
-		printf(" %d",mismatch_positions_shift[i]);
-	      }
-	      printf(".  ");
-	      );
-
-      if (nmismatches_avail_shift == 0) {
-	/* Skip, because we have an exact match on the shift */
-      } else {
-#ifdef OLD_END_INDELS
-	/* Compute over mismatch_positions_shift[n-1] to querylength */
-	/* B. Right insertion: First, try primary loop along Genome_mismatches_right (shifti) to get lowest coordinate */
-	shifti = 0;
-	conti = nmismatches_avail_long - 1;
-	while (shifti < nmismatches_avail_shift) {
-	  while (conti >= 0 && mismatch_positions_long[conti] > mismatch_positions_shift[shifti] - sep) {
-	    conti--;
-	  }
-	  sum = shifti + conti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]-sep+1));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_shift[shifti] - sep + 1;
-	    endlength = querylength - (indel_pos + sep);
-	    if (endlength >= min_indel_end_matches) {
-	      nmatches = endlength - shifti;
-	      if (nmatches - 3*shifti - 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		best_indel_pos = indel_pos;
-		*indels = +sep;
-		*nmismatches_longcont = conti + 1;
-		*nmismatches_shift = shifti;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  shifti++;
-	}
-	debug2e(printf("\n"));
-
-
-	/* B. Right insertion: Try primary loop along Genome_mismatches_left (conti) to see if we missed anything */
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-
-	/* Start in region */
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-
-	while (conti < nmismatches_avail_long) {
-	  while (shifti >= 0 && mismatch_positions_shift[shifti] < mismatch_positions_long[conti] + sep) {
-	    shifti--;
-	  }
-	  sum = conti + shifti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_long[conti];
-	    endlength = querylength - indel_pos - sep;
-	    if (endlength >= min_indel_end_matches) {
-	      nmatches = endlength - (shifti + 1);
-	      if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		best_indel_pos = indel_pos;
-		*indels = +sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = shifti + 1;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  conti++;
-	}
-	debug2e(printf("\n"));
-
-#else
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-	indel_pos_cont = mismatch_positions_long[conti];
-	indel_pos_shift = mismatch_positions_shift[shifti] - sep + 1;
-
-	while (conti < nmismatches_avail_long && shifti >= 0) {
-	  if (indel_pos_cont < indel_pos_shift) {
-	    sum = conti + shifti + 1;
-	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
-	    if (sum < best_sum) {
-	      endlength = querylength - indel_pos_cont - sep;
-	      if (endlength >= min_indel_end_matches) {
-		nmatches = endlength - (shifti + 1);
-		if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		  best_indel_pos = indel_pos_cont;
-		  *indels = +sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti + 1;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    indel_pos_cont = mismatch_positions_long[conti];
-
-	  } else if (indel_pos_shift < indel_pos_cont) {
-	    sum = shifti + conti;
-	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]-sep+1));
-	    if (sum < best_sum) {
-	      endlength = querylength - (indel_pos_shift + sep);
-	      if (endlength >= min_indel_end_matches) {
-		nmatches = endlength - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = +sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    shifti--;
-	    indel_pos_shift = mismatch_positions_shift[shifti] - sep + 1;
-
-	  } else {
-	    sum = shifti + conti;
-	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]-sep+1));
-	    if (sum < best_sum) {
-	      endlength = querylength - (indel_pos_shift + sep);
-	      if (endlength >= min_indel_end_matches) {
-		nmatches = endlength - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = +sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    shifti--;
-	    indel_pos_cont = mismatch_positions_long[conti];
-	    indel_pos_shift = mismatch_positions_shift[shifti] - sep + 1;
-	  }
-	}
-
-	if (shifti < 0) {
-	  sum = conti /*+ shifti + 1*/;
-	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,mismatch_positions_long[conti]));
-	  if (sum < best_sum) {
-	    endlength = querylength - indel_pos_cont - sep;
-	    if (endlength >= min_indel_end_matches) {
-	      nmatches = endlength /*- (shifti + 1)*/;
-	      if (nmatches >= /*shifti + 1*/ + 4) {
-		/* Want more matches than mismatches */
-		best_indel_pos = indel_pos_cont;
-		*indels = +sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = 0 /*shifti + 1*/;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	}
-
-	debug2e(printf("\n"));
-#endif
-      }
-    }
-  }
-
-  debug2e(printf("compute_end_indels_right returning with nmismatches_longcont %d + nmismatches_shift %d for %d indels at indel_pos %d\n",
-		 *nmismatches_longcont,*nmismatches_shift,*indels,best_indel_pos));
-
-  return best_indel_pos;
-}
-
-
-/* Want genomic low position for indel, so check deletions and insertions in reverse order of preference
-   and check for sum <= best_sum */
-static int
-compute_end_indels_left (int *indels, int *nmismatches_longcont, int *nmismatches_shift,
-			 int *mismatch_positions_long, int nmismatches_avail_long,
-			 int breakpoint, int querylength, Univcoord_T left, Compress_T query_compress,
-			 int min_indel_end_matches, int max_end_insertions, int max_end_deletions,
-			 int max_mismatches_short, bool plusp, int genestrand) {
-#ifdef DEBUG2E
-  int i;
-#endif
-  int length1;
-  int sep, start;
-  int nmismatches_avail_shift, nmatches;
-  int mismatch_positions_shift[MAX_READLENGTH+1];
-  int sum, best_sum = MAX_READLENGTH;
-  int conti, shifti;
-  int best_indel_pos = -1;
-#ifdef OLD_END_INDELS
-  int indel_pos;
-#else
-  int indel_pos_cont, indel_pos_shift;
-#endif
-
-
-  debug2e(printf("Entered compute_end_indels_left with breakpoint = %d, max_mismatches_short %d\n",
-		 breakpoint,max_mismatches_short));
-  length1 = breakpoint;
-#if 0
-  /* Should not need to reset max_end_deletions */
-  if (max_end_deletions > length1 - min_indel_end_matches) {
-    max_end_deletions = length1 - min_indel_end_matches;
-    debug2e(printf("Resetting max_end_deletions to be %d - %d = %d\n",length1,min_indel_end_matches,max_end_deletions));
-  }
-#endif
-  if (max_end_insertions > length1 - min_indel_end_matches) {
-    max_end_insertions = length1 - min_indel_end_matches;
-  }
-
-  if (max_end_insertions > 0) {
-    for (sep = max_end_insertions; sep >= 1; sep--) {
-      /* *indels = +sep; */
-      nmismatches_avail_shift = Genome_mismatches_left(mismatch_positions_shift,
-						       max_mismatches_short,query_compress,
-						       left+(+sep),/*pos5*/0,/*pos3*/querylength,
-						       plusp,genestrand);
-      debug2e(
-	      printf("D. Trying insertion of %d.  ",+sep);
-	      printf("%d mismatches on left at:",nmismatches_avail_shift);
-	      for (i = 0; i <= nmismatches_avail_shift; i++) {
-		printf(" %d",mismatch_positions_shift[i]);
-	      }
-	      printf(".  ");
-	      );
-
-      if (nmismatches_avail_shift == 0) {
-	/* Skip, because we have an exact match on the shift */
-      } else {
-#ifdef OLD_END_INDELS
-	/* Compute over 0 to mismatch_positions_shift[n-1] */
-	/* D. Left insertion.  First, try primary loop is on Genome_mismatches_right (conti), to get lowest coordinate */
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-
-	/* Start in region */
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-
-	while (conti < nmismatches_avail_long) {
-	  while (shifti >= 0 && mismatch_positions_shift[shifti] > mismatch_positions_long[conti] - sep) {
-	    shifti--;
-	  }
-	  sum = conti + shifti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]-sep+1));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_long[conti] - sep + 1;
-	    if (indel_pos >= min_indel_end_matches) {
-	      nmatches = indel_pos - (shifti + 1);
-	      if (nmatches - 3*(shifti+1)- 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		best_indel_pos = indel_pos;
-		*indels = +sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = shifti + 1;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  conti++;
-	}
-	debug2e(printf("\n"));
-
-
-	/* D. Left insertion.  Then, try primary loop is on Genome_mismatches_left (shifti), to see if we missed anything */
-	shifti = 0;
-	conti = nmismatches_avail_long - 1;
-	while (shifti < nmismatches_avail_shift) {
-	  while (conti >= 0 && mismatch_positions_long[conti] < mismatch_positions_shift[shifti] + sep) {
-	    conti--;
-	  }
-	  sum = shifti + conti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_shift[shifti];
-	    if (indel_pos >= min_indel_end_matches) {
-	      nmatches = indel_pos - shifti;
-	      if (nmatches - 3*shifti - 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		best_indel_pos = indel_pos;
-		*indels = +sep;
-		*nmismatches_longcont = conti + 1;
-		*nmismatches_shift = shifti;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  shifti++;
-	}
-	debug2e(printf("\n"));
-
-#else
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-	indel_pos_cont = mismatch_positions_long[conti] - sep + 1;
-	indel_pos_shift = mismatch_positions_shift[shifti];
-
-	while (conti < nmismatches_avail_long && shifti >= 0) {
-	  if (indel_pos_cont > indel_pos_shift) {
-	    sum = conti + shifti + 1;
-	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]-sep+1));
-	    if (sum <= best_sum) {
-	      if (indel_pos_cont >= min_indel_end_matches) {
-		nmatches = indel_pos_cont - (shifti + 1);
-		if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		  best_indel_pos = indel_pos_cont;
-		  *indels = +sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti + 1;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    indel_pos_cont = mismatch_positions_long[conti] - sep + 1;
-
-	  } else if (indel_pos_shift > indel_pos_cont) {
-	    sum = shifti + conti;
-	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
-	    if (sum <= best_sum) {
-	      if (indel_pos_shift >= min_indel_end_matches) {
-		nmatches = indel_pos_shift - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = +sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    shifti--;
-	    indel_pos_shift = mismatch_positions_shift[shifti];
-
-	  } else {
-	    sum = shifti + conti;
-	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
-	    if (sum <= best_sum) {
-	      if (indel_pos_shift >= min_indel_end_matches) {
-		nmatches = indel_pos_shift - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = +sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    shifti--;
-	    indel_pos_cont = mismatch_positions_long[conti] - sep + 1;
-	    indel_pos_shift = mismatch_positions_shift[shifti];
-
-	  }
-	}
-
-	if (shifti < 0) {
-	  sum = conti /*+ shifti + 1*/;
-	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,mismatch_positions_long[conti]-sep+1));
-	  if (sum <= best_sum) {
-	    if (indel_pos_cont >= min_indel_end_matches) {
-	      nmatches = indel_pos_cont /*- (shifti + 1)*/;
-	      if (nmatches >= /*shifti + 1*/ + 4) {
-		/* Want more matches than mismatches */
-		best_indel_pos = indel_pos_cont;
-		*indels = +sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = 0 /*shifti + 1*/;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	}
-
-	debug2e(printf("\n"));
-#endif
-      }
-    }
-  }
-
-
-  if (max_end_deletions > 0) {
-    if (left < (unsigned int) max_end_deletions) {
-      debug2e(printf("left %lu < max_end_deletions %d, so start = left\n",left,max_end_deletions));
-      start = left;
-    } else {
-      start = 1;
-    }
-
-    for (sep = max_end_deletions; sep >= 1; sep--) {
-      /* *indels = -sep; */
-      nmismatches_avail_shift = Genome_mismatches_left(mismatch_positions_shift,
-						       max_mismatches_short,query_compress,
-						       left+(-sep),/*pos5*/0,/*pos3*/querylength,
-						       plusp,genestrand);
-      debug2e(
-	      printf("C. Trying deletion of %d.  ",-sep);
-	      printf("%d mismatches on left at:",nmismatches_avail_shift);
-	      for (i = 0; i <= nmismatches_avail_shift; i++) {
-		printf(" %d",mismatch_positions_shift[i]);
-	      }
-	      printf(".  ");
-	      );
-
-      if (nmismatches_avail_shift == 0) {
-	/* Skip, because we have an exact match on the shift */
-      } else {
-#ifdef OLD_END_INDELS
-	/* Compute over 0 to mismatch_positions_shift[n-1] */
-	/* C. Left deletion.  First, try primary loop (cont) on Genome_mismatches_right, to get lowest coordinate */
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-
-	/* Start in region */
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-
-	while (conti < nmismatches_avail_long) {
-	  while (shifti >= 0 && mismatch_positions_shift[shifti] > mismatch_positions_long[conti]) {
-	    shifti--;
-	  }
-	  sum = conti + shifti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]+1));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_long[conti] + 1;
-	    if (indel_pos >= min_indel_end_matches && indel_pos >= sep) {
-	      nmatches = indel_pos - (shifti + 1);
-	      if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		best_indel_pos = indel_pos;
-		*indels = -sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = shifti + 1;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  conti++;
-	}
-	debug2e(printf("\n"));
-
-
-	/* C. Left deletion.  Then, try primary loop on Genome_mismatches_left (shifti) to see if we missed anything */
-	shifti = 0;
-	conti = nmismatches_avail_long - 1;
-	while (shifti < nmismatches_avail_shift) {
-	  while (conti >= 0 && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
-	    conti--;
-	  }
-	  sum = shifti + conti + 1;
-	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]));
-	  if (sum < best_sum) {
-	    indel_pos = mismatch_positions_shift[shifti];
-	    if (indel_pos >= min_indel_end_matches && indel_pos >= sep) {
-	      nmatches = indel_pos - shifti;
-	      if (nmatches - 3*shifti - 4 >= 0) {
-		/* Want more matches than mismatches */
-		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		best_indel_pos = indel_pos;
-		*indels = -sep;
-		*nmismatches_longcont = conti + 1;
-		*nmismatches_shift = shifti;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	  shifti++;
-	}
-	debug2e(printf("\n"));
-
-#else
-	shifti = nmismatches_avail_shift - 1;
-	conti = 0;
-	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
-	  conti++;
-	}
-	indel_pos_cont = mismatch_positions_long[conti] + 1;
-	indel_pos_shift = mismatch_positions_shift[shifti];
-
-	while (conti < nmismatches_avail_long && shifti >= 0) {
-	  if (indel_pos_cont > indel_pos_shift) {
-	    sum = conti + shifti + 1;
-	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]+1));
-	    if (sum <= best_sum) {
-	      if (indel_pos_cont >= min_indel_end_matches && indel_pos_cont >= sep) {
-		nmatches = indel_pos_cont - (shifti + 1);
-		if (nmatches - 3*(shifti+1) - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
-		  best_indel_pos = indel_pos_cont;
-		  *indels = -sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti + 1;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
-	    indel_pos_cont = mismatch_positions_long[conti] + 1;
-
-	  } else if (indel_pos_shift > indel_pos_cont) {
-	    sum = shifti + conti;
-	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
-	    if (sum <= best_sum) {
-	      if (indel_pos_shift >= min_indel_end_matches && indel_pos_shift >= sep) {
-		nmatches = indel_pos_shift - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = -sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    shifti--;
-	    indel_pos_shift = mismatch_positions_shift[shifti];
-
-	  } else {
-	    sum = shifti + conti;
-	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
-	    if (sum <= best_sum) {
-	      if (indel_pos_shift >= min_indel_end_matches && indel_pos_shift >= sep) {
-		nmatches = indel_pos_shift - shifti;
-		if (nmatches - 3*shifti - 4 >= 0) {
-		  /* Want more matches than mismatches */
-		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
-		  best_indel_pos = indel_pos_shift;
-		  *indels = -sep;
-		  *nmismatches_longcont = conti;
-		  *nmismatches_shift = shifti;
-		  debug2e(printf("**"));
-		  best_sum = sum;
-		}
-	      }
-	    }
-	    conti++;
+	while (conti < nmismatches_avail_long) {
+	  while (shifti >= 0 && mismatch_positions_shift[shifti] < mismatch_positions_long[conti]) {
 	    shifti--;
-	    indel_pos_cont = mismatch_positions_long[conti] + 1;
-	    indel_pos_shift = mismatch_positions_shift[shifti];
-	  }
-	}
-
-	if (shifti < 0) {
-	  sum = conti /*+ shifti + 1*/;
-	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,mismatch_positions_long[conti]+1));
-	  if (sum <= best_sum) {
-	    if (indel_pos_cont >= min_indel_end_matches && indel_pos_cont >= sep) {
-	      nmatches = indel_pos_cont /*- (shifti + 1)*/;
-	      if (nmatches >= /*shifti + 1*/ + 4) {
-		/* Want more matches than mismatches */
-		best_indel_pos = indel_pos_cont;
-		*indels = -sep;
-		*nmismatches_longcont = conti;
-		*nmismatches_shift = 0 /*shifti + 1*/;
-		debug2e(printf("**"));
-		best_sum = sum;
-	      }
-	    }
-	  }
-	}
-
-	debug2e(printf("\n"));
-#endif
-      }
-    }
-  }
-
-
-  debug2e(printf("compute_end_indels_left returning with nmismatches_cont %d + nmismatches_shift %d for %d indels at indel_pos %d\n",
-		 *nmismatches_longcont,*nmismatches_shift,*indels,best_indel_pos));
-
-  return best_indel_pos;
-}
-
-
-/************************************************************************/
-
-/* Was solve_first_indel_plus and solve_last_indel_minus */
-static List_T
-solve_end_indel_low (int *found_score, int *nhits, List_T hits, Segment_T ptr,
-		     Univcoord_T diagonal, int firstbound,
-		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
-#ifdef DEBUG2E
-		     char *queryptr,
-#endif
-		     int querylength, Compress_T query_compress,
-		     int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		     int indel_penalty_end, int max_mismatches, bool plusp, int genestrand) {
-#ifdef DEBUG2E
-  char *gbuffer;
-#endif
-  int i;
-  Stage3end_T hit;
-  Univcoord_T left;
-  int indels, query_indel_pos, indel_pos, breakpoint;
-  int nmismatches, nmismatches_long, nmismatches_longcont, nmismatches_shift;
-  int mismatch_positions[MAX_READLENGTH];
-  int nmismatches1, nmismatches2;
-
-
-  left = diagonal - querylength;
-  if ((unsigned int) max_end_deletions > left - chroffset) {
-    max_end_deletions = left - chroffset;
-    /* diagonal - querylength guaranteed to be >= chroffset, so max_end_deletions >= 0 */
-  }
-
-  debug2e(
-	  if (plusp == true) {
-	    printf("\nsolve_end_indel_low: Getting genome at diagonal %lu - querylength %d - max_end_deletions %d = %lu.\n",
-		   diagonal,querylength,max_end_deletions,left-max_end_deletions);
-	  } else {
-	    printf("\nsolve_end_indel_low: Getting genome at diagonal %lu + 12 - querylength %d = %lu, max_end_deletions = %d.\n",
-		   diagonal,querylength,left,max_end_deletions);
-	  });
-
-  debug2e(gbuffer = (char *) CALLOC(querylength+max_end_deletions+1,sizeof(char)));
-  debug2e(Genome_fill_buffer_blocks(left-max_end_deletions,querylength+max_end_deletions,gbuffer));
-  debug2e(printf("q: %s\ng: %s\n",queryptr,gbuffer));
-  debug2e(FREE(gbuffer));
-
-  /* No need to check chromosome bounds */
-  nmismatches = Genome_mismatches_right(mismatch_positions,max_mismatches,
-					query_compress,left,/*pos5*/0,/*pos3*/querylength,plusp,genestrand);
-
-  debug2e(
-	  printf("full read: %d (max %d) mismatches from right:",nmismatches,max_mismatches);
-	  for (i = 0; i <= nmismatches; i++) {
-	    printf(" %d",mismatch_positions[i]);
 	  }
-	  printf("\n");
-	  );
-
-  /* Find first mismatch past firstbound */
-  i = 0;
-  while (i <= nmismatches && mismatch_positions[i] > firstbound) {
-    i++;
-  }
-  nmismatches_long = i;
-
-#if 0
-  nmismatches_short = nmismatches - i;
-  /* Previously checked if nmismatches_short <= 0 */
-#endif
-  
-  /* Should be >= */
-  if (i >= nmismatches) {
-    debug2e(printf("i %d >= nmismatches %d => no indel\n",i,nmismatches));
-  } else {
-#if 0
-    mismatch_positions_short = &(mismatch_positions[i]);
-    debug2e(
-	    printf("nmismatches_long = %d, short = %d\n",nmismatches_long,nmismatches_short);
-	    printf("short end from firstbound %d:",firstbound);
-	    for (i = 0; i <= nmismatches_short; i++) {
-	      printf(" %d",mismatch_positions_short[i]);
-	    }
-	    printf("\n");
-	    );
-    breakpoint = mismatch_positions_short[0] + 1;
-#else
-    breakpoint = mismatch_positions[i] + 1;
-#endif
-
-    if ((indel_pos = compute_end_indels_left(&indels,&nmismatches_longcont,&nmismatches_shift,
-					     mismatch_positions,nmismatches,
-					     breakpoint,querylength,left,query_compress,
-					     min_indel_end_matches,max_end_insertions,max_end_deletions,
-					     /*max_mismatches_allowed*/max_mismatches-nmismatches_long+1,
-					     plusp,genestrand)) >= 0) {
-      debug2e(printf("Got indel_pos %d.\n",indel_pos));
-
-      /* formulas for query_indel_pos have been checked on examples */
-      if (indels > 0) {
-	if (plusp == true) {
-	  query_indel_pos = indel_pos /* + indels */;
-	  debug2e(printf("case 1: query_indel_pos = %d = %d\n",indel_pos,query_indel_pos));
-	  nmismatches1 = nmismatches_shift;
-	  nmismatches2 = nmismatches_longcont;
-	  /* end1_indel_p = true; */
-	  /* end2_indel_p = false; */
-	} else {
-	  query_indel_pos = querylength - indel_pos - indels;
-	  debug2e(printf("case 2: query_indel_pos = %d - %d - %d = %d\n",querylength,indel_pos,indels,query_indel_pos));
-	  nmismatches1 = nmismatches_longcont;
-	  nmismatches2 = nmismatches_shift;
-	  /* end1_indel_p = false; */
-	  /* end2_indel_p = true; */
-	}
-
-	if ((hit = Stage3end_new_insertion(&(*found_score),indels,query_indel_pos,
-					   nmismatches1,nmismatches2,
-					   left+indels,/*genomiclength*/querylength-indels,
-					   query_compress,querylength,plusp,genestrand,
-					   chrnum,chroffset,chrhigh,chrlength,indel_penalty_end)) != NULL) {
-	  ptr->usedp = true;
-	  *nhits += 1;
-	  hits = List_push(hits,(void *) hit);
-	  debug2e(printf("successful insertion at %d with %d long/cont + %d shift mismatches\n",
-			 indel_pos,nmismatches_longcont,nmismatches_shift));
-	}
-
-      } else {
-	if (plusp == true) {
-	  query_indel_pos = indel_pos;
-	  nmismatches1 = nmismatches_shift;
-	  nmismatches2 = nmismatches_longcont;
-	  /* end1_indel_p = true; */
-	  /* end2_indel_p = false; */
-	} else {
-	  query_indel_pos = querylength - indel_pos;
-	  nmismatches1 = nmismatches_longcont;
-	  nmismatches2 = nmismatches_shift;
-	  /* end1_indel_p = false; */
-	  /* end2_indel_p = true; */
-	}
-
-	if ((hit = Stage3end_new_deletion(&(*found_score),-indels,query_indel_pos,
-					  nmismatches1,nmismatches2,
-					  left+indels,/*genomiclength*/querylength-indels,
-					  query_compress,querylength,plusp,genestrand,
-					  chrnum,chroffset,chrhigh,chrlength,indel_penalty_end)) != NULL) {
-	  ptr->usedp = true;
-	  *nhits += 1;
-	  hits = List_push(hits,(void *) hit);
-	  debug2e(printf("successful end deletion at %d with %d long/cont + %d shift mismatches and nindels %d\n",
-			 indel_pos,nmismatches_longcont,nmismatches_shift,-indels));
-	}
-      }
-    }
-  }
-
-  return hits;
-}
-
-
-/* Was solve_first_indel_minus and solve_last_indel_plus */
-static List_T
-solve_end_indel_high (int *found_score, int *nhits, List_T hits, Segment_T ptr,
-		      Univcoord_T diagonal, int lastbound,
-		      Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
-#ifdef DEBUG2E
-		      char *queryptr,
-#endif
-		      int querylength, Compress_T query_compress,
-		      int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		      int indel_penalty_end, int max_mismatches, bool plusp, int genestrand) {
-#ifdef DEBUG2E
-  char *gbuffer;
-#endif
-  int i;
-  Stage3end_T hit;
-  Univcoord_T left;
-  int indels, query_indel_pos, indel_pos, breakpoint;
-  int nmismatches, nmismatches_long, nmismatches_longcont, nmismatches_shift;
-  int mismatch_positions[MAX_READLENGTH];
-  int nmismatches1, nmismatches2;
+	  sum = conti + shifti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_long[conti];
+	    if ((endlength = querylength - indel_pos) >= min_indel_end_matches && endlength >= sep) {
+	      /* Don't want to delete more than the amount matched */
+	      nmatches = endlength - (shifti + 1);
+	      if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		best_indel_pos = indel_pos;
+		*indels = -sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = shifti + 1;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  conti++;
+	}
+	debug2e(printf("\n"));
+#else
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
+	indel_pos_cont = mismatch_positions_long[conti];
+	indel_pos_shift = mismatch_positions_shift[shifti] + 1;
 
+	while (conti < nmismatches_avail_long && shifti >= 0) {
+	  if (indel_pos_cont < indel_pos_shift) {
+	    sum = shifti + conti + 1;
+	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
+	    if (sum < best_sum) {
+	      if ((endlength = querylength - indel_pos_cont) >= min_indel_end_matches && endlength >= sep) {
+		/* Don't want to delete more than the amount matched */
+		nmatches = endlength - (shifti + 1);
+		if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  /* Values -3 and -4 correspond to defaults for trim_mismatch_score and trim_indel_score */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		  best_indel_pos = indel_pos_cont;
+		  *indels = -sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti + 1;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    indel_pos_cont = mismatch_positions_long[conti];
 
-  left = diagonal - querylength;
-  if ((unsigned int) max_end_deletions > chrhigh - diagonal) {
-    max_end_deletions = chrhigh - diagonal;
-    /* diagonal guaranteed to be <= chrhigh, so max_end_deletions >= 0 */
-  }
+	  } else if (indel_pos_shift < indel_pos_cont) {
+	    sum = shifti + conti;
+	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]+1));
+	    if (sum < best_sum) {
+	      if ((endlength = querylength - indel_pos_shift) >= min_indel_end_matches && endlength >= sep) {
+		/* Don't want to delete more than the amount matched */
+		nmatches = endlength - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = -sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    shifti--;
+	    indel_pos_shift = mismatch_positions_shift[shifti] + 1;
 
-  debug2e(
-	  if (plusp == true) {
-	    printf("\nsolve_end_indel_high: Getting genome at diagonal %lu - querylength %d + max_end_deletions %d = %lu.\n",
-		   diagonal,querylength,max_end_deletions,left+max_end_deletions);
 	  } else {
-	    printf("\nsolve_end_indel_high: Getting genome at diagonal %lu + 12 - querylength %d = %lu, max_end_deletions = %d.\n",
-		   diagonal,querylength,left,max_end_deletions);
-	  });
-
-  debug2e(gbuffer = (char *) CALLOC(querylength+max_end_deletions+1,sizeof(char)));
-  debug2e(Genome_fill_buffer_blocks(left,querylength+max_end_deletions,gbuffer));
-  debug2e(printf("q: %s\ng: %s\n",queryptr,gbuffer));
-  debug2e(FREE(gbuffer));
-
-  /* No need to check chromosome bounds */
-  /* Previously checked from 0 to lastbound */
-  nmismatches = Genome_mismatches_left(mismatch_positions,max_mismatches,
-				       query_compress,left,/*pos5*/0,/*pos3*/querylength,plusp,genestrand);
-
-  debug2e(
-	  printf("full read: %d (max %d) mismatches from left:",nmismatches,max_mismatches);
-	  for (i = 0; i <= nmismatches; i++) {
-	    printf(" %d",mismatch_positions[i]);
+	    sum = shifti + conti;
+	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,indel_pos_cont));
+	    if (sum < best_sum) {
+	      if ((endlength = querylength - indel_pos_shift) >= min_indel_end_matches && endlength >= sep) {
+		/* Don't want to delete more than the amount matched */
+		nmatches = endlength - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = -sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    shifti--;
+	    indel_pos_cont = mismatch_positions_long[conti];
+	    indel_pos_shift = mismatch_positions_shift[shifti] + 1;
 	  }
-	  printf("\n");
-	  );
-
-  /* Find first mismatch past lastbound */
-  i = 0;
-  while (i <= nmismatches && mismatch_positions[i] < lastbound) {
-    i++;
-  }
-  nmismatches_long = i;
-#if 0
-  /* Previously checked if nmismatches_short <= 0 */
-  nmismatches_short = nmismatches - i;
-#endif
-  
-  /* Should be >= */
-  if (i >= nmismatches) {
-    debug2e(printf("i %d >= nmismatches %d => no indel\n",i,nmismatches));
-  } else {
-#if 0
-    mismatch_positions_short = &(mismatch_positions[i]);
-    debug2e(
-	    printf("nmismatches_long = %d, short = %d\n",nmismatches_long,nmismatches_short);
-	    printf("short end from lastbound %d:",lastbound);
-	    for (i = 0; i <= nmismatches_short; i++) {
-	      printf(" %d",mismatch_positions_short[i]);
+	}
+	
+	if (shifti < 0) {
+	  sum = conti /*+ shifti + 1*/;
+	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,indel_pos_cont));
+	  if (sum < best_sum) {
+	    if ((endlength = querylength - indel_pos_cont) >= min_indel_end_matches && endlength >= sep) {
+	      /* Don't want to delete more than the amount matched */
+	      nmatches = endlength /*- (shifti + 1)*/;
+	      if (nmatches >= /*shifti + 1*/ + 4) {
+		/* Want more matches than mismatches */
+		best_indel_pos = indel_pos_cont;
+		*indels = -sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = 0 /*shifti + 1*/;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
 	    }
-	    printf("\n");
-	    );
-    breakpoint = mismatch_positions_short[0] - 1;
-#else
-    breakpoint = mismatch_positions[i] - 1;
+	  }
+	}
+
+	debug2e(printf("\n"));
 #endif
 
-    if ((indel_pos = compute_end_indels_right(&indels,&nmismatches_longcont,&nmismatches_shift,
-					      mismatch_positions,nmismatches,
-					      breakpoint,querylength,left,query_compress,
-					      min_indel_end_matches,max_end_insertions,max_end_deletions,
-					      /*max_mismatches_allowed*/max_mismatches-nmismatches_long+1,
-					      plusp,genestrand)) >= 0) {
-      debug2e(printf("Got indel_pos %d\n",indel_pos));
+      }
+    }
+  }
+  
+  if (max_end_insertions > 0) {
+    if (left < (unsigned int) max_end_insertions) {
+      debug2e(printf("left %lu < max_end_insertions %d, so end = left\n",left,max_end_insertions));
+      end = left;
+    } else {
+      end = max_end_insertions;
+    }
 
-      /* formulas for query_indel_pos have been checked on examples */
-      if (indels > 0) {
-	if (plusp == true) {
-	  query_indel_pos = indel_pos /* + indels */;
-	  debug2e(printf("case 3: query_indel_pos = %d = %d\n",indel_pos,query_indel_pos));
-	  nmismatches1 = nmismatches_longcont;
-	  nmismatches2 = nmismatches_shift;
-	  /* end1_indel_p = false; */
-	  /* end2_indel_p = true; */
-	} else {
-	  query_indel_pos = querylength - indel_pos - indels;
-	  debug2e(printf("case 4: query_indel_pos = %d - %d - %d = %d\n",querylength,indel_pos,indels,query_indel_pos));
-	  nmismatches1 = nmismatches_shift;
-	  nmismatches2 = nmismatches_longcont;
-	  /* end1_indel_p = true; */
-	  /* end2_indel_p = false; */
-	}
+    for (sep = 1; sep <= end; sep++) {
+      /* *indels = +sep; */
+      nmismatches_avail_shift = Genome_mismatches_right(mismatch_positions_shift,
+							max_mismatches_short,query_compress,
+							left-(+sep),/*pos5*/0,/*pos3*/querylength,
+							plusp,genestrand,first_read_p);
 
-	if ((hit = Stage3end_new_insertion(&(*found_score),indels,query_indel_pos,
-					   nmismatches1,nmismatches2,
-					   left,/*genomiclength*/querylength-indels,
-					   query_compress,querylength,plusp,genestrand,
-					   chrnum,chroffset,chrhigh,chrlength,indel_penalty_end)) != NULL) {
-	  ptr->usedp = true;
-	  *nhits += 1;
-	  hits = List_push(hits,(void *) hit);
-	  debug2e(printf("successful end insertion at %d with %d long/cont + %d shift mismatches\n",
-			 indel_pos,nmismatches_longcont,nmismatches_shift));
-	}
+      debug2e(
+	      printf("B. Trying insertion of %d.  ",+sep);
+	      printf("%d mismatches on right at:",nmismatches_avail_shift);
+	      for (i = 0; i <= nmismatches_avail_shift; i++) {
+		printf(" %d",mismatch_positions_shift[i]);
+	      }
+	      printf(".  ");
+	      );
 
+      if (nmismatches_avail_shift == 0) {
+	/* Skip, because we have an exact match on the shift */
       } else {
-	if (plusp == true) {
-	  query_indel_pos = indel_pos;
-	  nmismatches1 = nmismatches_longcont;
-	  nmismatches2 = nmismatches_shift;
-	  /* end1_indel_p = false; */
-	  /* end2_indel_p = true; */
-	} else {
-	  query_indel_pos = querylength - indel_pos;
-	  nmismatches1 = nmismatches_shift;
-	  nmismatches2 = nmismatches_longcont;
-	  /* end1_indel_p = true; */
-	  /* end2_indel_p = false; */
-	}
-
-	if ((hit = Stage3end_new_deletion(&(*found_score),-indels,query_indel_pos,
-					  nmismatches1,nmismatches2,
-					  left,/*genomiclength*/querylength-indels,
-					  query_compress,querylength,plusp,genestrand,
-					  chrnum,chroffset,chrhigh,chrlength,indel_penalty_end)) != NULL) {
-	  ptr->usedp = true;
-	  *nhits += 1;
-	  hits = List_push(hits,(void *) hit);
-	  debug2e(printf("successful end deletion at %d with %d long/cont + %d shift mismatches and nindels %d\n",
-			 indel_pos,nmismatches_longcont,nmismatches_shift,-indels));
+#ifdef OLD_END_INDELS
+	/* Compute over mismatch_positions_shift[n-1] to querylength */
+	/* B. Right insertion: First, try primary loop along Genome_mismatches_right (shifti) to get lowest coordinate */
+	shifti = 0;
+	conti = nmismatches_avail_long - 1;
+	while (shifti < nmismatches_avail_shift) {
+	  while (conti >= 0 && mismatch_positions_long[conti] > mismatch_positions_shift[shifti] - sep) {
+	    conti--;
+	  }
+	  sum = shifti + conti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]-sep+1));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_shift[shifti] - sep + 1;
+	    endlength = querylength - (indel_pos + sep);
+	    if (endlength >= min_indel_end_matches) {
+	      nmatches = endlength - shifti;
+	      if (nmatches - 3*shifti - 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		best_indel_pos = indel_pos;
+		*indels = +sep;
+		*nmismatches_longcont = conti + 1;
+		*nmismatches_shift = shifti;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  shifti++;
 	}
-      }
-    }
-  }
+	debug2e(printf("\n"));
 
-  return hits;
-}
 
+	/* B. Right insertion: Try primary loop along Genome_mismatches_left (conti) to see if we missed anything */
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
 
-static List_T
-find_end_indels (int *found_score, int *nhits, List_T hits,
-		 struct Segment_T *plus_segments, struct Segment_T *minus_segments,
-		 int plus_nsegments, int minus_nsegments,
-#ifdef DEBUG2E
-		 char *queryuc_ptr, char *queryrc,
-#endif
-		 int querylength, int firstbound, int lastbound,
-		 Compress_T query_compress_fwd, Compress_T query_compress_rev,
-		 int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		 int indel_penalty_end, int max_mismatches_allowed, int genestrand) {
-  Segment_T ptr;
+	/* Start in region */
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
 
-  debug(printf("*** find_end_indels with max_mismatches_allowed %d ***\n",
-	       max_mismatches_allowed));
+	while (conti < nmismatches_avail_long) {
+	  while (shifti >= 0 && mismatch_positions_shift[shifti] < mismatch_positions_long[conti] + sep) {
+	    shifti--;
+	  }
+	  sum = conti + shifti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_long[conti];
+	    endlength = querylength - indel_pos - sep;
+	    if (endlength >= min_indel_end_matches) {
+	      nmatches = endlength - (shifti + 1);
+	      if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		best_indel_pos = indel_pos;
+		*indels = +sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = shifti + 1;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  conti++;
+	}
+	debug2e(printf("\n"));
 
-  for (ptr = plus_segments; ptr < &(plus_segments[plus_nsegments]); ptr++) {
-    if (ptr->diagonal < (Univcoord_T) -1) {
+#else
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
+	indel_pos_cont = mismatch_positions_long[conti];
+	indel_pos_shift = mismatch_positions_shift[shifti] - sep + 1;
 
-      if (ptr->floor_xfirst <= max_mismatches_allowed) {
-	/* First indel, plus */
-	debug2e(printf("floor_xfirst %d <= mismatches allowed %d\n",ptr->floor_xfirst,max_mismatches_allowed));
-	hits = solve_end_indel_low(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,firstbound,
-				   ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
-#ifdef DEBUG2E
-				   /*queryptr*/queryuc_ptr,
-#endif
-				   querylength,/*query_compress*/query_compress_fwd,
-				   max_end_insertions,max_end_deletions,min_indel_end_matches,
-				   indel_penalty_end,max_mismatches_allowed,/*plusp*/true,genestrand);
-      }
+	while (conti < nmismatches_avail_long && shifti >= 0) {
+	  if (indel_pos_cont < indel_pos_shift) {
+	    sum = conti + shifti + 1;
+	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]));
+	    if (sum < best_sum) {
+	      endlength = querylength - indel_pos_cont - sep;
+	      if (endlength >= min_indel_end_matches) {
+		nmatches = endlength - (shifti + 1);
+		if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		  best_indel_pos = indel_pos_cont;
+		  *indels = +sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti + 1;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    indel_pos_cont = mismatch_positions_long[conti];
 
-      if (ptr->floor_xlast <= max_mismatches_allowed) {
-	/* Last indel, plus */
-	debug2e(printf("floor_xlast %d <= mismatches allowed %d\n",ptr->floor_xlast,max_mismatches_allowed));
-	hits = solve_end_indel_high(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,lastbound,
-				    ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
-#ifdef DEBUG2E
-				    /*queryptr*/queryuc_ptr,
-#endif
-				    querylength,/*query_compress*/query_compress_fwd,
-				    max_end_insertions,max_end_deletions,min_indel_end_matches,
-				    indel_penalty_end,max_mismatches_allowed,/*plusp*/true,genestrand);
-      }
-    }
-  }
+	  } else if (indel_pos_shift < indel_pos_cont) {
+	    sum = shifti + conti;
+	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]-sep+1));
+	    if (sum < best_sum) {
+	      endlength = querylength - (indel_pos_shift + sep);
+	      if (endlength >= min_indel_end_matches) {
+		nmatches = endlength - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = +sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    shifti--;
+	    indel_pos_shift = mismatch_positions_shift[shifti] - sep + 1;
 
-  for (ptr = minus_segments; ptr < &(minus_segments[minus_nsegments]); ptr++) {
-    if (ptr->diagonal < (Univcoord_T) -1) {
+	  } else {
+	    sum = shifti + conti;
+	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]-sep+1));
+	    if (sum < best_sum) {
+	      endlength = querylength - (indel_pos_shift + sep);
+	      if (endlength >= min_indel_end_matches) {
+		nmatches = endlength - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = +sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    shifti--;
+	    indel_pos_cont = mismatch_positions_long[conti];
+	    indel_pos_shift = mismatch_positions_shift[shifti] - sep + 1;
+	  }
+	}
 
-      if (ptr->floor_xfirst <= max_mismatches_allowed) {
-	/* First indel, minus */
-	debug2e(printf("floor_xfirst %d <= mismatches allowed %d\n",ptr->floor_xfirst,max_mismatches_allowed));
-	hits = solve_end_indel_high(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,lastbound,
-				    ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
-#ifdef DEBUG2E
-				    /*queryptr*/queryrc,
-#endif
-				    querylength,/*query_compress*/query_compress_rev,
-				    max_end_insertions,max_end_deletions,min_indel_end_matches,
-				    indel_penalty_end,max_mismatches_allowed,/*plusp*/false,genestrand);
-      }
+	if (shifti < 0) {
+	  sum = conti /*+ shifti + 1*/;
+	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,mismatch_positions_long[conti]));
+	  if (sum < best_sum) {
+	    endlength = querylength - indel_pos_cont - sep;
+	    if (endlength >= min_indel_end_matches) {
+	      nmatches = endlength /*- (shifti + 1)*/;
+	      if (nmatches >= /*shifti + 1*/ + 4) {
+		/* Want more matches than mismatches */
+		best_indel_pos = indel_pos_cont;
+		*indels = +sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = 0 /*shifti + 1*/;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	}
 
-      if (ptr->floor_xlast <= max_mismatches_allowed) {
-	/* Last indel, minus */
-	debug2e(printf("floor_xlast %d <= mismatches allowed %d\n",ptr->floor_xlast,max_mismatches_allowed));
-	hits = solve_end_indel_low(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,firstbound,
-				   ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
-#ifdef DEBUG2E
-				   /*queryptr*/queryrc,
+	debug2e(printf("\n"));
 #endif
-				   querylength,/*query_compress*/query_compress_rev,
-				   max_end_insertions,max_end_deletions,min_indel_end_matches,
-				   indel_penalty_end,max_mismatches_allowed,/*plusp*/false,genestrand);
       }
     }
   }
 
-  return hits;
-}
-
-
-
-/************************************************************************
- *   Splicing
- ************************************************************************/
-
-
-/* Do not compare against true or false */
-/* Loosest criterion */
-static int
-sufficient_splice_prob_local (int support, int nmismatches, double spliceprob) {
-  support -= 3*nmismatches;
-  if (support < 14) {
-    return (spliceprob > 0.95);
-  } else if (support < 20) {
-    return (spliceprob > 0.90);
-  } else if (support < 26) {
-    return (spliceprob > 0.85);
-  } else {
-    return (spliceprob > 0.70);
-  }
-}
-
-/* Do not compare against true or false */
-/* Moderate criterion */
-static int
-sufficient_splice_prob_distant (int support, int nmismatches, double spliceprob) {
-  support -= 3*nmismatches;
-  if (support < min_distantsplicing_end_matches) {
-    return 0;
-  } else if (support < 30) {
-    return (spliceprob > 0.95);
-  } else if (support < 35) {
-    return (spliceprob > 0.90);
-  } else if (support < 40) {
-    return (spliceprob > 0.85);
-  } else {
-    return (spliceprob > 0.70);
-  }
+  debug2e(printf("compute_end_indels_right returning with nmismatches_longcont %d + nmismatches_shift %d for %d indels at indel_pos %d\n",
+		 *nmismatches_longcont,*nmismatches_shift,*indels,best_indel_pos));
+
+  return best_indel_pos;
 }
 
-/* Do not compare against true or false */
 
-#ifdef HALFINTRON
-/* Strictest criterion */
+/* Want genomic low position for indel, so check deletions and insertions in reverse order of preference
+   and check for sum <= best_sum */
 static int
-sufficient_splice_prob_halfintron (int support, int nmismatches, double spliceprob) {
-  support -= 3*nmismatches;
-  if (support < 20) {
-    return 0;
-  } else if (support < 26) {
-    return (spliceprob > 0.95);
-  } else if (support < 32) {
-    return (spliceprob > 0.90);
-  } else if (support < 38) {
-    return (spliceprob > 0.85);
-  } else if (support < 44) {
-    return (spliceprob > 0.80);
-  } else if (support < 50) {
-    return (spliceprob > 0.50);
-  } else {
-    return 1;
-  }
-}
+compute_end_indels_left (int *indels, int *nmismatches_longcont, int *nmismatches_shift,
+			 int *mismatch_positions_long, int nmismatches_avail_long,
+			 int breakpoint, int querylength, Univcoord_T left, Compress_T query_compress,
+			 int min_indel_end_matches, int max_end_insertions, int max_end_deletions,
+			 int max_mismatches_short, bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG2E
+  int i;
+#endif
+  int length1;
+  int sep, start;
+  int nmismatches_avail_shift, nmatches;
+  int mismatch_positions_shift[MAX_READLENGTH+1];
+  int sum, best_sum = MAX_READLENGTH;
+  int conti, shifti;
+  int best_indel_pos = -1;
+#ifdef OLD_END_INDELS
+  int indel_pos;
+#else
+  int indel_pos_cont, indel_pos_shift;
 #endif
 
 
-
+  debug2e(printf("Entered compute_end_indels_left with breakpoint = %d, max_mismatches_short %d\n",
+		 breakpoint,max_mismatches_short));
+  length1 = breakpoint;
 #if 0
-static void
-find_segmentm_span (Segment_T segmentm, int max_mismatches_allowed,
-		    int querylength, Compress_T query_compress,
-		    Univcoord_T left, bool plusp, int genestrand) {
-  int mismatch_positions[MAX_READLENGTH];
-  int nmismatches, i;
-  int leftspan, rightspan, bestspan;
-
-  /* Find all mismatches */
-  nmismatches = Genome_mismatches_left(mismatch_positions,/*max_mismatches*/querylength,
-				       query_compress,left,/*pos5*/0,/*pos3*/querylength,plusp,genestrand);
-
-  if (nmismatches < max_mismatches_allowed) {
-    segmentm->leftspan = 0;
-    segmentm->rightspan = querylength;
-  } else {
-    segmentm->leftspan = 0;
-    bestspan = segmentm->rightspan = mismatch_positions[max_mismatches_allowed] + /*slop*/ 1;
-    for (i = 0; i < nmismatches - max_mismatches_allowed; i++) {
-      leftspan = mismatch_positions[i];
-      rightspan = mismatch_positions[i + max_mismatches_allowed + 1] + /*slop*/ 1;
-      if (rightspan - leftspan > bestspan) {
-	segmentm->leftspan = leftspan;
-	segmentm->rightspan = rightspan;
-	bestspan = rightspan - leftspan;
-      } else if (rightspan - leftspan == bestspan) {
-	segmentm->rightspan = rightspan;
-      }
-    }
+  /* Should not need to reset max_end_deletions */
+  if (max_end_deletions > length1 - min_indel_end_matches) {
+    max_end_deletions = length1 - min_indel_end_matches;
+    debug2e(printf("Resetting max_end_deletions to be %d - %d = %d\n",length1,min_indel_end_matches,max_end_deletions));
   }
-  return;
-}
 #endif
+  if (max_end_insertions > length1 - min_indel_end_matches) {
+    max_end_insertions = length1 - min_indel_end_matches;
+  }
 
+  if (max_end_insertions > 0) {
+    for (sep = max_end_insertions; sep >= 1; sep--) {
+      /* *indels = +sep; */
+      nmismatches_avail_shift = Genome_mismatches_left(mismatch_positions_shift,
+						       max_mismatches_short,query_compress,
+						       left+(+sep),/*pos5*/0,/*pos3*/querylength,
+						       plusp,genestrand,first_read_p);
+      debug2e(
+	      printf("D. Trying insertion of %d.  ",+sep);
+	      printf("%d mismatches on left at:",nmismatches_avail_shift);
+	      for (i = 0; i <= nmismatches_avail_shift; i++) {
+		printf(" %d",mismatch_positions_shift[i]);
+	      }
+	      printf(".  ");
+	      );
 
-/* Note: knowni holds joffset + j + 1, so 0 represents no known site
-   and values greater than 0 represent a known site.  Need to subtract
-   1 to obtain joffset + j. */
+      if (nmismatches_avail_shift == 0) {
+	/* Skip, because we have an exact match on the shift */
+      } else {
+#ifdef OLD_END_INDELS
+	/* Compute over 0 to mismatch_positions_shift[n-1] */
+	/* D. Left insertion.  First, try primary loop is on Genome_mismatches_right (conti), to get lowest coordinate */
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
 
-static List_T
-solve_singlesplice (int *found_score, List_T hits, List_T *lowprob,
-		    Segment_T segmenti, Segment_T segmentj,
-		    int querylength, Compress_T query_compress,
-		    int *segmenti_donor_knownpos, int *segmentj_acceptor_knownpos,
-		    int *segmentj_antidonor_knownpos, int *segmenti_antiacceptor_knownpos,
-		    int *segmenti_donor_knowni, int *segmentj_acceptor_knowni,
-		    int *segmentj_antidonor_knowni, int *segmenti_antiacceptor_knowni,
-		    int segmenti_donor_nknown, int segmentj_acceptor_nknown,
-		    int segmentj_antidonor_nknown, int segmenti_antiacceptor_nknown,
-		    int splicing_penalty, int max_mismatches_allowed,
-		    bool first_read_p, bool plusp, int genestrand, bool subs_or_indels_p) {
-  Substring_T donor, acceptor;
-  Univcoord_T segmenti_left, segmentj_left;
-  int best_splice_pos, splice_pos_start, splice_pos_end, splice_pos, i, j;
-  int donor_positions_alloc[MAX_READLENGTH+1], acceptor_positions_alloc[MAX_READLENGTH+1];
-  int donor_knowni_alloc[MAX_READLENGTH+1], acceptor_knowni_alloc[MAX_READLENGTH+1];
+	/* Start in region */
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
 
-  int best_nmismatches, nmismatches;
-  int best_segmenti_nmismatches, best_segmentj_nmismatches, segmenti_nmismatches, segmentj_nmismatches;
-  int donor_support, acceptor_support;
-  int best_donor_knowni, best_acceptor_knowni;
-  double best_prob, best_donor_prob, best_acceptor_prob, probi, probj;
-  bool sufficient1p, sufficient2p, orig_plusp, sensep;
-  int sensedir;
+	while (conti < nmismatches_avail_long) {
+	  while (shifti >= 0 && mismatch_positions_shift[shifti] > mismatch_positions_long[conti] - sep) {
+	    shifti--;
+	  }
+	  sum = conti + shifti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]-sep+1));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_long[conti] - sep + 1;
+	    if (indel_pos >= min_indel_end_matches) {
+	      nmatches = indel_pos - (shifti + 1);
+	      if (nmatches - 3*(shifti+1)- 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		best_indel_pos = indel_pos;
+		*indels = +sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = shifti + 1;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  conti++;
+	}
+	debug2e(printf("\n"));
 
-  int donori_nsites, acceptorj_nsites, antiacceptori_nsites, antidonorj_nsites;
-  int *donori_positions, *acceptorj_positions, *antiacceptori_positions, *antidonorj_positions;
-  int *donori_knowni, *acceptorj_knowni, *antiacceptori_knowni, *antidonorj_knowni;
 
+	/* D. Left insertion.  Then, try primary loop is on Genome_mismatches_left (shifti), to see if we missed anything */
+	shifti = 0;
+	conti = nmismatches_avail_long - 1;
+	while (shifti < nmismatches_avail_shift) {
+	  while (conti >= 0 && mismatch_positions_long[conti] < mismatch_positions_shift[shifti] + sep) {
+	    conti--;
+	  }
+	  sum = shifti + conti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_shift[shifti];
+	    if (indel_pos >= min_indel_end_matches) {
+	      nmatches = indel_pos - shifti;
+	      if (nmatches - 3*shifti - 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		best_indel_pos = indel_pos;
+		*indels = +sep;
+		*nmismatches_longcont = conti + 1;
+		*nmismatches_shift = shifti;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  shifti++;
+	}
+	debug2e(printf("\n"));
 
-  segmenti_left = segmenti->diagonal - querylength;
-  segmentj_left = segmentj->diagonal - querylength;
-  debug4p(printf("solve_singlesplice: Getting genome at lefti %lu and leftj %lu (diff: %d)\n",
-		 segmenti_left,segmentj_left,segmentj_left-segmenti_left));
+#else
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
+	indel_pos_cont = mismatch_positions_long[conti] - sep + 1;
+	indel_pos_shift = mismatch_positions_shift[shifti];
 
-#if 0
-  int sum, lefti, righti;
-  splice_pos_start = querylength;
-  splice_pos_end = 0;
-  for (sum = 0; sum <= max_mismatches_allowed; sum++) {
-    for (lefti = 0; lefti <= sum && lefti < nmismatches_left; lefti++) {
-      if ((righti = sum - lefti) < nmismatches_right &&
-	  mismatch_positions_left[lefti] > mismatch_positions_right[righti]) {
-	debug4p(printf("At %d+%d mismatches, splice_pos using right: %d\n",lefti,righti,mismatch_positions_right[righti]+1));
-	debug4p(printf("At %d+%d mismatches, splice_pos using left: %d\n",lefti,righti,mismatch_positions_left[lefti]));
-	if (mismatch_positions_right[righti] + 1 < splice_pos_start) {
-	  splice_pos_start = mismatch_positions_right[righti] + 1;	/* This is leftmost position in righti+1 .. lefti */
+	while (conti < nmismatches_avail_long && shifti >= 0) {
+	  if (indel_pos_cont > indel_pos_shift) {
+	    sum = conti + shifti + 1;
+	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]-sep+1));
+	    if (sum <= best_sum) {
+	      if (indel_pos_cont >= min_indel_end_matches) {
+		nmatches = indel_pos_cont - (shifti + 1);
+		if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		  best_indel_pos = indel_pos_cont;
+		  *indels = +sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti + 1;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    indel_pos_cont = mismatch_positions_long[conti] - sep + 1;
+
+	  } else if (indel_pos_shift > indel_pos_cont) {
+	    sum = shifti + conti;
+	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
+	    if (sum <= best_sum) {
+	      if (indel_pos_shift >= min_indel_end_matches) {
+		nmatches = indel_pos_shift - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = +sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    shifti--;
+	    indel_pos_shift = mismatch_positions_shift[shifti];
+
+	  } else {
+	    sum = shifti + conti;
+	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
+	    if (sum <= best_sum) {
+	      if (indel_pos_shift >= min_indel_end_matches) {
+		nmatches = indel_pos_shift - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = +sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    shifti--;
+	    indel_pos_cont = mismatch_positions_long[conti] - sep + 1;
+	    indel_pos_shift = mismatch_positions_shift[shifti];
+
+	  }
 	}
-	if (mismatch_positions_left[lefti] > splice_pos_end) {
-	  splice_pos_end = mismatch_positions_left[lefti];	/* This is rightmost position in righti+1 .. lefti */
+
+	if (shifti < 0) {
+	  sum = conti /*+ shifti + 1*/;
+	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,mismatch_positions_long[conti]-sep+1));
+	  if (sum <= best_sum) {
+	    if (indel_pos_cont >= min_indel_end_matches) {
+	      nmatches = indel_pos_cont /*- (shifti + 1)*/;
+	      if (nmatches >= /*shifti + 1*/ + 4) {
+		/* Want more matches than mismatches */
+		best_indel_pos = indel_pos_cont;
+		*indels = +sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = 0 /*shifti + 1*/;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
 	}
+
+	debug2e(printf("\n"));
+#endif
       }
     }
   }
 
-  /* Exclude ends */
-  if (splice_pos_start < min_localsplicing_end_matches) {
-    splice_pos_start = min_localsplicing_end_matches;
-  }
-  if (splice_pos_end > querylength - min_localsplicing_end_matches) {
-    splice_pos_end = querylength - min_localsplicing_end_matches;
-  }
-#else
-  /* splice_pos_start = min_localsplicing_end_matches; */
-  /* splice_pos_end = querylength - min_localsplicing_end_matches; */
-  splice_pos_start = 2;
-  splice_pos_end = querylength - 2;
-#endif
-
-
-  if (splice_pos_start <= splice_pos_end) {
-    /* Originally from plus strand.  No complement.  */
-    /* Sense (End 1 to End 2) or Antisense (End 5 to End 6) */
-    if (novelsplicingp && segmenti_left + splice_pos_start >= DONOR_MODEL_LEFT_MARGIN) {
-      donori_nsites = Genome_donor_positions(donor_positions_alloc,donor_knowni_alloc,
-					     segmenti_donor_knownpos,segmenti_donor_knowni,
-					     segmenti_left,splice_pos_start,splice_pos_end);
-      donori_positions = donor_positions_alloc;
-      donori_knowni = donor_knowni_alloc;
+
+  if (max_end_deletions > 0) {
+    if (left < (unsigned int) max_end_deletions) {
+      debug2e(printf("left %lu < max_end_deletions %d, so start = left\n",left,max_end_deletions));
+      start = left;
     } else {
-      donori_nsites = segmenti_donor_nknown;
-      donori_positions = segmenti_donor_knownpos;
-      donori_knowni = segmenti_donor_knowni;
+      start = 1;
     }
 
-#ifdef DEBUG4P
-    printf("Found %d donori sites:",donori_nsites);
-    for (i = 0; i < donori_nsites; i++) {
-      printf(" %d",donori_positions[i]);
-      if (donori_knowni[i] >= 0) {
-	printf(" (%d)",donori_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+    for (sep = max_end_deletions; sep >= 1; sep--) {
+      /* *indels = -sep; */
+      nmismatches_avail_shift = Genome_mismatches_left(mismatch_positions_shift,
+						       max_mismatches_short,query_compress,
+						       left+(-sep),/*pos5*/0,/*pos3*/querylength,
+						       plusp,genestrand,first_read_p);
+      debug2e(
+	      printf("C. Trying deletion of %d.  ",-sep);
+	      printf("%d mismatches on left at:",nmismatches_avail_shift);
+	      for (i = 0; i <= nmismatches_avail_shift; i++) {
+		printf(" %d",mismatch_positions_shift[i]);
+	      }
+	      printf(".  ");
+	      );
 
-    if (novelsplicingp && segmentj_left + splice_pos_start >= ACCEPTOR_MODEL_LEFT_MARGIN) {
-      acceptorj_nsites = Genome_acceptor_positions(acceptor_positions_alloc,acceptor_knowni_alloc,
-						   segmentj_acceptor_knownpos,segmentj_acceptor_knowni,
-						   segmentj_left,splice_pos_start,splice_pos_end);
-      acceptorj_positions = acceptor_positions_alloc;
-      acceptorj_knowni = acceptor_knowni_alloc;
-    } else {
-      acceptorj_nsites = segmentj_acceptor_nknown;
-      acceptorj_positions = segmentj_acceptor_knownpos;
-      acceptorj_knowni = segmentj_acceptor_knowni;
-    }
+      if (nmismatches_avail_shift == 0) {
+	/* Skip, because we have an exact match on the shift */
+      } else {
+#ifdef OLD_END_INDELS
+	/* Compute over 0 to mismatch_positions_shift[n-1] */
+	/* C. Left deletion.  First, try primary loop (cont) on Genome_mismatches_right, to get lowest coordinate */
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
 
-#ifdef DEBUG4P
-    printf("Found %d acceptorj sites:",acceptorj_nsites);
-    for (i = 0; i < acceptorj_nsites; i++) {
-      printf(" %d",acceptorj_positions[i]);
-      if (acceptorj_knowni[i] >= 0) {
-	printf(" (%d)",acceptorj_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+	/* Start in region */
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
+
+	while (conti < nmismatches_avail_long) {
+	  while (shifti >= 0 && mismatch_positions_shift[shifti] > mismatch_positions_long[conti]) {
+	    shifti--;
+	  }
+	  sum = conti + shifti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]+1));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_long[conti] + 1;
+	    if (indel_pos >= min_indel_end_matches && indel_pos >= sep) {
+	      nmatches = indel_pos - (shifti + 1);
+	      if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		best_indel_pos = indel_pos;
+		*indels = -sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = shifti + 1;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
+	  }
+	  conti++;
+	}
+	debug2e(printf("\n"));
 
-    best_nmismatches = max_mismatches_allowed;
-    best_prob = 0.0;
-    orig_plusp = true;
 
-    i = j = 0;
-    while (i < donori_nsites && j < acceptorj_nsites) {
-      if ((splice_pos = donori_positions[i]) < acceptorj_positions[j]) {
-	i++;
-      } else if (splice_pos > acceptorj_positions[j]) {
-	j++;
-      } else {
-	segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos,
-								 plusp,genestrand);
-	segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos,/*pos3*/querylength,
-								 plusp,genestrand);
-	if ((nmismatches = segmenti_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
-	  if (donori_knowni[i] >= 0) {
-	    probi = 1.0;
-	  } else {
-	    probi = Maxent_hr_donor_prob(segmenti_left + splice_pos,segmenti->chroffset);
+	/* C. Left deletion.  Then, try primary loop on Genome_mismatches_left (shifti) to see if we missed anything */
+	shifti = 0;
+	conti = nmismatches_avail_long - 1;
+	while (shifti < nmismatches_avail_shift) {
+	  while (conti >= 0 && mismatch_positions_long[conti] < mismatch_positions_shift[shifti]) {
+	    conti--;
+	  }
+	  sum = shifti + conti + 1;
+	  debug2e(printf("sum %d=%d+%d at indel_pos %d.  ",sum,conti+1,shifti,mismatch_positions_shift[shifti]));
+	  if (sum < best_sum) {
+	    indel_pos = mismatch_positions_shift[shifti];
+	    if (indel_pos >= min_indel_end_matches && indel_pos >= sep) {
+	      nmatches = indel_pos - shifti;
+	      if (nmatches - 3*shifti - 4 >= 0) {
+		/* Want more matches than mismatches */
+		debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		best_indel_pos = indel_pos;
+		*indels = -sep;
+		*nmismatches_longcont = conti + 1;
+		*nmismatches_shift = shifti;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
 	  }
+	  shifti++;
+	}
+	debug2e(printf("\n"));
+
+#else
+	shifti = nmismatches_avail_shift - 1;
+	conti = 0;
+	while (conti < nmismatches_avail_long && mismatch_positions_long[conti] > mismatch_positions_shift[shifti]) {
+	  conti++;
+	}
+	indel_pos_cont = mismatch_positions_long[conti] + 1;
+	indel_pos_shift = mismatch_positions_shift[shifti];
+
+	while (conti < nmismatches_avail_long && shifti >= 0) {
+	  if (indel_pos_cont > indel_pos_shift) {
+	    sum = conti + shifti + 1;
+	    debug2e(printf("cont %d=%d+%d at indel_pos %d.  ",sum,conti,shifti+1,mismatch_positions_long[conti]+1));
+	    if (sum <= best_sum) {
+	      if (indel_pos_cont >= min_indel_end_matches && indel_pos_cont >= sep) {
+		nmatches = indel_pos_cont - (shifti + 1);
+		if (nmatches - 3*(shifti+1) - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti+1,nmatches-3*(shifti+1)-4));
+		  best_indel_pos = indel_pos_cont;
+		  *indels = -sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti + 1;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    indel_pos_cont = mismatch_positions_long[conti] + 1;
+
+	  } else if (indel_pos_shift > indel_pos_cont) {
+	    sum = shifti + conti;
+	    debug2e(printf("shift %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
+	    if (sum <= best_sum) {
+	      if (indel_pos_shift >= min_indel_end_matches && indel_pos_shift >= sep) {
+		nmatches = indel_pos_shift - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = -sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    shifti--;
+	    indel_pos_shift = mismatch_positions_shift[shifti];
 
-	  if (acceptorj_knowni[j] >= 0) {
-	    probj = 1.0;
 	  } else {
-	    probj = Maxent_hr_acceptor_prob(segmentj_left + splice_pos,segmentj->chroffset);
+	    sum = shifti + conti;
+	    debug2e(printf("both %d=%d+%d at indel_pos %d.  ",sum,conti,shifti,mismatch_positions_shift[shifti]));
+	    if (sum <= best_sum) {
+	      if (indel_pos_shift >= min_indel_end_matches && indel_pos_shift >= sep) {
+		nmatches = indel_pos_shift - shifti;
+		if (nmatches - 3*shifti - 4 >= 0) {
+		  /* Want more matches than mismatches */
+		  debug2e(printf("nmatches %d - 3*%d - 4 = %d.  ",nmatches,shifti,nmatches-3*shifti-4));
+		  best_indel_pos = indel_pos_shift;
+		  *indels = -sep;
+		  *nmismatches_longcont = conti;
+		  *nmismatches_shift = shifti;
+		  debug2e(printf("**"));
+		  best_sum = sum;
+		}
+	      }
+	    }
+	    conti++;
+	    shifti--;
+	    indel_pos_cont = mismatch_positions_long[conti] + 1;
+	    indel_pos_shift = mismatch_positions_shift[shifti];
 	  }
+	}
 
-	  debug4p(
-		  if (plusp == true) {
-		    printf("plus sense splice_pos  %d, i.donor %f, j.acceptor %f\n",splice_pos,probi,probj);
-		  } else {
-		    printf("minus antisense splice_pos  %d, i.donor %f, j.acceptor %f\n",splice_pos,probi,probj);
-		  });
-
-	  if (nmismatches < best_nmismatches ||
-	      (nmismatches == best_nmismatches && probi + probj > best_prob)) {
-	    /* Success */
-	    best_nmismatches = nmismatches;
-	    best_prob = probi + probj;
-
-	    best_donor_knowni = donori_knowni[i];
-	    best_acceptor_knowni = acceptorj_knowni[j];
-	    best_donor_prob = probi;
-	    best_acceptor_prob = probj;
-	    best_splice_pos = splice_pos;
-	    best_segmenti_nmismatches = segmenti_nmismatches;
-	    best_segmentj_nmismatches = segmentj_nmismatches;
+	if (shifti < 0) {
+	  sum = conti /*+ shifti + 1*/;
+	  debug2e(printf("last %d=%d at indel_pos %d.  ",sum,conti,mismatch_positions_long[conti]+1));
+	  if (sum <= best_sum) {
+	    if (indel_pos_cont >= min_indel_end_matches && indel_pos_cont >= sep) {
+	      nmatches = indel_pos_cont /*- (shifti + 1)*/;
+	      if (nmatches >= /*shifti + 1*/ + 4) {
+		/* Want more matches than mismatches */
+		best_indel_pos = indel_pos_cont;
+		*indels = -sep;
+		*nmismatches_longcont = conti;
+		*nmismatches_shift = 0 /*shifti + 1*/;
+		debug2e(printf("**"));
+		best_sum = sum;
+	      }
+	    }
 	  }
 	}
-	i++;
-	j++;
+
+	debug2e(printf("\n"));
+#endif
       }
     }
+  }
 
 
-    /* Originally from minus strand.  Complement. */
-    /* Antisense (End 7 to End 8) or Sense (End 3 to End 4) */
-    if (novelsplicingp && segmenti_left + splice_pos_start >= ACCEPTOR_MODEL_RIGHT_MARGIN) {
-      antiacceptori_nsites = Genome_antiacceptor_positions(acceptor_positions_alloc,acceptor_knowni_alloc,
-							   segmenti_antiacceptor_knownpos,segmenti_antiacceptor_knowni,
-							   segmenti_left,splice_pos_start,splice_pos_end);
-      antiacceptori_positions = acceptor_positions_alloc;
-      antiacceptori_knowni = acceptor_knowni_alloc;
-    } else {
-      antiacceptori_nsites = segmenti_antiacceptor_nknown;
-      antiacceptori_positions = segmenti_antiacceptor_knownpos;
-      antiacceptori_knowni = segmenti_antiacceptor_knowni;
-    }
+  debug2e(printf("compute_end_indels_left returning with nmismatches_cont %d + nmismatches_shift %d for %d indels at indel_pos %d\n",
+		 *nmismatches_longcont,*nmismatches_shift,*indels,best_indel_pos));
 
-#ifdef DEBUG4P
-    printf("Found %d antiacceptori sites:",antiacceptori_nsites);
-    for (i = 0; i < antiacceptori_nsites; i++) {
-      printf(" %d",antiacceptori_positions[i]);
-      if (antiacceptori_knowni[i] >= 0) {
-	printf(" (%d)",antiacceptori_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+  return best_indel_pos;
+}
 
-    if (novelsplicingp && segmentj_left + splice_pos_start >= DONOR_MODEL_RIGHT_MARGIN) {
-      antidonorj_nsites = Genome_antidonor_positions(donor_positions_alloc,donor_knowni_alloc,
-						     segmentj_antidonor_knownpos,segmentj_antidonor_knowni,
-						     segmentj_left,splice_pos_start,splice_pos_end);
-      antidonorj_positions = donor_positions_alloc;
-      antidonorj_knowni = donor_knowni_alloc;
-    } else {
-      antidonorj_nsites = segmentj_antidonor_nknown;
-      antidonorj_positions = segmentj_antidonor_knownpos;
-      antidonorj_knowni = segmentj_antidonor_knowni;
-    }
 
-#ifdef DEBUG4P
-    printf("Found %d antidonorj sites:",antidonorj_nsites);
-    for (i = 0; i < antidonorj_nsites; i++) {
-      printf(" %d",antidonorj_positions[i]);
-      if (antidonorj_knowni[i] >= 0) {
-	printf(" (%d)",antidonorj_knowni[i]);
-      }
-    }
-    printf("\n");
+/************************************************************************/
+
+/* Was solve_first_indel_plus and solve_last_indel_minus */
+static List_T
+solve_end_indel_low (int *found_score, int *nhits, List_T hits, Segment_T ptr,
+		     Univcoord_T diagonal, int firstbound,
+		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+#ifdef DEBUG2E
+		     char *queryptr,
+#endif
+		     int querylength, Compress_T query_compress,
+		     int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
+		     int indel_penalty_end, int max_mismatches, bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG2E
+  char *gbuffer;
 #endif
+  int i;
+  Stage3end_T hit;
+  Univcoord_T left;
+  int indels, query_indel_pos, indel_pos, breakpoint;
+  int nmismatches, nmismatches_long, nmismatches_longcont, nmismatches_shift;
+  int mismatch_positions[MAX_READLENGTH];
+  int nmismatches1, nmismatches2;
 
-    i = j = 0;
-    while (i < antiacceptori_nsites && j < antidonorj_nsites) {
-      if ((splice_pos = antiacceptori_positions[i]) < antidonorj_positions[j]) {
-	i++;
-      } else if (splice_pos > antidonorj_positions[j]) {
-	j++;
-      } else {
-	segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos,
-								 plusp,genestrand);
-	segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos,/*pos3*/querylength,
-								 plusp,genestrand);
-	if ((nmismatches = segmenti_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
-	  if (antiacceptori_knowni[i] >= 0) {
-	    probi = 1.0;
+
+  left = diagonal - querylength;
+  if ((unsigned int) max_end_deletions > left - chroffset) {
+    max_end_deletions = left - chroffset;
+    /* diagonal - querylength guaranteed to be >= chroffset, so max_end_deletions >= 0 */
+  }
+
+  debug2e(
+	  if (plusp == true) {
+	    printf("\nsolve_end_indel_low: Getting genome at diagonal %lu - querylength %d - max_end_deletions %d = %lu.\n",
+		   diagonal,querylength,max_end_deletions,left-max_end_deletions);
 	  } else {
-	    probi = Maxent_hr_antiacceptor_prob(segmenti_left + splice_pos,segmenti->chroffset);
-	  }
+	    printf("\nsolve_end_indel_low: Getting genome at diagonal %lu + 12 - querylength %d = %lu, max_end_deletions = %d.\n",
+		   diagonal,querylength,left,max_end_deletions);
+	  });
 
-	  if (antidonorj_knowni[j] >= 0) {
-	    probj = 1.0;
-	  } else {
-	    probj = Maxent_hr_antidonor_prob(segmentj_left + splice_pos,segmentj->chroffset);
-	  }
+  debug2e(gbuffer = (char *) CALLOC(querylength+max_end_deletions+1,sizeof(char)));
+  debug2e(Genome_fill_buffer_blocks(left-max_end_deletions,querylength+max_end_deletions,gbuffer));
+  debug2e(printf("q: %s\ng: %s\n",queryptr,gbuffer));
+  debug2e(FREE(gbuffer));
 
-	  debug4p(
-		  if (plusp == true) {
-		    printf("plus antisense splice_pos  %d, j.donor %f, i.acceptor %f\n",splice_pos,probj,probi);
-		  } else {
-		    printf("minus sense splice_pos  %d, j.donor %f, i.acceptor %f\n",splice_pos,probj,probi);
-		  });
-	  
-	  if (nmismatches < best_nmismatches ||
-	      (nmismatches == best_nmismatches && probi + probj > best_prob)) {
-	    /* Success */
-	    best_nmismatches = nmismatches;
-	    best_prob = probi + probj;
-
-	    best_donor_knowni = antidonorj_knowni[j];
-	    best_acceptor_knowni = antiacceptori_knowni[i];
-	    best_donor_prob = probj;
-	    best_acceptor_prob = probi;
-	    best_splice_pos = splice_pos;
-	    best_segmentj_nmismatches = segmentj_nmismatches;
-	    best_segmenti_nmismatches = segmenti_nmismatches;
-	    orig_plusp = false;
+  /* No need to check chromosome bounds */
+  nmismatches = Genome_mismatches_right(mismatch_positions,max_mismatches,
+					query_compress,left,/*pos5*/0,/*pos3*/querylength,
+					plusp,genestrand,first_read_p);
+
+  debug2e(
+	  printf("full read: %d (max %d) mismatches from right:",nmismatches,max_mismatches);
+	  for (i = 0; i <= nmismatches; i++) {
+	    printf(" %d",mismatch_positions[i]);
 	  }
-	}
-	i++;
-	j++;
-      }
-    }
+	  printf("\n");
+	  );
 
-    if (best_prob > 0.0) {
-      debug4p(printf("best_prob = %f at splice_pos %d (%d,%d)\n",
-		     best_prob,best_splice_pos,best_donor_knowni,best_acceptor_knowni));
-      if (orig_plusp == true) {
-	/* Originally from plus strand.  No complement. */
-	sensep = (plusp == true) ? true : false;
-	sensedir = (plusp == true) ? SENSE_FORWARD : SENSE_ANTI;
+  /* Find first mismatch past firstbound */
+  i = 0;
+  while (i <= nmismatches && mismatch_positions[i] > firstbound) {
+    i++;
+  }
+  nmismatches_long = i;
 
-	donor = Substring_new_donor(best_donor_knowni,/*joffset*/0,best_splice_pos,best_segmenti_nmismatches,
-				    best_donor_prob,/*left*/segmenti_left,query_compress,
-				    querylength,plusp,genestrand,sensep,
-				    segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength);
+#if 0
+  nmismatches_short = nmismatches - i;
+  /* Previously checked if nmismatches_short <= 0 */
+#endif
+  
+  /* Should be >= */
+  if (i >= nmismatches) {
+    debug2e(printf("i %d >= nmismatches %d => no indel\n",i,nmismatches));
+  } else {
+#if 0
+    mismatch_positions_short = &(mismatch_positions[i]);
+    debug2e(
+	    printf("nmismatches_long = %d, short = %d\n",nmismatches_long,nmismatches_short);
+	    printf("short end from firstbound %d:",firstbound);
+	    for (i = 0; i <= nmismatches_short; i++) {
+	      printf(" %d",mismatch_positions_short[i]);
+	    }
+	    printf("\n");
+	    );
+    breakpoint = mismatch_positions_short[0] + 1;
+#else
+    breakpoint = mismatch_positions[i] + 1;
+#endif
 
-	acceptor = Substring_new_acceptor(best_acceptor_knowni,/*joffset*/0,best_splice_pos,best_segmentj_nmismatches,
-					  best_acceptor_prob,/*left*/segmentj_left,query_compress,
-					  querylength,plusp,genestrand,sensep,
-					  segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength);
+    if ((indel_pos = compute_end_indels_left(&indels,&nmismatches_longcont,&nmismatches_shift,
+					     mismatch_positions,nmismatches,
+					     breakpoint,querylength,left,query_compress,
+					     min_indel_end_matches,max_end_insertions,max_end_deletions,
+					     /*max_mismatches_allowed*/max_mismatches-nmismatches_long+1,
+					     plusp,genestrand,first_read_p)) >= 0) {
+      debug2e(printf("Got indel_pos %d.\n",indel_pos));
 
-	if (donor == NULL || acceptor == NULL) {
-	  if (donor != NULL) Substring_free(&donor);
-	  if (acceptor != NULL) Substring_free(&acceptor);
+      /* formulas for query_indel_pos have been checked on examples */
+      if (indels > 0) {
+	if (plusp == true) {
+	  query_indel_pos = indel_pos /* + indels */;
+	  debug2e(printf("case 1: query_indel_pos = %d = %d\n",indel_pos,query_indel_pos));
+	  nmismatches1 = nmismatches_shift;
+	  nmismatches2 = nmismatches_longcont;
+	  /* end1_indel_p = true; */
+	  /* end2_indel_p = false; */
 	} else {
-	  debug4p(printf("solve_singlesplice success\n"));
-	  segmenti->usedp = segmentj->usedp = true;
-
-	  donor_support = best_splice_pos;
-	  acceptor_support = querylength - best_splice_pos;
-	  sufficient1p = sufficient_splice_prob_local(donor_support,best_segmenti_nmismatches,best_donor_prob);
-	  sufficient2p = sufficient_splice_prob_local(acceptor_support,best_segmentj_nmismatches,best_acceptor_prob);
-
-	  if (sufficient1p && sufficient2p) {
-	    return List_push(hits,(void *) Stage3end_new_splice(&(*found_score),best_segmenti_nmismatches,best_segmentj_nmismatches,
-								donor,acceptor,/*distance*/segmentj_left - segmenti_left,
-								/*shortdistancep*/true,splicing_penalty,querylength,
-								/*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
-								/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-								/*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir));
-	  } else if (subs_or_indels_p == true) {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	    return hits;
-	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	    return hits;
-	  } else if (sufficient1p || sufficient2p) {
-	    *lowprob = List_push(*lowprob,
-				 (void *) Stage3end_new_splice(&(*found_score),best_segmenti_nmismatches,best_segmentj_nmismatches,
-							       donor,acceptor,/*distance*/segmentj_left - segmenti_left,
-							       /*shortdistancep*/true,splicing_penalty,querylength,
-							       /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
-							       /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-							       /*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir));
-	    return hits;
-	  } else {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  }
+	  query_indel_pos = querylength - indel_pos - indels;
+	  debug2e(printf("case 2: query_indel_pos = %d - %d - %d = %d\n",querylength,indel_pos,indels,query_indel_pos));
+	  nmismatches1 = nmismatches_longcont;
+	  nmismatches2 = nmismatches_shift;
+	  /* end1_indel_p = false; */
+	  /* end2_indel_p = true; */
 	}
 
-      } else {
-	/* Originally from minus strand.  Complement. */
-	sensep = (plusp == true) ? false : true;
-	sensedir = (plusp == true) ? SENSE_ANTI : SENSE_FORWARD;
-
-	donor = Substring_new_donor(best_donor_knowni,/*joffset*/0,best_splice_pos,best_segmentj_nmismatches,
-				    best_donor_prob,/*left*/segmentj_left,query_compress,
-				    querylength,plusp,genestrand,sensep,
-				    segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength);
-
-	acceptor = Substring_new_acceptor(best_acceptor_knowni,/*joffset*/0,best_splice_pos,best_segmenti_nmismatches,
-					  best_acceptor_prob,/*left*/segmenti_left,query_compress,
-					  querylength,plusp,genestrand,sensep,
-					  segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength);
+	if ((hit = Stage3end_new_insertion(&(*found_score),indels,query_indel_pos,
+					   nmismatches1,nmismatches2,
+					   left+indels,/*genomiclength*/querylength-indels,
+					   query_compress,querylength,plusp,genestrand,first_read_p,
+					   chrnum,chroffset,chrhigh,chrlength,indel_penalty_end,
+					   /*sarrayp*/false)) != NULL) {
+	  ptr->usedp = true;
+	  *nhits += 1;
+	  hits = List_push(hits,(void *) hit);
+	  debug2e(printf("successful insertion at %d with %d long/cont + %d shift mismatches\n",
+			 indel_pos,nmismatches_longcont,nmismatches_shift));
+	}
 
-	if (donor == NULL || acceptor == NULL) {
-	  if (donor != NULL) Substring_free(&donor);
-	  if (acceptor != NULL) Substring_free(&acceptor);
+      } else {
+	if (plusp == true) {
+	  query_indel_pos = indel_pos;
+	  nmismatches1 = nmismatches_shift;
+	  nmismatches2 = nmismatches_longcont;
+	  /* end1_indel_p = true; */
+	  /* end2_indel_p = false; */
 	} else {
-	  debug4p(printf("solve_singlesplice success\n"));
-	  segmenti->usedp = segmentj->usedp = true;
-
-	  acceptor_support = best_splice_pos;
-	  donor_support = querylength - best_splice_pos;
-	  sufficient1p = sufficient_splice_prob_local(acceptor_support,best_segmenti_nmismatches,best_acceptor_prob);
-	  sufficient2p = sufficient_splice_prob_local(donor_support,best_segmentj_nmismatches,best_donor_prob);
-	  if (sufficient1p && sufficient2p) {
-	    return List_push(hits,(void *) Stage3end_new_splice(&(*found_score),best_segmentj_nmismatches,best_segmenti_nmismatches,
-								donor,acceptor,/*distance*/segmentj_left - segmenti_left,
-								/*shortdistancep*/true,splicing_penalty,querylength,
-								/*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
-								/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-								/*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir));
-	  } else if (subs_or_indels_p == true) {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	    return hits;
-	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	    return hits;
-	  } else if (sufficient1p || sufficient2p) {
-	    *lowprob = List_push(*lowprob,
-				 (void *) Stage3end_new_splice(&(*found_score),best_segmentj_nmismatches,best_segmenti_nmismatches,
-							       donor,acceptor,/*distance*/segmentj_left - segmenti_left,
-							       /*shortdistancep*/true,splicing_penalty,querylength,
-							       /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
-							       /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-							       /*copy_donor_p*/false,/*copy_acceptor_p*/false,first_read_p,sensedir));
-	    return hits;
-	  } else {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	    return hits;
-	  }
+	  query_indel_pos = querylength - indel_pos;
+	  nmismatches1 = nmismatches_longcont;
+	  nmismatches2 = nmismatches_shift;
+	  /* end1_indel_p = false; */
+	  /* end2_indel_p = true; */
+	}
+
+	if ((hit = Stage3end_new_deletion(&(*found_score),-indels,query_indel_pos,
+					  nmismatches1,nmismatches2,
+					  left+indels,/*genomiclength*/querylength-indels,
+					  query_compress,querylength,plusp,genestrand,first_read_p,
+					  chrnum,chroffset,chrhigh,chrlength,indel_penalty_end,
+					  /*sarrayp*/false)) != NULL) {
+	  ptr->usedp = true;
+	  *nhits += 1;
+	  hits = List_push(hits,(void *) hit);
+	  debug2e(printf("successful end deletion at %d with %d long/cont + %d shift mismatches and nindels %d\n",
+			 indel_pos,nmismatches_longcont,nmismatches_shift,-indels));
 	}
       }
     }
   }
 
-  debug4p(printf("solve_singlesplice fail\n"));
   return hits;
 }
 
 
+/* Was solve_first_indel_minus and solve_last_indel_plus */
 static List_T
-solve_doublesplice (int *found_score, List_T hits, List_T *lowprob,
-		    Segment_T segmenti, Segment_T segmentm, Segment_T segmentj,
-		    int querylength, Compress_T query_compress,
-		    int *segmenti_donor_knownpos, int *segmentm_acceptor_knownpos, int *segmentm_donor_knownpos, int *segmentj_acceptor_knownpos,
-		    int *segmentj_antidonor_knownpos, int *segmentm_antiacceptor_knownpos, int *segmentm_antidonor_knownpos, int *segmenti_antiacceptor_knownpos,
-		    int *segmenti_donor_knowni, int *segmentm_acceptor_knowni, int *segmentm_donor_knowni, int *segmentj_acceptor_knowni,
-		    int *segmentj_antidonor_knowni, int *segmentm_antiacceptor_knowni, int *segmentm_antidonor_knowni, int *segmenti_antiacceptor_knowni,
-		    int segmenti_donor_nknown, int segmentm_acceptor_nknown, int segmentm_donor_nknown, int segmentj_acceptor_nknown,
-		    int segmentj_antidonor_nknown, int segmentm_antiacceptor_nknown, int segmentm_antidonor_nknown, int segmenti_antiacceptor_nknown,
-		    int splicing_penalty, int max_mismatches_allowed, bool plusp, int genestrand, bool subs_or_indels_p) {
-  Substring_T donor, shortexon, acceptor;
-  Univcoord_T segmenti_left, segmentm_left, segmentj_left;
-  int best_splice_pos_1, best_splice_pos_2, splice_pos_start, splice_pos_end, splice_pos_1, splice_pos_2;
-  int i, a, b, j;
-  int donor1_positions_alloc[MAX_READLENGTH+1], acceptor1_positions_alloc[MAX_READLENGTH+1],
-    donor2_positions_alloc[MAX_READLENGTH+1], acceptor2_positions_alloc[MAX_READLENGTH+1];
-  int donor1_knowni_alloc[MAX_READLENGTH+1], acceptor1_knowni_alloc[MAX_READLENGTH+1],
-    donor2_knowni_alloc[MAX_READLENGTH+1], acceptor2_knowni_alloc[MAX_READLENGTH+1];
+solve_end_indel_high (int *found_score, int *nhits, List_T hits, Segment_T ptr,
+		      Univcoord_T diagonal, int lastbound,
+		      Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+#ifdef DEBUG2E
+		      char *queryptr,
+#endif
+		      int querylength, Compress_T query_compress,
+		      int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
+		      int indel_penalty_end, int max_mismatches, bool plusp, int genestrand, bool first_read_p) {
+#ifdef DEBUG2E
+  char *gbuffer;
+#endif
+  int i;
+  Stage3end_T hit;
+  Univcoord_T left;
+  int indels, query_indel_pos, indel_pos, breakpoint;
+  int nmismatches, nmismatches_long, nmismatches_longcont, nmismatches_shift;
+  int mismatch_positions[MAX_READLENGTH];
+  int nmismatches1, nmismatches2;
 
-  int best_nmismatches, nmismatches;
-  int best_segmenti_nmismatches, best_segmentm_nmismatches, best_segmentj_nmismatches,
-    segmenti_nmismatches, segmentm_nmismatches, segmentj_nmismatches;
-  int donor_support, acceptor_support, middle_support;
-  int best_donor1_knowni, best_acceptor1_knowni, best_donor2_knowni, best_acceptor2_knowni;
-  double best_prob, best_donor1_prob, best_acceptor1_prob, best_donor2_prob, best_acceptor2_prob,
-    probi, proba, probb, probj;
-  bool sufficient1p, sufficient2p, sufficient3p, sufficient4p, orig_plusp, sensep, matchp;
-  int sensedir;
 
-  int donori_nsites, acceptora_nsites, donorb_nsites, acceptorj_nsites,
-    antiacceptori_nsites, antidonora_nsites, antiacceptorb_nsites, antidonorj_nsites;
-  int *donori_positions, *acceptora_positions, *donorb_positions, *acceptorj_positions,
-    *antiacceptori_positions, *antidonora_positions, *antiacceptorb_positions, *antidonorj_positions;
-  int *donori_knowni, *acceptora_knowni, *donorb_knowni, *acceptorj_knowni,
-    *antiacceptori_knowni, *antidonora_knowni, *antiacceptorb_knowni, *antidonorj_knowni;
-
-
-  segmenti_left = segmenti->diagonal - querylength;
-  segmentm_left = segmentm->diagonal - querylength;
-  segmentj_left = segmentj->diagonal - querylength;
-  debug4d(printf("solve_doublesplice: Getting genome at lefti %lu, leftm %lu, and leftj %lu\n",
-		 segmenti_left,segmentm_left,segmentj_left));
-
-  splice_pos_start = 2;
-  splice_pos_end = querylength - 2;
-
-  if (splice_pos_start <= splice_pos_end) {
-    /* Originally from plus strand.  No complement. */
-    /* Sense (End 1 to End 2) or Antisense (End 5 to End 6) */
-
-    /* Segment i */
-    if (novelsplicingp && segmenti_left + splice_pos_start >= DONOR_MODEL_LEFT_MARGIN) {
-      donori_nsites = Genome_donor_positions(donor1_positions_alloc,donor1_knowni_alloc,
-					     segmenti_donor_knownpos,segmenti_donor_knowni,
-					     segmenti_left,splice_pos_start,splice_pos_end);
-      donori_positions = donor1_positions_alloc;
-      donori_knowni = donor1_knowni_alloc;
-    } else {
-      donori_nsites = segmenti_donor_nknown;
-      donori_positions = segmenti_donor_knownpos;
-      donori_knowni = segmenti_donor_knowni;
-    }
+  left = diagonal - querylength;
+  if ((unsigned int) max_end_deletions > chrhigh - diagonal) {
+    max_end_deletions = chrhigh - diagonal;
+    /* diagonal guaranteed to be <= chrhigh, so max_end_deletions >= 0 */
+  }
 
-#ifdef DEBUG4D
-    printf("Found %d donori sites:",donori_nsites);
-    for (i = 0; i < donori_nsites; i++) {
-      printf(" %d",donori_positions[i]);
-      if (donori_knowni[i] >= 0) {
-	printf(" (%d)",donori_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+  debug2e(
+	  if (plusp == true) {
+	    printf("\nsolve_end_indel_high: Getting genome at diagonal %lu - querylength %d + max_end_deletions %d = %lu.\n",
+		   diagonal,querylength,max_end_deletions,left+max_end_deletions);
+	  } else {
+	    printf("\nsolve_end_indel_high: Getting genome at diagonal %lu + 12 - querylength %d = %lu, max_end_deletions = %d.\n",
+		   diagonal,querylength,left,max_end_deletions);
+	  });
 
-    /* Segment m1 */
-    if (novelsplicingp && segmentm_left + splice_pos_start >= ACCEPTOR_MODEL_LEFT_MARGIN) {
-      acceptora_nsites = Genome_acceptor_positions(acceptor1_positions_alloc,acceptor1_knowni_alloc,
-						   segmentm_acceptor_knownpos,segmentm_acceptor_knowni,
-						   segmentm_left,splice_pos_start,splice_pos_end);
-      acceptora_positions = acceptor1_positions_alloc;
-      acceptora_knowni = acceptor1_knowni_alloc;
-    } else {
-      acceptora_nsites = segmentm_acceptor_nknown;
-      acceptora_positions = segmentm_acceptor_knownpos;
-      acceptora_knowni = segmentm_acceptor_knowni;
-    }
+  debug2e(gbuffer = (char *) CALLOC(querylength+max_end_deletions+1,sizeof(char)));
+  debug2e(Genome_fill_buffer_blocks(left,querylength+max_end_deletions,gbuffer));
+  debug2e(printf("q: %s\ng: %s\n",queryptr,gbuffer));
+  debug2e(FREE(gbuffer));
 
-#ifdef DEBUG4D
-    printf("Found %d acceptora sites:",acceptora_nsites);
-    for (i = 0; i < acceptora_nsites; i++) {
-      printf(" %d",acceptora_positions[i]);
-      if (acceptora_knowni[i] >= 0) {
-	printf(" (%d)",acceptora_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+  /* No need to check chromosome bounds */
+  /* Previously checked from 0 to lastbound */
+  nmismatches = Genome_mismatches_left(mismatch_positions,max_mismatches,
+				       query_compress,left,/*pos5*/0,/*pos3*/querylength,
+				       plusp,genestrand,first_read_p);
 
-    /* Segment m2 */
-    if (novelsplicingp && segmentm_left + splice_pos_start >= DONOR_MODEL_LEFT_MARGIN) {
-      donorb_nsites = Genome_donor_positions(donor2_positions_alloc,donor2_knowni_alloc,
-					     segmentm_donor_knownpos,segmentm_donor_knowni,
-					     segmentm_left,splice_pos_start,splice_pos_end);
-      donorb_positions = donor2_positions_alloc;
-      donorb_knowni = donor2_knowni_alloc;
-    } else {
-      donorb_nsites = segmentm_donor_nknown;
-      donorb_positions = segmentm_donor_knownpos;
-      donorb_knowni = segmentm_donor_knowni;
-    }
+  debug2e(
+	  printf("full read: %d (max %d) mismatches from left:",nmismatches,max_mismatches);
+	  for (i = 0; i <= nmismatches; i++) {
+	    printf(" %d",mismatch_positions[i]);
+	  }
+	  printf("\n");
+	  );
 
-#ifdef DEBUG4D
-    printf("Found %d donorb sites:",donorb_nsites);
-    for (i = 0; i < donorb_nsites; i++) {
-      printf(" %d",donorb_positions[i]);
-      if (donorb_knowni[i] >= 0) {
-	printf(" (%d)",donorb_knowni[i]);
-      }
-    }
-    printf("\n");
+  /* Find first mismatch past lastbound */
+  i = 0;
+  while (i <= nmismatches && mismatch_positions[i] < lastbound) {
+    i++;
+  }
+  nmismatches_long = i;
+#if 0
+  /* Previously checked if nmismatches_short <= 0 */
+  nmismatches_short = nmismatches - i;
+#endif
+  
+  /* Should be >= */
+  if (i >= nmismatches) {
+    debug2e(printf("i %d >= nmismatches %d => no indel\n",i,nmismatches));
+  } else {
+#if 0
+    mismatch_positions_short = &(mismatch_positions[i]);
+    debug2e(
+	    printf("nmismatches_long = %d, short = %d\n",nmismatches_long,nmismatches_short);
+	    printf("short end from lastbound %d:",lastbound);
+	    for (i = 0; i <= nmismatches_short; i++) {
+	      printf(" %d",mismatch_positions_short[i]);
+	    }
+	    printf("\n");
+	    );
+    breakpoint = mismatch_positions_short[0] - 1;
+#else
+    breakpoint = mismatch_positions[i] - 1;
 #endif
 
-    /* Segment j */
-    if (novelsplicingp && segmentj_left + splice_pos_start >= ACCEPTOR_MODEL_LEFT_MARGIN) {
-      acceptorj_nsites = Genome_acceptor_positions(acceptor2_positions_alloc,acceptor2_knowni_alloc,
-						   segmentj_acceptor_knownpos,segmentj_acceptor_knowni,
-						   segmentj_left,splice_pos_start,splice_pos_end);
-      acceptorj_positions = acceptor2_positions_alloc;
-      acceptorj_knowni = acceptor2_knowni_alloc;
-    } else {
-      acceptorj_nsites = segmentj_acceptor_nknown;
-      acceptorj_positions = segmentj_acceptor_knownpos;
-      acceptorj_knowni = segmentj_acceptor_knowni;
-    }
+    if ((indel_pos = compute_end_indels_right(&indels,&nmismatches_longcont,&nmismatches_shift,
+					      mismatch_positions,nmismatches,
+					      breakpoint,querylength,left,query_compress,
+					      min_indel_end_matches,max_end_insertions,max_end_deletions,
+					      /*max_mismatches_allowed*/max_mismatches-nmismatches_long+1,
+					      plusp,genestrand,first_read_p)) >= 0) {
+      debug2e(printf("Got indel_pos %d\n",indel_pos));
 
-#ifdef DEBUG4D
-    printf("Found %d acceptorj sites:",acceptorj_nsites);
-    for (i = 0; i < acceptorj_nsites; i++) {
-      printf(" %d",acceptorj_positions[i]);
-      if (acceptorj_knowni[i] >= 0) {
-	printf(" (%d)",acceptorj_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+      /* formulas for query_indel_pos have been checked on examples */
+      if (indels > 0) {
+	if (plusp == true) {
+	  query_indel_pos = indel_pos /* + indels */;
+	  debug2e(printf("case 3: query_indel_pos = %d = %d\n",indel_pos,query_indel_pos));
+	  nmismatches1 = nmismatches_longcont;
+	  nmismatches2 = nmismatches_shift;
+	  /* end1_indel_p = false; */
+	  /* end2_indel_p = true; */
+	} else {
+	  query_indel_pos = querylength - indel_pos - indels;
+	  debug2e(printf("case 4: query_indel_pos = %d - %d - %d = %d\n",querylength,indel_pos,indels,query_indel_pos));
+	  nmismatches1 = nmismatches_shift;
+	  nmismatches2 = nmismatches_longcont;
+	  /* end1_indel_p = true; */
+	  /* end2_indel_p = false; */
+	}
 
-    best_nmismatches = max_mismatches_allowed;
-    best_prob = 0.0;
-    orig_plusp = true;
+	if ((hit = Stage3end_new_insertion(&(*found_score),indels,query_indel_pos,
+					   nmismatches1,nmismatches2,
+					   left,/*genomiclength*/querylength-indels,
+					   query_compress,querylength,plusp,genestrand,first_read_p,
+					   chrnum,chroffset,chrhigh,chrlength,indel_penalty_end,
+					   /*sarrayp*/false)) != NULL) {
+	  ptr->usedp = true;
+	  *nhits += 1;
+	  hits = List_push(hits,(void *) hit);
+	  debug2e(printf("successful end insertion at %d with %d long/cont + %d shift mismatches\n",
+			 indel_pos,nmismatches_longcont,nmismatches_shift));
+	}
 
-    i = a = b = j = 0;
-    while (i < donori_nsites && a < acceptora_nsites) {
-      if ((splice_pos_1 = donori_positions[i]) < acceptora_positions[a]) {
-	i++;
-      } else if (splice_pos_1 > acceptora_positions[a]) {
-	a++;
       } else {
-	while (b < donorb_nsites && donorb_positions[b] <= splice_pos_1) {
-	  b++;
-	}
-	while (j < acceptorj_nsites && acceptorj_positions[j] <= splice_pos_1) {
-	  j++;
+	if (plusp == true) {
+	  query_indel_pos = indel_pos;
+	  nmismatches1 = nmismatches_longcont;
+	  nmismatches2 = nmismatches_shift;
+	  /* end1_indel_p = false; */
+	  /* end2_indel_p = true; */
+	} else {
+	  query_indel_pos = querylength - indel_pos;
+	  nmismatches1 = nmismatches_shift;
+	  nmismatches2 = nmismatches_longcont;
+	  /* end1_indel_p = true; */
+	  /* end2_indel_p = false; */
 	}
-	matchp = false;
-	while (b < donorb_nsites && j < acceptorj_nsites && matchp == false) {
-	  if ((splice_pos_2 = donorb_positions[b]) < acceptorj_positions[j]) {
-	    b++;
-	  } else if (splice_pos_2 > acceptorj_positions[j]) {
-	    j++;
-	  } else {
-	    segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos_1,
-								     plusp,genestrand);
-	    segmentm_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentm_left,/*pos5*/splice_pos_1,/*pos3*/splice_pos_2,
-								     plusp,genestrand);
-	    segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos_2,/*pos3*/querylength,
-								     plusp,genestrand);
-	    if ((nmismatches = segmenti_nmismatches + segmentm_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
-	      if (donori_knowni[i] >= 0) {
-		probi = 1.0;
-	      } else {
-		probi = Maxent_hr_donor_prob(segmenti_left + splice_pos_1,segmenti->chroffset);
-	      }
-
-	      if (acceptora_knowni[a] >= 0) {
-		proba = 1.0;
-	      } else {
-		proba = Maxent_hr_acceptor_prob(segmentm_left + splice_pos_1,segmentm->chroffset);
-	      }
-
-	      if (donorb_knowni[b] >= 0) {
-		probb = 1.0;
-	      } else {
-		probb = Maxent_hr_donor_prob(segmentm_left + splice_pos_2,segmentm->chroffset);
-	      }
-	      
-	      if (acceptorj_knowni[j] >= 0) {
-		probj = 1.0;
-	      } else {
-		probj = Maxent_hr_acceptor_prob(segmentj_left + splice_pos_2,segmentj->chroffset);
-	      }
 
-	      debug4d(
-		      if (plusp == true) {
-			printf("plus sense splice_pos  %d, %d, i.donor %f, m.acceptor %f, m.donor %f, j.acceptor %f\n",
-			       splice_pos_1,splice_pos_2,probi,proba,probb,probj);
-		      } else {
-			printf("minus antisense splice_pos  %d %d, i.donor %f, m.acceptor %f, m.donor %f, j.acceptor %f\n",
-			       splice_pos_1,splice_pos_2,probi,proba,probb,probj);
-		      });
-
-	      if (nmismatches < best_nmismatches ||
-		  (nmismatches == best_nmismatches && probi + proba + probb + probj > best_prob)) {
-		/* Success */
-		best_nmismatches = nmismatches;
-		best_prob = probi + proba + probb + probj;
-
-		best_donor1_knowni = donori_knowni[i];
-		best_acceptor1_knowni = acceptora_knowni[a];
-		best_donor2_knowni = donorb_knowni[b];
-		best_acceptor2_knowni = acceptorj_knowni[j];
-		best_donor1_prob = probi;
-		best_acceptor1_prob = proba;
-		best_donor2_prob = probb;
-		best_acceptor2_prob = probj;
-		best_splice_pos_1 = splice_pos_1;
-		best_splice_pos_2 = splice_pos_2;
-		best_segmenti_nmismatches = segmenti_nmismatches;
-		best_segmentm_nmismatches = segmentm_nmismatches;
-		best_segmentj_nmismatches = segmentj_nmismatches;
-	      }
-	    }
-	    /* b++; j++; Don't advance b or j, so next i/a can match */
-	    matchp = true;
-	  }
+	if ((hit = Stage3end_new_deletion(&(*found_score),-indels,query_indel_pos,
+					  nmismatches1,nmismatches2,
+					  left,/*genomiclength*/querylength-indels,
+					  query_compress,querylength,plusp,genestrand,first_read_p,
+					  chrnum,chroffset,chrhigh,chrlength,indel_penalty_end,
+					  /*sarrayp*/false)) != NULL) {
+	  ptr->usedp = true;
+	  *nhits += 1;
+	  hits = List_push(hits,(void *) hit);
+	  debug2e(printf("successful end deletion at %d with %d long/cont + %d shift mismatches and nindels %d\n",
+			 indel_pos,nmismatches_longcont,nmismatches_shift,-indels));
 	}
-	i++;
-	a++;
       }
     }
+  }
 
+  return hits;
+}
 
-    /* Originally from minus strand.  Complement. */
-    /* Antisense (End 7 to End 8) or Sense (End 3 to End 4) */
-
-    /* Segment i */
-    if (novelsplicingp && segmenti_left + splice_pos_start >= ACCEPTOR_MODEL_RIGHT_MARGIN) {
-      antiacceptori_nsites = Genome_antiacceptor_positions(acceptor1_positions_alloc,acceptor1_knowni_alloc,
-							   segmenti_antiacceptor_knownpos,segmenti_antiacceptor_knowni,
-							   segmenti_left,splice_pos_start,splice_pos_end);
-      antiacceptori_positions = acceptor1_positions_alloc;
-      antiacceptori_knowni = acceptor1_knowni_alloc;
-    } else {
-      antiacceptori_nsites = segmenti_antiacceptor_nknown;
-      antiacceptori_positions = segmenti_antiacceptor_knownpos;
-      antiacceptori_knowni = segmenti_antiacceptor_knowni;
-    }
 
-#ifdef DEBUG4D
-    printf("Found %d antiacceptori sites:",antiacceptori_nsites);
-    for (i = 0; i < antiacceptori_nsites; i++) {
-      printf(" %d",antiacceptori_positions[i]);
-      if (antiacceptori_knowni[i] >= 0) {
-	printf(" (%d)",antiacceptori_knowni[i]);
-      }
-    }
-    printf("\n");
+static List_T
+find_end_indels (int *found_score, int *nhits, List_T hits,
+		 struct Segment_T *plus_segments, struct Segment_T *minus_segments,
+		 int plus_nsegments, int minus_nsegments,
+#ifdef DEBUG2E
+		 char *queryuc_ptr, char *queryrc,
 #endif
+		 int querylength, int firstbound, int lastbound,
+		 Compress_T query_compress_fwd, Compress_T query_compress_rev,
+		 int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
+		 int indel_penalty_end, int max_mismatches_allowed, int genestrand, bool first_read_p) {
+  Segment_T ptr;
 
-    /* Segment m1 */
-    if (novelsplicingp && segmentm_left + splice_pos_start >= DONOR_MODEL_RIGHT_MARGIN) {
-      antidonora_nsites = Genome_antidonor_positions(donor1_positions_alloc,donor1_knowni_alloc,
-						     segmentm_antidonor_knownpos,segmentm_antidonor_knowni,
-						     segmentm_left,splice_pos_start,splice_pos_end);
-      antidonora_positions = donor1_positions_alloc;
-      antidonora_knowni = donor1_knowni_alloc;
-    } else {
-      antidonora_nsites = segmentm_antidonor_nknown;
-      antidonora_positions = segmentm_antidonor_knownpos;
-      antidonora_knowni = segmentm_antidonor_knowni;
-    }
+  debug(printf("*** find_end_indels with max_mismatches_allowed %d ***\n",
+	       max_mismatches_allowed));
 
-#ifdef DEBUG4D
-    printf("Found %d antidonora sites:",antidonora_nsites);
-    for (i = 0; i < antidonora_nsites; i++) {
-      printf(" %d",antidonora_positions[i]);
-      if (antidonora_knowni[i] >= 0) {
-	printf(" (%d)",antidonora_knowni[i]);
-      }
-    }
-    printf("\n");
-#endif
+  for (ptr = plus_segments; ptr < &(plus_segments[plus_nsegments]); ptr++) {
+    if (ptr->diagonal < (Univcoord_T) -1) {
 
-    /* Segment m2 */
-    if (novelsplicingp && segmentm_left + splice_pos_start >= ACCEPTOR_MODEL_RIGHT_MARGIN) {
-      antiacceptorb_nsites = Genome_antiacceptor_positions(acceptor2_positions_alloc,acceptor2_knowni_alloc,
-							   segmentm_antiacceptor_knownpos,segmentm_antiacceptor_knowni,
-							   segmentm_left,splice_pos_start,splice_pos_end);
-      antiacceptorb_positions = acceptor2_positions_alloc;
-      antiacceptorb_knowni = acceptor2_knowni_alloc;
-    } else {
-      antiacceptorb_nsites = segmentm_antiacceptor_nknown;
-      antiacceptorb_positions = segmentm_antiacceptor_knownpos;
-      antiacceptorb_knowni = segmentm_antiacceptor_knowni;
-    }
+      if (ptr->floor_xfirst <= max_mismatches_allowed) {
+	/* First indel, plus */
+	debug2e(printf("floor_xfirst %d <= mismatches allowed %d\n",ptr->floor_xfirst,max_mismatches_allowed));
+	hits = solve_end_indel_low(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,firstbound,
+				   ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
+#ifdef DEBUG2E
+				   /*queryptr*/queryuc_ptr,
+#endif
+				   querylength,/*query_compress*/query_compress_fwd,
+				   max_end_insertions,max_end_deletions,min_indel_end_matches,
+				   indel_penalty_end,max_mismatches_allowed,/*plusp*/true,genestrand,first_read_p);
+      }
 
-#ifdef DEBUG4D
-    printf("Found %d antiacceptorb sites:",antiacceptorb_nsites);
-    for (i = 0; i < antiacceptorb_nsites; i++) {
-      printf(" %d",antiacceptorb_positions[i]);
-      if (antiacceptorb_knowni[i] >= 0) {
-	printf(" (%d)",antiacceptorb_knowni[i]);
+      if (ptr->floor_xlast <= max_mismatches_allowed) {
+	/* Last indel, plus */
+	debug2e(printf("floor_xlast %d <= mismatches allowed %d\n",ptr->floor_xlast,max_mismatches_allowed));
+	hits = solve_end_indel_high(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,lastbound,
+				    ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
+#ifdef DEBUG2E
+				    /*queryptr*/queryuc_ptr,
+#endif
+				    querylength,/*query_compress*/query_compress_fwd,
+				    max_end_insertions,max_end_deletions,min_indel_end_matches,
+				    indel_penalty_end,max_mismatches_allowed,/*plusp*/true,genestrand,first_read_p);
       }
     }
-    printf("\n");
-#endif
+  }
 
-    /* Segment j */
-    if (novelsplicingp && segmentj_left + splice_pos_start >= DONOR_MODEL_RIGHT_MARGIN) {
-      antidonorj_nsites = Genome_antidonor_positions(donor2_positions_alloc,donor2_knowni_alloc,
-						     segmentj_antidonor_knownpos,segmentj_antidonor_knowni,
-						     segmentj_left,splice_pos_start,splice_pos_end);
-      antidonorj_positions = donor2_positions_alloc;
-      antidonorj_knowni = donor2_knowni_alloc;
-    } else {
-      antidonorj_nsites = segmentj_antidonor_nknown;
-      antidonorj_positions = segmentj_antidonor_knownpos;
-      antidonorj_knowni = segmentj_antidonor_knowni;
-    }
+  for (ptr = minus_segments; ptr < &(minus_segments[minus_nsegments]); ptr++) {
+    if (ptr->diagonal < (Univcoord_T) -1) {
 
-#ifdef DEBUG4D
-    printf("Found %d antidonorj sites:",antidonorj_nsites);
-    for (i = 0; i < antidonorj_nsites; i++) {
-      printf(" %d",antidonorj_positions[i]);
-      if (antidonorj_knowni[i] >= 0) {
-	printf(" (%d)",antidonorj_knowni[i]);
+      if (ptr->floor_xfirst <= max_mismatches_allowed) {
+	/* First indel, minus */
+	debug2e(printf("floor_xfirst %d <= mismatches allowed %d\n",ptr->floor_xfirst,max_mismatches_allowed));
+	hits = solve_end_indel_high(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,lastbound,
+				    ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
+#ifdef DEBUG2E
+				    /*queryptr*/queryrc,
+#endif
+				    querylength,/*query_compress*/query_compress_rev,
+				    max_end_insertions,max_end_deletions,min_indel_end_matches,
+				    indel_penalty_end,max_mismatches_allowed,/*plusp*/false,genestrand,first_read_p);
       }
-    }
-    printf("\n");
+
+      if (ptr->floor_xlast <= max_mismatches_allowed) {
+	/* Last indel, minus */
+	debug2e(printf("floor_xlast %d <= mismatches allowed %d\n",ptr->floor_xlast,max_mismatches_allowed));
+	hits = solve_end_indel_low(&(*found_score),&(*nhits),hits,ptr,ptr->diagonal,firstbound,
+				   ptr->chrnum,ptr->chroffset,ptr->chrhigh,ptr->chrlength,
+#ifdef DEBUG2E
+				   /*queryptr*/queryrc,
 #endif
+				   querylength,/*query_compress*/query_compress_rev,
+				   max_end_insertions,max_end_deletions,min_indel_end_matches,
+				   indel_penalty_end,max_mismatches_allowed,/*plusp*/false,genestrand,first_read_p);
+      }
+    }
+  }
+
+  return hits;
+}
 
 
-    i = a = b = j = 0;
-    while (i < antiacceptori_nsites && a < antidonora_nsites) {
-      if ((splice_pos_1 = antiacceptori_positions[i]) < antidonora_positions[a]) {
-	i++;
-      } else if (splice_pos_1 > antidonora_positions[a]) {
-	a++;
-      } else {
-	while (b < antiacceptorb_nsites && antiacceptorb_positions[b] <= splice_pos_1) {
-	  b++;
-	}
-	while (j < antidonorj_nsites && antidonorj_positions[j] <= splice_pos_1) {
-	  j++;
-	}
-	matchp = false;
-	while (b < antiacceptorb_nsites && j < antidonorj_nsites && matchp == false) {
-	  if ((splice_pos_2 = antiacceptorb_positions[b]) < antidonorj_positions[j]) {
-	    b++;
-	  } else if (splice_pos_2 > antidonorj_positions[j]) {
-	    j++;
-	  } else {
-	    segmenti_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/splice_pos_1,
-								     plusp,genestrand);
-	    segmentm_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentm_left,/*pos5*/splice_pos_1,/*pos3*/splice_pos_2,
-								     plusp,genestrand);
-	    segmentj_nmismatches = Genome_count_mismatches_substring(query_compress,/*left*/segmentj_left,/*pos5*/splice_pos_2,/*pos3*/querylength,
-								     plusp,genestrand);
-	    
-	    if ((nmismatches = segmenti_nmismatches + segmentm_nmismatches + segmentj_nmismatches) <= best_nmismatches) {
-	      if (antiacceptori_knowni[i] >= 0) {
-		probi = 1.0;
-	      } else {
-		probi = Maxent_hr_antiacceptor_prob(segmenti_left + splice_pos_1,segmenti->chroffset);
-	      }
-	    
-	      if (antidonora_knowni[a] >= 0) {
-		proba = 1.0;
-	      } else {
-		proba = Maxent_hr_antidonor_prob(segmentm_left + splice_pos_1,segmentm->chroffset);
-	      }
 
-	      if (antiacceptorb_knowni[b] >= 0) {
-		probb = 1.0;
-	      } else {
-		probb = Maxent_hr_antiacceptor_prob(segmentm_left + splice_pos_2,segmentm->chroffset);
-	      }
+/************************************************************************
+ *   Splicing
+ ************************************************************************/
 
-	      if (antidonorj_knowni[j] >= 0) {
-		probj = 1.0;
-	      } else {
-		probj = Maxent_hr_antidonor_prob(segmentj_left + splice_pos_2,segmentj->chroffset);
-	      }
 
-	      debug4d(
-		      if (plusp == true) {
-			printf("plus antisense splice_pos  %d, %d, i.antiacceptor %f, m.antidonor %f, m.antiacceptor %f, j.antidonor %f\n",
-			       splice_pos_1,splice_pos_2,probi,proba,probb,probj);
-		      } else {
-			printf("minus sense splice_pos  %d, %d, i.antiacceptor %f, m.antidonor %f, m.antiacceptor %f, j.antidonor %f\n",
-			       splice_pos_1,splice_pos_2,probi,proba,probb,probj);
-		      });
-
-	      if (nmismatches < best_nmismatches ||
-		  (nmismatches == best_nmismatches && probi + proba + probb + probj > best_prob)) {
-		/* Success */
-		best_nmismatches = nmismatches;
-		best_prob = probi + proba + probb + probj;
-
-		best_acceptor1_knowni = antiacceptori_knowni[i];
-		best_donor1_knowni = antidonora_knowni[a];
-		best_acceptor2_knowni = antiacceptorb_knowni[b];
-		best_donor2_knowni = antidonorj_knowni[j];
-		best_acceptor1_prob = probi;
-		best_donor1_prob = proba;
-		best_acceptor2_prob = probb;
-		best_donor2_prob = probj;
-		best_splice_pos_1 = splice_pos_1;
-		best_splice_pos_2 = splice_pos_2;
-		best_segmenti_nmismatches = segmenti_nmismatches;
-		best_segmentm_nmismatches = segmentm_nmismatches;
-		best_segmentj_nmismatches = segmentj_nmismatches;
-		orig_plusp = false;
-	      }
-	    }
-	    /* b++; j++; Don't advance b or j, so next i/a can match */
-	    matchp = true;
-	  }
-	}
-	i++;
-	a++;
-      }
-    }
+/* Do not compare against true or false */
+/* Moderate criterion */
+static int
+sufficient_splice_prob_distant (int support, int nmismatches, double spliceprob) {
+  support -= 3*nmismatches;
+  if (support < min_distantsplicing_end_matches) {
+    return 0;
+  } else if (support < 30) {
+    return (spliceprob > 0.95);
+  } else if (support < 35) {
+    return (spliceprob > 0.90);
+  } else if (support < 40) {
+    return (spliceprob > 0.85);
+  } else {
+    return (spliceprob > 0.70);
+  }
+}
 
+/* Do not compare against true or false */
 
-    if (best_prob > 0.0) {
-      debug4d(printf("best_prob = %f at splice_pos %d and %d\n",best_prob,best_splice_pos_1,best_splice_pos_2));
-      if (orig_plusp == true) {
-	/* Originally from plus strand.  No complement. */
-	sensep = (plusp == true) ? true : false;
-	sensedir = (plusp == true) ? SENSE_FORWARD : SENSE_ANTI;
+#ifdef HALFINTRON
+/* Strictest criterion */
+static int
+sufficient_splice_prob_halfintron (int support, int nmismatches, double spliceprob) {
+  support -= 3*nmismatches;
+  if (support < 20) {
+    return 0;
+  } else if (support < 26) {
+    return (spliceprob > 0.95);
+  } else if (support < 32) {
+    return (spliceprob > 0.90);
+  } else if (support < 38) {
+    return (spliceprob > 0.85);
+  } else if (support < 44) {
+    return (spliceprob > 0.80);
+  } else if (support < 50) {
+    return (spliceprob > 0.50);
+  } else {
+    return 1;
+  }
+}
+#endif
 
-	donor = Substring_new_donor(best_donor1_knowni,/*joffset*/0,best_splice_pos_1,best_segmenti_nmismatches,
-				    best_donor1_prob,/*left*/segmenti_left,query_compress,
-				    querylength,plusp,genestrand,sensep,
-				    segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength);
-
-	shortexon = Substring_new_shortexon(best_acceptor1_knowni,best_donor2_knowni,/*joffset*/0,
-					    /*acceptor_pos*/best_splice_pos_1,/*donor_pos*/best_splice_pos_2,best_segmentm_nmismatches,
-					    /*acceptor_prob*/best_acceptor1_prob,/*donor_prob*/best_donor2_prob,
-					    /*left*/segmentm_left,query_compress,
-					    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
-					    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-	acceptor = Substring_new_acceptor(best_acceptor2_knowni,/*joffset*/0,best_splice_pos_2,best_segmentj_nmismatches,
-					  best_acceptor2_prob,/*left*/segmentj_left,query_compress,
-					  querylength,plusp,genestrand,sensep,
-					  segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength);
-
-	if (donor == NULL || shortexon == NULL || acceptor == NULL) {
-	  if (donor != NULL) Substring_free(&donor);
-	  if (shortexon != NULL) Substring_free(&shortexon);
-	  if (acceptor != NULL) Substring_free(&acceptor);
-	} else {
-	  segmenti->usedp = segmentm->usedp = segmentj->usedp = true;
-
-	  donor_support = best_splice_pos_1;
-	  middle_support = best_splice_pos_2 - best_splice_pos_1;
-	  acceptor_support = querylength - best_splice_pos_2;
-	  sufficient1p = sufficient_splice_prob_local(donor_support,best_segmenti_nmismatches,best_donor1_prob);
-	  sufficient2p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_acceptor1_prob);
-	  sufficient3p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_donor2_prob);
-	  sufficient4p = sufficient_splice_prob_local(acceptor_support,best_segmentj_nmismatches,best_acceptor2_prob);
-	  if (sufficient1p && sufficient2p && sufficient3p && sufficient4p) {
-	    hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
-								   /*acceptor_distance*/segmentm_left - segmenti_left,
-								   /*donor_distance*/segmentj_left - segmentm_left,
-								   /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
-								   /*ambi_left*/NULL,/*ambi_right*/NULL,
-								   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-								   /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-								   splicing_penalty,querylength,sensedir));
-	  } else if (subs_or_indels_p == true) {
-	    /* Don't alter hits */
-	    if (donor != NULL) Substring_free(&donor);
-	    if (shortexon != NULL) Substring_free(&shortexon);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (shortexon != NULL) Substring_free(&shortexon);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  } else if ((sufficient1p || sufficient2p) && (sufficient3p || sufficient4p)) {
-	    *lowprob = List_push(*lowprob,
-				 (void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
-								  /*acceptor_distance*/segmentm_left - segmenti_left,
-								  /*donor_distance*/segmentj_left - segmentm_left,
-								  /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
-								  /*ambi_left*/NULL,/*ambi_right*/NULL,
-								  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-								  /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-								  splicing_penalty,querylength,sensedir));
-	  } else {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (shortexon != NULL) Substring_free(&shortexon);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  }
-	}
 
-      } else {
-	/* Originally from minus strand.  Complement. */
-	sensep = (plusp == true) ? false : true;
-	sensedir = (plusp == true) ? SENSE_ANTI : SENSE_FORWARD;
 
-	donor = Substring_new_donor(best_donor2_knowni,/*joffset*/0,best_splice_pos_2,best_segmentj_nmismatches,
-				    best_donor2_prob,/*left*/segmentj_left,query_compress,
-				    querylength,plusp,genestrand,sensep,
-				    segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength);
-
-	shortexon = Substring_new_shortexon(best_acceptor2_knowni,best_donor1_knowni,/*joffset*/0,
-					    /*acceptor_pos*/best_splice_pos_2,/*donor_pos*/best_splice_pos_1,best_segmentm_nmismatches,
-					    /*acceptor_prob*/best_acceptor2_prob,/*donor_prob*/best_donor1_prob,
-					    /*left*/segmentm_left,query_compress,querylength,
-					    plusp,genestrand,sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
-					    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-	acceptor = Substring_new_acceptor(best_acceptor1_knowni,/*joffset*/0,best_splice_pos_1,best_segmenti_nmismatches,
-					  best_acceptor1_prob,/*left*/segmenti_left,query_compress,
-					  querylength,plusp,genestrand,sensep,
-					  segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength);
-
-	if (donor == NULL || shortexon == NULL || acceptor == NULL) {
-	  if (donor != NULL) Substring_free(&donor);
-	  if (shortexon != NULL) Substring_free(&shortexon);
-	  if (acceptor != NULL) Substring_free(&acceptor);
-	} else {
-	  segmenti->usedp = segmentm->usedp = segmentj->usedp = true;
-
-	  acceptor_support = best_splice_pos_1;
-	  middle_support = best_splice_pos_2 - best_splice_pos_1;
-	  donor_support = querylength - best_splice_pos_2;
-	  sufficient1p = sufficient_splice_prob_local(acceptor_support,best_segmenti_nmismatches,best_acceptor1_prob);
-	  sufficient2p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_donor1_prob);
-	  sufficient3p = sufficient_splice_prob_local(middle_support,best_segmentm_nmismatches,best_acceptor2_prob);
-	  sufficient4p = sufficient_splice_prob_local(donor_support,best_segmentj_nmismatches,best_donor2_prob);
-	  if (sufficient1p && sufficient2p && sufficient3p && sufficient4p) {
-	    hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
-								   /*acceptor_distance*/segmentj_left - segmentm_left,
-								   /*donor_distance*/segmentm_left - segmenti_left,
-								   /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
-								   /*ambi_left*/NULL,/*ambi_right*/NULL,
-								   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-								   /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-								   splicing_penalty,querylength,sensedir));
-	  } else if (subs_or_indels_p == true) {
-	    /* Don't alter hits */
-	    if (donor != NULL) Substring_free(&donor);
-	    if (shortexon != NULL) Substring_free(&shortexon);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  } else if (donor_support < LOWPROB_SUPPORT || acceptor_support < LOWPROB_SUPPORT) {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (shortexon != NULL) Substring_free(&shortexon);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  } else if ((sufficient1p || sufficient2p) && (sufficient3p || sufficient4p)) {
-	    *lowprob = List_push(*lowprob,
-				 (void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
-								  /*acceptor_distance*/segmentj_left - segmentm_left,
-								  /*donor_distance*/segmentm_left - segmenti_left,
-								  /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
-								  /*ambi_left*/NULL,/*ambi_right*/NULL,
-								  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-								  /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-								  splicing_penalty,querylength,sensedir));
-	  } else {
-	    if (donor != NULL) Substring_free(&donor);
-	    if (shortexon != NULL) Substring_free(&shortexon);
-	    if (acceptor != NULL) Substring_free(&acceptor);
-	  }
-	}
+#if 0
+static void
+find_segmentm_span (Segment_T segmentm, int max_mismatches_allowed,
+		    int querylength, Compress_T query_compress,
+		    Univcoord_T left, bool plusp, int genestrand, bool first_read_p) {
+  int mismatch_positions[MAX_READLENGTH];
+  int nmismatches, i;
+  int leftspan, rightspan, bestspan;
+
+  /* Find all mismatches */
+  nmismatches = Genome_mismatches_left(mismatch_positions,/*max_mismatches*/querylength,
+				       query_compress,left,/*pos5*/0,/*pos3*/querylength,
+				       plusp,genestrand,first_read_p);
+
+  if (nmismatches < max_mismatches_allowed) {
+    segmentm->leftspan = 0;
+    segmentm->rightspan = querylength;
+  } else {
+    segmentm->leftspan = 0;
+    bestspan = segmentm->rightspan = mismatch_positions[max_mismatches_allowed] + /*slop*/ 1;
+    for (i = 0; i < nmismatches - max_mismatches_allowed; i++) {
+      leftspan = mismatch_positions[i];
+      rightspan = mismatch_positions[i + max_mismatches_allowed + 1] + /*slop*/ 1;
+      if (rightspan - leftspan > bestspan) {
+	segmentm->leftspan = leftspan;
+	segmentm->rightspan = rightspan;
+	bestspan = rightspan - leftspan;
+      } else if (rightspan - leftspan == bestspan) {
+	segmentm->rightspan = rightspan;
       }
     }
   }
-
-  return hits;
+  return;
 }
-
+#endif
 
 
 static List_T
-find_singlesplices_plus (int *found_score, List_T hits, List_T *lowprob,
-			 struct Segment_T *plus_segments, int plus_nsegments,
+find_singlesplices_plus (int *found_score, List_T hits, List_T *ambiguous, List_T *lowprob,
+			 Segment_T *plus_spliceable, int plus_nspliceable,
 			 Floors_T floors, int querylength, int query_lastpos,
-			 Compress_T query_compress /* expecting fwd */, Chrpos_T overall_max_distance,
+			 Compress_T query_compress /* expecting fwd */,
 			 int splicing_penalty, int max_mismatches_allowed, bool first_read_p, int genestrand,
 			 bool subs_or_indels_p) {
 #ifdef DEBUG4S
   int i;
 #endif
   int j;
-  Segment_T segmenti, segmentj;
+  Segment_T segmenti, segmentj, segmentj_end, *ptr;
   Univcoord_T segmenti_left, segmentj_left;
   int mismatch_positions_left[MAX_READLENGTH], mismatch_positions_right[MAX_READLENGTH];
   int nmismatches_left, nmismatches_right;
@@ -8550,155 +6619,352 @@ find_singlesplices_plus (int *found_score, List_T hits, List_T *lowprob,
 
   int floor_outer_i;
   int *floors_from_neg3, *floors_to_pos3;
-  int nhits_local = 0, npotential;
+  int nhits_local /*= 0*/;
 
+  List_T spliceends, p;
+  Stage3end_T hit;
+  int nspliceends, n_good_spliceends;
+  int best_nmismatches, nmismatches, nmismatches_donor, nmismatches_acceptor;
+  double best_prob, prob;
+  Substring_T donor, acceptor;
 
-  debug(printf("*** Starting find_singlesplices_plus on %d segments with overall_max_distance %u ***\n",
-	       plus_nsegments,overall_max_distance));
-  debug(printf("Initially have %d hits\n",List_length(hits)));
-
-  if (plus_nsegments > 1) {
-    floors_from_neg3 = floors->scorefrom[-index1interval];
-    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
+  int sensedir;
+#ifdef LARGE_GENOMES
+  Uint8list_T ambcoords, ambcoords_left, ambcoords_right;
+#else
+  Uintlist_T ambcoords, ambcoords_left, ambcoords_right;
+#endif
+  Intlist_T amb_knowni, amb_nmismatches, amb_knowni_left, amb_knowni_right, amb_nmismatches_left, amb_nmismatches_right;
 
-    for (segmenti = plus_segments; segmenti < &(plus_segments[plus_nsegments]) && nhits_local < MAX_LOCALSPLICING_HITS; segmenti++) {
-      if (segmenti->diagonal < (Univcoord_T) -1) {
-	segmenti_left = segmenti->diagonal - querylength;
-	floor_outer_i = floors_from_neg3[segmenti->querypos5];
 
-	segmenti_donor_nknown = 0;
-	segmenti_antiacceptor_nknown = 0;
-	max_distance = overall_max_distance;
+  debug4s(printf("*** Starting find_singlesplices_plus on %d spliceable segments ***\n",plus_nspliceable));
+  /* debug(printf("Initially have %d hits\n",List_length(hits))); */
 
-	if ((j = segmenti->splicesites_i) >= 0) {
-	  /* Ends 1 (donor, plus) and 8 (antiacceptor, plus): mark known splice sites in segmenti */
-	  while (j < nsplicesites && splicesites[j] < segmenti->diagonal) {
-	    if (splicetypes[j] == DONOR) {
-	      debug4s(printf("Setting known donor %d for segmenti at %lu\n",j,splicesites[j]));
-	      segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[j] - segmenti_left;
-	      segmenti_donor_knowni[segmenti_donor_nknown++] = j;
-	    } else if (splicetypes[j] == ANTIACCEPTOR) {
-	      debug4s(printf("Setting known antiacceptor %d for segmenti at %lu\n",j,splicesites[j]));
-	      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[j] - segmenti_left;
-	      segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = j;
-	    }
+  floors_from_neg3 = floors->scorefrom[-index1interval];
+  floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
 
-	    if (splicedists[j] > max_distance) {
-	      debug4s(printf("Setting max_distance for known i %d to be %u\n",j,splicedists[j]));
-	      max_distance = splicedists[j];
-	    }
+  for (ptr = plus_spliceable; ptr < &(plus_spliceable[plus_nspliceable]); ptr++) {
+    segmenti = *ptr;
+    debug4s(printf("plus_spliceable segmenti at diagonal %u\n",segmenti->diagonal));
+    if (1 || segmenti->diagonal < (Univcoord_T) -1) { /* No markers were stored in spliceable */
+      segmenti_left = segmenti->diagonal - querylength;
+      floor_outer_i = floors_from_neg3[segmenti->querypos5];
+
+      segmenti_donor_nknown = 0;
+      segmenti_antiacceptor_nknown = 0;
+      max_distance = shortsplicedist;
+
+      if ((j = segmenti->splicesites_i) >= 0) {
+	/* Ends 1 (donor, plus) and 8 (antiacceptor, plus): mark known splice sites in segmenti */
+	while (j < nsplicesites && splicesites[j] < segmenti->diagonal) {
+	  if (splicetypes[j] == DONOR) {
+	    debug4s(printf("Setting known donor %d for segmenti at %lu\n",j,splicesites[j]));
+	    segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[j] - segmenti_left;
+	    segmenti_donor_knowni[segmenti_donor_nknown++] = j;
+	  } else if (splicetypes[j] == ANTIACCEPTOR) {
+	    debug4s(printf("Setting known antiacceptor %d for segmenti at %lu\n",j,splicesites[j]));
+	    segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[j] - segmenti_left;
+	    segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = j;
+	  }
 
-	    j++;
+	  /* This computation was already made in identify_all_segments */
+	  if (splicedists[j] > max_distance) {
+	    debug4s(printf("Setting max_distance for known i %d to be %u\n",j,splicedists[j]));
+	    max_distance = splicedists[j];
 	  }
+
+	  j++;
 	}
-	segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
-	segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
+      }
+      segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
+      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
 
 
-	/* Identify potential segmentj for segmenti */
-	npotential = 0;		/* Number of potential segmentj */
-	for (segmentj = segmenti+1;
+      /* Identify potential segmentj for segmenti */
+      segmentj_end = segmenti+1;
+      while (
 #ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(plus_segments[plus_nsegments]) && segmentj->chrnum == segmenti->chrnum &&
+	     segmentj_end < &(plus_segments[plus_nsegments]) && segmentj_end->chrnum == segmenti->chrnum &&
 #endif
-	       segmentj->diagonal <= segmenti->diagonal + max_distance &&
-	       npotential++ < MAX_LOCALSPLICING_POTENTIAL; segmentj++) {
-	  debug4s(printf("plus local?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
-			 segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			 segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	  /* i5 i3 j5 j3 */
-	  assert(segmenti->diagonal < segmentj->diagonal);
-	  if (segmenti->querypos3 >= segmentj->querypos5) {
-	    /* Fail querypos test */
-	    debug4s(printf("Bad querypos\n"));
+	     segmentj_end->diagonal <= segmenti->diagonal + max_distance) {
+	segmentj_end++;
+      }
 
-	  } else if (segmenti->diagonal + min_intronlength > segmentj->diagonal) {
-	    /* Too short to be an intron */
-	    debug4s(printf("Too short\n"));
+      spliceends = (List_T) NULL;
 
-	  } else {
-	    segmenti->right_splice_p = true;
-	    segmentj->left_splice_p = true;
-	    if (floor_outer_i + floors_to_pos3[segmentj->querypos3] > max_mismatches_allowed) {
-	      /* Fail outer floor test */
-	      /* floors->score[-index1interval][segmenti->querypos5] +floors->score[segmentj->querypos3][query_lastpos+index1interval] */
-
-	      debug4s(printf("too many mismatches, outer floor = %d+%d=%d > %d\n",
-			     floors->scorefrom[-index1interval][segmenti->querypos5],
-			     floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
-			     floors->scorefrom[-index1interval][segmenti->querypos5] +
-			     floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
-			     max_mismatches_allowed));
+      if (segmentj_end - segmenti >= MAX_LOCALSPLICING_POTENTIAL) {
+	/* Too many to check */
+	/* segmentj_end = segmenti+1 + MAX_LOCALSPLICING_POTENTIAL; */
+	segmentj = segmentj_end; /* Don't process any */
+      } else {
+	segmentj = segmenti+1;
+      }
+      for ( ; segmentj < segmentj_end; segmentj++) {
+	debug4s(printf("plus local?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
+		       segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
+		       segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
+	/* i5 i3 j5 j3 */
+	assert(segmenti->diagonal < segmentj->diagonal);
+	if (segmenti->querypos3 >= segmentj->querypos5) {
+	  /* Fail querypos test */
+	  debug4s(printf("Bad querypos\n"));
+
+	} else if (segmenti->diagonal + min_intronlength > segmentj->diagonal) {
+	  /* Too short to be an intron */
+	  debug4s(printf("Too short\n"));
 
-	    } else {
-	      /* Apply leftmost/rightmost test */
-	      if (segmenti->leftmost < 0) {
-		nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
-							  query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/querylength,
-							  /*plusp*/true,genestrand);
-		segmenti->leftmost = (nmismatches_left == 0) ? 0 : mismatch_positions_left[nmismatches_left-1];
-		debug4s(printf("%d mismatches on left at:",nmismatches_left);
-			for (i = 0; i <= nmismatches_left; i++) {
-			  printf(" %d",mismatch_positions_left[i]);
-			}
-			printf("\n"));
-	      }
+	} else {
+	  segmenti->right_splice_p = true;
+	  segmentj->left_splice_p = true;
+	  if (floor_outer_i + floors_to_pos3[segmentj->querypos3] > max_mismatches_allowed) {
+	    /* Fail outer floor test */
+	    /* floors->score[-index1interval][segmenti->querypos5] +floors->score[segmentj->querypos3][query_lastpos+index1interval] */
+
+	    debug4s(printf("too many mismatches, outer floor = %d+%d=%d > %d\n",
+			   floors->scorefrom[-index1interval][segmenti->querypos5],
+			   floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
+			   floors->scorefrom[-index1interval][segmenti->querypos5] +
+			   floors->scorefrom[segmentj->querypos3][query_lastpos+index1interval],
+			   max_mismatches_allowed));
+
+	  } else {
+	    /* Apply leftmost/rightmost test */
+	    if (segmenti->leftmost < 0) {
+	      nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
+							query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/querylength,
+							/*plusp*/true,genestrand,first_read_p);
+	      segmenti->leftmost = (nmismatches_left == 0) ? 0 : mismatch_positions_left[nmismatches_left-1];
+	      debug4s(printf("%d mismatches on left at:",nmismatches_left);
+		      for (i = 0; i <= nmismatches_left; i++) {
+			printf(" %d",mismatch_positions_left[i]);
+		      }
+		      printf("\n"));
+	    }
 	  
-	      segmentj_left = segmentj->diagonal - querylength;
-	      if (segmentj->rightmost < 0) {
-		nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
-							    query_compress,/*left*/segmentj_left,/*pos5*/0,/*pos3*/querylength,
-							    /*plusp*/true,genestrand);
-		segmentj->rightmost = (nmismatches_right == 0) ? 0 : mismatch_positions_right[nmismatches_right-1];
-		debug4s(printf("%d mismatches on right at:",nmismatches_right);
-			for (i = 0; i <= nmismatches_right; i++) {
-			  printf(" %d",mismatch_positions_right[i]);
-			}
-			printf("\n"));
-	      }
+	    segmentj_left = segmentj->diagonal - querylength;
+	    if (segmentj->rightmost < 0) {
+	      nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
+							  query_compress,/*left*/segmentj_left,/*pos5*/0,/*pos3*/querylength,
+							  /*plusp*/true,genestrand,first_read_p);
+	      segmentj->rightmost = (nmismatches_right == 0) ? 0 : mismatch_positions_right[nmismatches_right-1];
+	      debug4s(printf("%d mismatches on right at:",nmismatches_right);
+		      for (i = 0; i <= nmismatches_right; i++) {
+			printf(" %d",mismatch_positions_right[i]);
+		      }
+		      printf("\n"));
+	    }
 	  
-	      debug4s(printf("For a single splice, want leftmost %d > rightmost %d\n",segmenti->leftmost,segmentj->rightmost));
+	    debug4s(printf("For a single splice, want leftmost %d > rightmost %d\n",segmenti->leftmost,segmentj->rightmost));
 	    
-	      if (segmenti->leftmost > segmentj->rightmost) {
-		/* Single splice is possible */
-
-		segmentj_acceptor_nknown = 0;
-		segmentj_antidonor_nknown = 0;
-		if ((j = segmentj->splicesites_i) >= 0) {
-		  /* Ends 2 (acceptor, plus) and 7 (antidonor, plus): mark known splice sites in segmentj */
-		  while (j < nsplicesites && splicesites[j] < segmentj->diagonal) {
-		    if (splicetypes[j] == ACCEPTOR) {
-		      debug4s(printf("Setting known acceptor %d for segmentj at %lu\n",j,splicesites[j]));
-		      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[j] - segmentj_left;
-		      segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = j;
-		    } else if (splicetypes[j] == ANTIDONOR) {
-		      debug4s(printf("Setting known antidonor %d for segmentj at %lu\n",j,splicesites[j]));
-		      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[j] - segmentj_left;
-		      segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = j;
-		    }
-		    j++;
+	    if (segmenti->leftmost > segmentj->rightmost) {
+	      /* Single splice is possible */
+
+	      segmentj_acceptor_nknown = 0;
+	      segmentj_antidonor_nknown = 0;
+	      if ((j = segmentj->splicesites_i) >= 0) {
+		/* Ends 2 (acceptor, plus) and 7 (antidonor, plus): mark known splice sites in segmentj */
+		while (j < nsplicesites && splicesites[j] < segmentj->diagonal) {
+		  if (splicetypes[j] == ACCEPTOR) {
+		    debug4s(printf("Setting known acceptor %d for segmentj at %lu\n",j,splicesites[j]));
+		    segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[j] - segmentj_left;
+		    segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = j;
+		  } else if (splicetypes[j] == ANTIDONOR) {
+		    debug4s(printf("Setting known antidonor %d for segmentj at %lu\n",j,splicesites[j]));
+		    segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[j] - segmentj_left;
+		    segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = j;
 		  }
+		  j++;
 		}
-		segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
-		segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
+	      }
+	      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
+	      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
+
+
+	      debug4s(printf("  => checking for single splice: Splice_solve_single_plus\n"));
+	      spliceends = Splice_solve_single(&(*found_score),&nhits_local,spliceends,&(*lowprob),
+					       &segmenti->usedp,&segmentj->usedp,
+					       /*segmenti_left*/segmenti->diagonal - querylength,
+					       /*segmentj_left*/segmentj->diagonal - querylength,
+					       segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+					       segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength,
+					       querylength,query_compress,
+					       segmenti_donor_knownpos,segmentj_acceptor_knownpos,
+					       segmentj_antidonor_knownpos,segmenti_antiacceptor_knownpos,
+					       segmenti_donor_knowni,segmentj_acceptor_knowni,
+					       segmentj_antidonor_knowni,segmenti_antiacceptor_knowni,
+					       segmenti_donor_nknown,segmentj_acceptor_nknown,
+					       segmentj_antidonor_nknown,segmenti_antiacceptor_nknown,
+					       splicing_penalty,max_mismatches_allowed,
+					       /*plusp*/true,genestrand,first_read_p,subs_or_indels_p,
+					       /*sarrayp*/false);
+	    }
+	  }
+	}
+      }
 
+      /* Process results for segmenti.  Modified from collect_elt_matches in sarray-read.c. */
+      if (spliceends != NULL) {
+	best_nmismatches = querylength;
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  debug7(printf("analyzing distance %d, nmismatches %d, probabilities %f and %f\n",
+			Stage3end_distance(hit),Substring_nmismatches_whole(hit),
+			Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	  if ((nmismatches = Stage3end_nmismatches_whole(hit)) < best_nmismatches) {
+	    best_nmismatches = nmismatches;
+	    best_prob = Stage3end_chimera_prob(hit);
+	  } else if (nmismatches == best_nmismatches && (prob = Stage3end_chimera_prob(hit)) > best_prob) {
+	    best_prob = prob;
+	  }
+	}
 
-		debug4s(printf("  => checking for single splice: solve_splicepair_local_plus\n"));
-		hits = solve_singlesplice(&(*found_score),hits,&(*lowprob),segmenti,segmentj,
-					  querylength,query_compress,
-					  segmenti_donor_knownpos,segmentj_acceptor_knownpos,
-					  segmentj_antidonor_knownpos,segmenti_antiacceptor_knownpos,
-					  segmenti_donor_knowni,segmentj_acceptor_knowni,
-					  segmentj_antidonor_knowni,segmenti_antiacceptor_knowni,
-					  segmenti_donor_nknown,segmentj_acceptor_nknown,
-					  segmentj_antidonor_nknown,segmenti_antiacceptor_nknown,
-					  splicing_penalty,max_mismatches_allowed,
-					  first_read_p,/*plusp*/true,genestrand,subs_or_indels_p);
-	      }
+	n_good_spliceends = 0;
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+	      (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	    debug7(printf("accepting distance %d, nmismatches %d, probabilities %f and %f\n",
+			  Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			  Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			  Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	    n_good_spliceends += 1;
+	  }
+	}
+	
+	if (n_good_spliceends == 1) {
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+		(Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	      debug7(printf("pushing distance %d, nmismatches %d, probabilities %f and %f\n",
+			    Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			    Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			    Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	      hits = List_push(hits,(void *) hit);
+	    } else {
+	      Stage3end_free(&hit);
+	    }
+	  }
+	  List_free(&spliceends);
+
+	} else {
+	  /* Create ambiguous */
+	  hit = (Stage3end_T) List_head(spliceends);
+	  donor = Stage3end_substring_donor(hit);
+	  acceptor = Stage3end_substring_acceptor(hit);
+	  sensedir = Stage3end_sensedir(hit);
+
+	  ambcoords = NULL;
+	  amb_knowni = (Intlist_T) NULL;
+	  amb_nmismatches = (Intlist_T) NULL;
+	  if (Substring_left_genomicseg(donor) == /*segmenti_left*/ segmenti->diagonal - querylength) {
+	    for (p = spliceends; p != NULL; p = List_next(p)) {
+	      hit = (Stage3end_T) List_head(p);
+	      acceptor = Stage3end_substring_acceptor(hit);
+#ifdef LARGE_GENOMES
+	      ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(acceptor));
+#else
+	      ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(acceptor));
+#endif
+	      amb_knowni = Intlist_push(amb_knowni,-1);
+	      amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(acceptor));
+	    }
+
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    }
+
+	    nmismatches_acceptor = best_nmismatches - Substring_nmismatches_whole(donor);
+	    *ambiguous = List_push(*ambiguous,
+				   (void *) Stage3end_new_splice(&(*found_score),
+								 /*nmismatches_donor*/Substring_nmismatches_whole(donor),nmismatches_acceptor,
+								 donor,/*acceptor*/NULL,/*distance*/0U,
+								 /*shortdistancep*/false,/*penalty*/0,querylength,
+								 /*amb_nmatches*/querylength - Substring_match_length_orig(donor) - nmismatches_acceptor,
+								 ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								 amb_nmismatches_left,amb_nmismatches_right,
+								 /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
+								 sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	    Uint8list_free(&ambcoords);
+#else
+	    Uintlist_free(&ambcoords);
+#endif
+	    Intlist_free(&amb_knowni);
+	    Intlist_free(&amb_nmismatches);
+	    
+	  } else if (Substring_left_genomicseg(acceptor) == /*segmenti_left*/ segmenti->diagonal - querylength) {
+	    for (p = spliceends; p != NULL; p = List_next(p)) {
+	      hit = (Stage3end_T) List_head(p);
+	      donor = Stage3end_substring_donor(hit);
+#ifdef LARGE_GENOMES
+	      ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(donor));
+#else
+	      ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(donor));
+#endif
+	      amb_knowni = Intlist_push(amb_knowni,-1);
+	      amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(donor));
+	    }
+
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
+	    } else {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
 	    }
+	    
+	    nmismatches_donor = best_nmismatches - Substring_nmismatches_whole(acceptor);
+	    *ambiguous = List_push(*ambiguous,
+				   (void *) Stage3end_new_splice(&(*found_score),
+								 nmismatches_donor,/*nmismatches_acceptor*/Substring_nmismatches_whole(acceptor),
+								 /*donor*/NULL,acceptor,/*distance*/0U,
+								 /*shortdistancep*/false,/*penalty*/0,querylength,
+								 /*amb_nmatches*/querylength - Substring_match_length_orig(acceptor) - nmismatches_donor,
+								 ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								 amb_nmismatches_left,amb_nmismatches_right,
+								 /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
+								 sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	    Uint8list_free(&ambcoords);
+#else
+	    Uintlist_free(&ambcoords);
+#endif
+	    Intlist_free(&amb_knowni);
+	    Intlist_free(&amb_nmismatches);
+	      
+	  } else {
+	    fprintf(stderr,"Unexpected: Neither donor left %u nor acceptor left %u equals segmenti_left %u\n",
+		    Substring_left_genomicseg(donor),Substring_left_genomicseg(acceptor),segmenti->diagonal - querylength);
+	    abort();
 	  }
+
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    Stage3end_free(&hit);
+	  }
+	  List_free(&spliceends);
 	}
+
       }
+
     }
   }
 
@@ -8710,17 +6976,16 @@ find_singlesplices_plus (int *found_score, List_T hits, List_T *lowprob,
 
 
 static List_T
-find_singlesplices_minus (int *found_score, List_T hits, List_T *lowprob,
-			  struct Segment_T *minus_segments, int minus_nsegments,
+find_singlesplices_minus (int *found_score, List_T hits, List_T *ambiguous, List_T *lowprob,
+			  Segment_T *minus_spliceable, int minus_nspliceable,
 			  Floors_T floors, int querylength, int query_lastpos, Compress_T query_compress /* expecting rev */,
-			  Chrpos_T overall_max_distance,
 			  int splicing_penalty, int max_mismatches_allowed, bool first_read_p, int genestrand,
 			  bool subs_or_indels_p) {
 #ifdef DEBUG4S
   int i;
 #endif
   int j;
-  Segment_T segmenti, segmentj;
+  Segment_T segmenti, segmentj, segmentj_end, *ptr;
   Univcoord_T segmenti_left, segmentj_left;
   int mismatch_positions_left[MAX_READLENGTH], mismatch_positions_right[MAX_READLENGTH];
   int nmismatches_left, nmismatches_right;
@@ -8735,784 +7000,399 @@ find_singlesplices_minus (int *found_score, List_T hits, List_T *lowprob,
 
   int floor_outer_i;
   int *floors_from_neg3, *floors_to_pos3;
-  int nhits_local = 0, npotential;
-
+  int nhits_local /*= 0*/;
 
-  debug(printf("*** Starting find_singlesplices_minus on %d segments with overall_max_distance %u ***\n",
-	       minus_nsegments,overall_max_distance));
-  debug(printf("Initially have %d hits\n",List_length(hits)));
+  List_T spliceends, p;
+  Stage3end_T hit;
+  int nspliceends, n_good_spliceends;
+  int best_nmismatches, nmismatches, nmismatches_donor, nmismatches_acceptor;
+  double best_prob, prob;
+  Substring_T donor, acceptor;
 
-  if (minus_nsegments > 1) {
-    floors_from_neg3 = floors->scorefrom[-index1interval];
-    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
+  int sensedir;
+#ifdef LARGE_GENOMES
+  Uint8list_T ambcoords, ambcoords_left, ambcoords_right;
+#else
+  Uintlist_T ambcoords, ambcoords_left, ambcoords_right;
+#endif
+  Intlist_T amb_knowni, amb_nmismatches, amb_knowni_left, amb_knowni_right, amb_nmismatches_left, amb_nmismatches_right;
 
-    for (segmenti = minus_segments; segmenti < &(minus_segments[minus_nsegments]) && nhits_local < MAX_LOCALSPLICING_HITS; segmenti++) {
-      if (segmenti->diagonal < (Univcoord_T) -1) {
-	segmenti_left = segmenti->diagonal - querylength;
-	floor_outer_i = floors_to_pos3[segmenti->querypos3];
 
-	segmenti_antiacceptor_nknown = 0;
-	segmenti_donor_nknown = 0;
-	max_distance = overall_max_distance;
+  debug4s(printf("*** Starting find_singlesplices_minus on %d spliceable segments ***\n",minus_nspliceable));
+  /* debug(printf("Initially have %d hits\n",List_length(hits))); */
 
-	if ((j = segmenti->splicesites_i) >= 0) {
-	  /* Ends 4 and 5: mark known splice sites in segmenti */
-	  while (j < nsplicesites && splicesites[j] < segmenti->diagonal) {
-	    if (splicetypes[j] == ANTIACCEPTOR) {
-	      debug4s(printf("Setting known antiacceptor %d for segmenti at %lu\n",j,splicesites[j]));
-	      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[j] - segmenti_left;
-	      segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = j;
-	    } else if (splicetypes[j] == DONOR) {
-	      debug4s(printf("Setting known donor %d for segmenti at %lu\n",j,splicesites[j]));
-	      segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[j] - segmenti_left;
-	      segmenti_donor_knowni[segmenti_donor_nknown++] = j;
-	    }
+  floors_from_neg3 = floors->scorefrom[-index1interval];
+  floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
 
-	    if (splicedists[j] > max_distance) {
-	      debug4s(printf("Setting max_distance for known %d to be %u\n",j,splicedists[j]));
-	      max_distance = splicedists[j];
-	    }
+  for (ptr = minus_spliceable; ptr < &(minus_spliceable[minus_nspliceable]); ptr++) {
+    segmenti = *ptr;
+    debug4s(printf("minus_spliceable segmenti at diagonal %u\n",segmenti->diagonal));
+    if (1 || segmenti->diagonal < (Univcoord_T) -1) { /* No markers were stored in spliceable */
+      segmenti_left = segmenti->diagonal - querylength;
+      floor_outer_i = floors_to_pos3[segmenti->querypos3];
+
+      segmenti_antiacceptor_nknown = 0;
+      segmenti_donor_nknown = 0;
+      max_distance = shortsplicedist;
+
+      if ((j = segmenti->splicesites_i) >= 0) {
+	/* Ends 4 and 5: mark known splice sites in segmenti */
+	while (j < nsplicesites && splicesites[j] < segmenti->diagonal) {
+	  if (splicetypes[j] == ANTIACCEPTOR) {
+	    debug4s(printf("Setting known antiacceptor %d for segmenti at %lu\n",j,splicesites[j]));
+	    segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[j] - segmenti_left;
+	    segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = j;
+	  } else if (splicetypes[j] == DONOR) {
+	    debug4s(printf("Setting known donor %d for segmenti at %lu\n",j,splicesites[j]));
+	    segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[j] - segmenti_left;
+	    segmenti_donor_knowni[segmenti_donor_nknown++] = j;
+	  }
 
-	    j++;
+	  /* This computation was already made in identify_all_segments */
+	  if (splicedists[j] > max_distance) {
+	    debug4s(printf("Setting max_distance for known %d to be %u\n",j,splicedists[j]));
+	    max_distance = splicedists[j];
 	  }
-	}
-	segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
-	segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
 
+	  j++;
+	}
+      }
+      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
+      segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
 
-	/* Identify potential segmentj for segmenti */
-	npotential = 0;		/* Number of potential segmentj and segmentm */
-	for (segmentj = segmenti+1;
+      /* Identify potential segmentj for segmenti */
+      segmentj_end = segmenti+1;
+      while (
 #ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(minus_segments[minus_nsegments]) && segmentj->chrnum == segmenti->chrnum &&
+	     segmentj_end < &(minus_segments[minus_nsegments]) && segmentj_end->chrnum == segmenti->chrnum &&
 #endif
-	       segmentj->diagonal <= segmenti->diagonal + max_distance &&
-	       npotential++ < MAX_LOCALSPLICING_POTENTIAL; segmentj++) {
-	  debug4s(printf("minus local?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
-			 segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			 segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	  /* j5 j3 i5 i3 */
-	  assert(segmenti->diagonal < segmentj->diagonal);
-	  if (segmentj->querypos3 >= segmenti->querypos5) {
-	    /* Fail querypos test */
-	    debug4s(printf("Bad querypos\n"));
+	     segmentj_end->diagonal <= segmenti->diagonal + max_distance) {
+	segmentj_end++;
+      }
 
-	  } else if (segmenti->diagonal + min_intronlength > segmentj->diagonal) {
-	    /* Too short to be an intron */
-	    debug4s(printf("Too short\n"));
 
-	  } else {
-	    segmenti->right_splice_p = true;
-	    segmentj->left_splice_p = true;
-	    if (floors_from_neg3[segmentj->querypos5] + floor_outer_i > max_mismatches_allowed) {
-	      /* Fail outer floor test */
-	      /* floors->score[-index1interval][segmentj->querypos5] + floors->score[segmenti->querypos3][query_lastpos+index1interval] */;
-	  
-	      debug4s(printf("too many mismatches, outer floor = %d+%d=%d > %d\n",
-			     floors->scorefrom[-index1interval][segmentj->querypos5],
-			     floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
-			     floors->scorefrom[-index1interval][segmentj->querypos5] +
-			     floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
-			     max_mismatches_allowed));
+      spliceends = (List_T) NULL;
 
-	    } else {
-	      /* Apply leftmost/rightmost test */
-	      if (segmenti->leftmost < 0) {
-		nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
-							  query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/querylength,
-							  /*plusp*/false,genestrand);
-		segmenti->leftmost = (nmismatches_left == 0) ? 0 : mismatch_positions_left[nmismatches_left-1];
-		debug4s(printf("%d mismatches on left at:",nmismatches_left);
-			for (i = 0; i <= nmismatches_left; i++) {
-			  printf(" %d",mismatch_positions_left[i]);
-			}
-			printf("\n"));
-	      }
+      if (segmentj_end - segmenti >= MAX_LOCALSPLICING_POTENTIAL) {
+	/* Too many to check */
+	/* segmentj_end = segmenti+1 + MAX_LOCALSPLICING_POTENTIAL; */
+	segmentj = segmentj_end; /* Don't process any */
+      } else {
+	segmentj = segmenti+1;
+      }
+      for ( ; segmentj < segmentj_end; segmentj++) {
+	debug4s(printf("minus local?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d => ",
+		       segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
+		       segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
+	/* j5 j3 i5 i3 */
+	assert(segmenti->diagonal < segmentj->diagonal);
+	if (segmentj->querypos3 >= segmenti->querypos5) {
+	  /* Fail querypos test */
+	  debug4s(printf("Bad querypos\n"));
+
+	} else if (segmenti->diagonal + min_intronlength > segmentj->diagonal) {
+	  /* Too short to be an intron */
+	  debug4s(printf("Too short\n"));
 
-	      segmentj_left = segmentj->diagonal - querylength;
-	      if (segmentj->rightmost < 0) {
-		nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
-							    query_compress,/*left*/segmentj_left,/*pos5*/0,/*pos3*/querylength,
-							    /*plusp*/false,genestrand);
-		segmentj->rightmost = (nmismatches_right == 0) ? 0 : mismatch_positions_right[nmismatches_right-1];
-		debug4s(printf("%d mismatches on right at:",nmismatches_right);
-			for (i = 0; i <= nmismatches_right; i++) {
-			  printf(" %d",mismatch_positions_right[i]);
-			}
-			printf("\n"));
-	      }
+	} else {
+	  segmenti->right_splice_p = true;
+	  segmentj->left_splice_p = true;
+	  if (floors_from_neg3[segmentj->querypos5] + floor_outer_i > max_mismatches_allowed) {
+	    /* Fail outer floor test */
+	    /* floors->score[-index1interval][segmentj->querypos5] + floors->score[segmenti->querypos3][query_lastpos+index1interval] */;
+	  
+	    debug4s(printf("too many mismatches, outer floor = %d+%d=%d > %d\n",
+			   floors->scorefrom[-index1interval][segmentj->querypos5],
+			   floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
+			   floors->scorefrom[-index1interval][segmentj->querypos5] +
+			   floors->scorefrom[segmenti->querypos3][query_lastpos+index1interval],
+			   max_mismatches_allowed));
 
-	      debug4s(printf("For a single splice, want leftmost %d > rightmost %d\n",segmenti->leftmost,segmentj->rightmost));
+	  } else {
+	    /* Apply leftmost/rightmost test */
+	    if (segmenti->leftmost < 0) {
+	      nmismatches_left = Genome_mismatches_left(mismatch_positions_left,max_mismatches_allowed,
+							query_compress,/*left*/segmenti_left,/*pos5*/0,/*pos3*/querylength,
+							/*plusp*/false,genestrand,first_read_p);
+	      segmenti->leftmost = (nmismatches_left == 0) ? 0 : mismatch_positions_left[nmismatches_left-1];
+	      debug4s(printf("%d mismatches on left at:",nmismatches_left);
+		      for (i = 0; i <= nmismatches_left; i++) {
+			printf(" %d",mismatch_positions_left[i]);
+		      }
+		      printf("\n"));
+	    }
 
-	      if (segmenti->leftmost > segmentj->rightmost) {
-		/* Single splice is possible */
+	    segmentj_left = segmentj->diagonal - querylength;
+	    if (segmentj->rightmost < 0) {
+	      nmismatches_right = Genome_mismatches_right(mismatch_positions_right,max_mismatches_allowed,
+							  query_compress,/*left*/segmentj_left,/*pos5*/0,/*pos3*/querylength,
+							  /*plusp*/false,genestrand,first_read_p);
+	      segmentj->rightmost = (nmismatches_right == 0) ? 0 : mismatch_positions_right[nmismatches_right-1];
+	      debug4s(printf("%d mismatches on right at:",nmismatches_right);
+		      for (i = 0; i <= nmismatches_right; i++) {
+			printf(" %d",mismatch_positions_right[i]);
+		      }
+		      printf("\n"));
+	    }
 
-		segmentj_antidonor_nknown = 0;
-		segmentj_acceptor_nknown = 0;
-		if ((j = segmentj->splicesites_i) >= 0) {
-		  /* Ends 3 and 6: mark known splice sites in segmentj */
-		  while (j < nsplicesites && splicesites[j] < segmentj->diagonal) {
-		    if (splicetypes[j] == ANTIDONOR) {
-		      debug4s(printf("Setting known antidonor %d for segmentj at %lu\n",j,splicesites[j]));
-		      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[j] - segmentj_left;
-		      segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = j;
-		    } else if (splicetypes[j] == ACCEPTOR) {
-		      debug4s(printf("Setting known acceptor %d for segmentj at %lu\n",j,splicesites[j]));
-		      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[j] - segmentj_left;
-		      segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = j;
-		    }
-		    j++;
+	    debug4s(printf("For a single splice, want leftmost %d > rightmost %d\n",segmenti->leftmost,segmentj->rightmost));
+
+	    if (segmenti->leftmost > segmentj->rightmost) {
+	      /* Single splice is possible */
+
+	      segmentj_antidonor_nknown = 0;
+	      segmentj_acceptor_nknown = 0;
+	      if ((j = segmentj->splicesites_i) >= 0) {
+		/* Ends 3 and 6: mark known splice sites in segmentj */
+		while (j < nsplicesites && splicesites[j] < segmentj->diagonal) {
+		  if (splicetypes[j] == ANTIDONOR) {
+		    debug4s(printf("Setting known antidonor %d for segmentj at %lu\n",j,splicesites[j]));
+		    segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[j] - segmentj_left;
+		    segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = j;
+		  } else if (splicetypes[j] == ACCEPTOR) {
+		    debug4s(printf("Setting known acceptor %d for segmentj at %lu\n",j,splicesites[j]));
+		    segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[j] - segmentj_left;
+		    segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = j;
 		  }
+		  j++;
 		}
-		segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
-		segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
-
-		debug4s(printf("  => checking for single splice: solve_singlesplice_minus\n"));
-		hits = solve_singlesplice(&(*found_score),hits,&(*lowprob),segmenti,segmentj,
-					  querylength,query_compress,
-					  segmenti_donor_knownpos,segmentj_acceptor_knownpos,
-					  segmentj_antidonor_knownpos,segmenti_antiacceptor_knownpos,
-					  segmenti_donor_knowni,segmentj_acceptor_knowni,
-					  segmentj_antidonor_knowni,segmenti_antiacceptor_knowni,
-					  segmenti_donor_nknown,segmentj_acceptor_nknown,
-					  segmentj_antidonor_nknown,segmenti_antiacceptor_nknown,
-					  splicing_penalty,max_mismatches_allowed,
-					  first_read_p,/*plusp*/false,genestrand,subs_or_indels_p);
 	      }
+	      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
+	      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
+
+	      debug4s(printf("  => checking for single splice: Splice_solve_single_minus\n"));
+	      spliceends = Splice_solve_single(&(*found_score),&nhits_local,spliceends,&(*lowprob),
+					       &segmenti->usedp,&segmentj->usedp,
+					       /*segmenti_left*/segmenti->diagonal - querylength,
+					       /*segmentj_left*/segmentj->diagonal - querylength,
+					       segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+					       segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength,
+					       querylength,query_compress,					 
+					       segmenti_donor_knownpos,segmentj_acceptor_knownpos,
+					       segmentj_antidonor_knownpos,segmenti_antiacceptor_knownpos,
+					       segmenti_donor_knowni,segmentj_acceptor_knowni,
+					       segmentj_antidonor_knowni,segmenti_antiacceptor_knowni,
+					       segmenti_donor_nknown,segmentj_acceptor_nknown,
+					       segmentj_antidonor_nknown,segmenti_antiacceptor_nknown,
+					       splicing_penalty,max_mismatches_allowed,
+					       /*plusp*/false,genestrand,first_read_p,subs_or_indels_p,
+					       /*sarrayp*/false);
 	    }
 	  }
 	}
       }
-    }
-  }
-
-  debug(printf("Finished find_singlesplices_minus with %d hits and %d lowprob\n",
-	       List_length(hits),List_length(*lowprob)));
-
-  return hits;
-}
-
-
-static List_T
-find_doublesplices (int *found_score, List_T hits, List_T *lowprob,
-		    struct Segment_T *segments, int nsegments,
-		    char *queryptr, Floors_T floors,
-		    int querylength, int query_lastpos, Compress_T query_compress,
-		    Chrpos_T max_distance, int splicing_penalty, int min_shortend,
-		    int max_mismatches_allowed, bool pairedp, bool first_read_p,
-		    bool plusp, int genestrand, bool subs_or_indels_p) {
-  int j, j1, j2, joffset, k, l, jj;
-  
-  Segment_T segmenti, segmentj, segmentm, potentiali[MAX_LOCALSPLICING_POTENTIAL], potentialj[MAX_LOCALSPLICING_POTENTIAL];
-  Univcoord_T segmenti_left, segmentj_left, segmentm_left;
-  int segmenti_donor_knownpos[MAX_READLENGTH+1], segmentj_acceptor_knownpos[MAX_READLENGTH+1],
-    segmentj_antidonor_knownpos[MAX_READLENGTH+1], segmenti_antiacceptor_knownpos[MAX_READLENGTH+1],
-    segmentm_donor_knownpos[MAX_READLENGTH+1], segmentm_acceptor_knownpos[MAX_READLENGTH+1],
-    segmentm_antidonor_knownpos[MAX_READLENGTH+1], segmentm_antiacceptor_knownpos[MAX_READLENGTH+1];
-  int segmenti_donor_knowni[MAX_READLENGTH+1], segmentj_acceptor_knowni[MAX_READLENGTH+1],
-    segmentj_antidonor_knowni[MAX_READLENGTH+1], segmenti_antiacceptor_knowni[MAX_READLENGTH+1],
-    segmentm_donor_knowni[MAX_READLENGTH+1], segmentm_acceptor_knowni[MAX_READLENGTH+1],
-    segmentm_antidonor_knowni[MAX_READLENGTH+1], segmentm_antiacceptor_knowni[MAX_READLENGTH+1];
-  int segmenti_donor_nknown, segmentj_acceptor_nknown,
-    segmentj_antidonor_nknown, segmenti_antiacceptor_nknown,
-    segmentm_donor_nknown, segmentm_acceptor_nknown,
-    segmentm_antidonor_nknown, segmentm_antiacceptor_nknown;
-
-  Intlist_T splicesites_i_left, splicesites_i_right;
-  Intlist_T nmismatches_list_left, nmismatches_list_right;
-  bool ambp_left, ambp_right;
-  bool sensep;
-  int sensedir;
-  int *floors_from_neg3, *floors_to_pos3;
-
-  int nmismatches_shortexon_left, nmismatches_shortexon_middle, nmismatches_shortexon_right;
-  int amb_nmatches_donor, amb_nmatches_acceptor;
-  int best_left_j, best_right_j;
-  bool shortexon_orig_plusp, shortexon_orig_minusp, saw_antidonor_p, saw_acceptor_p;
-  int leftpos, rightpos;
-  Substring_T donor, acceptor, shortexon;
-
-  int nhits_local = 0, npotential_left, npotential_right;
-
-  
-  debug(printf("*** Starting find_known_doublesplices on %d segments ***\n",nsegments));
-  debug(printf("Initially have %d hits\n",List_length(hits)));
-
-  if (nsegments > 0) {
-    floors_from_neg3 = floors->scorefrom[-index1interval];
-    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
 
-    for (segmentm = segments; segmentm < &(segments[nsegments]) && nhits_local < MAX_LOCALSPLICING_HITS; segmentm++) {
-      if (segmentm->diagonal < (Univcoord_T) -1) {
-	segmentm_left = segmentm->diagonal - querylength;
-	
-	shortexon_orig_plusp = shortexon_orig_minusp = false;
-	saw_acceptor_p = saw_antidonor_p = false;
-
-	segmentm_donor_nknown = 0;
-	segmentm_acceptor_nknown = 0;
-	segmentm_antidonor_nknown = 0;
-	segmentm_antiacceptor_nknown = 0;
-
-	if ((joffset = segmentm->splicesites_i) >= 0) {
-	  j = joffset;
-	  while (j < nsplicesites && splicesites[j] < segmentm->diagonal) {
-	    if (splicetypes[j] == DONOR) {
-	      debug4k(printf("Setting known donor %d for segmentm at %lu\n",j,splicesites[j]));
-	      segmentm_donor_knownpos[segmentm_donor_nknown] = splicesites[j] - segmentm_left;
-	      segmentm_donor_knowni[segmentm_donor_nknown++] = j;
-	      if (saw_acceptor_p == true) {
-		/* acceptor...donor */
-		shortexon_orig_plusp = true;
-	      }
-	    } else if (splicetypes[j] == ANTIACCEPTOR) {
-	      debug4k(printf("Setting known antiacceptor %d for segmentm at %lu\n",j,splicesites[j]));
-	      segmentm_antiacceptor_knownpos[segmentm_antiacceptor_nknown] = splicesites[j] - segmentm_left;
-	      segmentm_antiacceptor_knowni[segmentm_antiacceptor_nknown++] = j;
-	      if (saw_antidonor_p == true) {
-		/* antidonor...antiacceptor */
-		shortexon_orig_minusp = true;
-	      }
-	    } else if (splicetypes[j] == ACCEPTOR) {
-	      debug4k(printf("Saw known acceptor at %lu\n",splicesites[j]));
-	      segmentm_acceptor_knownpos[segmentm_acceptor_nknown] = splicesites[j] - segmentm_left;
-	      segmentm_acceptor_knowni[segmentm_acceptor_nknown++] = j;
-	      saw_acceptor_p = true;
-	    } else if (splicetypes[j] == ANTIDONOR) {
-	      debug4k(printf("Saw known antidonor at %lu\n",splicesites[j]));
-	      segmentm_antidonor_knownpos[segmentm_antidonor_nknown] = splicesites[j] - segmentm_left;
-	      segmentm_antidonor_knowni[segmentm_antidonor_nknown++] = j;
-	      saw_antidonor_p = true;
-	    }
-	    j++;
+      /* Process results for segmenti.  Modified from collect_elt_matches in sarray-read.c. */
+      if (spliceends != NULL) {
+	best_nmismatches = querylength;
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  debug7(printf("analyzing distance %d, nmismatches %d, probabilities %f and %f\n",
+			Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	  if ((nmismatches = Stage3end_nmismatches_whole(hit)) < best_nmismatches) {
+	    best_nmismatches = nmismatches;
+	    best_prob = Stage3end_chimera_prob(hit);
+	  } else if (nmismatches == best_nmismatches && (prob = Stage3end_chimera_prob(hit)) > best_prob) {
+	    best_prob = prob;
 	  }
 	}
 
-
-	/* Novel splicing.  Do not alter j. */
-	/* Still necessary to check segmentm querypos to achieve speed */
-	if (novelsplicingp &&
-	    segmentm->querypos3 >= index1part && segmentm->querypos5 <= query_lastpos - index1part &&
-	    segmentm->left_splice_p == true && segmentm->right_splice_p == true) {
-	  debug4d(printf("segment diagonal %lu, querypos %d..%d\n",
-			 segmentm->diagonal,segmentm->querypos5,segmentm->querypos3));
-
-	  npotential_left = 0;
-	  for (segmenti = segmentm-1;
-	       /* Cannot use marker segments going leftward */
-	       segmenti >= &(segments[0]) && segmenti->chrnum == segmentm->chrnum &&
-		 segmenti->diagonal < (Univcoord_T) -1 &&
-		 segmentm->diagonal <= segmenti->diagonal + max_distance &&
-		 npotential_left < MAX_LOCALSPLICING_POTENTIAL; segmenti--) {
-	    debug4d(printf("local left?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d\n",
-			   segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
-			   segmentm->diagonal,segmentm->querypos5,segmentm->querypos3));
-	    /* i5 i3 m5 m3 */
-	    assert(segmenti->diagonal < segmentm->diagonal);
-	    if (segmenti->leftmost < 0) {
-	      /* Failed outer floor test in find_singlesplices */
-	    } else if (plusp == true && segmenti->querypos3 >= segmentm->querypos5) {
-	      debug4d(printf("Bad querypos\n"));
-	    } else if (plusp == false && segmentm->querypos3 >= segmenti->querypos5) {
-	      debug4d(printf("Bad querypos\n"));
-	    } else if (segmenti->diagonal + min_intronlength > segmentm->diagonal) {
-	      debug4d(printf("Too short\n"));
+	n_good_spliceends = 0;
+	for (p = spliceends; p != NULL; p = List_next(p)) {
+	  hit = (Stage3end_T) List_head(p);
+	  if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+	      (Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	    debug7(printf("accepting distance %d, nmismatches %d, probabilities %f and %f\n",
+			  Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			  Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			  Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	    n_good_spliceends += 1;
+	  }
+	}
+	
+	if (n_good_spliceends == 1) {
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+		(Stage3end_chimera_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	      debug7(printf("pushing distance %d, nmismatches %d, probabilities %f and %f\n",
+			    Stage3end_distance(hit),Stage3end_nmismatches_whole(hit),
+			    Substring_chimera_prob(Stage3end_substring_donor(hit)),
+			    Substring_chimera_prob(Stage3end_substring_acceptor(hit))));
+	      hits = List_push(hits,(void *) hit);
 	    } else {
-	      potentiali[npotential_left++] = segmenti;
-	      debug4d(printf("Potential left #%d: %lu\n",npotential_left,segmenti->diagonal));
+	      Stage3end_free(&hit);
 	    }
 	  }
+	  List_free(&spliceends);
 
-	  npotential_right = 0;
-	  for (segmentj = segmentm+1;
-#ifdef NO_MARKER_SEGMENTS
-	       segmentj < &(segments[nsegments]) && segmentj->chrnum == segmentm->chrnum &&
-#endif
-		 segmentj->diagonal <= segmentm->diagonal + max_distance &&
-		 npotential_right < MAX_LOCALSPLICING_POTENTIAL; segmentj++) {
-	    debug4d(printf("local right?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d\n",
-			   segmentm->diagonal,segmentm->querypos5,segmentm->querypos3,
-			   segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
-	    /* m5 m3 j5 j3 */
-	    assert(segmentm->diagonal < segmentj->diagonal);
-	    if (segmentj->rightmost < 0) {
-	      /* Failed outer floor test in find_singlesplices */
-	    } else if (plusp == true && segmentm->querypos3 >= segmentj->querypos5) {
-	      debug4d(printf("Bad querypos\n"));
-	    } else if (plusp == false && segmentj->querypos3 >= segmentm->querypos5) {
-	      debug4d(printf("Bad querypos\n"));
-	    } else if (segmentm->diagonal + min_intronlength > segmentj->diagonal) {
-	      debug4d(printf("Too short\n"));
+	} else {
+	  /* Create ambiguous */
+	  hit = (Stage3end_T) List_head(spliceends);
+	  donor = Stage3end_substring_donor(hit);
+	  acceptor = Stage3end_substring_acceptor(hit);
+	  sensedir = Stage3end_sensedir(hit);
+
+	  ambcoords = NULL;
+	  amb_knowni = (Intlist_T) NULL;
+	  amb_nmismatches = (Intlist_T) NULL;
+	  if (Substring_left_genomicseg(donor) == /*segmenti_left*/ segmenti->diagonal - querylength) {
+	    for (p = spliceends; p != NULL; p = List_next(p)) {
+	      hit = (Stage3end_T) List_head(p);
+	      acceptor = Stage3end_substring_acceptor(hit);
+#ifdef LARGE_GENOMES
+	      ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(acceptor));
+#else
+	      ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(acceptor));
+#endif
+	      amb_knowni = Intlist_push(amb_knowni,-1);
+	      amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(acceptor));
+	    }
+
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
 	    } else {
-	      potentialj[npotential_right++] = segmentj;
-	      debug4d(printf("Potential right #%d: %lu\n",npotential_right,segmentj->diagonal));
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
 	    }
-	  }
 
-	  if (npotential_left > 0 && npotential_right > 0) {
-	    segmentm_donor_knownpos[segmentm_donor_nknown] = MAX_READLENGTH;
-	    segmentm_acceptor_knownpos[segmentm_acceptor_nknown] = MAX_READLENGTH;
-	    segmentm_antidonor_knownpos[segmentm_antidonor_nknown] = MAX_READLENGTH;
-	    segmentm_antiacceptor_knownpos[segmentm_antiacceptor_nknown] = MAX_READLENGTH;
-
-	    for (k = 0; k < npotential_left; k++) {
-	      segmenti = potentiali[k];
-	      segmenti_left = segmenti->diagonal - querylength;
-
-	      /* Set known sites for segmenti */
-	      segmenti_donor_nknown = 0;
-	      segmenti_antiacceptor_nknown = 0;
-	      if ((jj = segmenti->splicesites_i) >= 0) {
-		while (jj < nsplicesites && splicesites[jj] < segmenti->diagonal) {
-		  if (splicetypes[jj] == DONOR) {
-		    debug4d(printf("Setting known donor %d for segmenti at %lu\n",jj,splicesites[jj]));
-		    segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[jj] - segmenti_left;
-		    segmenti_donor_knowni[segmenti_donor_nknown++] = jj;
-		  } else if (splicetypes[jj] == ANTIACCEPTOR) {
-		    debug4d(printf("Setting known antiacceptor %d for segmenti at %lu\n",jj,splicesites[jj]));
-		    segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[jj] - segmenti_left;
-		    segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = jj;
-		  }
-		  jj++;
-		}
-	      }
-	      segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
-	      segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
-	      
-	      for (l = 0; l < npotential_right; l++) {
-		segmentj = potentialj[l];
-
-		debug4d(printf("Doublesplice span test (%d mismatches allowed): %d mismatches found from leftmost %d to j.rightmost %d\n",
-			       max_mismatches_allowed,
-			       Genome_count_mismatches_substring(query_compress,segmentm_left,
-								 /*pos5*/segmenti->leftmost,/*pos3*/segmentj->rightmost,
-								 plusp,genestrand),
-			       segmenti->leftmost,segmentj->rightmost));
-	    
-		if (segmenti->leftmost >= segmentj->rightmost) {
-		  debug4d(printf("Double splice is not possible with pos5 %d > pos3 %d\n",
-				 segmenti->leftmost,segmentj->rightmost));
-		} else if (Genome_count_mismatches_limit(query_compress,segmentm_left,
-							 /*pos5*/segmenti->leftmost,/*pos3*/segmentj->rightmost,
-							 max_mismatches_allowed,plusp,genestrand) <= max_mismatches_allowed) {
-		  debug4d(printf("Double splice is possible\n"));
-		  segmentj_left = segmentj->diagonal - querylength;
-
-		  /* Set known sites for segmentj */
-		  segmentj_acceptor_nknown = 0;
-		  segmentj_antidonor_nknown = 0;
-		  if ((jj = segmentj->splicesites_i) >= 0) {
-		    while (jj < nsplicesites && splicesites[jj] < segmentj->diagonal) {
-		      if (splicetypes[jj] == ACCEPTOR) {
-			debug4d(printf("Setting known acceptor %d for segmentj at %lu\n",jj,splicesites[jj]));
-			segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[jj] - segmentj_left;
-			segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = jj;
-		      } else if (splicetypes[jj] == ANTIDONOR) {
-			debug4d(printf("Setting known antidonor %d for segmentj at %lu\n",jj,splicesites[jj]));
-			segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[jj] - segmentj_left;
-			segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = jj;
-		      }
-		      jj++;
-		    }
-		  }
-		  segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
-		  segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
-
-		  debug4d(printf("  => checking for double splice: solve_doublesplice\n"));
-		  hits = solve_doublesplice(&(*found_score),hits,&(*lowprob),segmenti,segmentm,segmentj,
-					    querylength,query_compress,
-					    segmenti_donor_knownpos,segmentm_acceptor_knownpos,segmentm_donor_knownpos,segmentj_acceptor_knownpos,
-					    segmentj_antidonor_knownpos,segmentm_antiacceptor_knownpos,segmentm_antidonor_knownpos,segmenti_antiacceptor_knownpos,
-					    segmenti_donor_knowni,segmentm_acceptor_knowni,segmentm_donor_knowni,segmentj_acceptor_knowni,
-					    segmentj_antidonor_knowni,segmentm_antiacceptor_knowni,segmentm_antidonor_knowni,segmenti_antiacceptor_knowni,
-					    segmenti_donor_nknown,segmentm_acceptor_nknown,segmentm_donor_nknown,segmentj_acceptor_nknown,
-					    segmentj_antidonor_nknown,segmentm_antiacceptor_nknown,segmentm_antidonor_nknown,segmenti_antiacceptor_nknown,
-					    splicing_penalty,max_mismatches_allowed,plusp,genestrand,subs_or_indels_p);
-		}
-	      }
+	    nmismatches_acceptor = best_nmismatches - Substring_nmismatches_whole(donor);
+	    *ambiguous = List_push(*ambiguous,
+				   (void *) Stage3end_new_splice(&(*found_score),
+								 /*nmismatches_donor*/Substring_nmismatches_whole(donor),nmismatches_acceptor,
+								 donor,/*acceptor*/NULL,/*distance*/0U,
+								 /*shortdistancep*/false,/*penalty*/0,querylength,
+								 /*amb_nmatches*/querylength - Substring_match_length_orig(donor) - nmismatches_acceptor,
+								 ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								 amb_nmismatches_left,amb_nmismatches_right,
+								 /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
+								 sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	    Uint8list_free(&ambcoords);
+#else
+	    Uintlist_free(&ambcoords);
+#endif
+	    Intlist_free(&amb_knowni);
+	    Intlist_free(&amb_nmismatches);
+
+	  } else if (Substring_left_genomicseg(acceptor) == /*segmenti_left*/ segmenti->diagonal - querylength) {
+	    for (p = spliceends; p != NULL; p = List_next(p)) {
+	      hit = (Stage3end_T) List_head(p);
+	      donor = Stage3end_substring_donor(hit);
+#ifdef LARGE_GENOMES
+	      ambcoords = Uint8list_push(ambcoords,Substring_splicecoord(donor));
+#else
+	      ambcoords = Uintlist_push(ambcoords,Substring_splicecoord(donor));
+#endif
+	      amb_knowni = Intlist_push(amb_knowni,-1);
+	      amb_nmismatches = Intlist_push(amb_nmismatches,Substring_nmismatches_whole(donor));
 	    }
-	  }
-	}
 
-	/* Short exon using known splicing, originally on plus strand */
-	if (shortexon_orig_plusp == true) {
-	  debug4k(printf("Short exon candidate, orig_plusp.  Saw short exon acceptor...donor on segment i\n"));
-	  sensep = (plusp == true) ? true : false;
-	  sensedir = (plusp == true) ? SENSE_FORWARD : SENSE_ANTI;
-
-	  for (j1 = joffset; j1 < j; j1++) {
-	    if (splicetypes[j1] == ACCEPTOR) {
-	      leftpos = splicesites[j1] - segmentm_left;
-	      debug4k(printf("  Doing Splicetrie_find_left from leftpos %d (plus)\n",leftpos));
-	      if ((splicesites_i_left =
-		   Splicetrie_find_left(&nmismatches_shortexon_left,&nmismatches_list_left,j1,
-					/*origleft*/segmentm_left,/*pos5*/0,/*pos3*/leftpos,segmentm->chroffset,
-					query_compress,queryptr,querylength,max_mismatches_allowed,plusp,genestrand,
-					/*collect_all_p*/pairedp == true && first_read_p != plusp)) != NULL) {
-		ambp_left = (leftpos < min_shortend || Intlist_length(splicesites_i_left) > 1) ? true : false;
-
-		for (j2 = j1 + 1; j2 < j; j2++) {
-		  if (splicetypes[j2] == DONOR && splicesites[j2] > splicesites[j1]) {
-		    rightpos = splicesites[j2] - segmentm_left;
-		    debug4k(printf("  Doing Splicetrie_find_right from rightpos %d (plus)\n",rightpos));
-		    if ((nmismatches_shortexon_middle =
-			 Genome_count_mismatches_substring(query_compress,segmentm_left,/*pos5*/leftpos,/*pos3*/rightpos,
-							   plusp,genestrand)) <= max_mismatches_allowed - nmismatches_shortexon_left &&
-			(splicesites_i_right =
-			 Splicetrie_find_right(&nmismatches_shortexon_right,&nmismatches_list_right,j2,
-					       /*origleft*/segmentm_left,/*pos5*/rightpos,/*pos3*/querylength,segmentm->chrhigh,
-					       query_compress,queryptr,
-					       max_mismatches_allowed - nmismatches_shortexon_left - nmismatches_shortexon_middle,
-					       plusp,genestrand,/*collect_all_p*/pairedp == true && first_read_p == plusp)) != NULL) {
-		      ambp_right = (querylength - rightpos < min_shortend || Intlist_length(splicesites_i_right) > 1) ? true : false;
-
-		      debug4k(printf("  donor %s ... acceptor %d (%lu) ... donor %d (%lu) ... acceptor %s: %d + %d + %d mismatches\n",
-				     Intlist_to_string(splicesites_i_left),j1,splicesites[j1],j2,splicesites[j2],Intlist_to_string(splicesites_i_right),
-				     nmismatches_shortexon_left,nmismatches_shortexon_middle,nmismatches_shortexon_right));
-
-		      if (ambp_left == true && ambp_right == true) {
-			shortexon = Substring_new_shortexon(j1,j2,/*joffset*/0,/*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
-							    nmismatches_shortexon_middle,
-							    /*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/true,/*donor_ambp*/true,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-			if (shortexon != NULL) {
-			  debug4k(printf("New one-third shortexon at left %lu\n",segmentm_left));
-			  amb_nmatches_donor = leftpos - nmismatches_shortexon_left;
-			  amb_nmatches_acceptor = querylength - rightpos - nmismatches_shortexon_right;
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,/*acceptor*/NULL,shortexon,
-										 /*acceptor_distance*/0U,/*donor_distance*/0U,
-										 amb_nmatches_donor,amb_nmatches_acceptor,
-										 /*ambi_left*/splicesites_i_left,/*ambi_right*/splicesites_i_right,
-										 nmismatches_list_left,nmismatches_list_right,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-
-		      } else if (ambp_left == true && ambp_right == false) {
-			debug4k(printf("ambp_left true, ambp_right false\n"));
-			best_right_j = Intlist_head(splicesites_i_right);
-
-			debug4k(printf("shortexon with amb_acceptor at %d (%lu) ... donor at %d (%lu)\n",
-				       j1,splicesites[j1],j2,splicesites[j2]));
-			shortexon = Substring_new_shortexon(j1,j2,/*joffset*/0,/*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
-							    nmismatches_shortexon_middle,
-							    /*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/true,/*donor_ambp*/false,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			debug4k(printf("acceptor at %d (%lu)\n",best_right_j,splicesites[best_right_j]));
-			acceptor = Substring_new_acceptor(best_right_j,/*joffset*/0,/*splice_pos*/rightpos,nmismatches_shortexon_right,
-							  /*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
-							  query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-							  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			if (shortexon == NULL || acceptor == NULL) {
-			  if (shortexon != NULL) Substring_free(&shortexon);
-			  if (acceptor != NULL) Substring_free(&acceptor);
-			} else {
-			  debug4k(printf("ambp_left true, ambp_right false: New two-thirds shortexon at left %lu\n",segmentm_left));
-			  amb_nmatches_donor = leftpos - nmismatches_shortexon_left;
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,acceptor,shortexon,
-										 /*acceptor_distance*/0U,
-										 /*donor_distance*/splicesites[best_right_j]-splicesites[j2],
-										 amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
-										 /*ambi_left*/splicesites_i_left,/*ambi_right*/NULL,
-										 nmismatches_list_left,/*amb_nmismatches_right*/NULL,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-
-		      } else if (ambp_left == false && ambp_right == true) {
-			debug4k(printf("ambp_left false, ambp_right true\n"));
-			best_left_j = Intlist_head(splicesites_i_left);
-
-			debug4k(printf("donor at %d (%lu)\n",best_left_j,splicesites[best_left_j]));
-			donor = Substring_new_donor(best_left_j,/*joffset*/0,/*splice_pos*/leftpos,nmismatches_shortexon_left,
-						    /*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
-						    query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-						    segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			debug4k(printf("shortexon with acceptor at %d (%lu) ... amb_donor %d (%lu)\n",
-				       j1,splicesites[j1],j2,splicesites[j2]));
-			shortexon = Substring_new_shortexon(j1,j2,/*joffset*/0,/*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
-							    nmismatches_shortexon_middle,
-							    /*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/false,/*donor_ambp*/true,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			if (donor == NULL || shortexon == NULL) {
-			  if (donor != NULL) Substring_free(&donor);
-			  if (shortexon != NULL) Substring_free(&shortexon);
-			} else {
-			  amb_nmatches_acceptor = querylength - rightpos - nmismatches_shortexon_right;
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,/*acceptor*/NULL,shortexon,
-										 /*acceptor_distance*/splicesites[j1]-splicesites[best_left_j],
-										 /*donor_distance*/0U,
-										 /*amb_nmatches_donor*/0,amb_nmatches_acceptor,
-										 /*ambi_left*/NULL,/*ambi_right*/splicesites_i_right,
-										 /*amb_nmismatches_left*/NULL,nmismatches_list_right,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-
-		      } else { /* ambp_left == false && ambp_right == false */
-			debug4k(printf("ambp_left false, ambp_right false\n"));
-			best_left_j = Intlist_head(splicesites_i_left);
-			best_right_j = Intlist_head(splicesites_i_right);
-			donor = Substring_new_donor(best_left_j,/*joffset*/0,/*splice_pos*/leftpos,nmismatches_shortexon_left,
-						    /*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
-						    query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-						    segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			shortexon = Substring_new_shortexon(j1,j2,/*joffset*/0,/*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
-							    nmismatches_shortexon_middle,/*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-		      
-			acceptor = Substring_new_acceptor(best_right_j,/*joffset*/0,/*splice_pos*/rightpos,nmismatches_shortexon_right,
-							  /*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
-							  query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-							  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			if (donor == NULL || shortexon == NULL || acceptor == NULL) {
-			  if (donor != NULL) Substring_free(&donor);
-			  if (shortexon != NULL) Substring_free(&shortexon);
-			  if (acceptor != NULL) Substring_free(&acceptor);
-			} else {
-			  debug4k(printf("New shortexon at left %lu\n",segmentm_left));
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
-										 /*acceptor_distance*/splicesites[j1]-splicesites[best_left_j],
-										 /*donor_distance*/splicesites[best_right_j]-splicesites[j2],
-										 /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
-										 /*ambi_left*/NULL,/*ambi_right*/NULL,
-										 /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-		      }
-		      Intlist_free(&nmismatches_list_right);
-		      Intlist_free(&splicesites_i_right);
-		    }
-		  }
-		}
-		Intlist_free(&nmismatches_list_left);
-		Intlist_free(&splicesites_i_left);
-	      }
+	    if (sensedir == SENSE_FORWARD) {
+	      ambcoords_left = NULL;
+	      amb_knowni_left = amb_nmismatches_left = (Intlist_T) NULL;
+	      ambcoords_right = ambcoords;
+	      amb_knowni_right = amb_knowni;
+	      amb_nmismatches_right = amb_nmismatches;
+	    } else {
+	      ambcoords_left = ambcoords;
+	      amb_knowni_left = amb_knowni;
+	      amb_nmismatches_left = amb_nmismatches;
+	      ambcoords_right = NULL;
+	      amb_knowni_right = amb_nmismatches_right = (Intlist_T) NULL;
 	    }
+
+	    nmismatches_donor = best_nmismatches - Substring_nmismatches_whole(acceptor);
+	    *ambiguous = List_push(*ambiguous,
+				   (void *) Stage3end_new_splice(&(*found_score),
+								 nmismatches_donor,/*nmismatches_acceptor*/Substring_nmismatches_whole(acceptor),
+								 /*donor*/NULL,acceptor,/*distance*/0U,
+								 /*shortdistancep*/false,/*penalty*/0,querylength,
+								 /*amb_nmatches*/querylength - Substring_match_length_orig(acceptor) - nmismatches_donor,
+								 ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								 amb_nmismatches_left,amb_nmismatches_right,
+								 /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
+								 sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	    Uint8list_free(&ambcoords);
+#else
+	    Uintlist_free(&ambcoords);
+#endif
+	    Intlist_free(&amb_knowni);
+	    Intlist_free(&amb_nmismatches);
+
+	  } else {
+	    fprintf(stderr,"Unexpected: Neither donor left %u nor acceptor left %u equals segmenti_left %u\n",
+		    Substring_left_genomicseg(donor),Substring_left_genomicseg(acceptor),segmenti->diagonal - querylength);
+	    abort();
 	  }
-	  debug4k(printf("End of case 1\n"));
-	}
 
-	/* Short exon using known splicing, originally on minus strand */
-	if (shortexon_orig_minusp == true) {
-	  debug4k(printf("Short exon candidate, orig_minusp.  Saw short exon antidonor...antiacceptor on segment i\n"));
-	  sensep = (plusp == true) ? false : true;
-	  sensedir = (plusp == true) ? SENSE_ANTI : SENSE_FORWARD;
-
-	  for (j1 = joffset; j1 < j; j1++) {
-	    if (splicetypes[j1] == ANTIDONOR) {
-	      leftpos = splicesites[j1] - segmentm_left;
-	      debug4k(printf("  Doing Splicetrie_find_left from leftpos %d (minus)\n",leftpos));
-	      if ((splicesites_i_left =
-		   Splicetrie_find_left(&nmismatches_shortexon_left,&nmismatches_list_left,j1,
-					/*origleft*/segmentm_left,/*pos5*/0,/*pos3*/leftpos,segmentm->chroffset,
-					query_compress,queryptr,querylength,max_mismatches_allowed,plusp,genestrand,
-					/*collect_all_p*/pairedp == true && first_read_p != plusp)) != NULL) {
-		ambp_left = (leftpos < min_shortend || Intlist_length(splicesites_i_left) > 1) ? true : false;
-	      
-		for (j2 = j1 + 1; j2 < j; j2++) {
-		  if (splicetypes[j2] == ANTIACCEPTOR && splicesites[j2] > splicesites[j1]) {
-		    rightpos = splicesites[j2] - segmentm_left;
-		    debug4k(printf("  Doing Splicetrie_find_right from rightpos %d (minus)\n",rightpos));
-		    if ((nmismatches_shortexon_middle =
-			 Genome_count_mismatches_substring(query_compress,segmentm_left,/*pos5*/leftpos,/*pos3*/rightpos,
-							   plusp,genestrand)) <= max_mismatches_allowed - nmismatches_shortexon_left &&
-			(splicesites_i_right =
-			 Splicetrie_find_right(&nmismatches_shortexon_right,&nmismatches_list_right,j2,
-					       /*origleft*/segmentm_left,/*pos5*/rightpos,/*pos3*/querylength,segmentm->chrhigh,
-					       query_compress,queryptr,
-					       max_mismatches_allowed - nmismatches_shortexon_left - nmismatches_shortexon_middle,
-					       plusp,genestrand,/*collect_all_p*/pairedp == true && first_read_p == plusp)) != NULL) {
-		      ambp_right = (querylength - rightpos < min_shortend || Intlist_length(splicesites_i_right) > 1) ? true : false;
-
-		      debug4k(printf("  antiacceptor %s ... antidonor %d (%lu) ... antiacceptor %d (%lu) ... antidonor %s: %d + %d + %d mismatches\n",
-				     Intlist_to_string(splicesites_i_left),j1,splicesites[j1],j2,splicesites[j2],Intlist_to_string(splicesites_i_right),
-				     nmismatches_shortexon_left,nmismatches_shortexon_middle,nmismatches_shortexon_right));
-
-		      if (ambp_left == true && ambp_right == true) {
-			shortexon = Substring_new_shortexon(j2,j1,/*joffset*/0,/*acceptor_pos*/rightpos,/*donor_pos*/leftpos,nmismatches_shortexon_middle,
-							    /*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/true,/*donor_ambp*/true,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-			if (shortexon != NULL) {
-			  debug4k(printf("New one-third shortexon at left %lu\n",segmentm_left));
-			  amb_nmatches_donor = querylength - rightpos - nmismatches_shortexon_right;
-			  amb_nmatches_acceptor = leftpos - nmismatches_shortexon_left;
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,/*acceptor*/NULL,shortexon,
-										 /*acceptor_distance*/0U,/*donor_distance*/0U,
-										 amb_nmatches_donor,amb_nmatches_acceptor,
-										 /*ambi_left*/splicesites_i_left,/*ambi_right*/splicesites_i_right,
-										 nmismatches_list_left,nmismatches_list_right,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-
-		      } else if (ambp_left == true && ambp_right == false) {
-			debug4k(printf("ambp_left true, ambp_right false\n"));
-			best_right_j = Intlist_head(splicesites_i_right);
-
-			debug4k(printf("shortexon with amb_donor at %d (%lu) ... acceptor at %d (%lu)\n",
-				       j1,splicesites[j1],j2,splicesites[j2]));
-			shortexon = Substring_new_shortexon(j2,j1,/*joffset*/0,/*acceptor_pos*/rightpos,/*donor_pos*/leftpos,nmismatches_shortexon_middle,
-							    /*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/false,/*donor_ambp*/true,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			debug4k(printf("donor at %d (%lu)\n",best_right_j,splicesites[best_right_j]));
-			donor = Substring_new_donor(best_right_j,/*joffset*/0,/*splice_pos*/rightpos,nmismatches_shortexon_right,
-						    /*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
-						    query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-						    segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			if (donor == NULL || shortexon == NULL) {
-			  if (donor != NULL) Substring_free(&donor);
-			  if (shortexon != NULL) Substring_free(&shortexon);
-			} else {
-			  amb_nmatches_acceptor = leftpos - nmismatches_shortexon_left;
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,/*acceptor*/NULL,shortexon,
-										 /*acceptor_distance*/splicesites[best_right_j]-splicesites[j2],
-										 /*donor_distance*/0U,
-										 /*amb_nmatches_donor*/0,amb_nmatches_acceptor,
-										 /*ambi_left*/splicesites_i_left,/*ambi_right*/NULL,
-										 nmismatches_list_left,/*amb_nmismatches_right*/NULL,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-
-		      } else if (ambp_left == false && ambp_right == true) {
-			debug4k(printf("ambp_left false, ambp_right true\n"));
-			best_left_j = Intlist_head(splicesites_i_left);
-
-			debug4k(printf("acceptor at %d (%lu)\n",best_left_j,splicesites[best_left_j]));
-			acceptor = Substring_new_acceptor(best_left_j,/*joffset*/0,/*splice_pos*/leftpos,nmismatches_shortexon_left,
-							  /*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
-							  query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-							  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			debug4k(printf("shortexon with donor at %d (%lu) ... amb_acceptor at %d (%lu)\n",
-				       j2,splicesites[j2],j1,splicesites[j1]));
-			shortexon = Substring_new_shortexon(j2,j1,/*joffset*/0,/*acceptor_pos*/rightpos,/*donor_pos*/leftpos,nmismatches_shortexon_middle,
-							    /*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/true,/*donor_ambp*/false,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			if (shortexon == NULL || acceptor == NULL) {
-			  if (shortexon != NULL) Substring_free(&shortexon);
-			  if (acceptor != NULL) Substring_free(&acceptor);
-			} else {
-			  debug4k(printf("ambp_left false, ambp_right true: New splice at left %lu\n",segmentm_left));
-			  amb_nmatches_donor = querylength - rightpos - nmismatches_shortexon_right;
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,acceptor,shortexon,
-										 /*acceptor_distance*/0U,
-										 /*donor_distance*/splicesites[j1]-splicesites[best_left_j],
-										 amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
-										 /*ambi_left*/NULL,/*ambi_right*/splicesites_i_right,
-										 /*amb_nmismatches_left*/NULL,nmismatches_list_right,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-
-		      } else {  /* ambp_left == false && ambp_right == false */
-			best_left_j = Intlist_head(splicesites_i_left);
-			best_right_j = Intlist_head(splicesites_i_right);
-			acceptor = Substring_new_acceptor(best_left_j,/*joffset*/0,/*splice_pos*/leftpos,nmismatches_shortexon_left,
-							  /*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
-							  query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-							  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			shortexon = Substring_new_shortexon(j2,j1,/*joffset*/0,/*acceptor_pos*/rightpos,/*donor_pos*/leftpos,
-							    nmismatches_shortexon_middle,/*acceptor_prob*/2.0,/*donor_prob*/2.0,
-							    /*left*/segmentm_left,query_compress,
-							    querylength,plusp,genestrand,sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
-							    segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			donor = Substring_new_donor(best_right_j,/*joffset*/0,/*splice_pos*/rightpos,nmismatches_shortexon_right,
-						    /*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
-						    query_compress,querylength,plusp,genestrand,sensep,segmentm->chrnum,
-						    segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
-
-			if (acceptor == NULL || shortexon == NULL || donor == NULL) {
-			  if (acceptor != NULL) Substring_free(&acceptor);
-			  if (shortexon != NULL) Substring_free(&shortexon);
-			  if (donor != NULL) Substring_free(&donor);
-			} else {
-			  debug4k(printf("New shortexon at left %lu\n",segmentm_left));
-			  segmentm->usedp = true;
-			  nhits_local += 1;
-			  hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
-										 /*acceptor_distance*/splicesites[best_right_j]-splicesites[j2],
-										 /*donor_distance*/splicesites[j1]-splicesites[best_left_j],
-										 /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
-										 /*ambi_left*/NULL,/*ambi_right*/NULL,
-										 /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-										 /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
-										 splicing_penalty,querylength,sensedir));
-			}
-		      }
-		      Intlist_free(&nmismatches_list_right);
-		      Intlist_free(&splicesites_i_right);
-		    }
-		  }
-		}
-		Intlist_free(&nmismatches_list_left);
-		Intlist_free(&splicesites_i_left);
-	      }
-	    }
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    Stage3end_free(&hit);
 	  }
-	  debug4k(printf("End of case 2\n"));
+	  List_free(&spliceends);
 	}
-	/* End of known splicesites, segment i */
+
       }
     }
   }
 
-  debug4k(printf("Finished find_known_doublesplices with %d hits\n",List_length(hits)));
-  return hits;
+  debug(printf("Finished find_singlesplices_minus with %d hits and %d lowprob\n",
+	       List_length(hits),List_length(*lowprob)));
+
+  return hits;
+}
+
+
+#ifdef LARGE_GENOMES
+static Uint8list_T
+lookup_splicesites (Intlist_T splicesites_i, Univcoord_T *splicesites) {
+  Uint8list_T coords = NULL;
+  Intlist_T p;
+
+  for (p = splicesites_i; p != NULL; p = Intlist_next(p)) {
+    coords = Uint8list_push(coords,splicesites[Intlist_head(p)]);
+  }
+
+  return Uint8list_reverse(coords);
 }
+#else
+static Uintlist_T
+lookup_splicesites (Intlist_T splicesites_i, Univcoord_T *splicesites) {
+  Uintlist_T coords = NULL;
+  Intlist_T p;
+
+  for (p = splicesites_i; p != NULL; p = Intlist_next(p)) {
+    coords = Uintlist_push(coords,splicesites[Intlist_head(p)]);
+  }
 
+  return Uintlist_reverse(coords);
+}
+#endif
 
 
-#if 0
-/* For known and novel doublesplices */
 static List_T
-find_doublesplices_old (int *found_score, List_T hits, struct Segment_T *segments, int nsegments,
-			Floors_T floors, int querylength, int query_lastpos, Compress_T query_compress,
-			Chrpos_T max_distance, int splicing_penalty,
-			int max_mismatches_allowed, bool plusp, int genestrand) {
-  int k, l;
-  Segment_T segmenti, segmentj, segmentm, potentiali[MAX_LOCALSPLICING_POTENTIAL], potentialj[MAX_LOCALSPLICING_POTENTIAL];
+find_doublesplices (int *found_score, List_T hits, List_T *lowprob,
+		    Segment_T *spliceable, int nspliceable, struct Segment_T *segments, 
+		    char *queryptr, Floors_T floors,
+		    int querylength, int query_lastpos, Compress_T query_compress,
+		    Chrpos_T max_distance, int splicing_penalty, int min_shortend,
+		    int max_mismatches_allowed, bool pairedp, bool first_read_p,
+		    bool plusp, int genestrand, bool subs_or_indels_p) {
+  int j, j1, j2, joffset, k, l, jj;
+  
+  Segment_T segmenti, segmentj, segmentm, segmenti_start, segmentj_end, *ptr;
+  List_T potentiali, potentialj, q, r;
   Univcoord_T segmenti_left, segmentj_left, segmentm_left;
   int segmenti_donor_knownpos[MAX_READLENGTH+1], segmentj_acceptor_knownpos[MAX_READLENGTH+1],
     segmentj_antidonor_knownpos[MAX_READLENGTH+1], segmenti_antiacceptor_knownpos[MAX_READLENGTH+1],
@@ -9526,35 +7406,138 @@ find_doublesplices_old (int *found_score, List_T hits, struct Segment_T *segment
     segmentj_antidonor_nknown, segmenti_antiacceptor_nknown,
     segmentm_donor_nknown, segmentm_acceptor_nknown,
     segmentm_antidonor_nknown, segmentm_antiacceptor_nknown;
-  
+
+#ifdef LARGE_GENOMES
+  Uint8list_T donor_ambcoords, acceptor_ambcoords, ambcoords_left, ambcoords_right;
+#else
+  Uintlist_T donor_ambcoords, acceptor_ambcoords, ambcoords_left, ambcoords_right;
+#endif
+  Intlist_T splicesites_i_left, splicesites_i_right;
+  Intlist_T nmismatches_list_left, nmismatches_list_right;
+  bool ambp_left, ambp_right;
+  bool sensep;
+  int sensedir;
   int *floors_from_neg3, *floors_to_pos3;
-  int nhits_local = 0, npotential_left, npotential_right;
 
+  int nmismatches_shortexon_left, nmismatches_shortexon_middle, nmismatches_shortexon_right;
+  int amb_nmatches_donor, amb_nmatches_acceptor;
+  int best_left_j, best_right_j;
+  bool shortexon_orig_plusp, shortexon_orig_minusp, saw_antidonor_p, saw_acceptor_p;
+  int leftpos, rightpos;
+  Substring_T donor, acceptor, shortexon;
+
+  int nhits_local /*= 0*/, npotential_left, npotential_right;
+  List_T spliceends, p;
+  Stage3end_T hit, *array;
+  int best_nmismatches, nmismatches;
+  int n_good_spliceends, n, i;
+  int donor_distance, acceptor_distance;
+  double best_prob, prob;
+  Univcoord_T lastpos;
+  Intlist_T donor_amb_knowni, acceptor_amb_knowni, donor_amb_nmismatches, acceptor_amb_nmismatches,
+    amb_knowni_left, amb_knowni_right, amb_nmismatches_left, amb_nmismatches_right;
 
-  debug(printf("*** Starting find_doublesplices_old on %d segments with max_distance %u ***\n",
-	       nsegments,max_distance));
+  
+  debug(printf("*** Starting find_known_doublesplices on %d segments ***\n",nspliceable));
   debug(printf("Initially have %d hits\n",List_length(hits)));
 
-  assert(*nhits == List_length(hits));
+  floors_from_neg3 = floors->scorefrom[-index1interval];
+  floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
 
-  if (nsegments > 2) {
-    floors_from_neg3 = floors->scorefrom[-index1interval];
-    floors_to_pos3 = floors->scoreto[query_lastpos+index1interval];
+  for (ptr = spliceable; ptr < &(spliceable[nspliceable]); ptr++) {
+    segmentm = *ptr;
+    if (1 || segmentm->diagonal < (Univcoord_T) -1) { /* No markers were stored in spliceable */
+      segmentm_left = segmentm->diagonal - querylength;
+	
+      shortexon_orig_plusp = shortexon_orig_minusp = false;
+      saw_acceptor_p = saw_antidonor_p = false;
+
+      segmentm_donor_nknown = 0;
+      segmentm_acceptor_nknown = 0;
+      segmentm_antidonor_nknown = 0;
+      segmentm_antiacceptor_nknown = 0;
+
+      if ((joffset = segmentm->splicesites_i) >= 0) {
+	j = joffset;
+	while (j < nsplicesites && splicesites[j] < segmentm->diagonal) {
+	  if (splicetypes[j] == DONOR) {
+	    debug4k(printf("Setting known donor %d for segmentm at %lu\n",j,splicesites[j]));
+	    segmentm_donor_knownpos[segmentm_donor_nknown] = splicesites[j] - segmentm_left;
+	    segmentm_donor_knowni[segmentm_donor_nknown++] = j;
+	    if (saw_acceptor_p == true) {
+	      /* acceptor...donor */
+	      shortexon_orig_plusp = true;
+	    }
+	  } else if (splicetypes[j] == ANTIACCEPTOR) {
+	    debug4k(printf("Setting known antiacceptor %d for segmentm at %lu\n",j,splicesites[j]));
+	    segmentm_antiacceptor_knownpos[segmentm_antiacceptor_nknown] = splicesites[j] - segmentm_left;
+	    segmentm_antiacceptor_knowni[segmentm_antiacceptor_nknown++] = j;
+	    if (saw_antidonor_p == true) {
+	      /* antidonor...antiacceptor */
+	      shortexon_orig_minusp = true;
+	    }
+	  } else if (splicetypes[j] == ACCEPTOR) {
+	    debug4k(printf("Saw known acceptor at %lu\n",splicesites[j]));
+	    segmentm_acceptor_knownpos[segmentm_acceptor_nknown] = splicesites[j] - segmentm_left;
+	    segmentm_acceptor_knowni[segmentm_acceptor_nknown++] = j;
+	    saw_acceptor_p = true;
+	  } else if (splicetypes[j] == ANTIDONOR) {
+	    debug4k(printf("Saw known antidonor at %lu\n",splicesites[j]));
+	    segmentm_antidonor_knownpos[segmentm_antidonor_nknown] = splicesites[j] - segmentm_left;
+	    segmentm_antidonor_knowni[segmentm_antidonor_nknown++] = j;
+	    saw_antidonor_p = true;
+	  }
+	  j++;
+	}
+      }
 
-    for (segmentm = &(segments[1]); segmentm < &(segments[nsegments]); segmentm++) {
-      if (segmentm->diagonal < (Univcoord_T) -1 &&
-	  segmentm->querypos3 >= index1part &&
-	  segmentm->querypos5 <= query_lastpos - index1part) {
+      /* Novel splicing.  Do not alter j. */
+      /* Still necessary to check segmentm querypos to achieve speed */
+      if (novelsplicingp &&
+	  segmentm->querypos3 >= index1part && segmentm->querypos5 <= query_lastpos - index1part &&
+	  segmentm->left_splice_p == true && segmentm->right_splice_p == true) {
 	debug4d(printf("segment diagonal %lu, querypos %d..%d\n",
 		       segmentm->diagonal,segmentm->querypos5,segmentm->querypos3));
 
+	spliceends = (List_T) NULL;
+
+	/* Identify potential segmenti for segmentm */
+	segmenti_start = segmentm-1;
+	while (
+	       /* Cannot use marker segments going leftward */
+	       segmenti_start >= &(segments[0]) &&
+	       segmenti_start->diagonal < (Univcoord_T) -1 && /* Needs to be next criterion, since we initialize only segments[0]->diagonal */
+	       segmenti_start->chrnum == segmentm->chrnum &&
+	       segmentm->diagonal <= segmenti_start->diagonal + max_distance) {
+	  segmenti_start--;
+	}
+
+	/* Identify potential segmentj for segmentm */
+	segmentj_end = segmentm+1;
+	while (
+#ifdef NO_MARKER_SEGMENTS
+	       segmentj_end < &(segments[nsegments]) && segmentj_end->chrnum == segmentm->chrnum &&
+#endif
+	       segmentj_end->diagonal <= segmentm->diagonal + max_distance) {
+	  segmentj_end++;
+	}
+
+	potentiali = (List_T) NULL;
+	potentialj = (List_T) NULL;
 	npotential_left = 0;
-	for (segmenti = segmentm-1;
-	     /* Cannot use marker segments going leftward */
-	     segmenti >= &(segments[0]) && segmenti->chrnum == segmentm->chrnum &&
-	       segmenti->diagonal < (Univcoord_T) -1 &&
-	       segmentm->diagonal <= segmenti->diagonal + max_distance &&
-	       npotential_left < MAX_LOCALSPLICING_POTENTIAL; segmenti--) {
+	npotential_right = 0;
+ 	if ((segmentm - segmenti_start) * (segmentj_end - segmentm) >= MAX_LOCALSPLICING_POTENTIAL) {
+  	  /* Too many to check */
+ 	  /* segmenti_start = segmentm-1 - MAX_LOCALSPLICING_POTENTIAL; */
+ 	  /* segmentj_end = segmentm+1 + MAX_LOCALSPLICING_POTENTIAL; */
+ 	  segmenti = segmenti_start; /* Don't process any */
+ 	  segmentj = segmentj_end; /* Don't process any */
+ 	} else {
+ 	  segmenti = segmentm-1;
+ 	  segmentj = segmentm+1;
+  	}
+
+	for ( ; segmenti > segmenti_start; segmenti--) {
 	  debug4d(printf("local left?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d\n",
 			 segmenti->diagonal,segmenti->querypos5,segmenti->querypos3,
 			 segmentm->diagonal,segmentm->querypos5,segmentm->querypos3));
@@ -9569,18 +7552,13 @@ find_doublesplices_old (int *found_score, List_T hits, struct Segment_T *segment
 	  } else if (segmenti->diagonal + min_intronlength > segmentm->diagonal) {
 	    debug4d(printf("Too short\n"));
 	  } else {
-	    potentiali[npotential_left++] = segmenti;
+	    potentiali = List_push(potentiali,(void *) segmenti);
+	    npotential_left++;
 	    debug4d(printf("Potential left #%d: %lu\n",npotential_left,segmenti->diagonal));
 	  }
 	}
 
-	npotential_right = 0;
-	for (segmentj = segmentm+1;
-#ifdef NO_MARKER_SEGMENTS
-	     segmentj < &(segments[nsegments]) && segmentj->chrnum == segmentm->chrnum &&
-#endif
-	       segmentj->diagonal <= segmentm->diagonal + max_distance &&
-	       npotential_right < MAX_LOCALSPLICING_POTENTIAL; segmentj++) {
+	for ( ; segmentj < segmentj_end; segmentj++) {
 	  debug4d(printf("local right?  diagonal %lu, querypos %d..%d => diagonal %lu, querypos %d..%d\n",
 			 segmentm->diagonal,segmentm->querypos5,segmentm->querypos3,
 			 segmentj->diagonal,segmentj->querypos5,segmentj->querypos3));
@@ -9595,58 +7573,779 @@ find_doublesplices_old (int *found_score, List_T hits, struct Segment_T *segment
 	  } else if (segmentm->diagonal + min_intronlength > segmentj->diagonal) {
 	    debug4d(printf("Too short\n"));
 	  } else {
-	    potentialj[npotential_right++] = segmentj;
+	    potentialj = List_push(potentialj,(void *) segmentj);
+	    npotential_right++;
 	    debug4d(printf("Potential right #%d: %lu\n",npotential_right,segmentj->diagonal));
 	  }
 	}
 
 	if (npotential_left > 0 && npotential_right > 0) {
-	  segmentm_left = segmentm->diagonal - querylength;
+	  segmentm_donor_knownpos[segmentm_donor_nknown] = MAX_READLENGTH;
+	  segmentm_acceptor_knownpos[segmentm_acceptor_nknown] = MAX_READLENGTH;
+	  segmentm_antidonor_knownpos[segmentm_antidonor_nknown] = MAX_READLENGTH;
+	  segmentm_antiacceptor_knownpos[segmentm_antiacceptor_nknown] = MAX_READLENGTH;
 
-	  for (k = 0; k < npotential_left; k++) {
-	    segmenti = potentiali[k];
+	  for (q = potentiali; q != NULL; q = List_next(q)) {
+	    segmenti = (Segment_T) List_head(q);
 	    segmenti_left = segmenti->diagonal - querylength;
 
-	    for (l = 0; l < npotential_right; l++) {
-	      segmentj = potentialj[l];
+	    /* Set known sites for segmenti */
+	    segmenti_donor_nknown = 0;
+	    segmenti_antiacceptor_nknown = 0;
+	    if ((jj = segmenti->splicesites_i) >= 0) {
+	      while (jj < nsplicesites && splicesites[jj] < segmenti->diagonal) {
+		if (splicetypes[jj] == DONOR) {
+		  debug4d(printf("Setting known donor %d for segmenti at %lu\n",jj,splicesites[jj]));
+		  segmenti_donor_knownpos[segmenti_donor_nknown] = splicesites[jj] - segmenti_left;
+		  segmenti_donor_knowni[segmenti_donor_nknown++] = jj;
+		} else if (splicetypes[jj] == ANTIACCEPTOR) {
+		  debug4d(printf("Setting known antiacceptor %d for segmenti at %lu\n",jj,splicesites[jj]));
+		  segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = splicesites[jj] - segmenti_left;
+		  segmenti_antiacceptor_knowni[segmenti_antiacceptor_nknown++] = jj;
+		}
+		jj++;
+	      }
+	    }
+	    segmenti_donor_knownpos[segmenti_donor_nknown] = MAX_READLENGTH;
+	    segmenti_antiacceptor_knownpos[segmenti_antiacceptor_nknown] = MAX_READLENGTH;
+
+
+	    for (r = potentialj; r != NULL; r = List_next(r)) {
+	      segmentj = (Segment_T) List_head(r);
 
 	      debug4d(printf("Doublesplice span test (%d mismatches allowed): %d mismatches found from leftmost %d to j.rightmost %d\n",
 			     max_mismatches_allowed,
 			     Genome_count_mismatches_substring(query_compress,segmentm_left,
 							       /*pos5*/segmenti->leftmost,/*pos3*/segmentj->rightmost,
-							       plusp,genestrand),
+							       plusp,genestrand,first_read_p),
 			     segmenti->leftmost,segmentj->rightmost));
-	      
+	    
 	      if (segmenti->leftmost >= segmentj->rightmost) {
 		debug4d(printf("Double splice is not possible with pos5 %d > pos3 %d\n",
 			       segmenti->leftmost,segmentj->rightmost));
 	      } else if (Genome_count_mismatches_limit(query_compress,segmentm_left,
 						       /*pos5*/segmenti->leftmost,/*pos3*/segmentj->rightmost,
-						       max_mismatches_allowed,plusp,genestrand) <= max_mismatches_allowed) {
+						       max_mismatches_allowed,
+						       plusp,genestrand,first_read_p) <= max_mismatches_allowed) {
 		debug4d(printf("Double splice is possible\n"));
 		segmentj_left = segmentj->diagonal - querylength;
 
-		debug4d(printf("  => checking for double splice: solve_doublesplice\n"));
-		hits = solve_doublesplice(&(*found_score),&nhits,hits,&(*lowprob),segmenti,segmentm,segmentj,
-					  querylength,query_compress,
-					  segmenti_donor_knownpos,segmentm_acceptor_knownpos,segmentm_donor_knownpos,segmentj_acceptor_knownpos,
-					  segmentj_antidonor_knownpos,segmentm_antiacceptor_knownpos,segmentm_antidonor_knownpos,segmenti_antiacceptor_knownpos,
-					  segmenti_donor_knowni,segmentm_acceptor_knowni,segmentm_donor_knowni,segmentj_acceptor_knowni,
-					  segmentj_antidonor_knowni,segmentm_antiacceptor_knowni,segmentm_antidonor_knowni,segmenti_antiacceptor_knowni,
-					  segmenti_donor_nknown,segmentm_acceptor_nknown,segmentm_donor_nknown,segmentj_acceptor_nknown,
-					  segmentj_antidonor_nknown,segmentm_antiacceptor_nknown,segmentm_antidonor_nknown,segmenti_antiacceptor_nknown,
-					  splicing_penalty,max_mismatches_allowed,plusp,genestrand,subs_or_indels_p);
+		/* Set known sites for segmentj */
+		segmentj_acceptor_nknown = 0;
+		segmentj_antidonor_nknown = 0;
+		if ((jj = segmentj->splicesites_i) >= 0) {
+		  while (jj < nsplicesites && splicesites[jj] < segmentj->diagonal) {
+		    if (splicetypes[jj] == ACCEPTOR) {
+		      debug4d(printf("Setting known acceptor %d for segmentj at %lu\n",jj,splicesites[jj]));
+		      segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = splicesites[jj] - segmentj_left;
+		      segmentj_acceptor_knowni[segmentj_acceptor_nknown++] = jj;
+		    } else if (splicetypes[jj] == ANTIDONOR) {
+		      debug4d(printf("Setting known antidonor %d for segmentj at %lu\n",jj,splicesites[jj]));
+		      segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = splicesites[jj] - segmentj_left;
+		      segmentj_antidonor_knowni[segmentj_antidonor_nknown++] = jj;
+		    }
+		    jj++;
+		  }
+		}
+		segmentj_acceptor_knownpos[segmentj_acceptor_nknown] = MAX_READLENGTH;
+		segmentj_antidonor_knownpos[segmentj_antidonor_nknown] = MAX_READLENGTH;
+
+		debug4d(printf("  => checking for double splice: Splice_solve_double\n"));
+		spliceends = Splice_solve_double(&(*found_score),&nhits_local,spliceends,&(*lowprob),
+						 &segmenti->usedp,&segmentm->usedp,&segmentj->usedp,
+						 /*segmenti_left*/segmenti->diagonal - querylength,
+						 /*segmentm_left*/segmentm->diagonal - querylength,
+						 /*segmentj_left*/segmentj->diagonal - querylength,
+						 segmenti->chrnum,segmenti->chroffset,segmenti->chrhigh,segmenti->chrlength,
+						 segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength,
+						 segmentj->chrnum,segmentj->chroffset,segmentj->chrhigh,segmentj->chrlength,
+						 querylength,query_compress,
+						 segmenti_donor_knownpos,segmentm_acceptor_knownpos,segmentm_donor_knownpos,segmentj_acceptor_knownpos,
+						 segmentj_antidonor_knownpos,segmentm_antiacceptor_knownpos,segmentm_antidonor_knownpos,segmenti_antiacceptor_knownpos,
+						 segmenti_donor_knowni,segmentm_acceptor_knowni,segmentm_donor_knowni,segmentj_acceptor_knowni,
+						 segmentj_antidonor_knowni,segmentm_antiacceptor_knowni,segmentm_antidonor_knowni,segmenti_antiacceptor_knowni,
+						 segmenti_donor_nknown,segmentm_acceptor_nknown,segmentm_donor_nknown,segmentj_acceptor_nknown,
+						 segmentj_antidonor_nknown,segmentm_antiacceptor_nknown,segmentm_antidonor_nknown,segmenti_antiacceptor_nknown,
+						 splicing_penalty,max_mismatches_allowed,plusp,genestrand,first_read_p,
+						 subs_or_indels_p,/*sarrayp*/false);
+	      }
+	    }
+	  }
+	}
+
+	List_free(&potentialj);
+	List_free(&potentiali);
+
+	/* Process results for segmentm. */
+	if (spliceends != NULL) {
+	  best_nmismatches = querylength;
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    debug7(printf("analyzing distance %d, nmismatches %d, probability %f\n",
+			  Stage3end_distance(hit),Substring_nmismatches_whole(hit),
+			  Substring_shortexon_prob(hit)));
+	    if ((nmismatches = Stage3end_nmismatches_whole(hit)) < best_nmismatches) {
+	      best_nmismatches = nmismatches;
+	      best_prob = Stage3end_shortexon_prob(hit);
+	    } else if (nmismatches == best_nmismatches && (prob = Stage3end_shortexon_prob(hit)) > best_prob) {
+	      best_prob = prob;
+	    }
+	  }
+
+	  n_good_spliceends = 0;
+	  for (p = spliceends; p != NULL; p = List_next(p)) {
+	    hit = (Stage3end_T) List_head(p);
+	    if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+		(Stage3end_shortexon_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+	      debug7(printf("accepting distance %d, nmismatches %d, probability %f\n",
+			    Stage3end_distance(hit),Substring_nmismatches_whole(hit),
+			    Substring_shortexon_prob(hit)));
+	      n_good_spliceends += 1;
+	    }
+	  }
+
+	  if (n_good_spliceends == 1) {
+	    for (p = spliceends; p != NULL; p = List_next(p)) {
+	      hit = (Stage3end_T) List_head(p);
+	      if (Stage3end_nmismatches_whole(hit) == best_nmismatches &&
+		  (Stage3end_shortexon_prob(hit) > best_prob - LOCALSPLICING_SLOP)) {
+		debug7(printf("pushing distance %d, nmismatches %d, probability %f\n",
+			      Stage3end_distance(hit),Substring_nmismatches_whole(hit),
+			      Substring_shortexon_prob(hit)));
+		hits = List_push(hits,(void *) hit);
+	      } else {
+		Stage3end_free(&hit);
+	      }
+	    }
+	    List_free(&spliceends);
+
+	  } else {
+	    /* Create ambiguous */
+	    hit = (Stage3end_T) List_head(spliceends);
+	    donor = Stage3end_substringD(hit);
+	    acceptor = Stage3end_substringA(hit);
+	    shortexon = Stage3end_substring1(hit);
+	    sensedir = Stage3end_sensedir(hit);
+
+	    donor_ambcoords = acceptor_ambcoords = NULL;
+	    donor_amb_knowni = acceptor_amb_knowni = (Intlist_T) NULL;
+	    donor_amb_nmismatches = acceptor_amb_nmismatches = (Intlist_T) NULL;
+
+	    array = (Stage3end_T *) List_to_array_n(&n,spliceends);
+	    qsort(array,n,sizeof(Stage3end_T),Stage3end_shortexon_substringD_cmp);
+	    donor = Stage3end_substringD(array[0]);
+	    lastpos = Substring_left_genomicseg(donor);
+
+#ifdef LARGE_GENOMES
+	    donor_ambcoords = Uint8list_push(donor_ambcoords,Substring_splicecoord(donor));
+#else
+	    donor_ambcoords = Uintlist_push(donor_ambcoords,Substring_splicecoord(donor));
+#endif
+	    donor_amb_knowni = Intlist_push(donor_amb_knowni,-1);
+	    donor_amb_nmismatches = Intlist_push(donor_amb_nmismatches,Substring_nmismatches_whole(donor));
+	  
+	    for (i = 1; i < n; i++) {
+	      donor = Stage3end_substringD(array[i]);
+	      if (Substring_left_genomicseg(donor) == lastpos) {
+		/* Skip */
+	      } else {
+#ifdef LARGE_GENOMES
+		donor_ambcoords = Uint8list_push(donor_ambcoords,Substring_splicecoord(donor));
+#else
+		donor_ambcoords = Uintlist_push(donor_ambcoords,Substring_splicecoord(donor));
+#endif
+		donor_amb_knowni = Intlist_push(donor_amb_knowni,-1);
+		donor_amb_nmismatches = Intlist_push(donor_amb_nmismatches,Substring_nmismatches_whole(donor));
+		lastpos = Substring_left_genomicseg(donor);
+	      }
+	    }
+
+	    qsort(array,n,sizeof(Stage3end_T),Stage3end_shortexon_substringA_cmp);
+	    acceptor = Stage3end_substringA(array[0]);
+	    lastpos = Substring_left_genomicseg(acceptor);
+
+#ifdef LARGE_GENOMES
+	    acceptor_ambcoords = Uint8list_push(acceptor_ambcoords,Substring_splicecoord(acceptor));
+#else
+	    acceptor_ambcoords = Uintlist_push(acceptor_ambcoords,Substring_splicecoord(acceptor));
+#endif
+	    acceptor_amb_knowni = Intlist_push(acceptor_amb_knowni,-1);
+	    acceptor_amb_nmismatches = Intlist_push(acceptor_amb_nmismatches,Substring_nmismatches_whole(acceptor));
+
+	    for (i = 1; i < n; i++) {
+	      acceptor = Stage3end_substringA(array[i]);
+	      if (Substring_left_genomicseg(acceptor) == lastpos) {
+		/* Skip */
+	      } else {
+#ifdef LARGE_GENOMES
+		acceptor_ambcoords = Uint8list_push(acceptor_ambcoords,Substring_splicecoord(acceptor));
+#else
+		acceptor_ambcoords = Uintlist_push(acceptor_ambcoords,Substring_splicecoord(acceptor));
+#endif
+		acceptor_amb_knowni = Intlist_push(acceptor_amb_knowni,-1);
+		acceptor_amb_nmismatches = Intlist_push(acceptor_amb_nmismatches,Substring_nmismatches_whole(acceptor));
+		lastpos = Substring_left_genomicseg(acceptor);
+	      }
+	    }
+	  
+	    FREE(array);
+
+	    if (Intlist_length(donor_amb_nmismatches) == 1 && Intlist_length(acceptor_amb_nmismatches) == 1) {
+	      acceptor_distance = Substring_splicecoord_A(shortexon) - Substring_splicecoord(donor);
+	      if (acceptor_distance < 0) {
+		acceptor_distance = -acceptor_distance;
+	      }
+	      donor_distance = Substring_splicecoord_D(shortexon) - Substring_splicecoord(acceptor);
+	      if (donor_distance < 0) {
+		donor_distance = -donor_distance;
+	      }
+	      hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+								     acceptor_distance,donor_distance,
+								     /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+								     /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								     /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+								     /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+								     /*copy_donor_p*/true,/*copy_acceptor_p*/true,/*copy_shortexon_p*/true,
+								     splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+
+	    } else if (Intlist_length(donor_amb_nmismatches) > 1 && Intlist_length(acceptor_amb_nmismatches) == 1) {
+	      if (sensedir == SENSE_FORWARD) {
+		ambcoords_left = donor_ambcoords; amb_knowni_left = donor_amb_knowni; amb_nmismatches_left = donor_amb_nmismatches;
+		ambcoords_right = NULL;
+		amb_knowni_right = amb_nmismatches_right = NULL;
+	      } else if (sensedir == SENSE_ANTI) {
+		ambcoords_right = donor_ambcoords; amb_knowni_right = donor_amb_knowni; amb_nmismatches_right = donor_amb_nmismatches;
+		ambcoords_left = NULL;
+		amb_knowni_left = amb_nmismatches_left = NULL;
+	      } else {
+		abort();
+	      }
+
+	      donor_distance = Substring_splicecoord_D(shortexon) - Substring_splicecoord(acceptor);
+	      if (donor_distance < 0) {
+		donor_distance = -donor_distance;
+	      }
+	      hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,acceptor,shortexon,
+								     /*acceptor_distance*/0U,donor_distance,
+								     /*amb_nmatches_donor*/Substring_nmismatches_whole(donor),/*amb_nmatches_acceptor*/0,
+								     ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								     amb_nmismatches_left,amb_nmismatches_right,
+								     /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*copy_shortexon_p*/true,
+								     splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+
+	    } else if (Intlist_length(donor_amb_nmismatches) == 1 && Intlist_length(acceptor_amb_nmismatches) > 1) {
+	      if (sensedir == SENSE_FORWARD) {
+		ambcoords_right = acceptor_ambcoords; amb_knowni_right = acceptor_amb_knowni; amb_nmismatches_right = acceptor_amb_nmismatches;
+		ambcoords_left = NULL;
+		amb_knowni_left = amb_nmismatches_left = NULL;
+	      } else if (sensedir == SENSE_ANTI) {
+		ambcoords_left = acceptor_ambcoords; amb_knowni_left = acceptor_amb_knowni; amb_nmismatches_left = acceptor_amb_nmismatches;
+		ambcoords_right = NULL;
+		amb_knowni_right = amb_nmismatches_right = NULL;
+	      } else {
+		abort();
+	      }
+
+	      acceptor_distance = Substring_splicecoord_A(shortexon) - Substring_splicecoord(donor);
+	      if (acceptor_distance < 0) {
+		acceptor_distance = -acceptor_distance;
+	      }
+	      hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,/*acceptor*/NULL,shortexon,
+								     acceptor_distance,/*donor_distance*/0U,
+								     /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/Substring_nmismatches_whole(acceptor),
+								     ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								     amb_nmismatches_left,amb_nmismatches_right,
+								     /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*copy_shortexon_p*/true,
+								     splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+	    } else {
+	      if (sensedir == SENSE_FORWARD) {
+		ambcoords_left = donor_ambcoords; amb_knowni_left = donor_amb_knowni; amb_nmismatches_left = donor_amb_nmismatches;
+		ambcoords_right = acceptor_ambcoords; amb_knowni_right = acceptor_amb_knowni; amb_nmismatches_right = acceptor_amb_nmismatches;
+	      } else if (sensedir == SENSE_ANTI) {
+		ambcoords_left = acceptor_ambcoords; amb_knowni_left = acceptor_amb_knowni; amb_nmismatches_left = acceptor_amb_nmismatches;
+		ambcoords_right = donor_ambcoords; amb_knowni_right = donor_amb_knowni; amb_nmismatches_right = donor_amb_nmismatches;
+	      } else {
+		abort();
+	      }
+
+	      hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,/*acceptor*/NULL,shortexon,
+								     /*acceptor_distance*/0U,/*donor_distance*/0U,
+								     /*amb_nmatches_donor*/Substring_nmismatches_whole(donor),
+								     /*amb_nmatches_acceptor*/Substring_nmismatches_whole(acceptor),
+								     ambcoords_left,ambcoords_right,amb_knowni_left,amb_knowni_right,
+								     amb_nmismatches_left,amb_nmismatches_right,
+								     /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/true,
+								     splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+	    }
+
+	    for (p = spliceends; p != NULL; p = List_next(p)) {
+	      hit = (Stage3end_T) List_head(p);
+	      Stage3end_free(&hit);
+	    }
+	    List_free(&spliceends);
+
+#ifdef LARGE_GENOMES
+	    Uint8list_free(&donor_ambcoords);
+	    Uint8list_free(&acceptor_ambcoords);
+#else
+	    Uintlist_free(&donor_ambcoords);
+	    Uintlist_free(&acceptor_ambcoords);
+#endif
+	    Intlist_free(&donor_amb_knowni);
+	    Intlist_free(&acceptor_amb_knowni);
+	    Intlist_free(&donor_amb_nmismatches);
+	    Intlist_free(&acceptor_amb_nmismatches);
+	  }
+	}
+      }
+
+
+      /* Short exon using known splicing, originally on plus strand */
+      if (shortexon_orig_plusp == true) {
+	debug4k(printf("Short exon candidate, orig_plusp.  Saw short exon acceptor...donor on segment i\n"));
+	sensep = (plusp == true) ? true : false;
+	sensedir = (plusp == true) ? SENSE_FORWARD : SENSE_ANTI;
+
+	for (j1 = joffset; j1 < j; j1++) {
+	  if (splicetypes[j1] == ACCEPTOR) {
+	    leftpos = splicesites[j1] - segmentm_left;
+	    debug4k(printf("  Doing Splicetrie_find_left from leftpos %d (plus)\n",leftpos));
+	    if ((splicesites_i_left =
+		 Splicetrie_find_left(&nmismatches_shortexon_left,&nmismatches_list_left,j1,
+				      /*origleft*/segmentm_left,/*pos5*/0,/*pos3*/leftpos,segmentm->chroffset,
+				      query_compress,queryptr,querylength,max_mismatches_allowed,plusp,genestrand,first_read_p,
+				      /*collect_all_p*/pairedp == true && first_read_p != plusp)) != NULL) {
+	      ambp_left = (leftpos < min_shortend || Intlist_length(splicesites_i_left) > 1) ? true : false;
+
+	      for (j2 = j1 + 1; j2 < j; j2++) {
+		if (splicetypes[j2] == DONOR && splicesites[j2] > splicesites[j1]) {
+		  rightpos = splicesites[j2] - segmentm_left;
+		  debug4k(printf("  Doing Splicetrie_find_right from rightpos %d (plus)\n",rightpos));
+		  if ((nmismatches_shortexon_middle =
+		       Genome_count_mismatches_substring(query_compress,segmentm_left,/*pos5*/leftpos,/*pos3*/rightpos,
+							 plusp,genestrand,first_read_p)) <= max_mismatches_allowed - nmismatches_shortexon_left &&
+		      (splicesites_i_right =
+		       Splicetrie_find_right(&nmismatches_shortexon_right,&nmismatches_list_right,j2,
+					     /*origleft*/segmentm_left,/*pos5*/rightpos,/*pos3*/querylength,segmentm->chrhigh,
+					     query_compress,queryptr,
+					     max_mismatches_allowed - nmismatches_shortexon_left - nmismatches_shortexon_middle,
+					     plusp,genestrand,first_read_p,
+					     /*collect_all_p*/pairedp == true && first_read_p == plusp)) != NULL) {
+		    ambp_right = (querylength - rightpos < min_shortend || Intlist_length(splicesites_i_right) > 1) ? true : false;
+
+		    debug4k(printf("  donor %s ... acceptor %d (%lu) ... donor %d (%lu) ... acceptor %s: %d + %d + %d mismatches\n",
+				   Intlist_to_string(splicesites_i_left),j1,splicesites[j1],j2,splicesites[j2],Intlist_to_string(splicesites_i_right),
+				   nmismatches_shortexon_left,nmismatches_shortexon_middle,nmismatches_shortexon_right));
+
+		    if (ambp_left == true && ambp_right == true) {
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j1],/*acceptor_knowni*/j1,
+							  /*donor_coord*/splicesites[j2],/*donor_knowni*/j2,
+							  /*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
+							  nmismatches_shortexon_middle,
+							  /*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/true,/*donor_ambp*/true,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+		      if (shortexon != NULL) {
+			debug4k(printf("New one-third shortexon at left %lu\n",segmentm_left));
+			ambcoords_left = lookup_splicesites(splicesites_i_left,splicesites);
+			ambcoords_right = lookup_splicesites(splicesites_i_right,splicesites);
+			amb_nmatches_donor = leftpos - nmismatches_shortexon_left;
+			amb_nmatches_acceptor = querylength - rightpos - nmismatches_shortexon_right;
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,/*acceptor*/NULL,shortexon,
+									       /*acceptor_distance*/0U,/*donor_distance*/0U,
+									       amb_nmatches_donor,amb_nmatches_acceptor,
+									       ambcoords_left,ambcoords_right,
+									       /*amb_knowni_left*/splicesites_i_left,/*amb_knowni_right*/splicesites_i_right,
+									       nmismatches_list_left,nmismatches_list_right,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+			Uint8list_free(&ambcoords_right);
+			Uint8list_free(&ambcoords_left);
+#else
+			Uintlist_free(&ambcoords_right);
+			Uintlist_free(&ambcoords_left);
+#endif
+		      }
+
+		    } else if (ambp_left == true && ambp_right == false) {
+		      debug4k(printf("ambp_left true, ambp_right false\n"));
+		      best_right_j = Intlist_head(splicesites_i_right);
+
+		      debug4k(printf("shortexon with amb_acceptor at %d (%lu) ... donor at %d (%lu)\n",
+				     j1,splicesites[j1],j2,splicesites[j2]));
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j1],/*acceptor_knowni*/j1,
+							  /*donor_coord*/splicesites[j2],/*donor_knowni*/j2,
+							  /*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
+							  nmismatches_shortexon_middle,
+							  /*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/true,/*donor_ambp*/false,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      debug4k(printf("acceptor at %d (%lu)\n",best_right_j,splicesites[best_right_j]));
+		      acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[best_right_j],/*acceptor_knowni*/best_right_j,
+							/*splice_pos*/rightpos,nmismatches_shortexon_right,
+							/*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
+							query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+							segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      if (shortexon == NULL || acceptor == NULL) {
+			if (shortexon != NULL) Substring_free(&shortexon);
+			if (acceptor != NULL) Substring_free(&acceptor);
+		      } else {
+			debug4k(printf("ambp_left true, ambp_right false: New two-thirds shortexon at left %lu\n",segmentm_left));
+			ambcoords_left = lookup_splicesites(splicesites_i_left,splicesites);
+			amb_nmatches_donor = leftpos - nmismatches_shortexon_left;
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,acceptor,shortexon,
+									       /*acceptor_distance*/0U,
+									       /*donor_distance*/splicesites[best_right_j]-splicesites[j2],
+									       amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
+									       ambcoords_left,/*ambcoords_right*/NULL,
+									       /*amb_knowni_left*/splicesites_i_left,/*amb_knowni_right*/NULL,
+									       nmismatches_list_left,/*amb_nmismatches_right*/NULL,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+			Uint8list_free(&ambcoords_left);
+#else
+			Uintlist_free(&ambcoords_left);
+#endif
+		      }
+
+		    } else if (ambp_left == false && ambp_right == true) {
+		      debug4k(printf("ambp_left false, ambp_right true\n"));
+		      best_left_j = Intlist_head(splicesites_i_left);
+
+		      debug4k(printf("donor at %d (%lu)\n",best_left_j,splicesites[best_left_j]));
+		      donor = Substring_new_donor(/*donor_coord*/splicesites[best_left_j],/*donor_knowni*/best_left_j,
+						  /*splice_pos*/leftpos,nmismatches_shortexon_left,
+						  /*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
+						  query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+						  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      debug4k(printf("shortexon with acceptor at %d (%lu) ... amb_donor %d (%lu)\n",
+				     j1,splicesites[j1],j2,splicesites[j2]));
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j1],/*acceptor_knowni*/j1,
+							  /*donor_coord*/splicesites[j2],/*donor_knowni*/j2,
+							  /*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
+							  nmismatches_shortexon_middle,
+							  /*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/false,/*donor_ambp*/true,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      if (donor == NULL || shortexon == NULL) {
+			if (donor != NULL) Substring_free(&donor);
+			if (shortexon != NULL) Substring_free(&shortexon);
+		      } else {
+			ambcoords_right = lookup_splicesites(splicesites_i_right,splicesites);
+			amb_nmatches_acceptor = querylength - rightpos - nmismatches_shortexon_right;
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,/*acceptor*/NULL,shortexon,
+									       /*acceptor_distance*/splicesites[j1]-splicesites[best_left_j],
+									       /*donor_distance*/0U,
+									       /*amb_nmatches_donor*/0,amb_nmatches_acceptor,
+									       /*ambcoords_left*/NULL,ambcoords_right,
+									       /*amb_knowni_left*/NULL,/*amb_knowni_right*/splicesites_i_right,
+									       /*amb_nmismatches_left*/NULL,nmismatches_list_right,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+			Uint8list_free(&ambcoords_right);
+#else
+			Uintlist_free(&ambcoords_right);
+#endif
+		      }
+
+
+		    } else { /* ambp_left == false && ambp_right == false */
+		      debug4k(printf("ambp_left false, ambp_right false\n"));
+		      best_left_j = Intlist_head(splicesites_i_left);
+		      best_right_j = Intlist_head(splicesites_i_right);
+		      donor = Substring_new_donor(/*donor_coord*/splicesites[best_left_j],/*donor_knowni*/best_left_j,
+						  /*splice_pos*/leftpos,nmismatches_shortexon_left,
+						  /*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
+						  query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+						  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j1],/*acceptor_knowni*/j1,
+							  /*donor_coord*/splicesites[j2],/*donor_knowni*/j2,
+							  /*acceptor_pos*/leftpos,/*donor_pos*/rightpos,
+							  nmismatches_shortexon_middle,/*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+		      
+		      acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[best_right_j],/*acceptor_knowni*/best_right_j,
+							/*splice_pos*/rightpos,nmismatches_shortexon_right,
+							/*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
+							query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+							segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      if (donor == NULL || shortexon == NULL || acceptor == NULL) {
+			if (donor != NULL) Substring_free(&donor);
+			if (shortexon != NULL) Substring_free(&shortexon);
+			if (acceptor != NULL) Substring_free(&acceptor);
+		      } else {
+			debug4k(printf("New shortexon at left %lu\n",segmentm_left));
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+									       /*acceptor_distance*/splicesites[j1]-splicesites[best_left_j],
+									       /*donor_distance*/splicesites[best_right_j]-splicesites[j2],
+									       /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+									       /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									       /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+									       /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+		      }
+		    }
+		    Intlist_free(&nmismatches_list_right);
+		    Intlist_free(&splicesites_i_right);
+		  }
+		}
+	      }
+	      Intlist_free(&nmismatches_list_left);
+	      Intlist_free(&splicesites_i_left);
+	    }
+	  }
+	}
+	debug4k(printf("End of case 1\n"));
+      }
+
+      /* Short exon using known splicing, originally on minus strand */
+      if (shortexon_orig_minusp == true) {
+	debug4k(printf("Short exon candidate, orig_minusp.  Saw short exon antidonor...antiacceptor on segment i\n"));
+	sensep = (plusp == true) ? false : true;
+	sensedir = (plusp == true) ? SENSE_ANTI : SENSE_FORWARD;
+
+	for (j1 = joffset; j1 < j; j1++) {
+	  if (splicetypes[j1] == ANTIDONOR) {
+	    leftpos = splicesites[j1] - segmentm_left;
+	    debug4k(printf("  Doing Splicetrie_find_left from leftpos %d (minus)\n",leftpos));
+	    if ((splicesites_i_left =
+		 Splicetrie_find_left(&nmismatches_shortexon_left,&nmismatches_list_left,j1,
+				      /*origleft*/segmentm_left,/*pos5*/0,/*pos3*/leftpos,segmentm->chroffset,
+				      query_compress,queryptr,querylength,max_mismatches_allowed,
+				      plusp,genestrand,first_read_p,
+				      /*collect_all_p*/pairedp == true && first_read_p != plusp)) != NULL) {
+	      ambp_left = (leftpos < min_shortend || Intlist_length(splicesites_i_left) > 1) ? true : false;
+	      
+	      for (j2 = j1 + 1; j2 < j; j2++) {
+		if (splicetypes[j2] == ANTIACCEPTOR && splicesites[j2] > splicesites[j1]) {
+		  rightpos = splicesites[j2] - segmentm_left;
+		  debug4k(printf("  Doing Splicetrie_find_right from rightpos %d (minus)\n",rightpos));
+		  if ((nmismatches_shortexon_middle =
+		       Genome_count_mismatches_substring(query_compress,segmentm_left,/*pos5*/leftpos,/*pos3*/rightpos,
+							 plusp,genestrand,first_read_p)) <= max_mismatches_allowed - nmismatches_shortexon_left &&
+		      (splicesites_i_right =
+		       Splicetrie_find_right(&nmismatches_shortexon_right,&nmismatches_list_right,j2,
+					     /*origleft*/segmentm_left,/*pos5*/rightpos,/*pos3*/querylength,segmentm->chrhigh,
+					     query_compress,queryptr,
+					     max_mismatches_allowed - nmismatches_shortexon_left - nmismatches_shortexon_middle,
+					     plusp,genestrand,first_read_p,
+					     /*collect_all_p*/pairedp == true && first_read_p == plusp)) != NULL) {
+		    ambp_right = (querylength - rightpos < min_shortend || Intlist_length(splicesites_i_right) > 1) ? true : false;
+
+		    debug4k(printf("  antiacceptor %s ... antidonor %d (%lu) ... antiacceptor %d (%lu) ... antidonor %s: %d + %d + %d mismatches\n",
+				   Intlist_to_string(splicesites_i_left),j1,splicesites[j1],j2,splicesites[j2],Intlist_to_string(splicesites_i_right),
+				   nmismatches_shortexon_left,nmismatches_shortexon_middle,nmismatches_shortexon_right));
+
+		    if (ambp_left == true && ambp_right == true) {
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j2],/*acceptor_knowni*/j2,
+							  /*donor_coord*/splicesites[j1],/*donor_knowni*/j1,
+							  /*acceptor_pos*/rightpos,/*donor_pos*/leftpos,nmismatches_shortexon_middle,
+							  /*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/true,/*donor_ambp*/true,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+		      if (shortexon != NULL) {
+			debug4k(printf("New one-third shortexon at left %lu\n",segmentm_left));
+			ambcoords_left = lookup_splicesites(splicesites_i_left,splicesites);
+			ambcoords_right = lookup_splicesites(splicesites_i_right,splicesites);
+			amb_nmatches_donor = querylength - rightpos - nmismatches_shortexon_right;
+			amb_nmatches_acceptor = leftpos - nmismatches_shortexon_left;
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,/*acceptor*/NULL,shortexon,
+									       /*acceptor_distance*/0U,/*donor_distance*/0U,
+									       amb_nmatches_donor,amb_nmatches_acceptor,
+									       ambcoords_left,ambcoords_right,
+									       /*amb_knowni_left*/splicesites_i_left,/*amb_knowni_right*/splicesites_i_right,
+									       nmismatches_list_left,nmismatches_list_right,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+			Uint8list_free(&ambcoords_right);
+			Uint8list_free(&ambcoords_left);
+#else
+			Uintlist_free(&ambcoords_right);
+			Uintlist_free(&ambcoords_left);
+#endif
+		      }
+
+		    } else if (ambp_left == true && ambp_right == false) {
+		      debug4k(printf("ambp_left true, ambp_right false\n"));
+		      best_right_j = Intlist_head(splicesites_i_right);
+
+		      debug4k(printf("shortexon with amb_donor at %d (%lu) ... acceptor at %d (%lu)\n",
+				     j1,splicesites[j1],j2,splicesites[j2]));
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j2],/*acceptor_knowni*/j2,
+							  /*donor_coord*/splicesites[j1],/*donor_knowni*/j1,
+							  /*acceptor_pos*/rightpos,/*donor_pos*/leftpos,nmismatches_shortexon_middle,
+							  /*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/false,/*donor_ambp*/true,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      debug4k(printf("donor at %d (%lu)\n",best_right_j,splicesites[best_right_j]));
+		      donor = Substring_new_donor(/*donor_coord*/splicesites[best_right_j],/*donor_knowni*/best_right_j,
+						  /*splice_pos*/rightpos,nmismatches_shortexon_right,
+						  /*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
+						  query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+						  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      if (donor == NULL || shortexon == NULL) {
+			if (donor != NULL) Substring_free(&donor);
+			if (shortexon != NULL) Substring_free(&shortexon);
+		      } else {
+			ambcoords_left = lookup_splicesites(splicesites_i_left,splicesites);
+			amb_nmatches_acceptor = leftpos - nmismatches_shortexon_left;
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,/*acceptor*/NULL,shortexon,
+									       /*acceptor_distance*/splicesites[best_right_j]-splicesites[j2],
+									       /*donor_distance*/0U,
+									       /*amb_nmatches_donor*/0,amb_nmatches_acceptor,
+									       ambcoords_left,/*ambcoords_right*/NULL,
+									       /*amb_knowni_left*/splicesites_i_left,/*amb_knowni_right*/NULL,
+									       nmismatches_list_left,/*amb_nmismatches_right*/NULL,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+			Uint8list_free(&ambcoords_left);
+#else
+			Uintlist_free(&ambcoords_left);
+#endif
+		      }
+
+		    } else if (ambp_left == false && ambp_right == true) {
+		      debug4k(printf("ambp_left false, ambp_right true\n"));
+		      best_left_j = Intlist_head(splicesites_i_left);
+
+		      debug4k(printf("acceptor at %d (%lu)\n",best_left_j,splicesites[best_left_j]));
+		      acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[best_left_j],/*acceptor_knowni*/best_left_j,
+							/*splice_pos*/leftpos,nmismatches_shortexon_left,
+							/*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
+							query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+							segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      debug4k(printf("shortexon with donor at %d (%lu) ... amb_acceptor at %d (%lu)\n",
+				     j2,splicesites[j2],j1,splicesites[j1]));
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j2],/*acceptor_knowni*/j2,
+							  /*donor_coord*/splicesites[j1],/*donor_knowni*/j1,
+							  /*acceptor_pos*/rightpos,/*donor_pos*/leftpos,nmismatches_shortexon_middle,
+							  /*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/true,/*donor_ambp*/false,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      if (shortexon == NULL || acceptor == NULL) {
+			if (shortexon != NULL) Substring_free(&shortexon);
+			if (acceptor != NULL) Substring_free(&acceptor);
+		      } else {
+			debug4k(printf("ambp_left false, ambp_right true: New splice at left %lu\n",segmentm_left));
+			ambcoords_right = lookup_splicesites(splicesites_i_right,splicesites);
+			amb_nmatches_donor = querylength - rightpos - nmismatches_shortexon_right;
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),/*donor*/NULL,acceptor,shortexon,
+									       /*acceptor_distance*/0U,
+									       /*donor_distance*/splicesites[j1]-splicesites[best_left_j],
+									       amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
+									       /*ambcoords_left*/NULL,ambcoords_right,
+									       /*amb_knowni_left*/NULL,/*amb_knowni_right*/splicesites_i_right,
+									       /*amb_nmismatches_left*/NULL,nmismatches_list_right,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+			Uint8list_free(&ambcoords_right);
+#else
+			Uintlist_free(&ambcoords_right);
+#endif
+		      }
+
+		    } else {  /* ambp_left == false && ambp_right == false */
+		      best_left_j = Intlist_head(splicesites_i_left);
+		      best_right_j = Intlist_head(splicesites_i_right);
+		      acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[best_left_j],/*acceptor_knowni*/best_left_j,
+							/*splice_pos*/leftpos,nmismatches_shortexon_left,
+							/*prob*/2.0,/*left*/splicesites[best_left_j]-leftpos,
+							query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+							segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      shortexon = Substring_new_shortexon(/*acceptor_coord*/splicesites[j2],/*acceptor_knowni*/j2,
+							  /*donor_coord*/splicesites[j1],/*donor_knowni*/j1,
+							  /*acceptor_pos*/rightpos,/*donor_pos*/leftpos,
+							  nmismatches_shortexon_middle,/*acceptor_prob*/2.0,/*donor_prob*/2.0,
+							  /*left*/segmentm_left,query_compress,
+							  querylength,plusp,genestrand,first_read_p,
+							  sensep,/*acceptor_ambp*/false,/*donor_ambp*/false,
+							  segmentm->chrnum,segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      donor = Substring_new_donor(/*donor_coord*/splicesites[best_right_j],/*donor_knowni*/best_right_j,
+						  /*splice_pos*/rightpos,nmismatches_shortexon_right,
+						  /*prob*/2.0,/*left*/splicesites[best_right_j]-rightpos,
+						  query_compress,querylength,plusp,genestrand,first_read_p,sensep,segmentm->chrnum,
+						  segmentm->chroffset,segmentm->chrhigh,segmentm->chrlength);
+
+		      if (acceptor == NULL || shortexon == NULL || donor == NULL) {
+			if (acceptor != NULL) Substring_free(&acceptor);
+			if (shortexon != NULL) Substring_free(&shortexon);
+			if (donor != NULL) Substring_free(&donor);
+		      } else {
+			debug4k(printf("New shortexon at left %lu\n",segmentm_left));
+			segmentm->usedp = true;
+			hits = List_push(hits,(void *) Stage3end_new_shortexon(&(*found_score),donor,acceptor,shortexon,
+									       /*acceptor_distance*/splicesites[best_right_j]-splicesites[j2],
+									       /*donor_distance*/splicesites[j1]-splicesites[best_left_j],
+									       /*amb_nmatches_donor*/0,/*amb_nmatches_acceptor*/0,
+									       /*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									       /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
+									       /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+									       /*copy_donor_p*/false,/*copy_acceptor_p*/false,/*copy_shortexon_p*/false,
+									       splicing_penalty,querylength,sensedir,/*sarrayp*/false));
+		      }
+		    }
+		    Intlist_free(&nmismatches_list_right);
+		    Intlist_free(&splicesites_i_right);
+		  }
+		}
 	      }
+	      Intlist_free(&nmismatches_list_left);
+	      Intlist_free(&splicesites_i_left);
 	    }
 	  }
 	}
+	debug4k(printf("End of case 2\n"));
       }
+      /* End of known splicesites, segment i */
     }
   }
 
+  debug4k(printf("Finished find_known_doublesplices with %d hits\n",List_length(hits)));
   return hits;
 }
-#endif
+
+
 
 
 static void
@@ -9657,7 +8356,7 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 			  char *queryptr,
 #endif
 			  Floors_T floors, int querylength, int query_lastpos, Compress_T query_compress,
-			  int max_mismatches_allowed, bool plusp, int genestrand) {
+			  int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p) {
 #ifdef DEBUG4E
   char *gbuffer;
 #endif
@@ -9709,7 +8408,7 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	  /* pos3 was trimpos */
 	  nmismatches_left = Genome_mismatches_left(mismatch_positions,max_mismatches_allowed,
 						    query_compress,/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-						    plusp,genestrand);
+						    plusp,genestrand,first_read_p);
 
 	  debug4e(
 		  printf("%d mismatches on left (%d allowed) at:",
@@ -9749,7 +8448,8 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	      nmismatches++;
 	    }
 #if 0
-	    assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/0,/*pos3*/splice_pos,plusp,genestrand));
+	    assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/0,/*pos3*/splice_pos,
+								    plusp,genestrand,first_read_p));
 #endif
 	    if (nmismatches > max_mismatches_allowed) {
 	      debug4e(printf("nmismatches %d > max_mismatches_allowed %d\n",nmismatches,max_mismatches_allowed));
@@ -9758,9 +8458,10 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	      debug4e(printf("Known donor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 			     segment_left,splice_pos,nmismatches,splice_pos_end));
 	      sensep = (plusp == true) ? true : false;
-	      if ((hit = Substring_new_donor(j,/*joffset*/0,splice_pos,nmismatches,
+	      if ((hit = Substring_new_donor(/*donor_coord*/splicesites[j],/*donor_knowni*/j,splice_pos,nmismatches,
 					     /*prob*/2.0,/*left*/segment_left,query_compress,
-					     querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+					     querylength,plusp,genestrand,first_read_p,
+					     sensep,segment->chrnum,segment->chroffset,
 					     segment->chrhigh,segment->chrlength)) != NULL) {
 		debug4e(printf("=> %s donor: known at %d (%d mismatches)\n",
 			       plusp == true ? "plus" : "minus",Substring_chimera_pos(hit),nmismatches));
@@ -9772,9 +8473,10 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	      debug4e(printf("Known antiacceptor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 			     segment_left,splice_pos,nmismatches,splice_pos_end));
 	      sensep = (plusp == true) ? false : true;
-	      if ((hit = Substring_new_acceptor(j,/*joffset*/0,splice_pos,nmismatches,
-						/*prob*/2.0,/*left*/segment_left,query_compress,
-						querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+	      if ((hit = Substring_new_acceptor(/*acceptor_coord*/splicesites[j],/*acceptor_knowni*/j,
+						splice_pos,nmismatches,/*prob*/2.0,/*left*/segment_left,query_compress,
+						querylength,plusp,genestrand,first_read_p,
+						sensep,segment->chrnum,segment->chroffset,
 						segment->chrhigh,segment->chrlength)) != NULL) {
 		debug4e(printf("=> %s antiacceptor : known at %d (%d mismatches)\n",
 			       plusp == true ? "plus" : "minus",Substring_chimera_pos(hit),nmismatches));
@@ -9791,7 +8493,7 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	  /* pos5 was trimpos+1 */
 	  nmismatches_right = Genome_mismatches_right(mismatch_positions,max_mismatches_allowed,
 						      query_compress,/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-						      plusp,genestrand);
+						      plusp,genestrand,first_read_p);
 
 	  debug4e(
 		  printf("%d mismatches on right (%d allowed) at:",nmismatches_right,max_mismatches_allowed);
@@ -9829,7 +8531,8 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	      nmismatches++;
 	    }
 #if 0
-	    assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/splice_pos,/*pos3*/querylength,plusp,genestrand));
+	    assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/splice_pos,/*pos3*/querylength,
+								    plusp,genestrand,first_read_p));
 #endif
 	    if (nmismatches > max_mismatches_allowed) {
 	      debug4e(printf("nmismatches %d > max_mismatches_allowed %d\n",nmismatches,max_mismatches_allowed));
@@ -9838,9 +8541,10 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	      debug4e(printf("Known acceptor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 			     segment_left,splice_pos,nmismatches,splice_pos_start));
 	      sensep = (plusp == true) ? true : false;
-	      if ((hit = Substring_new_acceptor(j,/*joffset*/0,splice_pos,nmismatches,
-						/*prob*/2.0,/*left*/segment_left,query_compress,
-						querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+	      if ((hit = Substring_new_acceptor(/*acceptor_coord*/splicesites[j],/*acceptor_knowni*/j,
+						splice_pos,nmismatches,/*prob*/2.0,/*left*/segment_left,query_compress,
+						querylength,plusp,genestrand,first_read_p,
+						sensep,segment->chrnum,segment->chroffset,
 						segment->chrhigh,segment->chrlength)) != NULL) {
 		debug4e(printf("=> %s acceptor: known at %d (%d mismatches)\n",
 			       plusp == true ? "plus" : "minus",Substring_chimera_pos(hit),nmismatches));
@@ -9852,9 +8556,10 @@ find_spliceends_shortend (List_T **shortend_donors, List_T **shortend_antidonors
 	      debug4e(printf("Known antidonor for segmenti at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 			     segment_left,splice_pos,nmismatches,splice_pos_start));
 	      sensep = (plusp == true) ? false : true;
-	      if ((hit = Substring_new_donor(j,/*joffset*/0,splice_pos,nmismatches,
+	      if ((hit = Substring_new_donor(/*donor_coord*/splicesites[j],/*donor_knowni*/j,splice_pos,nmismatches,
 					     /*prob*/2.0,/*left*/segment_left,query_compress,
-					     querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+					     querylength,plusp,genestrand,first_read_p,
+					     sensep,segment->chrnum,segment->chroffset,
 					     segment->chrhigh,segment->chrlength)) != NULL) {
 		debug4e(printf("=> %s antidonor: known at %d (%d mismatches)\n",
 			       plusp == true ? "plus" : "minus",Substring_chimera_pos(hit),nmismatches));
@@ -9879,7 +8584,7 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 			 char *queryptr,
 #endif
 			 Floors_T floors, int querylength, int query_lastpos, Compress_T query_compress,
-			 int max_mismatches_allowed, bool plusp, int genestrand) {
+			 int max_mismatches_allowed, bool plusp, int genestrand, bool first_read_p) {
 #ifdef DEBUG4E
   char *gbuffer;
 #endif
@@ -9940,7 +8645,7 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 	  /* pos3 was trimpos */
 	  nmismatches_left = Genome_mismatches_left(mismatch_positions,max_mismatches_allowed,
 						    query_compress,/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-						    plusp,genestrand);
+						    plusp,genestrand,first_read_p);
 
 	  debug4e(
 		  printf("%d mismatches on left (%d allowed) at:",
@@ -10011,16 +8716,18 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 	      }
 	      debug4e(printf(" splice pos %d, nmismatches %d\n",splice_pos,nmismatches));
 #if 0
-	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/0,/*pos3*/splice_pos,plusp,genestrand));
+	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/0,/*pos3*/splice_pos,
+								      plusp,genestrand,first_read_p));
 #endif
 	      if (nmismatches <= max_mismatches_allowed) {
 		if (donori_knowni[i] >= 0) {
 		  debug4e(printf("Known donor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				 segment_left,splice_pos,nmismatches,splice_pos_end));
 		
-		  if ((hit = Substring_new_donor(donori_knowni[i],/*joffset*/0,splice_pos,nmismatches,
-						 /*prob*/2.0,/*left*/segment_left,query_compress,
-						 querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		  if ((hit = Substring_new_donor(/*donor_coord*/segment_left + splice_pos,/*donor_knowni*/donori_knowni[i],
+						 splice_pos,nmismatches,/*prob*/2.0,/*left*/segment_left,query_compress,
+						 querylength,plusp,genestrand,first_read_p,
+						 sensep,segment->chrnum,segment->chroffset,
 						 segment->chrhigh,segment->chrlength)) != NULL) {
 		    debug4e(printf("=> %s donor: %f at %d (%d mismatches)\n",
 				   plusp == true ? "plus" : "minus",Maxent_hr_donor_prob(segment_left + splice_pos,segment->chroffset),
@@ -10036,9 +8743,10 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 		  if (sufficient_splice_prob_distant(/*support*/splice_pos,nmismatches,prob)) {
 		    debug4e(printf("Novel donor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				   segment_left,splice_pos,nmismatches,splice_pos_end));
-		    if ((hit = Substring_new_donor(/*knowni*/-1,/*joffset*/0,splice_pos,nmismatches,
-						   prob,/*left*/segment_left,query_compress,
-						   querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		    if ((hit = Substring_new_donor(/*donor_coord*/segment_left + splice_pos,/*donor_knowni*/-1,
+						   splice_pos,nmismatches,prob,/*left*/segment_left,query_compress,
+						   querylength,plusp,genestrand,first_read_p,
+						   sensep,segment->chrnum,segment->chroffset,
 						   segment->chrhigh,segment->chrlength)) != NULL) {
 		      debug4e(printf("=> %s donor: %f at %d (%d mismatches)\n",
 				     plusp == true ? "plus" : "minus",prob,Substring_chimera_pos(hit),nmismatches));
@@ -10084,15 +8792,17 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 	      }
 	      debug4e(printf(" splice pos %d, nmismatches %d\n",splice_pos,nmismatches));
 #if 0
-	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/0,/*pos3*/splice_pos,plusp,genestrand));
+	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/0,/*pos3*/splice_pos,
+								      plusp,genestrand,first_read_p));
 #endif
 	      if (nmismatches <= max_mismatches_allowed) {
 		if (antiacceptori_knowni[i] >= 0) {
 		  debug4e(printf("Known antiacceptor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				 segment_left,splice_pos,nmismatches,splice_pos_end));
-		  if ((hit = Substring_new_acceptor(antiacceptori_knowni[i],/*joffset*/0,splice_pos,nmismatches,
-						    /*prob*/2.0,/*left*/segment_left,query_compress,
-						    querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		  if ((hit = Substring_new_acceptor(/*acceptor_coord*/segment_left + splice_pos,/*acceptor_knowni*/antiacceptori_knowni[i],
+						    splice_pos,nmismatches,/*prob*/2.0,/*left*/segment_left,query_compress,
+						    querylength,plusp,genestrand,first_read_p,
+						    sensep,segment->chrnum,segment->chroffset,
 						    segment->chrhigh,segment->chrlength)) != NULL) {
 		    debug4e(printf("=> %s antiacceptor : %f at %d (%d mismatches)\n",
 				   plusp == true ? "plus" : "minus",Maxent_hr_antiacceptor_prob(segment_left + splice_pos,segment->chroffset),
@@ -10108,9 +8818,10 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 		  if (sufficient_splice_prob_distant(/*support*/splice_pos,nmismatches,prob)) {
 		    debug4e(printf("Novel antiacceptor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				   segment_left,splice_pos,nmismatches,splice_pos_end));
-		    if ((hit = Substring_new_acceptor(/*knowni*/-1,/*joffset*/0,splice_pos,nmismatches,
-						      prob,/*left*/segment_left,query_compress,
-						      querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		    if ((hit = Substring_new_acceptor(/*acceptor_coord*/segment_left + splice_pos,/*acceptor_knowni*/-1,
+						      splice_pos,nmismatches,prob,/*left*/segment_left,query_compress,
+						      querylength,plusp,genestrand,first_read_p,
+						      sensep,segment->chrnum,segment->chroffset,
 						      segment->chrhigh,segment->chrlength)) != NULL) {
 		      debug4e(printf("=> %s antiacceptor : %f at %d (%d mismatches)\n",
 				     plusp == true ? "plus" : "minus",prob,Substring_chimera_pos(hit),nmismatches));
@@ -10134,7 +8845,7 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 	  /* pos5 was trimpos+1 */
 	  nmismatches_right = Genome_mismatches_right(mismatch_positions,max_mismatches_allowed,
 						      query_compress,/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-						      plusp,genestrand);
+						      plusp,genestrand,first_read_p);
 
 	  debug4e(
 		  printf("%d mismatches on right (%d allowed) at:",nmismatches_right,max_mismatches_allowed);
@@ -10206,15 +8917,17 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 	      }
 	      debug4e(printf(" splice pos %d, nmismatches %d\n",splice_pos,nmismatches));
 #if 0
-	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/splice_pos,/*pos3*/querylength,plusp,genestrand));
+	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/splice_pos,/*pos3*/querylength,
+								      plusp,genestrand,first_read_p));
 #endif
 	      if (nmismatches <= max_mismatches_allowed) {
 		if (acceptorj_knowni[i] >= 0) {
 		  debug4e(printf("Known acceptor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				 segment_left,splice_pos,nmismatches,splice_pos_start));
-		  if ((hit = Substring_new_acceptor(acceptorj_knowni[i],/*joffset*/0,splice_pos,nmismatches,
-						    /*prob*/2.0,/*left*/segment_left,query_compress,
-						    querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		  if ((hit = Substring_new_acceptor(/*acceptor_coord*/segment_left + splice_pos,/*acceptor_knowni*/acceptorj_knowni[i],
+						    splice_pos,nmismatches,/*prob*/2.0,/*left*/segment_left,query_compress,
+						    querylength,plusp,genestrand,first_read_p,
+						    sensep,segment->chrnum,segment->chroffset,
 						    segment->chrhigh,segment->chrlength)) != NULL) {
 		    debug4e(printf("=> %s acceptor: %f at %d (%d mismatches)\n",
 				   plusp == true ? "plus" : "minus",Maxent_hr_acceptor_prob(segment_left + splice_pos,segment->chroffset),
@@ -10230,9 +8943,10 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 		  if (sufficient_splice_prob_distant(/*support*/querylength - splice_pos,nmismatches,prob)) {
 		    debug4e(printf("Novel acceptor for segment at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				   segment_left,splice_pos,nmismatches,splice_pos_start));
-		    if ((hit = Substring_new_acceptor(/*knowni*/-1,/*joffset*/0,splice_pos,nmismatches,
-						      prob,/*left*/segment_left,query_compress,
-						      querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		    if ((hit = Substring_new_acceptor(/*acceptor_coord*/segment_left + splice_pos,/*acceptor_knowni*/-1,
+						      splice_pos,nmismatches,prob,/*left*/segment_left,query_compress,
+						      querylength,plusp,genestrand,first_read_p,
+						      sensep,segment->chrnum,segment->chroffset,
 						      segment->chrhigh,segment->chrlength)) != NULL) {
 		      debug4e(printf("=> %s acceptor: %f at %d (%d mismatches)\n",
 				     plusp == true ? "plus" : "minus",prob,Substring_chimera_pos(hit),nmismatches));
@@ -10278,15 +8992,17 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 	      }
 	      debug4e(printf(" splice pos %d, nmismatches %d\n",splice_pos,nmismatches));
 #if 0
-	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/splice_pos,/*pos3*/querylength,plusp,genestrand));
+	      assert(nmismatches == Genome_count_mismatches_substring(query_compress,segment_left,/*pos5*/splice_pos,/*pos3*/querylength,
+								      plusp,genestrand,first_read_p));
 #endif
 	      if (nmismatches <= max_mismatches_allowed) {
 		if (antidonorj_knowni[i] >= 0) {
 		  debug4e(printf("Known antidonor for segmenti at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				 segment_left,splice_pos,nmismatches,splice_pos_start));
-		  if ((hit = Substring_new_donor(antidonorj_knowni[i],/*joffset*/0,splice_pos,nmismatches,
-						 /*prob*/2.0,/*left*/segment_left,query_compress,
-						 querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		  if ((hit = Substring_new_donor(/*donor_coord*/segment_left + splice_pos,/*donor_knowni*/antidonorj_knowni[i],
+						 splice_pos,nmismatches,/*prob*/2.0,/*left*/segment_left,query_compress,
+						 querylength,plusp,genestrand,first_read_p,
+						 sensep,segment->chrnum,segment->chroffset,
 						 segment->chrhigh,segment->chrlength)) != NULL) {
 		    debug4e(printf("=> %s antidonor: %f at %d (%d mismatches)\n",
 				   plusp == true ? "plus" : "minus",Maxent_hr_antidonor_prob(segment_left + splice_pos,segment->chroffset),
@@ -10302,9 +9018,10 @@ find_spliceends_distant (List_T **distant_donors, List_T **distant_antidonors,
 		  if (sufficient_splice_prob_distant(/*support*/querylength - splice_pos,nmismatches,prob)) {
 		    debug4e(printf("Novel antidonor for segmenti at %lu, splice_pos %d (%d mismatches), stopi = %d\n",
 				   segment_left,splice_pos,nmismatches,splice_pos_start));
-		    if ((hit = Substring_new_donor(/*knowni*/-1,/*joffset*/0,splice_pos,nmismatches,
-						   prob,/*left*/segment_left,query_compress,
-						   querylength,plusp,genestrand,sensep,segment->chrnum,segment->chroffset,
+		    if ((hit = Substring_new_donor(/*donor_coord*/segment_left + splice_pos,/*donor_knowni*/-1,
+						   splice_pos,nmismatches,prob,/*left*/segment_left,query_compress,
+						   querylength,plusp,genestrand,first_read_p,
+						   sensep,segment->chrnum,segment->chroffset,
 						   segment->chrhigh,segment->chrlength)) != NULL) {
 		      debug4e(printf("=> %s antidonor: %f at %d (%d mismatches)\n",
 				     plusp == true ? "plus" : "minus",prob,Substring_chimera_pos(hit),nmismatches));
@@ -10339,12 +9056,12 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 #endif
 		Floors_T floors, int querylength, int query_lastpos,
 		Compress_T query_compress_fwd, Compress_T query_compress_rev,
-		int max_mismatches_allowed, int max_terminal_length,
-		int genestrand) {
+		int max_mismatches_allowed, int genestrand, bool first_read_p) {
 #ifdef DEBUG4T
   char *gbuffer;
 #endif
-  List_T terminals = NULL;
+  List_T plus_terminals_middle = NULL, plus_terminals_left = NULL, plus_terminals_right = NULL,
+    minus_terminals_middle = NULL, minus_terminals_left = NULL, minus_terminals_right = NULL, p;
   Segment_T segment;
   Stage3end_T hit;
   Univcoord_T segment_left;
@@ -10353,6 +9070,8 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 
   int mismatch_positions[MAX_READLENGTH+1];
   int *floors_from_neg3, *floors_to_pos3;
+  int max_terminal_length;
+  int nterminals_left, nterminals_right, nterminals_middle;
 
 #ifdef DEBUG4T
   int i;
@@ -10369,10 +9088,15 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 
     /* Needs to be /3 for long_terminals and short_terminals to work */
     max_terminal_length = querylength/3;
+    if (max_terminal_length < index1part) {
+      max_terminal_length = index1part;
+    }
   }
 
   if (plus_nsegments > 0) {
-    for (segment = plus_segments; segment < &(plus_segments[plus_nsegments]); segment++) {
+    nterminals_left = nterminals_right = nterminals_middle = 0;
+    for (segment = plus_segments; (nterminals_middle < MAX_NTERMINALS || nterminals_left < MAX_NTERMINALS || nterminals_right < MAX_NTERMINALS) &&
+	   segment < &(plus_segments[plus_nsegments]); segment++) {
       if (0 && segment->usedp == true) {
 	/* Previously skipped, but looks like a bad idea */
       } else if (segment->diagonal < (Univcoord_T) -1) {
@@ -10388,30 +9112,43 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 		FREE(gbuffer);
 		);
 
-	if (segment->querypos3 - segment->querypos5 > index1part) {
-	  debug4t(printf(" => ? Terminal based on querypos3 %d - querypos5 %d > index1part %d",
-			 segment->querypos3,segment->querypos5,index1part));
-	  start_endtype = (segment->querypos5 < index1interval) ? END : TERM;
-	  end_endtype = (segment->querypos3 >= query_lastpos - index1interval) ? END : TERM;
-	  debug4t(printf("  querypos3 %d vs index1interval %d => start_endtype %s\n",
-			 segment->querypos3,index1interval,Endtype_string(start_endtype)));
-	  debug4t(printf("  querypos5 %d vs query_lastpos %d - index1interval %d => end_endtype %s\n",
-			 segment->querypos5,query_lastpos,index1interval,Endtype_string(end_endtype)));
-
-	  if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*//*truncate_pos_left*/querylength,
-					    /*left*/segment_left,query_compress_fwd,
-					    querylength,/*plusp*/true,genestrand,start_endtype,end_endtype,
-					    segment->chrnum,segment->chroffset,
-					    segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-	    debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-	    terminals = List_push(terminals,(void *) hit);
+#ifdef ALLOW_MIDDLE_ALIGNMENTS
+	if (segment->querypos3 - segment->querypos5 > max_terminal_length /* was index1part */) {
+	  /* Check for middle section */
+	  debug4t(printf(" => ? Middle alignment based on querypos3 %d - querypos5 %d > max_terminal_length %d",
+			 segment->querypos3,segment->querypos5,max_terminal_length));
+	  if (nterminals_middle >= MAX_NTERMINALS) {
+	    /* Skip */
+	    debug4t(printf(" => Skipping because too many nterminals_middle"));
 	  } else {
-	    debug4t(printf(" => no"));
+	    start_endtype = (segment->querypos5 < index1interval) ? END : TERM;
+	    end_endtype = (segment->querypos3 >= query_lastpos - index1interval) ? END : TERM;
+	    debug4t(printf("  querypos3 %d vs index1interval %d => start_endtype %s\n",
+			   segment->querypos3,index1interval,Endtype_string(start_endtype)));
+	    debug4t(printf("  querypos5 %d vs query_lastpos %d - index1interval %d => end_endtype %s\n",
+			   segment->querypos5,query_lastpos,index1interval,Endtype_string(end_endtype)));
+
+	    if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*//*truncate_pos_left*/querylength,
+					      /*left*/segment_left,query_compress_fwd,
+					      querylength,/*plusp*/true,genestrand,first_read_p,
+					      start_endtype,end_endtype,segment->chrnum,segment->chroffset,
+					      segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+					      /*sarrayp*/false)) != NULL) {
+	      debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+	      plus_terminals_middle = List_push(plus_terminals_middle,(void *) hit);
+	      nterminals_middle += 1;
+	    } else {
+	      debug4t(printf(" => no"));
+	    }
 	  }
 	  debug4t(printf("\n"));
 
 	} else {
-	  if (segment->floor_left > max_mismatches_allowed) {
+#endif
+
+	  if (nterminals_left >= MAX_NTERMINALS) {
+	    /* Skip */
+	  } else if (segment->floor_left > max_mismatches_allowed) {
 	    debug4t(printf("Not checking left because floor_left %d > max_mismatches_allowed %d\n",
 			   segment->floor_left,max_mismatches_allowed));
 	  } else {
@@ -10421,7 +9158,7 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 
 	    nmismatches_left = Genome_mismatches_left(mismatch_positions,max_mismatches_allowed,
 						      query_compress_fwd,/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-						      /*plusp*/true,genestrand);
+						      /*plusp*/true,genestrand,first_read_p);
 	    
 	    debug4t(
 		    printf("%d mismatches on left at:",nmismatches_left);
@@ -10437,12 +9174,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_left,max_mismatches_allowed,mismatch_positions[nmismatches_left-1],querylength - max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*//*truncate_pos_left*/querylength,
 						/*left*/segment_left,query_compress_fwd,
-						querylength,/*plusp*/true,genestrand,
+						querylength,/*plusp*/true,genestrand,first_read_p,
 						/*start_endtype*/END,/*end_endtype*/TERM,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		plus_terminals_left = List_push(plus_terminals_left,(void *) hit);
+		nterminals_left += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10454,12 +9193,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 
 	      if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*//*truncate_pos_left*/querylength,
 						/*left*/segment_left,query_compress_fwd,
-						querylength,/*plusp*/true,genestrand,
+						querylength,/*plusp*/true,genestrand,first_read_p,
 						/*start_endtype*/END,/*end_endtype*/TERM,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		plus_terminals_left = List_push(plus_terminals_left,(void *) hit);
+		nterminals_left += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10468,7 +9209,9 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 	    }
 	  }
 
-	  if (segment->floor_right > max_mismatches_allowed) {
+	  if (nterminals_right >= MAX_NTERMINALS) {
+	    /* Skip */
+	  } else if (segment->floor_right > max_mismatches_allowed) {
 	    debug4t(printf("Not checking right because floor_right %d > max_mismatches_allowed %d\n",
 			   segment->floor_right,max_mismatches_allowed));
 	  } else {
@@ -10478,7 +9221,7 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 	    nmismatches_right = Genome_mismatches_right(mismatch_positions,max_mismatches_allowed,
 							/*query_compress*/query_compress_fwd,
 							/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-							/*plusp*/true,genestrand);
+							/*plusp*/true,genestrand,first_read_p);
 	    
 	    debug4t(
 		    printf("%d mismatches on right at:",nmismatches_right);
@@ -10498,12 +9241,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_right,max_mismatches_allowed,mismatch_positions[nmismatches_right-1],max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*//*truncate_pos_right*/0,/*queryend*/querylength,
 						/*left*/segment_left,query_compress_fwd,
-						querylength,/*plusp*/true,genestrand,
+						querylength,/*plusp*/true,genestrand,first_read_p,
 						/*start_endtype*/TERM,/*end_endtype*/END,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		plus_terminals_right = List_push(plus_terminals_right,(void *) hit);
+		nterminals_right += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10514,12 +9259,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_right,max_mismatches_allowed,mismatch_positions[(nmismatches_right-1)/2],querylength-max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*//*truncate_pos_right*/0,/*queryend*/querylength,
 						/*left*/segment_left,query_compress_fwd,
-						querylength,/*plusp*/true,genestrand,
+						querylength,/*plusp*/true,genestrand,first_read_p,
 						/*start_endtype*/TERM,/*end_endtype*/END,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		plus_terminals_right = List_push(plus_terminals_right,(void *) hit);
+		nterminals_right += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10528,13 +9275,45 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 
 	    }
 	  }
+#ifdef ALLOW_MIDDLE_ALIGNMENTS
 	}
+#endif
+      }
+    }
+
+
+    if (nterminals_middle >= MAX_NTERMINALS) {
+      for (p = plus_terminals_middle; p != NULL; p = p->rest) {
+	hit = (Stage3end_T) p->first;
+	Stage3end_free(&hit);
       }
+      List_free(&plus_terminals_middle);
+      plus_terminals_middle = (List_T) NULL;
+    }
+
+    if (nterminals_left >= MAX_NTERMINALS) {
+      for (p = plus_terminals_left; p != NULL; p = p->rest) {
+	hit = (Stage3end_T) p->first;
+	Stage3end_free(&hit);
+      }
+      List_free(&plus_terminals_left);
+      plus_terminals_left = (List_T) NULL;
+    }
+
+    if (nterminals_right >= MAX_NTERMINALS) {
+      for (p = plus_terminals_right; p != NULL; p = p->rest) {
+	hit = (Stage3end_T) p->first;
+	Stage3end_free(&hit);
+      }
+      List_free(&plus_terminals_right);
+      plus_terminals_right = (List_T) NULL;
     }
   }
 
   if (minus_nsegments > 0) {
-    for (segment = minus_segments; segment < &(minus_segments[minus_nsegments]); segment++) {
+    nterminals_left = nterminals_right = nterminals_middle = 0;
+    for (segment = minus_segments; (nterminals_middle < MAX_NTERMINALS || nterminals_left < MAX_NTERMINALS || nterminals_right < MAX_NTERMINALS) &&
+	   segment < &(minus_segments[minus_nsegments]); segment++) {
       if (0 && segment->usedp == true) {
 	/* Previously skipped, but looks like a bad idea */
 	debug4t(printf("segment used\n"));
@@ -10552,31 +9331,44 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 		);
 
 
-	if (segment->querypos3 - segment->querypos5 > index1part) {
-	  debug4t(printf(" => ? Terminal based on querypos3 %d - querypos5 %d > index1part %d",
-			 segment->querypos3,segment->querypos5,index1part));
-	  start_endtype = (segment->querypos5 < index1interval) ? END : TERM;
-	  end_endtype = (segment->querypos3 >= query_lastpos - index1interval) ? END : TERM;
-	  debug4t(printf("  querypos3 %d vs index1interval %d => start_endtype %s\n",
-			 segment->querypos3,index1interval,Endtype_string(start_endtype)));
-	  debug4t(printf("  querypos5 %d vs query_lastpos %d - index1interval %d => end_endtype %s\n",
-			 segment->querypos5,query_lastpos,index1interval,Endtype_string(end_endtype)));
-
-	  if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*/querylength,
-					    /*left*/segment_left,query_compress_rev,
-					    querylength,/*plusp*/false,genestrand,start_endtype,end_endtype,
-					    segment->chrnum,segment->chroffset,
-					    segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-	    debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-	    terminals = List_push(terminals,(void *) hit);
+#ifdef ALLOW_MIDDLE_ALIGNMENTS
+	if (segment->querypos3 - segment->querypos5 > max_terminal_length /* was index1part */) {
+	  /* Check for a middle section */
+	  debug4t(printf(" => ? Middle alignment based on querypos3 %d - querypos5 %d > max_terminal_length %d",
+			 segment->querypos3,segment->querypos5,max_terminal_length));
+	  if (nterminals_middle >= MAX_NTERMINALS) {
+	    /* Skip */
+	    debug4t(printf(" => Skipping because too many nterminals_middle"));
 	  } else {
-	    debug4t(printf(" => no"));
+	    start_endtype = (segment->querypos5 < index1interval) ? END : TERM;
+	    end_endtype = (segment->querypos3 >= query_lastpos - index1interval) ? END : TERM;
+	    debug4t(printf("  querypos3 %d vs index1interval %d => start_endtype %s\n",
+			   segment->querypos3,index1interval,Endtype_string(start_endtype)));
+	    debug4t(printf("  querypos5 %d vs query_lastpos %d - index1interval %d => end_endtype %s\n",
+			   segment->querypos5,query_lastpos,index1interval,Endtype_string(end_endtype)));
+	    
+	    if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*/querylength,
+					      /*left*/segment_left,query_compress_rev,
+					      querylength,/*plusp*/false,genestrand,first_read_p,
+					      start_endtype,end_endtype,segment->chrnum,segment->chroffset,
+					      segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+					      /*sarrayp*/false)) != NULL) {
+	      debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+	      minus_terminals_middle = List_push(minus_terminals_middle,(void *) hit);
+	      nterminals_middle += 1;
+	    } else {
+	      debug4t(printf(" => no"));
+	    }
 	  }
 	  debug4t(printf("\n"));
 
 	} else {
+#endif
+
 	  /* Need to reverse floor_left and floor_right */
-	  if (segment->floor_right > max_mismatches_allowed) {
+	  if (nterminals_left >= MAX_NTERMINALS) {
+	    /* Skip */
+	  } else if (segment->floor_right > max_mismatches_allowed) {
 	    debug4t(printf("Not checking left because floor_right %d > max_mismatches_allowed %d\n",
 			   segment->floor_right,max_mismatches_allowed));
 	  } else {
@@ -10586,7 +9378,7 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 	    nmismatches_left = Genome_mismatches_left(mismatch_positions,max_mismatches_allowed,
 						      /*query_compress*/query_compress_rev,
 						      /*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-						      /*plusp*/false,genestrand);
+						      /*plusp*/false,genestrand,first_read_p);
 
 	    debug4t(
 		    printf("%d mismatches on left at:",nmismatches_left);
@@ -10602,12 +9394,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_left,max_mismatches_allowed,mismatch_positions[nmismatches_left-1],querylength - max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*//*querylength-truncate_pos_left*/0,/*queryend*/querylength,
 						/*left*/segment_left,query_compress_rev,
-						querylength,/*plusp*/false,genestrand,
+						querylength,/*plusp*/false,genestrand,first_read_p,
 						/*start_endtype*/TERM,/*end_endtype*/END,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		minus_terminals_left = List_push(minus_terminals_left,(void *) hit);
+		nterminals_left += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10618,12 +9412,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_left,max_mismatches_allowed,mismatch_positions[(nmismatches_left-1)/2],max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*//*querylength-truncate_pos_left*/0,/*queryend*/querylength,
 						/*left*/segment_left,query_compress_rev,
-						querylength,/*plusp*/false,genestrand,
+						querylength,/*plusp*/false,genestrand,first_read_p,
 						/*start_endtype*/TERM,/*end_endtype*/END,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		minus_terminals_left = List_push(minus_terminals_left,(void *) hit);
+		nterminals_left += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10631,7 +9427,9 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 	    }
 	  }
 
-	  if (segment->floor_left > max_mismatches_allowed) {
+	  if (nterminals_right >= MAX_NTERMINALS) {
+	    /* Skip */
+	  } else if (segment->floor_left > max_mismatches_allowed) {
 	    debug4t(printf("Not checking right because floor_left %d > max_mismatches_allowed %d\n",
 			   segment->floor_left,max_mismatches_allowed));
 	  } else {
@@ -10641,7 +9439,7 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 	    nmismatches_right = Genome_mismatches_right(mismatch_positions,max_mismatches_allowed,
 							/*query_compress*/query_compress_rev,
 							/*left*/segment_left,/*pos5*/0,/*pos3*/querylength,
-							/*plusp*/false,genestrand);
+							/*plusp*/false,genestrand,first_read_p);
 
 	    debug4t(
 		    printf("%d mismatches on right at:",nmismatches_right);
@@ -10657,12 +9455,14 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_right,max_mismatches_allowed,mismatch_positions[nmismatches_right-1],max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*//*querylength-truncate_pos_right*/querylength,
 						/*left*/segment_left,query_compress_rev,
-						querylength,/*plusp*/false,genestrand,
+						querylength,/*plusp*/false,genestrand,first_read_p,
 						/*start_endtype*/END,/*end_endtype*/TERM,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		minus_terminals_right = List_push(minus_terminals_right,(void *) hit);
+		nterminals_right += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
@@ -10673,26 +9473,61 @@ find_terminals (struct Segment_T *plus_segments, int plus_nsegments,
 			     nmismatches_right,max_mismatches_allowed,mismatch_positions[(nmismatches_right-1)/2],querylength-max_terminal_length));
 	      if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*//*querylength-truncate_pos_right*/querylength,
 						/*left*/segment_left,query_compress_rev,
-						querylength,/*plusp*/false,genestrand,
+						querylength,/*plusp*/false,genestrand,first_read_p,
 						/*start_endtype*/END,/*end_endtype*/TERM,
 						segment->chrnum,segment->chroffset,
-						segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
-		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches(hit)));
-		terminals = List_push(terminals,(void *) hit);
+						segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+						/*sarrayp*/false)) != NULL) {
+		debug4t(printf(" => yes, with %d matches",Stage3end_nmatches_posttrim(hit)));
+		minus_terminals_right = List_push(minus_terminals_right,(void *) hit);
+		nterminals_right += 1;
 	      } else {
 		debug4t(printf(" => no"));
 	      }
 	      debug4t(printf("\n"));
 	    }
 	  }
+#ifdef ALLOW_MIDDLE_ALIGNMENTS
 	}
+#endif
+      }
+    }
+
+    if (nterminals_middle >= MAX_NTERMINALS) {
+      for (p = minus_terminals_middle; p != NULL; p = p->rest) {
+	hit = (Stage3end_T) p->first;
+	Stage3end_free(&hit);
+      }
+      List_free(&minus_terminals_middle);
+      minus_terminals_middle = (List_T) NULL;
+    }
+
+    if (nterminals_left >= MAX_NTERMINALS) {
+      for (p = minus_terminals_left; p != NULL; p = p->rest) {
+	hit = (Stage3end_T) p->first;
+	Stage3end_free(&hit);
+      }
+      List_free(&minus_terminals_left);
+      minus_terminals_left = (List_T) NULL;
+    }
+
+    if (nterminals_right >= MAX_NTERMINALS) {
+      for (p = minus_terminals_right; p != NULL; p = p->rest) {
+	hit = (Stage3end_T) p->first;
+	Stage3end_free(&hit);
       }
+      List_free(&minus_terminals_right);
+      minus_terminals_right = (List_T) NULL;
     }
   }
 
   debug4t(printf("Total number of terminals: %d\n",List_length(terminals)));
 
-  return terminals;
+  return List_append(plus_terminals_middle,
+		     List_append(plus_terminals_left,
+				 List_append(plus_terminals_right,
+					     List_append(minus_terminals_middle,
+							 List_append(minus_terminals_left,minus_terminals_right)))));
 }
 
 
@@ -10757,9 +9592,10 @@ find_terminals_by_width_only (struct Segment_T *plus_segments, int plus_nsegment
 
 	  if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*/querylength,
 					    /*left*/segment_left,query_compress_fwd,
-					    querylength,/*plusp*/true,genestrand,
+					    querylength,/*plusp*/true,genestrand,first_read_p,
 					    segment->chrnum,segment->chroffset,
-					    segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
+					    segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+					    /*sarrayp*/false)) != NULL) {
 	    debug4t(printf(" => Terminal\n"));
 	    terminals = List_push(terminals,(void *) hit);
 	  }
@@ -10788,9 +9624,10 @@ find_terminals_by_width_only (struct Segment_T *plus_segments, int plus_nsegment
 
 	  if ((hit = Stage3end_new_terminal(/*querystart*/0,/*queryend*/querylength,
 					    /*left*/segment_left,query_compress_rev,
-					    querylength,/*plusp*/false,genestrand,
+					    querylength,/*plusp*/false,genestrand,first_read_p,
 					    segment->chrnum,segment->chroffset,
-					    segment->chrhigh,segment->chrlength,max_mismatches_allowed)) != NULL) {
+					    segment->chrhigh,segment->chrlength,max_mismatches_allowed,
+					    /*sarrayp*/false)) != NULL) {
 	    debug4t(printf(" => Terminal\n"));
 	    terminals = List_push(terminals,(void *) hit);
 	  }
@@ -10808,7 +9645,7 @@ find_terminals_by_width_only (struct Segment_T *plus_segments, int plus_nsegment
 
 
 static void
-fetch_positions_for_all_12mers (T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int query_lastpos) {
+fetch_positions_for_all_12mers (T this, Indexdb_T plus_indexdb, Indexdb_T minus_indexdb, int query_lastpos) {
   int querypos;
 
   /* querypos -2, -1, query_lastpos+1, and query_lastpos+2 are special cases */
@@ -10816,21 +9653,37 @@ fetch_positions_for_all_12mers (T this, Indexdb_T indexdb_fwd, Indexdb_T indexdb
   for (querypos = 0; querypos <= query_lastpos; querypos++) {
     if (this->plus_retrievedp[querypos] == false) {
       /* FORMULA */
+#ifdef LARGE_GENOMES
+      this->plus_positions_low[querypos] =
+	Indexdb_read_inplace(&(this->plus_npositions[querypos]),&(this->plus_positions_high[querypos]),
+			     plus_indexdb,this->forward_oligos[querypos]);
+#else
       this->plus_positions[querypos] =
-	Indexdb_read_inplace(&(this->plus_npositions[querypos]),indexdb_fwd,this->forward_oligos[querypos]);
+	Indexdb_read_inplace(&(this->plus_npositions[querypos]),plus_indexdb,this->forward_oligos[querypos]);
+#endif
       debug(printf("Retrieving at querypos %d, plus_npositions = %d\n",
 		   querypos,this->plus_npositions[querypos]));
       this->plus_retrievedp[querypos] = true;
+#ifdef USE_ALLOCP
       this->plus_allocp[querypos] = false;
+#endif
     }
     if (this->minus_retrievedp[querypos] == false) {
       /* FORMULA */
+#ifdef LARGE_GENOMES
+      this->minus_positions_low[querypos] =
+	Indexdb_read_inplace(&(this->minus_npositions[querypos]),&(this->minus_positions_high[querypos]),
+			     minus_indexdb,this->revcomp_oligos[querypos]);
+#else
       this->minus_positions[querypos] =
-	Indexdb_read_inplace(&(this->minus_npositions[querypos]),indexdb_rev,this->revcomp_oligos[querypos]);
+	Indexdb_read_inplace(&(this->minus_npositions[querypos]),minus_indexdb,this->revcomp_oligos[querypos]);
+#endif
       debug(printf("Retrieving at querypos %d, minus_npositions = %d\n",
 		   querypos,this->minus_npositions[querypos]));
       this->minus_retrievedp[querypos] = true;
+#ifdef USE_ALLOCP
       this->minus_allocp[querypos] = false;
+#endif
     }
   }
 
@@ -10845,13 +9698,13 @@ static bool
 intragenic_splice_p (Chrpos_T splicedistance, Substring_T donor, Substring_T acceptor) {
   int knowni;
 
-  if ((knowni = Substring_splicesites_i(donor)) >= 0) {
+  if ((knowni = Substring_splicesites_knowni(donor)) >= 0) {
     if (splicedists[knowni] >= splicedistance) {
       return true;
     }
   }
 
-  if ((knowni = Substring_splicesites_i(acceptor)) >= 0) {
+  if ((knowni = Substring_splicesites_knowni(acceptor)) >= 0) {
     if (splicedists[knowni] >= splicedistance) {
       return true;
     }
@@ -10869,7 +9722,7 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 			  List_T *acceptors_plus, List_T *antiacceptors_plus,
 			  List_T *donors_minus, List_T *antidonors_minus,
 			  List_T *acceptors_minus, List_T *antiacceptors_minus,
-			  Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty,
+			  int localsplicing_penalty, int distantsplicing_penalty,
 			  int querylength, int nmismatches_allowed, bool first_read_p) {
   List_T distantsplicing = NULL, p, q, qsave;
   Substring_T donor, acceptor;
@@ -10918,15 +9771,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL /* && *nsplicepairs <= MAXCHIMERAPATHS */) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end1-end2: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_1\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_2\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	/* Generate all pairs at this splice_pos */
@@ -10967,19 +9824,21 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					   (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									 donor,acceptor,distance,
 									 /*shortdistancep*/true,localsplicing_penalty,querylength,
-									 /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									 /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									 /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									 /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									 /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									 /*sensedir*/SENSE_FORWARD));
+									 /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	      } else if (*ndistantsplicepairs <= MAXCHIMERAPATHS) {
 		distantsplicing = List_push(distantsplicing,
 					    (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									  donor,acceptor,distance,
 									  /*shortdistancep*/false,distantsplicing_penalty,querylength,
-									  /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									  /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									  /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									  /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									  /*sensedir*/SENSE_FORWARD));
+									  /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 		(*ndistantsplicepairs)++;
 	      }
 
@@ -11000,15 +9859,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL /* && *nsplicepairs <= MAXCHIMERAPATHS */) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end3-end4: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_1\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_2\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11047,19 +9910,21 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					   (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									 donor,acceptor,distance,
 									 /*shortdistancep*/true,localsplicing_penalty,querylength,
-									 /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									 /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									 /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									 /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									 /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									 /*sensedir*/SENSE_FORWARD));
+									 /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	      } else if (*ndistantsplicepairs <= MAXCHIMERAPATHS) {
 		distantsplicing = List_push(distantsplicing,
 					    (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									  donor,acceptor,distance,
 									  /*shortdistancep*/false,distantsplicing_penalty,querylength,
-									  /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									  /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									  /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									  /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									  /*sensedir*/SENSE_FORWARD));
+									  /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 		(*ndistantsplicepairs)++;
 	      }
 	    }
@@ -11079,15 +9944,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL /* && *nsplicepairs <= MAXCHIMERAPATHS */) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end5-end6: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_2\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_1\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11127,19 +9996,21 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					   (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									 donor,acceptor,distance,
 									 /*shortdistancep*/true,localsplicing_penalty,querylength,
-									 /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									 /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									 /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									 /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									 /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									 /*sensedir*/SENSE_ANTI));
+									 /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	      } else if (*ndistantsplicepairs <= MAXCHIMERAPATHS) {
 		distantsplicing = List_push(distantsplicing,
 					    (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									  donor,acceptor,distance,
 									  /*shortdistancep*/false,distantsplicing_penalty,querylength,
-									  /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									  /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									  /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									  /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									  /*sensedir*/SENSE_ANTI));
+									  /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 		(*ndistantsplicepairs)++;
 	      }
 	    }
@@ -11159,15 +10030,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL /* && *nsplicepairs <= MAXCHIMERAPATHS */) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end7-end8: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_2\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_1\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11207,19 +10082,21 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					   (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									 donor,acceptor,distance,
 									 /*shortdistancep*/true,localsplicing_penalty,querylength,
-									 /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									 /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									 /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									 /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									 /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									 /*sensedir*/SENSE_ANTI));
+									 /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	      } else if (*ndistantsplicepairs <= MAXCHIMERAPATHS) {
 		distantsplicing = List_push(distantsplicing,
 					    (void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 									  donor,acceptor,distance,
 									  /*shortdistancep*/false,distantsplicing_penalty,querylength,
-									  /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+									  /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+									  /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 									  /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 									  /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-									  /*sensedir*/SENSE_ANTI));
+									  /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 		(*ndistantsplicepairs)++;
 	      }
 	    }
@@ -11244,15 +10121,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL && *ndistantsplicepairs <= MAXCHIMERAPATHS) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end1-end4: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_1\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_2\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11277,10 +10158,11 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					(void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 								      donor,acceptor,distance,
 								      /*shortdistancep*/false,distantsplicing_penalty,querylength,
-								      /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								      /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								      /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-								      /*sensedir*/SENSE_FORWARD));
+								      /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	    (*ndistantsplicepairs)++;
 	    q = q->rest;
 	  }
@@ -11297,15 +10179,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL && *ndistantsplicepairs <= MAXCHIMERAPATHS) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end3-end2: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_1\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_2\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11330,10 +10216,11 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					(void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 								      donor,acceptor,distance,
 								      /*shortdistancep*/false,distantsplicing_penalty,querylength,
-								      /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								      /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								      /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-								      /*sensedir*/SENSE_FORWARD));
+								      /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	    (*ndistantsplicepairs)++;
 	    q = q->rest;
 	  }
@@ -11351,15 +10238,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL && *ndistantsplicepairs <= MAXCHIMERAPATHS) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end5-end8: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_2\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_1\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11384,10 +10275,11 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					(void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 								      donor,acceptor,distance,
 								      /*shortdistancep*/false,distantsplicing_penalty,querylength,
-								      /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								      /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								      /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-								      /*sensedir*/SENSE_ANTI));
+								      /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	    (*ndistantsplicepairs)++;
 	    q = q->rest;
 	  }
@@ -11404,15 +10296,19 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
     while (p != NULL && q != NULL && *ndistantsplicepairs <= MAXCHIMERAPATHS) {
       donor = (Substring_T) p->first;
       acceptor = (Substring_T) q->first;
-      debug4ld(printf("donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
+      debug4ld(printf("end7-end6: donor at %lu and acceptor at %lu\n",Substring_genomicstart(donor),Substring_genomicstart(acceptor)));
 
       if ((pos = Substring_chimera_pos(donor)) < min_endlength_2) {
+	debug4ld(printf("chimera_pos of donor < min_endlength_2\n"));
 	p = p->rest;
       } else if (pos > querylength - min_endlength_1) {
+	debug4ld(printf("chimera_pos of donor > querylength - min_endlength_1\n"));
 	p = p->rest;
       } else if (pos < Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d < chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	p = p->rest;
       } else if (pos > Substring_chimera_pos(acceptor)) {
+	debug4ld(printf("chimera_pos of donor %d > chimera_pos of acceptor %d\n",pos,Substring_chimera_pos(acceptor)));
 	q = q->rest;
       } else {
 	qsave = q;
@@ -11437,10 +10333,11 @@ find_splicepairs_distant (int *found_score, int *ndistantsplicepairs,
 					(void *) Stage3end_new_splice(&(*found_score),nmismatches1,nmismatches2,
 								      donor,acceptor,distance,
 								      /*shortdistancep*/false,distantsplicing_penalty,querylength,
-								      /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								      /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								      /*copy_donor_p*/true,/*copy_acceptor_p*/true,first_read_p,
-								      /*sensedir*/SENSE_ANTI));
+								      /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	    (*ndistantsplicepairs)++;
 	    q = q->rest;
 	  }
@@ -11468,12 +10365,16 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 			   List_T *donors_minus, List_T *antidonors_minus,
 			   List_T *acceptors_minus, List_T *antiacceptors_minus,
 			   Compress_T query_compress_fwd, Compress_T query_compress_rev,
-			   char *queryuc_ptr, char *queryrc, int min_shortend,
-			   int localsplicing_penalty,
+			   char *queryuc_ptr, char *queryrc, int min_shortend, int localsplicing_penalty,
 			   int max_mismatches_allowed, int querylength, bool pairedp, bool first_read_p,
 			   int genestrand) {
   List_T p;
   Substring_T donor, acceptor;
+#ifdef LARGE_GENOMES
+  Uint8list_T ambcoords_left, ambcoords_right;
+#else
+  Uintlist_T ambcoords_left, ambcoords_right;
+#endif
   Intlist_T splicesites_i;
   Intlist_T nmismatches_list;
   int nmismatches, nmismatches_shortend, nmisses_allowed, support, endlength;
@@ -11532,43 +10433,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 1: short-overlap donor_plus: #%d:%u (%d mismatches) => searching right\n",
 		       Substring_chrnum(donor),(Chrpos_T) (leftbound-1-chroffset),Substring_nmismatches_whole(donor)));
 
-	if ((i = Substring_splicesites_i(donor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(donor)) >= 0) {
 	  origleft = Substring_genomicstart(donor);
 	  if ((splicesites_i = 
 	       Splicetrie_find_right(&nmismatches_shortend,&nmismatches_list,i,
 				     origleft,/*pos5*/support,/*pos3*/querylength,chrhigh,
 				     query_compress_fwd,/*queryptr*/queryuc_ptr,
-				     nmisses_allowed,/*plusp*/true,genestrand,
+				     nmisses_allowed,/*plusp*/true,genestrand,first_read_p,
 				     /*collect_all_p*/pairedp == true && first_read_p == true)) != NULL) {
 	    
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_right = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 1: short-overlap donor_plus: Successful ambiguous from donor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(donor),amb_nmatches));
+			     Substring_splicesites_knowni(donor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								  donor,/*acceptor*/NULL,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/NULL,/*ambi_right*/splicesites_i,
+                                                                  amb_nmatches,/*ambcoords_left*/NULL,ambcoords_right,
+								  /*ambi_left*/NULL,/*ambi_right*/splicesites_i,
 								  /*amb_nmismatches_left*/NULL,nmismatches_list,
 								  /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								  /*sensedir*/SENSE_FORWARD));
+								  /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_right);
+#else
+	      Uintlist_free(&ambcoords_right);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - support;
-	      if ((acceptor = Substring_new_acceptor(/*splicesites_i*/bestj,/*joffset*/0,Substring_chimera_pos(donor),nmismatches_shortend,
+	      if ((acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[bestj],/*acceptor_knowni*/bestj,
+						     Substring_chimera_pos(donor),nmismatches_shortend,
 						     /*prob*/2.0,/*left*/bestleft,query_compress_fwd,
-						     querylength,/*plusp*/true,genestrand,/*sensep*/true,
+						     querylength,/*plusp*/true,genestrand,first_read_p,/*sensep*/true,
 						     Substring_chrnum(donor),Substring_chroffset(donor),
 						     Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
 		debug4h(printf("End 1: short-overlap donor_plus: Successful splice from donor #%d to acceptor #%d\n",
-			       Substring_splicesites_i(donor),Substring_splicesites_i(acceptor)));
+			       Substring_splicesites_knowni(donor),Substring_splicesites_knowni(acceptor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								    donor,acceptor,/*distance*/bestleft-origleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								    /*sensedir*/SENSE_FORWARD));
+								    /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11596,44 +10506,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 2: short-overlap acceptor_plus: #%d:%u (%d mismatches) => searching left\n",
 		       Substring_chrnum(acceptor),(Chrpos_T) (rightbound+1-chroffset),Substring_nmismatches_whole(acceptor)));
 
-	if ((i = Substring_splicesites_i(acceptor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(acceptor)) >= 0) {
 	  origleft = Substring_genomicstart(acceptor);
 	  if ((splicesites_i =
 	       Splicetrie_find_left(&nmismatches_shortend,&nmismatches_list,i,
 				    origleft,/*pos5*/0,/*pos3*/endlength,chroffset,
 				    query_compress_fwd,/*queryptr*/queryuc_ptr,querylength,
-				    nmisses_allowed,/*plusp*/true,genestrand,
+				    nmisses_allowed,/*plusp*/true,genestrand,first_read_p,
 				    /*collect_all_p*/pairedp == true && first_read_p == false)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_left = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 2: short-overlap acceptor_plus: Successful ambiguous from acceptor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(acceptor),amb_nmatches));
+			     Substring_splicesites_knowni(acceptor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								  /*donor*/NULL,acceptor,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/splicesites_i,/*ambi_right*/NULL,
+								  amb_nmatches,ambcoords_left,/*ambcoords_right*/NULL,
+								  /*amb_knowni_left*/splicesites_i,/*amb_knowni_right*/NULL,
 								  nmismatches_list,/*amb_nmismatches_right*/NULL,
 								  /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								  /*sensedir*/SENSE_FORWARD));
-
+								  /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_left);
+#else
+	      Uintlist_free(&ambcoords_left);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - endlength;
-	      if ((donor = Substring_new_donor(/*splicesites_i*/bestj,/*joffset*/0,Substring_chimera_pos(acceptor),nmismatches_shortend,
+	      if ((donor = Substring_new_donor(/*donor_coord*/splicesites[bestj],/*donor_knowni*/bestj,
+					       Substring_chimera_pos(acceptor),nmismatches_shortend,
 					       /*prob*/2.0,/*left*/bestleft,query_compress_fwd,
-					       querylength,/*plusp*/true,genestrand,/*sensep*/true,
+					       querylength,/*plusp*/true,genestrand,first_read_p,/*sensep*/true,
 					       Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 					       Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
 		debug4h(printf("End 2: short-overlap acceptor_plus: Successful splice from acceptor #%d to donor #%d\n",
-			       Substring_splicesites_i(acceptor),Substring_splicesites_i(donor)));
+			       Substring_splicesites_knowni(acceptor),Substring_splicesites_knowni(donor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								    donor,acceptor,/*distance*/origleft-bestleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								    /*sensedir*/SENSE_FORWARD));
+								    /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11661,44 +10579,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 3: short-overlap donor_minus: #%d:%u (%d mismatches) => searching left\n",
 		       Substring_chrnum(donor),(Chrpos_T) (rightbound+1-chroffset),Substring_nmismatches_whole(donor)));
 
-	if ((i = Substring_splicesites_i(donor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(donor)) >= 0) {
 	  origleft = Substring_genomicend(donor);
 	  if ((splicesites_i =
 	       Splicetrie_find_left(&nmismatches_shortend,&nmismatches_list,i,
 				    origleft,/*pos5*/0,/*pos3*/endlength,chroffset,
 				    query_compress_rev,/*queryptr*/queryrc,querylength,
-				    nmisses_allowed,/*plusp*/false,genestrand,
+				    nmisses_allowed,/*plusp*/false,genestrand,first_read_p,
 				    /*collect_all_p*/pairedp == true && first_read_p == true)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_left = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 3: short-overlap donor_minus: Successful ambiguous from donor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(donor),amb_nmatches));
+			     Substring_splicesites_knowni(donor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								  donor,/*acceptor*/NULL,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/splicesites_i,/*ambi_right*/NULL,
+								  amb_nmatches,ambcoords_left,/*ambcoords_right*/NULL,
+								  /*amb_knowni_left*/splicesites_i,/*amb_knowni_right*/NULL,
 								  nmismatches_list,/*amb_nmismatches_right*/NULL,
 								  /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								  /*sensedir*/SENSE_FORWARD));
+								  /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_left);
+#else
+	      Uintlist_free(&ambcoords_left);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - endlength;
-	      if ((acceptor = Substring_new_acceptor(/*splicesites_i*/bestj,/*joffset*/0,
+	      if ((acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[bestj],/*acceptor_knowni*/bestj,
 						     querylength-Substring_chimera_pos(donor),nmismatches_shortend,
 						     /*prob*/2.0,/*left*/bestleft,query_compress_rev,
-						     querylength,/*plusp*/false,genestrand,/*sensep*/true,
+						     querylength,/*plusp*/false,genestrand,first_read_p,/*sensep*/true,
 						     Substring_chrnum(donor),Substring_chroffset(donor),
 						     Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
 		debug4h(printf("End 3: short-overlap donor_minus: Successful splice from donor #%d to acceptor #%d\n",
-			       Substring_splicesites_i(donor),Substring_splicesites_i(acceptor)));
+			       Substring_splicesites_knowni(donor),Substring_splicesites_knowni(acceptor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								    donor,acceptor,/*distance*/origleft-bestleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								    /*sensedir*/SENSE_FORWARD));
+								    /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11727,44 +10653,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 4: short-overlap acceptor_minus: #%d:%u (%d mismatches) => searching right\n",
 		       Substring_chrnum(acceptor),(Chrpos_T) (leftbound-1-chroffset),Substring_nmismatches_whole(acceptor)));
 
-	if ((i = Substring_splicesites_i(acceptor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(acceptor)) >= 0) {
 	  origleft = Substring_genomicend(acceptor);
 	  if ((splicesites_i =
 	       Splicetrie_find_right(&nmismatches_shortend,&nmismatches_list,i,
 				     origleft,/*pos5*/support,/*pos3*/querylength,chrhigh,
 				     query_compress_rev,/*queryptr*/queryrc,
-				     nmisses_allowed,/*plusp*/false,genestrand,
+				     nmisses_allowed,/*plusp*/false,genestrand,first_read_p,
 				     /*collect_all_p*/pairedp == true && first_read_p == false)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_right = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 4: short-overlap acceptor_minus: Successful ambiguous from acceptor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(acceptor),amb_nmatches));
+			     Substring_splicesites_knowni(acceptor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								  /*donor*/NULL,acceptor,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/NULL,/*ambi_right*/splicesites_i,
+								  amb_nmatches,/*ambcoords_left*/NULL,ambcoords_right,
+								  /*amb_knowni_left*/NULL,/*amb_knowni_right*/splicesites_i,
 								  /*amb_nmismatches_left*/NULL,nmismatches_list,
 								  /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								  /*sensedir*/SENSE_FORWARD));
+								  /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_right);
+#else
+	      Uintlist_free(&ambcoords_right);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - support;
-	      if ((donor = Substring_new_donor(/*splicesites_i*/bestj,/*joffset*/0,
+	      if ((donor = Substring_new_donor(/*donor_coord*/splicesites[bestj],/*donor_knowni*/bestj,
 					       querylength-Substring_chimera_pos(acceptor),nmismatches_shortend,
 					       /*prob*/2.0,/*left*/bestleft,query_compress_rev,
-					       querylength,/*plusp*/false,genestrand,/*sensep*/true,
+					       querylength,/*plusp*/false,genestrand,first_read_p,/*sensep*/true,
 					       Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 					       Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
 		debug4h(printf("End 4: short-overlap acceptor_minus: Successful splice from acceptor #%d to #%d\n",
-			       Substring_splicesites_i(acceptor),Substring_splicesites_i(donor)));
+			       Substring_splicesites_knowni(acceptor),Substring_splicesites_knowni(donor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								    donor,acceptor,/*distance*/bestleft-origleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								    /*sensedir*/SENSE_FORWARD));
+								    /*sensedir*/SENSE_FORWARD,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11792,43 +10726,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 5: short-overlap antidonor_plus: #%d:%u (%d mismatches) => searching left\n",
 		       Substring_chrnum(donor),(Chrpos_T) (rightbound+1-chroffset),Substring_nmismatches_whole(donor)));
 
-	if ((i = Substring_splicesites_i(donor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(donor)) >= 0) {
 	  origleft = Substring_genomicstart(donor);
 	  if ((splicesites_i =
 	       Splicetrie_find_left(&nmismatches_shortend,&nmismatches_list,i,
 				    origleft,/*pos5*/0,/*pos3*/endlength,chroffset,
 				    query_compress_fwd,/*queryptr*/queryuc_ptr,querylength,
-				    nmisses_allowed,/*plusp*/true,genestrand,
+				    nmisses_allowed,/*plusp*/true,genestrand,first_read_p,
 				    /*collect_all_p*/pairedp == true && first_read_p == false)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_left = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 5: short-overlap antidonor_plus: Successful ambiguous from antidonor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(donor),amb_nmatches));
+			     Substring_splicesites_knowni(donor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								  donor,/*acceptor*/NULL,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/splicesites_i,/*ambi_right*/NULL,
+								  amb_nmatches,ambcoords_left,/*ambcoords_right*/NULL,
+								  /*amb_knowni_left*/splicesites_i,/*amb_knowni_right*/NULL,
 								  nmismatches_list,/*amb_nmismatches_right*/NULL,
 								  /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								  /*sensedir*/SENSE_ANTI));
+								  /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_left);
+#else
+	      Uintlist_free(&ambcoords_left);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - endlength;
-	      if ((acceptor = Substring_new_acceptor(/*splicesites_i*/bestj,/*joffset*/0,Substring_chimera_pos(donor),nmismatches_shortend,
+	      if ((acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[bestj],/*acceptor_knowni*/bestj,
+						     Substring_chimera_pos(donor),nmismatches_shortend,
 						     /*prob*/2.0,/*left*/bestleft,query_compress_fwd,
-						     querylength,/*plusp*/true,genestrand,/*sensep*/false,
+						     querylength,/*plusp*/true,genestrand,first_read_p,/*sensep*/false,
 						     Substring_chrnum(donor),Substring_chroffset(donor),
 						     Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
 		debug4h(printf("End 5: short-overlap antidonor_plus: Successful splice from antidonor #%d to antiacceptor #%d\n",
-			       Substring_splicesites_i(donor),Substring_splicesites_i(acceptor)));
+			       Substring_splicesites_knowni(donor),Substring_splicesites_knowni(acceptor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								    donor,acceptor,/*distance*/origleft-bestleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								    /*sensedir*/SENSE_ANTI));
+								    /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11857,43 +10800,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 6: short-overlap antiacceptor_plus: #%d:%u (%d mismatches) => searching right\n",
 		       Substring_chrnum(acceptor),(Chrpos_T) (leftbound-1-chroffset),Substring_nmismatches_whole(acceptor)));
 
-	if ((i = Substring_splicesites_i(acceptor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(acceptor)) >= 0) {
 	  origleft = Substring_genomicstart(acceptor);
 	  if ((splicesites_i =
 	       Splicetrie_find_right(&nmismatches_shortend,&nmismatches_list,i,
 				     origleft,/*pos5*/support,/*pos3*/querylength,chrhigh,
 				     query_compress_fwd,/*queryptr*/queryuc_ptr,
-				     nmisses_allowed,/*plusp*/true,genestrand,
+				     nmisses_allowed,/*plusp*/true,genestrand,first_read_p,
 				     /*collect_all_p*/pairedp == true && first_read_p == true)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_right = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 6: short-overlap antiacceptor_plus: Successful ambiguous from antiacceptor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(acceptor),amb_nmatches));
+			     Substring_splicesites_knowni(acceptor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								  /*donor*/NULL,acceptor,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/NULL,/*ambi_right*/splicesites_i,
+								  amb_nmatches,/*ambcoords_left*/NULL,ambcoords_right,
+								  /*amb_knowni_left*/NULL,/*amb_knowni_right*/splicesites_i,
 								  /*amb_nmismatches_left*/NULL,nmismatches_list,
 								  /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								  /*sensedir*/SENSE_ANTI));
+								  /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_right);
+#else
+	      Uintlist_free(&ambcoords_right);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - support;
-	      if ((donor = Substring_new_donor(/*splicesites_i*/bestj,/*joffset*/0,Substring_chimera_pos(acceptor),nmismatches_shortend,
+	      if ((donor = Substring_new_donor(/*donor_coord*/splicesites[bestj],/*donor_knowni*/bestj,
+					       Substring_chimera_pos(acceptor),nmismatches_shortend,
 					       /*prob*/2.0,/*left*/bestleft,query_compress_fwd,
-					       querylength,/*plusp*/true,genestrand,/*sensep*/false,
+					       querylength,/*plusp*/true,genestrand,first_read_p,/*sensep*/false,
 					       Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 					       Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
 		debug4h(printf("End 6: short-overlap antiacceptor_plus: Successful splice from antiacceptor #%d to antidonor #%d\n",
-			       Substring_splicesites_i(acceptor),Substring_splicesites_i(donor)));
+			       Substring_splicesites_knowni(acceptor),Substring_splicesites_knowni(donor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								    donor,acceptor,/*distance*/bestleft-origleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								    /*sensedir*/SENSE_ANTI));
+								    /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11922,44 +10874,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 7: short-overlap antidonor_minus: #%d:%u (%d mismatches) => searching right\n",
 		       Substring_chrnum(donor),(Chrpos_T) (leftbound-1-chroffset),Substring_nmismatches_whole(donor)));
 
-	if ((i = Substring_splicesites_i(donor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(donor)) >= 0) {
 	  origleft = Substring_genomicend(donor);
 	  if ((splicesites_i =
 	       Splicetrie_find_right(&nmismatches_shortend,&nmismatches_list,i,
 				     origleft,/*pos5*/support,/*pos3*/querylength,chrhigh,
 				     query_compress_rev,/*queryptr*/queryrc,
-				     nmisses_allowed,/*plusp*/false,genestrand,
+				     nmisses_allowed,/*plusp*/false,genestrand,first_read_p,
 				     /*collect_all_p*/pairedp == true && first_read_p == false)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_right = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 7: short-overlap antidonor_minus: Successful ambiguous from antidonor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(donor),amb_nmatches));
+			     Substring_splicesites_knowni(donor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								  donor,/*acceptor*/NULL,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/NULL,/*ambi_right*/splicesites_i,
+								  amb_nmatches,/*ambcoords_left*/NULL,ambcoords_right,
+								  /*amb_knowni_left*/NULL,/*amb_knowni_right*/splicesites_i,
 								  /*amb_nmismatches_left*/NULL,nmismatches_list,
 								  /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								  /*sensedir*/SENSE_ANTI));
+								  /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_right);
+#else
+	      Uintlist_free(&ambcoords_right);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - support;
-	      if ((acceptor = Substring_new_acceptor(/*splicesites_i*/bestj,/*joffset*/0,
+	      if ((acceptor = Substring_new_acceptor(/*acceptor_coord*/splicesites[bestj],/*acceptor_knowni*/bestj,
 						     querylength-Substring_chimera_pos(donor),nmismatches_shortend,
 						     /*prob*/2.0,/*left*/bestleft,query_compress_rev,
-						     querylength,/*plusp*/false,genestrand,/*sensep*/false,
+						     querylength,/*plusp*/false,genestrand,first_read_p,/*sensep*/false,
 						     Substring_chrnum(donor),Substring_chroffset(donor),
 						     Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
 		debug4h(printf("End 7: short-overlap antidonor_minus: Successful splice from antidonor #%d to antiacceptor #%d\n",
-			       Substring_splicesites_i(donor),Substring_splicesites_i(acceptor)));
+			       Substring_splicesites_knowni(donor),Substring_splicesites_knowni(acceptor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches,nmismatches_shortend,
 								    donor,acceptor,/*distance*/bestleft-origleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/true,/*copy_acceptor_p*/false,first_read_p,
-								    /*sensedir*/SENSE_ANTI));
+								    /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -11987,44 +10947,52 @@ find_splicepairs_shortend (int *found_score, List_T hits,
 	debug4h(printf("End 8: short-overlap antiacceptor_minus: #%d:%u (%d mismatches) => searching left\n",
 		       Substring_chrnum(acceptor),(Chrpos_T) (rightbound+1-chroffset),Substring_nmismatches_whole(acceptor)));
 
-	if ((i = Substring_splicesites_i(acceptor)) >= 0) {
+	if ((i = Substring_splicesites_knowni(acceptor)) >= 0) {
 	  origleft = Substring_genomicend(acceptor);
 	  if ((splicesites_i =
 	       Splicetrie_find_left(&nmismatches_shortend,&nmismatches_list,i,
 				    origleft,/*pos5*/0,/*pos3*/endlength,chroffset,
 				    query_compress_rev,/*queryptr*/queryrc,querylength,
-				    nmisses_allowed,/*plusp*/false,genestrand,
+				    nmisses_allowed,/*plusp*/false,genestrand,first_read_p,
 				    /*collect_all_p*/pairedp == true && first_read_p == true)) != NULL) {
 
 	    if (endlength < min_shortend || Intlist_length(splicesites_i) > 1) {
+	      ambcoords_left = lookup_splicesites(splicesites_i,splicesites);
 	      amb_nmatches = endlength - nmismatches_shortend;
 	      debug4h(printf("End 8: short-overlap antiacceptor_minus: Successful ambiguous from antiacceptor #%d with amb_nmatches %d\n",
-			     Substring_splicesites_i(acceptor),amb_nmatches));
+			     Substring_splicesites_knowni(acceptor),amb_nmatches));
 	      hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								  /*donor*/NULL,acceptor,/*distance*/0U,
 								  /*shortdistancep*/false,/*penalty*/0,querylength,
-								  amb_nmatches,/*ambi_left*/splicesites_i,/*ambi_right*/NULL,
+								  amb_nmatches,ambcoords_left,/*ambcoords_right*/NULL,
+								  /*amb_knowni_left*/splicesites_i,/*amb_knowni_right*/NULL,
 								  nmismatches_list,/*amb_nmismatches_right*/NULL,
 								  /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								  /*sensedir*/SENSE_ANTI));
+								  /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
+#ifdef LARGE_GENOMES
+	      Uint8list_free(&ambcoords_left);
+#else
+	      Uintlist_free(&ambcoords_left);
+#endif
 	    } else {
 	      bestj = Intlist_head(splicesites_i);
 	      bestleft = splicesites[bestj] - endlength;
-	      if ((donor = Substring_new_donor(/*splicesites_i*/bestj,/*joffset*/0,
+	      if ((donor = Substring_new_donor(/*donor_coord*/splicesites[bestj],/*donor_knowni*/bestj,
 					       querylength-Substring_chimera_pos(acceptor),nmismatches_shortend,
 					       /*prob*/2.0,/*left*/bestleft,query_compress_rev,
-					       querylength,/*plusp*/false,genestrand,/*sensep*/false,
+					       querylength,/*plusp*/false,genestrand,first_read_p,/*sensep*/false,
 					       Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 					       Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
 		debug4h(printf("End 8: short-overlap antiacceptor_minus: Successful splice from antiacceptor #%d to antidonor #%d\n",
-			       Substring_splicesites_i(acceptor),Substring_splicesites_i(donor)));
+			       Substring_splicesites_knowni(acceptor),Substring_splicesites_knowni(donor)));
 		hits = List_push(hits,(void *) Stage3end_new_splice(&(*found_score),nmismatches_shortend,nmismatches,
 								    donor,acceptor,/*distance*/origleft-bestleft,
 								    /*shortdistancep*/true,localsplicing_penalty,querylength,
-								    /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+								    /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+								    /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 								    /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 								    /*copy_donor_p*/false,/*copy_acceptor_p*/true,first_read_p,
-								    /*sensedir*/SENSE_ANTI));
+								    /*sensedir*/SENSE_ANTI,/*sarrayp*/false));
 	      }
 	    }
 	    Intlist_free(&nmismatches_list);
@@ -12123,7 +11091,7 @@ find_12mer_bounds (int *firstbound, int *lastbound, bool *omitted, int query_las
 
 static Floors_T
 compute_floors (bool *any_omitted_p, bool *alloc_floors_p, Floors_T *floors_array,
-		T this, int querylength, int query_lastpos, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
+		T this, int querylength, int query_lastpos, Indexdb_T plus_indexdb, Indexdb_T minus_indexdb,
 		int indexdb_size_threshold, int max_end_insertions,
 		bool omit_frequent_p, bool omit_repetitive_p, bool keep_floors_p) {
   Floors_T floors;
@@ -12132,7 +11100,7 @@ compute_floors (bool *any_omitted_p, bool *alloc_floors_p, Floors_T *floors_arra
   if (this->all_positions_fetched_p == true) {
     omit_oligos_clear(this,query_lastpos);
   } else {
-    fetch_positions_for_all_12mers(this,indexdb_fwd,indexdb_rev,query_lastpos);
+    fetch_positions_for_all_12mers(this,plus_indexdb,minus_indexdb,query_lastpos);
   }
 
   debug(printf("Omitting frequent/repetitive oligos\n"));
@@ -12171,16 +11139,15 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
 #endif
 			int querylength, int query_lastpos, Floors_T floors,
 			int subopt_levels, int indel_penalty_middle, int indel_penalty_end,
-			int max_middle_insertions, int max_middle_deletions,
 			bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-			int fast_level, int genestrand) {
+			int fast_level, int genestrand, bool first_read_p) {
   int firstbound, lastbound;
   int max_mismatches_allowed;
 #if 0
   int indel_level;
 #endif
 
-  debug(printf("Starting complete_set_mm_indels\n"));
+  debug(printf("Starting complete_set_mm_indels with found_score %d\n",*found_score));
   this->plus_segments = NULL;
   this->minus_segments = NULL;
 
@@ -12211,20 +11178,32 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
 	       max_mismatches_allowed,*done_level,fast_level));
 
   if (max_mismatches_allowed >= 0) {
-    this->plus_segments = identify_all_segments(&this->plus_nsegments,this->plus_positions,this->plus_npositions,
-						this->omitted,querylength,query_lastpos,floors,/*plusp*/true);
-    this->minus_segments = identify_all_segments(&this->minus_nsegments,this->minus_positions,this->minus_npositions,
-						 this->omitted,querylength,query_lastpos,floors,/*plusp*/false);
+    this->plus_segments = identify_all_segments(&this->plus_nsegments,&this->plus_spliceable,&this->plus_nspliceable,
+#ifdef LARGE_GENOMES
+						this->plus_positions_high,this->plus_positions_low,
+#else
+						this->plus_positions,
+#endif
+						this->plus_npositions,this->omitted,querylength,query_lastpos,floors,
+						/*plusp*/true);
+    this->minus_segments = identify_all_segments(&this->minus_nsegments,&this->minus_spliceable,&this->minus_nspliceable,
+#ifdef LARGE_GENOMES
+						 this->minus_positions_high,this->minus_positions_low,
+#else
+						 this->minus_positions,
+#endif
+						 this->minus_npositions,this->omitted,querylength,query_lastpos,floors,
+						 /*plusp*/false);
 
     *subs = find_complete_mm(&(*found_score),&(*nhits),*subs,this->plus_segments,this->plus_nsegments,
 			     querylength,/*queryptr:queryuc_ptr,*/
 			     /*query_compress*/query_compress_fwd,
-			     max_mismatches_allowed,/*plusp*/true,genestrand);
+			     max_mismatches_allowed,/*plusp*/true,genestrand,first_read_p);
 
     *subs = find_complete_mm(&(*found_score),&(*nhits),*subs,this->minus_segments,this->minus_nsegments,
 			     querylength,/*queryptr:queryrc,*/
 			     /*query_compress*/query_compress_rev,
-			     max_mismatches_allowed,/*plusp*/false,genestrand);
+			     max_mismatches_allowed,/*plusp*/false,genestrand,first_read_p);
     *segments_computed_p = true;
 
     debug(printf("5> found_score = %d, opt_level %d, done_level %d\n",*found_score,*opt_level,*done_level));
@@ -12243,10 +11222,22 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
     /* Need to reverse, because middle indelsplicing procedure depends on ascending diagonal order */
 
     if (*segments_computed_p == false) {
-      this->plus_segments = identify_all_segments(&this->plus_nsegments,this->plus_positions,this->plus_npositions,
-						  this->omitted,querylength,query_lastpos,floors,/*plusp*/true);
-      this->minus_segments = identify_all_segments(&this->minus_nsegments,this->minus_positions,this->minus_npositions,
-						   this->omitted,querylength,query_lastpos,floors,/*plusp*/false);
+      this->plus_segments = identify_all_segments(&this->plus_nsegments,&this->plus_spliceable,&this->plus_nspliceable,
+#ifdef LARGE_GENOMES
+						  this->plus_positions_high,this->plus_positions_low,
+#else
+						  this->plus_positions,
+#endif
+						  this->plus_npositions,this->omitted,querylength,query_lastpos,floors,
+						  /*plusp*/true);
+      this->minus_segments = identify_all_segments(&this->minus_nsegments,&this->minus_spliceable,&this->minus_nspliceable,
+#ifdef LARGE_GENOMES
+						   this->minus_positions_high,this->minus_positions_low,
+#else
+						   this->minus_positions,
+#endif
+						   this->minus_npositions,this->omitted,querylength,query_lastpos,floors,
+						   /*plusp*/false);
       *segments_computed_p = true;
     }
 
@@ -12255,14 +11246,14 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
     indel_level = indel_penalty;
     while (indel_level <= *done_level) {
       debug(printf("*** Stage 6.  Middle indels with %d-%d mismatches allowed\n",indel_level,indel_penalty));
-      *indels = find_middle_indels(&(*found_score),&(*nhits),*indels,this->plus_segments,this->minus_segments,
-				   this->plus_nsegments,this->minus_nsegments,
+      *indels = find_middle_indels(&(*found_score),&(*nhits),*indels,
+				   this->plus_spliceable,this->plus_nspliceable,
+				   this->minus_spliceable,this->minus_nspliceable,
 #ifdef DEBUG2
 				   queryuc_ptr,queryrc,
 #endif
 				   floors,querylength,query_lastpos,query_compress_fwd,query_compress_rev,
-				   max_middle_insertions,max_middle_deletions,min_indel_end_matches,indel_penalty,
-				   /*indel_mismatches_allowed*/indel_level - indel_penalty,genestrand);
+				   /*indel_mismatches_allowed*/indel_level - indel_penalty,genestrand,first_read_p);
 
       if (allow_end_indels_p == true) {
 	debug(printf("*** Stage 6.  End indels with %d-%d mismatches allowed\n",indel_level,indel_penalty));
@@ -12273,7 +11264,7 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
 #endif
 				  querylength,firstbound,lastbound,query_compress_fwd,query_compress_rev,
 				  max_end_insertions,max_end_deletions,min_indel_end_matches,indel_penalty,
-				  /*indel_mismatches_allowed*/indel_level - indel_penalty,genestrand);
+				  /*indel_mismatches_allowed*/indel_level - indel_penalty,genestrand,first_read_p);
       }
       if (revise_levels_p == true) {
 	*opt_level = (*found_score < *opt_level) ? *found_score : *opt_level;
@@ -12286,15 +11277,16 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
     }
 #else
     /* Do all in one sweep */
-    debug(printf("*** Stage 6A.  Middle indels with %d-%d mismatches allowed\n",*done_level,indel_penalty_middle));
-    *indels = find_middle_indels(&(*found_score),&(*nhits),*indels,this->plus_segments,this->minus_segments,
-				 this->plus_nsegments,this->minus_nsegments,
+    debug(printf("*** Stage 6A.  Middle indels with %d-%d mismatches allowed, found_score = %d\n",
+		 *done_level,indel_penalty_middle,*found_score));
+    *indels = find_middle_indels(&(*found_score),&(*nhits),*indels,
+				 this->plus_spliceable,this->plus_nspliceable,
+				 this->minus_spliceable,this->minus_nspliceable,
 #ifdef DEBUG2
 				 queryuc_ptr,queryrc,
 #endif
 				 floors,querylength,query_lastpos,query_compress_fwd,query_compress_rev,
-				 max_middle_insertions,max_middle_deletions,min_indel_end_matches,indel_penalty_middle,
-				 /*indel_mismatches_allowed*/(*done_level) - indel_penalty_middle,genestrand);
+				 /*indel_mismatches_allowed*/(*done_level) - indel_penalty_middle,genestrand,first_read_p);
     if (revise_levels_p == true) {
       *opt_level = (*found_score < *opt_level) ? *found_score : *opt_level;
       if ((*done_level = *opt_level + subopt_levels) > user_maxlevel) {
@@ -12304,7 +11296,8 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
     debug(printf("6A> found_score = %d, opt_level %d, done_level %d\n",*found_score,*opt_level,*done_level));
 
     if (allow_end_indels_p == true) {
-      debug(printf("*** Stage 6B.  End indels with %d-%d mismatches allowed\n",*done_level,indel_penalty_end));
+      debug(printf("*** Stage 6B.  End indels with %d-%d mismatches allowed, found_score = %d\n",
+		   *done_level,indel_penalty_end,*found_score));
       *indels = find_end_indels(&(*found_score),&(*nhits),*indels,this->plus_segments,this->minus_segments,
 				this->plus_nsegments,this->minus_nsegments,
 #ifdef DEBUG2E
@@ -12312,7 +11305,7 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
 #endif
 				querylength,firstbound,lastbound,query_compress_fwd,query_compress_rev,
 				max_end_insertions,max_end_deletions,min_indel_end_matches,indel_penalty_end,
-				/*indel_mismatches_allowed*/(*done_level) - indel_penalty_end,genestrand);
+				/*indel_mismatches_allowed*/(*done_level) - indel_penalty_end,genestrand,first_read_p);
       if (revise_levels_p == true) {
 	*opt_level = (*found_score < *opt_level) ? *found_score : *opt_level;
 	if ((*done_level = *opt_level + subopt_levels) > user_maxlevel) {
@@ -12334,55 +11327,62 @@ complete_set_mm_indels (int *found_score, bool *segments_computed_p,
 
 
 static List_T
-complete_set_singlesplicing (int *found_score, Floors_T floors,
-			     struct Segment_T *plus_segments, int plus_nsegments,
-			     struct Segment_T *minus_segments, int minus_nsegments,
+complete_set_singlesplicing (int *found_score, List_T localsplicing_orig, Floors_T floors, T this,
 			     Compress_T query_compress_fwd, Compress_T query_compress_rev,
-			     int querylength, int query_lastpos,
-			     Chrpos_T shortsplicedist, int localsplicing_penalty,
-			     int max_mismatches_allowed, bool first_read_p, int genestrand,
+			     int querylength, int query_lastpos, int localsplicing_penalty,
+			     int max_mismatches_allowed, int genestrand, bool first_read_p,
 			     bool subs_or_indels_p) {
-  List_T localsplicing = NULL, lowprob = NULL, p;
+  List_T localsplicing, localsplicing_plus, localsplicing_minus;
+  List_T ambiguous = NULL, lowprob = NULL, p;
   Stage3end_T hit;
   int worst_nmatches;
 
   debug(printf("Starting complete_set_singlesplicing with %d mismatches allowed\n",max_mismatches_allowed));
 
   if (floors == NULL) {
-    return (List_T) NULL;
-  }
-
-  localsplicing = find_singlesplices_plus(&(*found_score),localsplicing,&lowprob,plus_segments,plus_nsegments,
-					  floors,querylength,query_lastpos,
-					  /*query_compress*/query_compress_fwd,
-					  /*max_distance*/shortsplicedist,
-					  /*splicing_penalty*/localsplicing_penalty,
-					  max_mismatches_allowed,first_read_p,genestrand,
-					  subs_or_indels_p);
-
-  localsplicing = find_singlesplices_minus(&(*found_score),localsplicing,&lowprob,minus_segments,minus_nsegments,
-					   floors,querylength,query_lastpos,
-					   /*query_compress*/query_compress_rev,
-					   /*max_distance*/shortsplicedist,
-					   /*splicing_penalty*/localsplicing_penalty,
-					   max_mismatches_allowed,first_read_p,genestrand,
-					   subs_or_indels_p);
+    /* Returning NULL results in a memory leak */
+    return localsplicing_orig;
+  }
+
+  localsplicing_plus = find_singlesplices_plus(&(*found_score),/*localsplicing*/NULL,&ambiguous,&lowprob,
+					       this->plus_spliceable,this->plus_nspliceable,
+					       floors,querylength,query_lastpos,
+					       /*query_compress*/query_compress_fwd,
+					       /*splicing_penalty*/localsplicing_penalty,
+					       max_mismatches_allowed,first_read_p,genestrand,
+					       subs_or_indels_p);
+  localsplicing_plus = Splice_group_by_segmentj(&(*found_score),localsplicing_plus,&ambiguous,querylength,
+						first_read_p,/*sarrayp*/false);
+
+  localsplicing_minus = find_singlesplices_minus(&(*found_score),/*localsplicing*/NULL,&ambiguous,&lowprob,
+						 this->minus_spliceable,this->minus_nspliceable,
+						 floors,querylength,query_lastpos,
+						 /*query_compress*/query_compress_rev,
+						 /*splicing_penalty*/localsplicing_penalty,
+						 max_mismatches_allowed,first_read_p,genestrand,
+						 subs_or_indels_p);
+  localsplicing_minus = Splice_group_by_segmentj(&(*found_score),localsplicing_minus,&ambiguous,querylength,
+						 first_read_p,/*sarrayp*/false);
 
   debug(printf("Finished with complete_set_singlesplicing\n"));
 
-  if (localsplicing == NULL) {
-    return lowprob;
+  if (localsplicing_plus == NULL && localsplicing_minus == NULL) {
+    return List_append(localsplicing_orig,List_append(ambiguous,lowprob));
+
   } else {
+    localsplicing = List_append(localsplicing_orig,List_append(localsplicing_plus,localsplicing_minus));
+
     worst_nmatches = querylength;
     for (p = localsplicing; p != NULL; p = List_next(p)) {
       hit = (Stage3end_T) List_head(p);
-      if (Stage3end_nmatches(hit) < worst_nmatches) {
-	worst_nmatches = Stage3end_nmatches(hit);
+      if (Stage3end_nmatches_posttrim(hit) < worst_nmatches) {
+	worst_nmatches = Stage3end_nmatches_posttrim(hit);
       }
     }
+
     for (p = lowprob; p != NULL; p = List_next(p)) {
       hit = (Stage3end_T) List_head(p);
-      if (Stage3end_nmatches(hit) < worst_nmatches) {
+      if (Stage3end_nmatches_posttrim(hit) < worst_nmatches) {
 	/* Dominated by both nmatches and probability */
 	Stage3end_free(&hit);
       } else {
@@ -12392,21 +11392,20 @@ complete_set_singlesplicing (int *found_score, Floors_T floors,
     }
     List_free(&lowprob);
 
-    return localsplicing;
+    return List_append(localsplicing,ambiguous);
   }
 }
 
 
 static List_T
-complete_set_doublesplicing (int *found_score, Floors_T floors,
-			     struct Segment_T *plus_segments, int plus_nsegments,
-			     struct Segment_T *minus_segments, int minus_nsegments,
+complete_set_doublesplicing (int *found_score, List_T localsplicing_orig, Floors_T floors, T this,
 			     Compress_T query_compress_fwd, Compress_T query_compress_rev,
 			     char *queryuc_ptr, char *queryrc, int querylength, int query_lastpos,
-			     Chrpos_T shortsplicedist, int localsplicing_penalty,
+			     int localsplicing_penalty,
 			     int min_shortend, int max_mismatches_allowed, bool pairedp,
-			     bool first_read_p, int genestrand, bool subs_or_indels_p) {
-  List_T localsplicing = NULL, lowprob = NULL, p;
+			     int genestrand, bool first_read_p, bool subs_or_indels_p) {
+  List_T localsplicing, localsplicing_plus, localsplicing_minus;
+  List_T lowprob = NULL, p;
   Stage3end_T hit;
   int worst_nmatches;
   
@@ -12414,38 +11413,45 @@ complete_set_doublesplicing (int *found_score, Floors_T floors,
 	       max_mismatches_allowed));
 
   if (floors == NULL) {
-    return (List_T) NULL;
+    /* Returning NULL results in a memory leak */
+    return localsplicing_orig;
   }
 
-  localsplicing = find_doublesplices(&(*found_score),localsplicing,&lowprob,plus_segments,plus_nsegments,
-				     /*queryptr*/queryuc_ptr,floors,querylength,query_lastpos,
-				     /*query_compress*/query_compress_fwd,
-				     /*max_distance*/shortsplicedist,/*splicing_penalty*/localsplicing_penalty,
-				     min_shortend,max_mismatches_allowed,pairedp,first_read_p,
-				     /*plusp*/true,genestrand,subs_or_indels_p);
+  localsplicing_plus = find_doublesplices(&(*found_score),/*localsplicing*/NULL,&lowprob,
+					  this->plus_spliceable,this->plus_nspliceable,this->plus_segments,
+					  /*queryptr*/queryuc_ptr,floors,querylength,query_lastpos,
+					  /*query_compress*/query_compress_fwd,
+					  /*max_distance*/shortsplicedist,/*splicing_penalty*/localsplicing_penalty,
+					  min_shortend,max_mismatches_allowed,pairedp,first_read_p,
+					  /*plusp*/true,genestrand,subs_or_indels_p);
 
-  localsplicing = find_doublesplices(&(*found_score),localsplicing,&lowprob,minus_segments,minus_nsegments,
-				     /*queryptr*/queryrc,floors,querylength,query_lastpos,
-				     /*query_compress*/query_compress_rev,
-				     /*max_distance*/shortsplicedist,/*splicing_penalty*/localsplicing_penalty,
-				     min_shortend,max_mismatches_allowed,pairedp,first_read_p,
-				     /*plusp*/false,genestrand,subs_or_indels_p);
+  localsplicing_minus = find_doublesplices(&(*found_score),/*localsplicing*/NULL,&lowprob,
+					   this->minus_spliceable,this->minus_nspliceable,this->minus_segments,
+					   /*queryptr*/queryrc,floors,querylength,query_lastpos,
+					   /*query_compress*/query_compress_rev,
+					   /*max_distance*/shortsplicedist,/*splicing_penalty*/localsplicing_penalty,
+					   min_shortend,max_mismatches_allowed,pairedp,first_read_p,
+					   /*plusp*/false,genestrand,subs_or_indels_p);
 
   debug(printf("Finished with complete_set_doublesplicing\n"));
 
-  if (localsplicing == NULL) {
-    return lowprob;
+  if (localsplicing_plus == NULL && localsplicing_minus == NULL) {
+    return List_append(localsplicing_orig,lowprob);
+
   } else {
+    localsplicing = List_append(localsplicing_orig,List_append(localsplicing_plus,localsplicing_minus));
+
     worst_nmatches = querylength;
     for (p = localsplicing; p != NULL; p = List_next(p)) {
       hit = (Stage3end_T) List_head(p);
-      if (Stage3end_nmatches(hit) < worst_nmatches) {
-	worst_nmatches = Stage3end_nmatches(hit);
+      if (Stage3end_nmatches_posttrim(hit) < worst_nmatches) {
+	worst_nmatches = Stage3end_nmatches_posttrim(hit);
       }
     }
+
     for (p = lowprob; p != NULL; p = List_next(p)) {
       hit = (Stage3end_T) List_head(p);
-      if (Stage3end_nmatches(hit) < worst_nmatches) {
+      if (Stage3end_nmatches_posttrim(hit) < worst_nmatches) {
 	/* Dominated by both nmatches and probability */
 	Stage3end_free(&hit);
       } else {
@@ -12459,36 +11465,92 @@ complete_set_doublesplicing (int *found_score, Floors_T floors,
   }
 }
 
+/* Simple table */
+typedef struct History_T *History_T;
+struct History_T {
+  List_T keys;			/* List of Univinterval_T */
+  List_T values;		/* List of List_T of Stage3end_T */
+};
+
+static void
+History_free (History_T *old) {
+  Univinterval_T interval;
+  List_T hitlist, p;
+
+  for (p = (*old)->keys; p != NULL; p = p->rest) {
+    interval = (Univinterval_T) p->first;
+    Univinterval_free(&interval);
+  }
+  List_free(&(*old)->keys);
+  
+  for (p = (*old)->values; p != NULL; p = p->rest) {
+    hitlist = (List_T) p->first;
+    Stage3end_list_free(&hitlist);
+  }
+  List_free(&(*old)->values);
+
+  FREE(*old);
+  return;
+}
+
+static History_T
+History_new () {
+  History_T new = (History_T) MALLOC(sizeof(*new));
+
+  new->keys = (List_T) NULL;
+  new->values = (List_T) NULL;
+  return new;
+}
+
+static List_T
+History_get (History_T this, Univinterval_T interval) {
+  List_T p, q;
+
+  for (p = this->keys, q = this->values; p != NULL; p = p->rest, q = q->rest) {
+    if (Univinterval_equal(interval,(Univinterval_T) p->first) == true) {
+      return (List_T) q->first;
+    }
+  }
+  return (List_T) NULL;
+}
+
+static void
+History_put (History_T this, Univinterval_T interval, List_T gmap_hits) {
+  this->keys = List_push(this->keys,(void *) interval);
+  this->values = List_push(this->values,(void *) gmap_hits);
+  return;
+}
 
 
-#define add_bounded(x,plusterm,highbound) ((x + (plusterm) > highbound) ? highbound : x + (plusterm))
+#define add_bounded(x,plusterm,highbound) ((x + (plusterm) >= highbound) ? (highbound - 1) : x + (plusterm))
 #define subtract_bounded(x,minusterm,lowbound) ((x < lowbound + (minusterm)) ? lowbound : x - (minusterm))
 
 
 static List_T
-run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
-	  char *queryuc_ptr, int querylength,
+run_gmap (bool *good_start_p, bool *good_end_p, History_T gmap_history,
+	  List_T hits, char *queryuc_ptr, int querylength,
 	  int sense_try, bool favor_right_p, int paired_favor_mode, int zero_offset,
 	  Compress_T query_compress_fwd, Compress_T query_compress_rev,
 
 	  Univcoord_T mappingstart, Univcoord_T mappingend,
 	  Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-	  bool watsonp, int genestrand,
+	  bool watsonp, int genestrand, bool first_read_p,
 	  Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
 
-	  Oligoindex_T *oligoindices_major, int noligoindices_major,
-	  Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-	  Pairpool_T pairpool, Diagpool_T diagpool,
-	  Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-	  Chrpos_T shortsplicedist, int user_maxlevel) {
+	  Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+	  Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+	  Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR, int user_maxlevel) {
   Stage3end_T hit;
 #ifdef EXTRACT_GENOMICSEG
   char *genomicseg, *genomicseg_alloc;
 #endif
 
-  List_T all_paths, path, p;
+  List_T stored_hits;
+  List_T all_stage2results, p;
   int stage2_source, stage2_indexsize;
+  Stage2_T stage2;
 
+  Univinterval_T interval;
   List_T pairs;
   struct Pair_T *pairarray;
   Univcoord_T start, end;
@@ -12499,16 +11561,37 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
   int nmatches_posttrim, max_match_length, ambig_end_length_5, ambig_end_length_3;
   Splicetype_T ambig_splicetype_5, ambig_splicetype_3;
   int ncanonical, nsemicanonical, nnoncanonical;
-  double defect_rate;
+  int maxintronlen_bound;
 
   debug13(printf("Running GMAP at mappingstart %lu + %d = mappingend %lu, watsonp %d, sense_try %d, querylength %d, limits %u..%u\n",
 		 mappingstart-chroffset,mappingend-mappingstart,mappingend-chroffset,watsonp,sense_try,querylength,
 		 (Chrpos_T) (knownsplice_limit_low-chroffset),(Chrpos_T) (knownsplice_limit_high-chroffset)));
 
-  if (mappingend <= mappingstart) {
-    fprintf(stderr,"Problem with run_gmap: mappingstart %lu, mappingend %lu.  Please alert twu at gene.com about this bug.\n",
-	    mappingstart,mappingend);
-    abort();
+  assert(mappingend > mappingstart);
+
+  *good_start_p = *good_end_p = false;
+
+  interval = Univinterval_new(mappingstart,mappingend,sense_try);
+  debug13(printf("Checking history for interval at %u..%u (sense_try %d)\n",
+		 mappingstart,mappingend,sense_try));
+  if ((stored_hits = History_get(gmap_history,interval)) != NULL) {
+    debug13(printf("Already ran these coordinates, and have results\n"));
+    for (p = stored_hits; p != NULL; p = List_next(p)) {
+      if ((hit = (Stage3end_T) List_head(p)) != NULL) {
+	if (Stage3end_trim_left(hit) < GOOD_GMAP_END) {
+	  *good_start_p = true;
+	}
+	if (Stage3end_trim_right(hit) < GOOD_GMAP_END) {
+	  *good_end_p = true;
+	}
+	hits = List_push(hits,(void *) Stage3end_copy(hit));
+      }
+    }
+    Univinterval_free(&interval);
+    return hits;
+  } else {
+    debug13(printf("New coordinates\n"));
+    /* stored_hits = (List_T) NULL; -- Already NULL */
   }
 
 #ifdef EXTRACT_GENOMICSEG
@@ -12526,39 +11609,45 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
   }
 #endif
 
+  if (chroffset + chrlength < chrhigh) {
+    debug13(printf("Chromosome is circular because chroffset %u + chrlength %u < chrhigh %u\n",
+		   chroffset,chrlength,chrhigh));
+    maxintronlen_bound = 0;
+  } else {
+    maxintronlen_bound = shortsplicedist;
+  }
 
   /* Note: Use nmatches post-trim to decide if the alignment is high
      quality or worth keeping.  But if so, then use nmatches_pretrim
      for ranking and scoring purposes. */
 
-  *good_start_p = *good_end_p = false;
-
   /* use_shifted_canonical_p == true can be slow and can give wrong answers */
-  all_paths = Stage2_compute(&stage2_source,&stage2_indexsize,
-			     /*queryseq_ptr*/queryuc_ptr,queryuc_ptr,querylength,/*query_offset*/0,
-
-			     /*chrstart*/mappingstart-chroffset,/*chrend*/mappingend-chroffset,
-			     chroffset,chrhigh,/*plusp*/watsonp,genestrand,
-
-			     oligoindices_major,noligoindices_major,/*proceed_pctcoverage*/0.5,
-			     pairpool,diagpool,sufflookback,nsufflookback,
-			     /*maxintronlen_bound*/shortsplicedist,/*localp*/true,
-			     /*skip_repetitive_p*/true,/*use_shifted_canonical_p*/false,
-			     favor_right_p,/*max_nalignments*/MAX_NALIGNMENTS,
-			     /*debug_graphic_p*/false,/*diagnosticp*/false,
-			     /*worker_stopwatch*/NULL,/*diag_debug*/false);
-  debug13(printf("Got %d stage2 paths\n",List_length(all_paths)));
-
-  for (p = all_paths; p != NULL; p = List_next(p)) {
-    path = (List_T) List_head(p);
-
+  all_stage2results = Stage2_compute(&stage2_source,&stage2_indexsize,
+				     /*queryseq_ptr*/queryuc_ptr,queryuc_ptr,querylength,/*query_offset*/0,
+				   
+				     /*chrstart*/mappingstart-chroffset,/*chrend*/mappingend-chroffset,
+				     chroffset,chrhigh,/*plusp*/watsonp,genestrand,
+
+				     oligoindices_major,/*proceed_pctcoverage*/0.5,
+				     pairpool,diagpool,cellpool,sufflookback,nsufflookback,
+				     maxintronlen_bound,/*localp*/true,
+				     /*skip_repetitive_p*/true,favor_right_p,/*max_nalignments*/MAX_NALIGNMENTS,
+				     /*debug_graphic_p*/false,/*diagnosticp*/false,
+				     /*worker_stopwatch*/NULL,/*diag_debug*/false);
+  debug13(printf("Got %d stage2 results\n",List_length(all_stage2results)));
+
+  if (all_stage2results == NULL) {
+    stored_hits = List_push(stored_hits,(void *) NULL);
+  }
+
+  for (p = all_stage2results; p != NULL; p = List_next(p)) {
+    stage2 = (Stage2_T) List_head(p);
     if ((pairarray = Stage3_compute(&pairs,&npairs,&cdna_direction,&sensedir,
 				    &matches,&nmatches_posttrim,&max_match_length,
 				    &ambig_end_length_5,&ambig_end_length_3,
 				    &ambig_splicetype_5,&ambig_splicetype_3,
 				    &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels,
-				    &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,
-				    &defect_rate,path,
+				    &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,stage2,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 				    cutoff_level,/*queryptr*/watsonp ? queryuc_ptr : queryrc,
 				    watsonp ? query_compress_fwd : query_compress_rev,
@@ -12576,12 +11665,14 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
 				    extramaterial_end,extramaterial_paired,
 				    extraband_single,extraband_end,extraband_paired,
 				    minendexon,pairpool,dynprogL,dynprogM,dynprogR,ngap,
-				    /*stage3debug*/false,/*diagnosticp*/false,/*checkp*/false,
+				    /*diagnosticp*/false,/*checkp*/false,
 				    /*do_final_p*/true,sense_try,/*sense_filter*/0,
-				    oligoindices_minor,noligoindices_minor,diagpool,
-				    sufflookback,nsufflookback,/*maxintronlen_bound*/shortsplicedist,
+				    oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen_bound,
 				    /*close_indels_mode*/+1,paired_favor_mode,zero_offset)) == NULL) {
       debug13(printf("stage3 is NULL\n"));
+      stored_hits = List_push(stored_hits,(void *) NULL);
+
     } else {
       debug13(printf("stage3 is not NULL\n"));
 
@@ -12590,6 +11681,7 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
       if (0 && Stage3_short_alignment_p(pairarray,npairs,querylength) == true) {
 	/* Very bad alignment */
 	debug13(printf("Very bad alignment\n"));
+	stored_hits = List_push(stored_hits,(void *) NULL);
 	FREE_OUT(pairarray);
 
       } else {
@@ -12601,22 +11693,29 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
 	nsegments = Pair_gsnap_nsegments(&nmismatches_whole,&nindels,&nintrons,&nindelbreaks,
 					 pairarray,npairs);
 	if (watsonp == true) {
-	  start = chroffset + Pair_genomepos(&(pairarray[0])) - Pair_querypos(&(pairarray[0]));
-	  end = chroffset + Pair_genomepos(&(pairarray[npairs-1])) + (querylength - 1 - Pair_querypos(&(pairarray[npairs-1])));
+	  start = subtract_bounded(chroffset + Pair_genomepos(&(pairarray[0])),
+				   /*minusterm*/Pair_querypos(&(pairarray[0])),chroffset);
+	  end = add_bounded(chroffset + Pair_genomepos(&(pairarray[npairs-1])),
+			    /*plusterm*/querylength - 1 - Pair_querypos(&(pairarray[npairs-1])),chrhigh);
 	  if ((hit = Stage3end_new_gmap(nmismatches_whole,nmatches_posttrim,max_match_length,
 					ambig_end_length_5,ambig_end_length_3,
 					ambig_splicetype_5,ambig_splicetype_3,min_splice_prob,
 					pairarray,npairs,nsegments,nintrons,nindelbreaks,
 					/*left*/start,/*genomiclength*/end - start + 1,
-					/*plusp*/watsonp,genestrand,querylength,chrnum,chroffset,chrhigh,chrlength,
+					/*plusp*/watsonp,genestrand,first_read_p,
+					querylength,chrnum,chroffset,chrhigh,chrlength,
 					cdna_direction,sensedir)) == NULL) {
 	    debug13(printf("Stage3end_new_gmap returns NULL\n"));
+	    stored_hits = List_push(stored_hits,(void *) NULL);
 	    FREE_OUT(pairarray);
 
+#if 0
 	  } else if (Stage3end_bad_stretch_p(hit,query_compress_fwd,query_compress_rev) == true) {
 	    debug13(printf("Stage3end_new_gmap has a bad stretch\n"));
 	    Stage3end_free(&hit);
+	    stored_hits = List_push(stored_hits,(void *) NULL);
 	    /* FREE_OUT(pairarray); */
+#endif
 	    
 	  } else {
 	    if (Stage3end_trim_left(hit) < GOOD_GMAP_END) {
@@ -12626,34 +11725,42 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
 	      *good_end_p = true;
 	    }
 	    debug13(printf("Trim at start: %d, trim at end: %d\n",
-			   Stage3end_trim_left(hit),Stage3end_trim_right(hit),
-			   Stage3end_trim_left_raw(hit),Stage3end_trim_right_raw(hit)));
+			   Stage3end_trim_left(hit),Stage3end_trim_right(hit)));
 	    if (terminal_threshold > user_maxlevel &&
 		(Stage3end_trim_left_raw(hit) >= GOOD_GMAP_END || Stage3end_trim_right_raw(hit) >= GOOD_GMAP_END)) {
 	      debug13(printf("terminal_threshold %d > user_maxlevel %d, so freeing this GMAP hit\n",
 			     terminal_threshold,user_maxlevel));
+	      stored_hits = List_push(stored_hits,(void *) NULL);
 	      Stage3end_free(&hit);
 	    } else {
+	      stored_hits = List_push(stored_hits,(void *) Stage3end_copy(hit));
 	      hits = List_push(hits,(void *) hit);
 	    }
 	  }
 	} else {
-	  start = chroffset + Pair_genomepos(&(pairarray[0])) + Pair_querypos(&(pairarray[0]));
-	  end = chroffset + Pair_genomepos(&(pairarray[npairs-1])) - (querylength - 1 - Pair_querypos(&(pairarray[npairs-1])));
+	  start = add_bounded(chroffset + Pair_genomepos(&(pairarray[0])),
+			      /*plusterm*/Pair_querypos(&(pairarray[0])),chrhigh);
+	  end = subtract_bounded(chroffset + Pair_genomepos(&(pairarray[npairs-1])),
+				 /*minusterm*/querylength - 1 - Pair_querypos(&(pairarray[npairs-1])),chroffset);
 	  if ((hit = Stage3end_new_gmap(nmismatches_whole,nmatches_posttrim,max_match_length,
 					ambig_end_length_5,ambig_end_length_3,
 					ambig_splicetype_5,ambig_splicetype_3,min_splice_prob,
 					pairarray,npairs,nsegments,nintrons,nindelbreaks,
 					/*left*/end,/*genomiclength*/start - end + 1,
-					/*plusp*/watsonp,genestrand,querylength,chrnum,chroffset,chrhigh,chrlength,
+					/*plusp*/watsonp,genestrand,first_read_p,
+					querylength,chrnum,chroffset,chrhigh,chrlength,
 					cdna_direction,sensedir)) == NULL) {
 	    debug13(printf("Stage3end_new_gmap returns NULL\n"));
+	    stored_hits = List_push(stored_hits,(void *) NULL);
 	    FREE_OUT(pairarray);
 
+#if 0
 	  } else if (Stage3end_bad_stretch_p(hit,query_compress_fwd,query_compress_rev) == true) {
 	    debug13(printf("Stage3end_new_gmap has a bad stretch\n"));
+	    stored_hits = List_push(stored_hits,(void *) NULL);
 	    Stage3end_free(&hit);
 	    /* FREE_OUT(pairarray); */
+#endif
 
 	  } else {
 	    if (Stage3end_trim_right(hit) < GOOD_GMAP_END) {
@@ -12669,8 +11776,10 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
 		(Stage3end_trim_left_raw(hit) >= GOOD_GMAP_END || Stage3end_trim_right_raw(hit) >= GOOD_GMAP_END)) {
 	      debug13(printf("terminal_threshold %d > user_maxlevel %d, so freeing this GMAP hit\n",
 			     terminal_threshold,user_maxlevel));
+	      stored_hits = List_push(stored_hits,(void *) NULL);
 	      Stage3end_free(&hit);
 	    } else {
+	      stored_hits = List_push(stored_hits,(void *) Stage3end_copy(hit));
 	      hits = List_push(hits,(void *) hit);
 	    }
 	  }
@@ -12678,20 +11787,28 @@ run_gmap (bool *good_start_p, bool *good_end_p, List_T hits,
 	/* Don't free pairarray */
       }
     }
+
+    Stage2_free(&stage2);
   }
+  List_free(&all_stage2results);
+
 
-  List_free(&all_paths);
 #ifdef EXTRACT_GENOMICSEG
   FREE(genomicseg_alloc);
 #endif
 
   debug13(printf(" => Got good_start_p %d, good_end_p %d\n",*good_start_p,*good_end_p));
+  debug13(printf("Storing history for interval at %u..%u (sense_try %d)\n",
+		 mappingstart,mappingend,sense_try));
+  History_put(gmap_history,interval,stored_hits);
+
   return hits;
 }
 
 
 static List_T
-align_single_hit_with_gmap (Stage3end_T hit, bool extend_left_p, bool extend_right_p,
+align_single_hit_with_gmap (History_T gmap_history, Stage3end_T hit,
+			    bool extend_left_p, bool extend_right_p,
 			    char *queryuc_ptr, int querylength, int query_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 			    char *queryrc, bool invertedp,
@@ -12699,11 +11816,10 @@ align_single_hit_with_gmap (Stage3end_T hit, bool extend_left_p, bool extend_rig
 			    Compress_T query_compress_fwd, Compress_T query_compress_rev,
 			    struct Segment_T *plus_segments, int plus_nsegments,
 			    struct Segment_T *minus_segments, int minus_nsegments,
-			    Oligoindex_T *oligoindices_major, int noligoindices_major,
-			    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			    Pairpool_T pairpool, Diagpool_T diagpool,
+			    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 			    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-			    Chrpos_T shortsplicedist, int user_maxlevel, int genestrand) {
+			    int user_maxlevel, int genestrand, bool first_read_p) {
   List_T hits = NULL;
 
   Univcoord_T segmentstart, segmentend;
@@ -13157,14 +12273,14 @@ align_single_hit_with_gmap (Stage3end_T hit, bool extend_left_p, bool extend_rig
 
   if (close_mappingstart_p == true && close_mappingend_p == true) {
     debug13(printf("Single hit: Running gmap with close mappingstart and close mappingend\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 		    /*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 		    query_compress_fwd,query_compress_rev,
 		    close_mappingstart_greedy,close_mappingend_greedy,
 		    close_knownsplice_limit_low,close_knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
 
     if (good_start_p == true && good_end_p == true) {
       /* Success */
@@ -13173,95 +12289,95 @@ align_single_hit_with_gmap (Stage3end_T hit, bool extend_left_p, bool extend_rig
     } else if (good_start_p == true) {
       if (fallback_mappingend_p == true) {
 	debug13(printf("Single hit: Re-running gmap with close mappingstart only\n"));
-	hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+	hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 			/*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 			query_compress_fwd,query_compress_rev,close_mappingstart_greedy,mappingend,
 			close_knownsplice_limit_low,knownsplice_limit_high,
-			watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-			oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+			watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+			oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
       }
     } else if (good_end_p == true) {
       if (fallback_mappingstart_p == true) {
 	debug13(printf("Single hit: Re-running gmap with close mappingend only\n"));
-	hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+	hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 			/*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 			query_compress_fwd,query_compress_rev,mappingstart,close_mappingend_greedy,
 			knownsplice_limit_low,close_knownsplice_limit_high,
-			watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-			oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+			watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+			oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
       }
     } else {
       if (fallback_mappingstart_p == true && fallback_mappingend_p == true) {
 	debug13(printf("Single hit: Re-running gmap with far mappingstart and mappingend\n"));
-	hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+	hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 			/*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 			query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 			knownsplice_limit_low,close_knownsplice_limit_high,
-			watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-			oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+			watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+			oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
       }
     }
 
   } else if (close_mappingstart_p == true) {
     debug13(printf("Single hit: Running gmap with close mappingstart\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 		    /*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 		    query_compress_fwd,query_compress_rev,close_mappingstart_greedy,mappingend,
 		    close_knownsplice_limit_low,knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
     if (good_start_p == true) {
       /* Success */
     } else if (gmap_rerun_p == false) {
       debug13(printf("Skipping re-run of gmap\n"));
     } else if (fallback_mappingstart_p == true) {
       debug13(printf("Single hit: Re-running gmap with far mappingstart\n"));
-      hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+      hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 		      /*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 		      query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 		      knownsplice_limit_low,knownsplice_limit_high,
-		      watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		      oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		      pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		      watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		      oligoindices_major,oligoindices_minor,
+		      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
     }
 
   } else if (close_mappingend_p == true) {
     debug13(printf("Single hit: Running gmap with close mappingend\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 		    /*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 		    query_compress_fwd,query_compress_rev,mappingstart,close_mappingend_greedy,
 		    knownsplice_limit_low,close_knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
     if (good_end_p == true) {
       /* Success */
     } else if (gmap_rerun_p == false) {
       debug13(printf("Skipping re-run of gmap\n"));
     } else if (fallback_mappingend_p == true) {
       debug13(printf("Single hit: Re-running gmap with far mappingend\n"));
-      hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+      hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 		      /*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 		      query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 		      knownsplice_limit_low,knownsplice_limit_high,
-		      watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		      oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		      pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		      watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		      oligoindices_major,oligoindices_minor,
+		      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
     }
 
   } else {
     debug13(printf("Single hit: Running gmap with far mappingstart and mappingend\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,queryuc_ptr,querylength,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,hits,queryuc_ptr,querylength,
 		    /*sense_try*/0,favor_right_p,/*paired_favor_mode*/0,/*zero_offset*/0,
 		    query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 		    knownsplice_limit_low,knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
   }
 
   return hits;
@@ -13270,13 +12386,13 @@ align_single_hit_with_gmap (Stage3end_T hit, bool extend_left_p, bool extend_rig
 
 
 static List_T
-align_singleend_with_gmap (List_T result, T this, Compress_T query_compress_fwd, Compress_T query_compress_rev,
+align_singleend_with_gmap (History_T gmap_history, List_T result, T this,
+			   Compress_T query_compress_fwd, Compress_T query_compress_rev,
 			   char *queryuc_ptr, int querylength, int query_lastpos,
-			   Oligoindex_T *oligoindices_major, int noligoindices_major,
-			   Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			   Pairpool_T pairpool, Diagpool_T diagpool,
+			   Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			   Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 			   Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-			   Chrpos_T shortsplicedist, int user_maxlevel) {
+			   int user_maxlevel, int cutoff_level, bool first_read_p) {
   List_T new_result = NULL, gmap_hits = NULL;
   Stage3end_T hit, gmap;
   List_T p, a;
@@ -13302,6 +12418,11 @@ align_singleend_with_gmap (List_T result, T this, Compress_T query_compress_fwd,
       debug13(printf("Skipping hit of type GMAP\n"));
       new_result = List_push(new_result,(void *) hit);
 
+    } else if (Stage3end_improved_by_gmap_p(hit) == true) {
+      /* Skip */
+      debug13(printf("Skipping hit already improved by GMAP\n"));
+      new_result = List_push(new_result,(void *) hit);
+
 #if 0
       /* Don't skip on final align_singleend_with_gmap */
     } else if (Stage3end_hittype(hit) == TERMINAL) {
@@ -13310,10 +12431,10 @@ align_singleend_with_gmap (List_T result, T this, Compress_T query_compress_fwd,
       new_result = List_push(new_result,(void *) hit);
 #endif
 
-    } else if (querylength - Stage3end_nmatches(hit) <= user_maxlevel) {
+    } else if (querylength - Stage3end_nmatches_posttrim(hit) <= user_maxlevel) {
       /* Skip */
       debug13(printf("Skipping hit with nmismatches %d - %d <= user_maxlevel %d\n",
-		     querylength,Stage3end_nmatches(hit),user_maxlevel));
+		     querylength,Stage3end_nmatches_posttrim(hit),user_maxlevel));
       new_result = List_push(new_result,(void *) hit);
 
     } else if (Stage3end_terminal_trim(hit) <= GMAP_TERMINAL_TRIM
@@ -13328,7 +12449,8 @@ align_singleend_with_gmap (List_T result, T this, Compress_T query_compress_fwd,
 		     Stage3end_contains_known_splicesite(hit)));
     
       /* Want high quality because we already have a pretty good answer */
-      gmap_hits = align_single_hit_with_gmap(hit,/*extend_left_p*/true,/*extend_right_p*/true,
+      gmap_hits = align_single_hit_with_gmap(gmap_history,hit,
+					     /*extend_left_p*/true,/*extend_right_p*/true,
 					     queryuc_ptr,querylength,query_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 					     queryrc,Shortread_invertedp(queryseq),
@@ -13336,24 +12458,27 @@ align_singleend_with_gmap (List_T result, T this, Compress_T query_compress_fwd,
 					     query_compress_fwd,query_compress_rev,
 					     this->plus_segments,this->plus_nsegments,
 					     this->minus_segments,this->minus_nsegments,
-					     oligoindices_major,noligoindices_major,
-					     oligoindices_minor,noligoindices_minor,
-					     pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					     shortsplicedist,user_maxlevel,genestrand);
+					     oligoindices_major,oligoindices_minor,
+					     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					     user_maxlevel,genestrand,first_read_p);
 
       gmap_better_p = false;
-      missing_hit = querylength - Stage3end_nmatches(hit);
+      missing_hit = querylength - Stage3end_nmatches_posttrim(hit);
       for (a = gmap_hits; a != NULL; a = List_next(a)) {
 	gmap = (Stage3end_T) List_head(a);
-	missing_gmap = querylength - Stage3end_nmatches(gmap);
-	if (missing_gmap < missing_hit/2) {
+	missing_gmap = querylength - Stage3end_nmatches_posttrim(gmap);
+	if (Stage3end_score(gmap) > cutoff_level + gmap_allowance) {
+	  debug13(printf("Score is only %d vs cutoff level %d\n",Stage3end_score(gmap),cutoff_level));
+	  Stage3end_free(&gmap);
+	} else if (missing_gmap < missing_hit/2) {
 	  debug13(printf("GMAP with %d matches, %d missing is significantly better than hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap),missing_gmap,Stage3end_nmatches(hit),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap),missing_gmap,Stage3end_nmatches_posttrim(hit),missing_hit));
 	  gmap_better_p = true;
 	  new_result = List_push(new_result,(void *) gmap);
+	  Stage3end_set_improved_by_gmap(hit);
 	} else {
 	  debug13(printf("GMAP with %d matches, %d missing is not significantly better than hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap),missing_gmap,Stage3end_nmatches(hit),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap),missing_gmap,Stage3end_nmatches_posttrim(hit),missing_hit));
 	  Stage3end_free(&gmap);
 	}
       }
@@ -13380,23 +12505,22 @@ align_singleend_with_gmap (List_T result, T this, Compress_T query_compress_fwd,
 /* done_level should probably be renamed final_level.  opt_level
    should probably be renamed found_level or opt_level. */
 static List_T
-align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T query_compress_rev,
+align_end (int *cutoff_level, History_T gmap_history, T this,
+	   Compress_T query_compress_fwd, Compress_T query_compress_rev,
 	   char *queryuc_ptr, char *queryrc, int querylength, int query_lastpos,
 	   Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold, Floors_T *floors_array,
 
-	   Oligoindex_T *oligoindices_major, int noligoindices_major,
-	   Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-	   Pairpool_T pairpool, Diagpool_T diagpool,
+	   Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+	   Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 	   Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 
 	   int user_maxlevel, int subopt_levels,
-	   int indel_penalty_middle, int indel_penalty_end, Chrpos_T shortsplicedist,
+	   int indel_penalty_middle, int indel_penalty_end,
 	   int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-	   int max_middle_insertions, int max_middle_deletions,
 	   bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-	   bool allvalidp, bool keep_floors_p, int genestrand) {
+	   bool allvalidp, bool keep_floors_p, int genestrand, bool first_read_p) {
   List_T hits, subs = NULL, indels = NULL, new_indels,
-    singlesplicing = NULL, doublesplicing = NULL, shortendsplicing = NULL,
+    ambiguous = NULL, singlesplicing = NULL, doublesplicing = NULL, shortendsplicing = NULL,
     longsinglesplicing = NULL, distantsplicing = NULL, good_gmap_hits = NULL, terminals = NULL;
   List_T gmap_hits, p, a;
   Stage3end_T hit, gmap;
@@ -13409,6 +12533,25 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
   bool any_omitted_p, ambiguousp, alloc_floors_p = false, floors_computed_p = false;
   Floors_T floors;
   bool segments_computed_p = false, gmap_better_p, extend_left_p, extend_right_p;
+  Indexdb_T plus_indexdb, minus_indexdb;
+
+  if (genestrand == +2) {
+    if (first_read_p == false) {
+      plus_indexdb = indexdb_fwd;
+      minus_indexdb = indexdb_rev;
+    } else {
+      plus_indexdb = indexdb_rev;
+      minus_indexdb = indexdb_fwd;
+    }
+  } else {
+    if (first_read_p == true) {
+      plus_indexdb = indexdb_fwd;
+      minus_indexdb = indexdb_rev;
+    } else {
+      plus_indexdb = indexdb_rev;
+      minus_indexdb = indexdb_fwd;
+    }
+  }
 
   found_score = querylength;
   fast_level = (querylength + index1interval - 1)/spansize - NREQUIRED_FAST;
@@ -13450,60 +12593,86 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
   done_level = user_maxlevel /* + subopt_levels.  -- Initially the same */;
   debug(printf("0> opt_level %d, done_level %d\n",opt_level,done_level));
 
-  /* 1. Exact.  Requires compress if cmet or genomealt.  Creates and uses spanning set. */
-  mismatch_level = 0;
-  if (allvalidp == false) {
-    debug(printf("Not all oligos are valid, so cannot perform spanning set\n"));
-    fast_level = -1;
-  } else {
-    debug(printf("fast_level = %d\n",fast_level));
-    debug(printf("*** Stage 1.  Exact ***\n"));
-    subs = find_spanning_exact_matches(&found_score,&nhits,this,genestrand,
-				       querylength,query_lastpos,indexdb_fwd,indexdb_rev,
-				       query_compress_fwd,query_compress_rev);
+  nhits = 0;
+  if (use_sarray_p == true) {
+
+#ifndef LARGE_GENOMES
+    /* Replaces spanning set */
+    Sarray_search_greedy(&found_score,&subs,&indels,&ambiguous,&singlesplicing,&doublesplicing,
+			 queryuc_ptr,queryrc,querylength,
+			 query_compress_fwd,query_compress_rev,/*nmisses_allowed*/fast_level,
+			 genestrand,first_read_p);
+    singlesplicing = Splice_group_by_segmenti(&found_score,singlesplicing,&ambiguous,querylength,
+					      first_read_p,/*sarrayp*/true);
+    singlesplicing = Splice_group_by_segmentj(&found_score,singlesplicing,&ambiguous,querylength,
+					      first_read_p,/*sarrayp*/true);
+    singlesplicing = List_append(singlesplicing,ambiguous);
+
     opt_level = (found_score < opt_level) ? found_score : opt_level;
     if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
       done_level = user_maxlevel;
     }
-    mismatch_level = 1;
-    debug(printf("1> found_score = %d, opt_level %d, done_level %d\n",found_score,opt_level,done_level));
-  }
+#endif
 
-  /* 2. One mismatch.  Requires spanning set and compress. */
-  if (allvalidp && querylength >= one_miss_querylength && done_level >= 1) {
-    debug(printf("*** Stage 2.  One miss ***\n"));
-    subs = find_spanning_onemiss_matches(&found_score,&nhits,subs,this,genestrand,querylength,
+  } else {
+    /* 1. Exact.  Requires compress if cmet or genomealt.  Creates and uses spanning set. */
+    mismatch_level = 0;
+    if (allvalidp == false) {
+      debug(printf("Not all oligos are valid, so cannot perform spanning set\n"));
+      fast_level = -1;
+    } else {
+      debug(printf("fast_level = %d\n",fast_level));
+      debug(printf("*** Stage 1.  Exact ***\n"));
+      subs = find_spanning_exact_matches(&found_score,&nhits,/*hits*/NULL,this,genestrand,first_read_p,
+					 querylength,query_lastpos,plus_indexdb,minus_indexdb,
 					 query_compress_fwd,query_compress_rev);
-    opt_level = (found_score < opt_level) ? found_score : opt_level;
-    if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
-      done_level = user_maxlevel;
+      opt_level = (found_score < opt_level) ? found_score : opt_level;
+      if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
+	done_level = user_maxlevel;
+      }
+      mismatch_level = 1;
+      debug(printf("1> found_score = %d, opt_level %d, done_level %d\n",found_score,opt_level,done_level));
     }
-    mismatch_level = 2;
-    debug(printf("2> found_score = %d, opt_level %d, done_level %d\n",found_score,opt_level,done_level));
-  }
 
-  /* 3. Mismatches via spanning set.  Requires spanning set and compress. */
-  if (allvalidp && done_level >= 2) {
-    while (mismatch_level <= fast_level && mismatch_level <= done_level) {
-      debug(printf("*** Stage 3 (level %d).  Spanning set mismatches ***\n",mismatch_level));
-      subs = find_spanning_multimiss_matches(&found_score,&nhits,subs,this,genestrand,NREQUIRED_FAST,querylength,
-					     query_compress_fwd,query_compress_rev,
-					     /*nmisses_allowed*/mismatch_level);
+    /* 2. One mismatch.  Requires spanning set and compress. */
+    if (allvalidp && querylength >= one_miss_querylength && done_level >= 1) {
+      debug(printf("*** Stage 2.  One miss ***\n"));
+      subs = find_spanning_onemiss_matches(&found_score,&nhits,subs,this,genestrand,first_read_p,
+					   querylength,query_compress_fwd,query_compress_rev);
       opt_level = (found_score < opt_level) ? found_score : opt_level;
       if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
 	done_level = user_maxlevel;
       }
-      mismatch_level++;
-      debug(printf("3> found_score = %d, opt_level %d, done_level %d\n",found_score,opt_level,done_level));
+      mismatch_level = 2;
+      debug(printf("2> found_score = %d, opt_level %d, done_level %d\n",found_score,opt_level,done_level));
+    }
+
+    /* 3. Mismatches via spanning set.  Requires spanning set and compress. */
+    if (allvalidp && done_level >= 2) {
+      while (mismatch_level <= fast_level && mismatch_level <= done_level) {
+	debug(printf("*** Stage 3 (level %d).  Spanning set mismatches ***\n",mismatch_level));
+	subs = find_spanning_multimiss_matches(&found_score,&nhits,subs,this,genestrand,first_read_p,
+					       NREQUIRED_FAST,querylength,query_compress_fwd,query_compress_rev,
+					       /*nmisses_allowed*/mismatch_level);
+	opt_level = (found_score < opt_level) ? found_score : opt_level;
+	if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
+	  done_level = user_maxlevel;
+	}
+	mismatch_level++;
+	debug(printf("3> found_score = %d, opt_level %d, done_level %d\n",found_score,opt_level,done_level));
+      }
     }
   }
 
   /* 4, 5.  Complete set mismatches and indels, omitting frequent oligos */
   debug(printf("Testing done_level %d > fast_level %d\n",done_level,fast_level));
-  if (done_level > fast_level || done_level >= indel_penalty_middle || done_level >= indel_penalty_end) {
+  if (use_sarray_p == true && (subs || indels || singlesplicing || doublesplicing)) {
+      /* Skip.  Suffix array already found something.  Also, get memory errors if run both algorithms. */
+
+  } else if (done_level > fast_level || done_level >= indel_penalty_middle || done_level >= indel_penalty_end) {
 #if 1
     floors = compute_floors(&any_omitted_p,&alloc_floors_p,floors_array,this,querylength,query_lastpos,
-			    indexdb_fwd,indexdb_rev,indexdb_size_threshold,max_end_insertions,
+			    plus_indexdb,minus_indexdb,indexdb_size_threshold,max_end_insertions,
 			    /*omit_frequent_p*/true,/*omit_repetitive_p*/true,keep_floors_p);
     floors_computed_p = true;
     complete_set_mm_indels(&found_score,&segments_computed_p,
@@ -13513,9 +12682,9 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 			   queryuc_ptr,queryrc,
 #endif
 			   querylength,query_lastpos,floors,subopt_levels,
-			   indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			   indel_penalty_middle,indel_penalty_end,
 			   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			   fast_level,genestrand);
+			   fast_level,genestrand,first_read_p);
 #else
     /* Using obsolete masktype */
     if (masktype == MASK_NONE) {
@@ -13526,12 +12695,12 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 #if defined(DEBUG2) || defined(DEBUG2E)
 			     queryuc_ptr,queryrc,
 #endif
-			     querylength,query_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			     querylength,query_lastpos,plus_indexdb,minus_indexdb,indexdb_size_threshold,
 			     floors_array,subopt_levels,
-			     indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			     indel_penalty_middle,indel_penalty_end,
 			     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			     fast_level,/*omit_frequent_p*/false,/*omit_repetitive_p*/false,keep_floors_p,
-			     genestrand);
+			     genestrand,first_read_p);
     } else {
       debug(printf("*** Stage 4,5.  Complete mm/indels masking frequent oligos with done_level %d ***\n",done_level));
       complete_set_mm_indels(&found_score,&segments_computed_p,
@@ -13540,13 +12709,13 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 #if defined(DEBUG2) || defined(DEBUG2E)
 			     queryuc_ptr,queryrc,
 #endif
-			     querylength,query_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			     querylength,query_lastpos,plus_indexdb,minus_indexdb,indexdb_size_threshold,
 			     floors_array,subopt_levels,
-			     indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			     indel_penalty_middle,indel_penalty_end,
 			     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			     fast_level,/*omit_frequent_p*/true,
 			     /*omit_repetitive_p*/(masktype == MASK_REPETITIVE || masktype == MASK_GREEDY_REPETITIVE) ? true : false,
-			     keep_floors_p,genestrand);
+			     keep_floors_p,genestrand,first_read_p);
       if ((masktype == MASK_GREEDY_FREQUENT || masktype == MASK_GREEDY_REPETITIVE) && subs == NULL && indels == NULL && any_omitted_p == true) {
 	FREE(this->minus_segments);
 	FREE(this->plus_segments);
@@ -13558,19 +12727,22 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 #if defined(DEBUG2) || defined(DEBUG2E)
 			       queryuc_ptr,queryrc,
 #endif
-			       querylength,query_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			       querylength,query_lastpos,plus_indexdb,minus_indexdb,indexdb_size_threshold,
 			       floors_array,subopt_levels,
-			       indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			       indel_penalty_middle,indel_penalty_end,
 			       allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			       fast_level,/*omit_frequent_p*/false,/*omit_repetitive_p*/false,keep_floors_p,
-			       genestrand);
+			       genestrand,first_read_p);
       }
     }
 #endif
   }
 
   /* 6, 7, 8, 9.  Splicing.  Requires compress and all positions fetched */
-  if (knownsplicingp || novelsplicingp) {
+  if (use_sarray_p == true && (subs || indels || singlesplicing || doublesplicing)) {
+      /* Skip.  Suffix array already found something.  Also, get memory errors if run both algorithms.  */
+
+  } else if (knownsplicingp || novelsplicingp) {
     /* 6.  Single splicing */
     debug(printf("Deciding whether to do singlesplicing: done_level %d >=? localsplicing_penalty %d\n",
 		 done_level,localsplicing_penalty));
@@ -13579,27 +12751,37 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
       /* Always mask frequent oligos for splicing, which must be transcriptional */
       if (floors_computed_p == false) {
 	floors = compute_floors(&any_omitted_p,&alloc_floors_p,floors_array,this,querylength,query_lastpos,
-				indexdb_fwd,indexdb_rev,indexdb_size_threshold,max_end_insertions,
+				plus_indexdb,minus_indexdb,indexdb_size_threshold,max_end_insertions,
 				/*omit_frequent_p*/true,/*omit_repetitive_p*/true,keep_floors_p);
 	floors_computed_p = true;
       }
 
       if (segments_computed_p == false) {
-	this->plus_segments = identify_all_segments(&this->plus_nsegments,this->plus_positions,this->plus_npositions,
-						    this->omitted,querylength,query_lastpos,floors,/*plusp*/true);
-	this->minus_segments = identify_all_segments(&this->minus_nsegments,this->minus_positions,this->minus_npositions,
-						     this->omitted,querylength,query_lastpos,floors,/*plusp*/false);
+	this->plus_segments = identify_all_segments(&this->plus_nsegments,&this->plus_spliceable,&this->plus_nspliceable,
+#ifdef LARGE_GENOMES
+						    this->plus_positions_high,this->plus_positions_low,
+#else
+						    this->plus_positions,
+#endif
+						    this->plus_npositions,this->omitted,querylength,query_lastpos,floors,
+						    /*plusp*/true);
+	this->minus_segments = identify_all_segments(&this->minus_nsegments,&this->minus_spliceable,&this->minus_nspliceable,
+#ifdef LARGE_GENOMES
+						     this->minus_positions_high,this->minus_positions_low,
+#else
+						     this->minus_positions,
+#endif
+						     this->minus_npositions,this->omitted,querylength,query_lastpos,floors,
+						     /*plusp*/false);
 	segments_computed_p = true;
       }
 
-      singlesplicing = complete_set_singlesplicing(&found_score,floors,
-						   this->plus_segments,this->plus_nsegments,
-						   this->minus_segments,this->minus_nsegments,
+      singlesplicing = complete_set_singlesplicing(&found_score,singlesplicing,floors,this,
 						   query_compress_fwd,query_compress_rev,
 						   querylength,query_lastpos,
-						   shortsplicedist,localsplicing_penalty,
+						   localsplicing_penalty,
 						   /*max_mismatches_allowed*/done_level - localsplicing_penalty,
-						   /*first_read_p*/NOT_APPLICABLE,genestrand,
+						   genestrand,first_read_p,
 						   /*subs_or_indels_p*/(subs != NULL || indels != NULL) ? true : false);
 
 #if 0
@@ -13623,13 +12805,18 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 		 done_level,localsplicing_penalty));
     if (done_level >= localsplicing_penalty) {
       debug(printf("*** Stage 7.  Double splicing masking frequent oligos with done_level %d ***\n",done_level));
-      doublesplicing = complete_set_doublesplicing(&found_score,floors,this->plus_segments,this->plus_nsegments,
-						   this->minus_segments,this->minus_nsegments,
+      if (floors_computed_p == false) {
+	floors = compute_floors(&any_omitted_p,&alloc_floors_p,floors_array,this,querylength,query_lastpos,
+				plus_indexdb,minus_indexdb,indexdb_size_threshold,max_end_insertions,
+				/*omit_frequent_p*/true,/*omit_repetitive_p*/true,keep_floors_p);
+	floors_computed_p = true;
+      }
+      doublesplicing = complete_set_doublesplicing(&found_score,doublesplicing,floors,this,
 						   query_compress_fwd,query_compress_rev,
 						   queryuc_ptr,queryrc,querylength,query_lastpos,
-						   shortsplicedist,localsplicing_penalty,min_shortend,
+						   localsplicing_penalty,min_shortend,
 						   /*max_mismatches_allowed*/done_level - localsplicing_penalty,
-						   /*pairedp*/false,/*first_read_p*/NOT_APPLICABLE,genestrand,
+						   /*pairedp*/false,genestrand,first_read_p,
 						   /*subs_or_indels_p*/(subs != NULL || indels != NULL) ? true : false);
       
 #if 0
@@ -13671,7 +12858,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 			       /*queryptr*/queryuc_ptr,
 #endif
 			       floors,querylength,query_lastpos,/*query_compress*/query_compress_fwd,
-			       max_splice_mismatches,/*plusp*/true,genestrand);
+			       max_splice_mismatches,/*plusp*/true,genestrand,first_read_p);
       debug(printf("Finished find_spliceends (plus)\n"));
 
       debug(printf("Starting find_spliceends (minus)\n"));
@@ -13681,7 +12868,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 			       /*queryptr*/queryrc,
 #endif
 			       floors,querylength,query_lastpos,/*query_compress*/query_compress_rev,
-			       max_splice_mismatches,/*plusp*/false,genestrand);
+			       max_splice_mismatches,/*plusp*/false,genestrand,first_read_p);
       debug(printf("Finished find_spliceends (minus)\n"));
 
       shortendsplicing = find_splicepairs_shortend(&found_score,shortendsplicing,
@@ -13693,7 +12880,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 						   queryuc_ptr,queryrc,min_shortend,
 						   localsplicing_penalty,
 						   /*max_mismatches_allowed*/max_splice_mismatches,querylength,
-						   /*pairedp*/false,/*first_read_p*/NOT_APPLICABLE,genestrand);
+						   /*pairedp*/false,genestrand,first_read_p);
       opt_level = (found_score < opt_level) ? found_score : opt_level;
       if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
 	done_level = user_maxlevel;
@@ -13753,7 +12940,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 			      /*queryptr*/queryuc_ptr,
 #endif
 			      floors,querylength,query_lastpos,/*query_compress*/query_compress_fwd,
-			      max_splice_mismatches,/*plusp*/true,genestrand);
+			      max_splice_mismatches,/*plusp*/true,genestrand,first_read_p);
       debug(printf("Finished find_spliceends (plus)\n"));
 
 
@@ -13764,7 +12951,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 			      /*queryptr*/queryrc,
 #endif
 			      floors,querylength,query_lastpos,/*query_compress*/query_compress_rev,
-			      max_splice_mismatches,/*plusp*/false,genestrand);
+			      max_splice_mismatches,/*plusp*/false,genestrand,first_read_p);
       debug(printf("Finished find_spliceends (minus)\n"));
 
 
@@ -13798,8 +12985,8 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 	distantsplicing = find_splicepairs_distant(&found_score,&nsplicepairs,&longsinglesplicing,distantsplicing,
 						   donors_plus,antidonors_plus,acceptors_plus,antiacceptors_plus,
 						   donors_minus,antidonors_minus,acceptors_minus,antiacceptors_minus,
-						   shortsplicedist,localsplicing_penalty,distantsplicing_penalty,
-						   querylength,nmismatches,/*first_read_p*/NOT_APPLICABLE);
+						   localsplicing_penalty,distantsplicing_penalty,
+						   querylength,nmismatches,first_read_p);
 #if 0
 	assert(List_length(distantsplicing) <= 1);
 #endif
@@ -13886,31 +13073,34 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
       if (Stage3end_indel_contains_known_splicesite(&extend_left_p,&extend_right_p,hit) == false) {
 	new_indels = List_push(new_indels,(void *) hit);
       } else {
-	gmap_hits = align_single_hit_with_gmap(hit,extend_left_p,extend_right_p,
+	gmap_hits = align_single_hit_with_gmap(gmap_history,hit,extend_left_p,extend_right_p,
 					       queryuc_ptr,querylength,query_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 					       queryrc,Shortread_invertedp(queryseq),
 #endif
 					       query_compress_fwd,query_compress_rev,
 					       this->plus_segments,this->plus_nsegments,this->minus_segments,this->minus_nsegments,
-					       oligoindices_major,noligoindices_major,
-					       oligoindices_minor,noligoindices_minor,
-					       pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					       shortsplicedist,user_maxlevel,genestrand);
+					       oligoindices_major,oligoindices_minor,
+					       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					       user_maxlevel,genestrand,first_read_p);
 
 	gmap_better_p = false;
-	missing_hit = querylength - Stage3end_nmatches(hit);
+	missing_hit = querylength - Stage3end_nmatches_posttrim(hit);
 	for (a = gmap_hits; a != NULL; a = List_next(a)) {
 	  gmap = (Stage3end_T) List_head(a);
-	  missing_gmap = querylength - Stage3end_nmatches(gmap);
-	  if (missing_gmap < missing_hit/2) {
+	  missing_gmap = querylength - Stage3end_nmatches_posttrim(gmap);
+	  if (Stage3end_score(gmap) > opt_level + gmap_allowance) {
+	    debug13(printf("Score is only %d vs opt_level %d\n",Stage3end_score(gmap),opt_level));
+	    Stage3end_free(&gmap);
+	  } else if (missing_gmap < missing_hit/2) {
 	    debug13(printf("GMAP with %d matches, %d missing is significantly better than indel with %d matches, %d missing\n",
-			   Stage3end_nmatches(gmap),missing_gmap,Stage3end_nmatches(hit),missing_hit));
+			   Stage3end_nmatches_posttrim(gmap),missing_gmap,Stage3end_nmatches_posttrim(hit),missing_hit));
 	    good_gmap_hits = List_push(good_gmap_hits,(void *) gmap);
 	    gmap_better_p = true;
+	    Stage3end_set_improved_by_gmap(hit);
 	  } else {
 	    debug13(printf("GMAP with %d matches, %d missing is not significantly better than indel with %d matches, %d missing\n",
-			   Stage3end_nmatches(gmap),missing_gmap,Stage3end_nmatches(hit),missing_hit));
+			   Stage3end_nmatches_posttrim(gmap),missing_gmap,Stage3end_nmatches_posttrim(hit),missing_hit));
 	    Stage3end_free(&gmap);
 	  }
 	}
@@ -13936,19 +13126,27 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
     debug(printf("*** Stage 10.  Terminals up to %d mismatches ***\n",max_mismatches_allowed));
     if (floors_computed_p == false) {
       floors = compute_floors(&any_omitted_p,&alloc_floors_p,floors_array,this,querylength,query_lastpos,
-			      indexdb_fwd,indexdb_rev,indexdb_size_threshold,max_end_insertions,
+			      plus_indexdb,minus_indexdb,indexdb_size_threshold,max_end_insertions,
 			      /*omit_frequent_p*/true,/*omit_repetitive_p*/true,keep_floors_p);
     }
 
     if (segments_computed_p == false) {
-      this->plus_segments = identify_all_segments_for_terminals(&this->plus_nsegments,this->plus_positions,this->plus_npositions,
-								this->omitted,querylength,query_lastpos,
-								floors,max_mismatches_allowed,
-								/*plusp*/true);
-      this->minus_segments = identify_all_segments_for_terminals(&this->minus_nsegments,this->minus_positions,this->minus_npositions,
-								 this->omitted,querylength,query_lastpos,
-								 floors,max_mismatches_allowed,
-								 /*plusp*/false);
+      this->plus_segments = identify_all_segments_for_terminals(&this->plus_nsegments,
+#ifdef LARGE_GENOMES
+								this->plus_positions_high,this->plus_positions_low,
+#else
+								this->plus_positions,
+#endif
+								this->plus_npositions,this->omitted,querylength,query_lastpos,
+								floors,max_mismatches_allowed,/*plusp*/true);
+      this->minus_segments = identify_all_segments_for_terminals(&this->minus_nsegments,
+#ifdef LARGE_GENOMES
+								 this->minus_positions_high,this->minus_positions_low,
+#else
+								 this->minus_positions,
+#endif
+								 this->minus_npositions,this->omitted,querylength,query_lastpos,
+								 floors,max_mismatches_allowed,/*plusp*/false);
     }
 
     terminals = find_terminals(this->plus_segments,this->plus_nsegments,this->minus_segments,this->minus_nsegments,
@@ -13957,7 +13155,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 #endif
 			       floors,querylength,query_lastpos,
 			       query_compress_fwd,query_compress_rev,
-			       max_mismatches_allowed,/*max_terminal_length*/end_miss_one,genestrand);
+			       max_mismatches_allowed,genestrand,first_read_p);
 #if 0
     opt_level = (found_score < opt_level) ? found_score : opt_level;
     if ((done_level = opt_level + subopt_levels) > user_maxlevel) {
@@ -13988,7 +13186,8 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
       for (p = terminals; p != NULL; p = List_next(p)) {
 	hit = (Stage3end_T) List_head(p);
 	/* Was align_single_terminal_with_gmap() */
-	gmap_hits = align_single_hit_with_gmap(hit,/*extend_left_p*/Stage3end_start_endtype(hit) == TERM,
+	gmap_hits = align_single_hit_with_gmap(gmap_history,hit,
+					       /*extend_left_p*/Stage3end_start_endtype(hit) == TERM,
 					       /*extend_right_p*/Stage3end_end_endtype(hit) == TERM,
 					       queryuc_ptr,querylength,query_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
@@ -13996,22 +13195,25 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
 #endif
 					       query_compress_fwd,query_compress_rev,
 					       this->plus_segments,this->plus_nsegments,this->minus_segments,this->minus_nsegments,
-					       oligoindices_major,noligoindices_major,
-					       oligoindices_minor,noligoindices_minor,
-					       pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					       shortsplicedist,user_maxlevel,genestrand);
+					       oligoindices_major,oligoindices_minor,
+					       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					       user_maxlevel,genestrand,first_read_p);
 
-	missing_hit = querylength - Stage3end_nmatches(hit);
+	missing_hit = querylength - Stage3end_nmatches_posttrim(hit);
 	for (a = gmap_hits; a != NULL; a = List_next(a)) {
 	  gmap = (Stage3end_T) List_head(a);
-	  missing_gmap = querylength - Stage3end_nmatches(gmap);
-	  if (missing_gmap < missing_hit/2) {
+	  missing_gmap = querylength - Stage3end_nmatches_posttrim(gmap);
+	  if (Stage3end_score(gmap) > opt_level + gmap_allowance) {
+	    debug13(printf("Score is only %d vs opt_level %d\n",Stage3end_score(gmap),opt_level));
+	    Stage3end_free(&gmap);
+	  } else if (missing_gmap < missing_hit/2) {
 	    debug13(printf("GMAP with %d matches, %d missing is significantly better than terminal with %d matches, %d missing\n",
-			   Stage3end_nmatches(gmap),missing_gmap,Stage3end_nmatches(hit),missing_hit));
+			   Stage3end_nmatches_posttrim(gmap),missing_gmap,Stage3end_nmatches_posttrim(hit),missing_hit));
 	    good_gmap_hits = List_push(good_gmap_hits,(void *) gmap);
+	    Stage3end_set_improved_by_gmap(hit);
 	  } else {
 	    debug13(printf("GMAP with %d matches, %d missing is not significantly better than terminal with %d matches, %d missing\n",
-			   Stage3end_nmatches(gmap),missing_gmap,Stage3end_nmatches(hit),missing_hit));
+			   Stage3end_nmatches_posttrim(gmap),missing_gmap,Stage3end_nmatches_posttrim(hit),missing_hit));
 	    Stage3end_free(&gmap);
 	  }
 	}
@@ -14040,6 +13242,7 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
     debug(printf("No GMAP improvement: Before remove_overlaps at cutoff level %d: %d\n",*cutoff_level,List_length(hits)));
     hits = Stage3end_optimal_score(hits,*cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/true,/*finalp*/true);
+    hits = Stage3end_filter_terminals(hits,querylength);
     hits = Stage3end_remove_overlaps(hits,/*finalp*/true);
     hits = Stage3end_optimal_score(hits,*cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/false,/*finalp*/true);
@@ -14050,19 +13253,21 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
     debug(printf("GMAP improvement: Before remove_overlaps at cutoff level %d: %d\n",*cutoff_level,List_length(hits)));
     hits = Stage3end_optimal_score(hits,*cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/true,/*finalp*/false);
+    hits = Stage3end_filter_terminals(hits,querylength);
     hits = Stage3end_remove_overlaps(hits,/*finalp*/false);
     hits = Stage3end_optimal_score(hits,*cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/false,/*finalp*/false);
     hits = Stage3end_resolve_multimapping(hits);
     debug(printf("After remove_overlaps: %d\n",List_length(hits)));
 
-    hits = align_singleend_with_gmap(hits,this,query_compress_fwd,query_compress_rev,
+    hits = align_singleend_with_gmap(gmap_history,hits,this,query_compress_fwd,query_compress_rev,
 				     queryuc_ptr,querylength,query_lastpos,
-				     oligoindices_major,noligoindices_major,
-				     oligoindices_minor,noligoindices_minor,
-				     pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+				     oligoindices_major,oligoindices_minor,
+				     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel,*cutoff_level,
+				     first_read_p);
     hits = Stage3end_optimal_score(hits,*cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/true,/*finalp*/true);
+    hits = Stage3end_filter_terminals(hits,querylength);
     hits = Stage3end_remove_overlaps(hits,/*finalp*/true);
     hits = Stage3end_optimal_score(hits,*cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/false,/*finalp*/true);
@@ -14070,6 +13275,8 @@ align_end (int *cutoff_level, T this, Compress_T query_compress_fwd, Compress_T
   }
 
   hits = Stage3end_remove_circular_alias(hits);
+  hits = Stage3end_remove_duplicates(hits); /* Aliases can cause duplicates */
+
   return hits;
 }
 
@@ -14079,16 +13286,15 @@ single_read (int *npaths, int *first_absmq, int *second_absmq,
 	     Shortread_T queryseq, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
 	     int indexdb_size_threshold, Genome_T genome, Floors_T *floors_array,
 	     double user_maxlevel_float, int subopt_levels,
-	     int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+	     int indel_penalty_middle, int indel_penalty_end,
 	     bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-	     Chrpos_T shortsplicedist,
 	     int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-	     Oligoindex_T *oligoindices_major, int noligoindices_major,
-	     Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-	     Pairpool_T pairpool, Diagpool_T diagpool,
+	     Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+	     Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 	     Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 	     bool keep_floors_p) {
   Stage3end_T *stage3array;
+  History_T gmap_history;
   List_T hits = NULL;
   T this = NULL;
   int user_maxlevel;
@@ -14099,13 +13305,15 @@ single_read (int *npaths, int *first_absmq, int *second_absmq,
   bool allvalidp;
 
   if ((querylength = Shortread_fulllength(queryseq)) < min_readlength) {
-    fprintf(stderr,"GSNAP cannot handle reads shorter than %d bp\n",min_readlength);
+    fprintf(stderr,"Read %s has length %d < min_readlength %d.  Skipping.\n",
+	    Shortread_accession(queryseq),querylength,min_readlength);
+    /* fprintf(stderr,"You may want to build a genomic index with a smaller k-mer value using the -k flag to gmap_build\n"); */
     *npaths = 0;
     return (Stage3end_T *) NULL;
 
   } else if (querylength > MAX_READLENGTH) {
-    fprintf(stderr,"GSNAP cannot handle reads longer than %d bp.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
-	    MAX_READLENGTH);
+    fprintf(stderr,"Read %s has length %d > MAX_READLENGTH %d.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
+	    Shortread_accession(queryseq),querylength,MAX_READLENGTH);
     *npaths = 0;
     return (Stage3end_T *) NULL;
 
@@ -14118,38 +13326,43 @@ single_read (int *npaths, int *first_absmq, int *second_absmq,
       user_maxlevel = (int) user_maxlevel_float;
     }
 
-    this = Stage1_new(querylength);
+    /* Limit search on repetitive sequences */
     queryuc_ptr = Shortread_fullpointer_uc(queryseq);
     quality_string = Shortread_quality_string(queryseq);
-    query_lastpos = querylength - index1part;
-
-    /* Limit search on repetitive sequences */
     if (check_dinucleotides(queryuc_ptr,querylength) == false) {
       user_maxlevel = 0;
     }
 
-    if (read_oligos(&allvalidp,this,queryuc_ptr,querylength,query_lastpos,/*genestrand*/0) == 0) {
+    query_compress_fwd = Compress_new_fwd(queryuc_ptr,querylength);
+    query_compress_rev = Compress_new_rev(queryuc_ptr,querylength);
+    make_complement_buffered(queryrc,queryuc_ptr,querylength);
+
+    this = Stage1_new(querylength);
+    query_lastpos = querylength - index1part;
+
+    if (read_oligos(&allvalidp,this,queryuc_ptr,querylength,query_lastpos,/*genestrand*/0,
+		    /*first_read_p*/true) == 0) {
       debug(printf("Aborting because no hits found anywhere\n"));
       *npaths = 0;
+      Compress_free(&query_compress_fwd);
+      Compress_free(&query_compress_rev);
       Stage1_free(&this,querylength);
       return (Stage3end_T *) NULL;
 
     } else {
-      query_compress_fwd = Compress_new(queryuc_ptr,querylength,/*plusp*/true);
-      query_compress_rev = Compress_new(queryuc_ptr,querylength,/*plusp*/false);
-      make_complement_buffered(queryrc,queryuc_ptr,querylength);
 
-      hits = align_end(&cutoff_level,this,query_compress_fwd,query_compress_rev,
+      gmap_history = History_new();
+      hits = align_end(&cutoff_level,gmap_history,this,
+		       query_compress_fwd,query_compress_rev,
 		       queryuc_ptr,queryrc,querylength,query_lastpos,
 		       indexdb_fwd,indexdb_rev,indexdb_size_threshold,floors_array,
-		       oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		       pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+		       oligoindices_major,oligoindices_minor,
+		       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 		       user_maxlevel,subopt_levels,
-		       indel_penalty_middle,indel_penalty_end,shortsplicedist,
+		       indel_penalty_middle,indel_penalty_end,
 		       localsplicing_penalty,distantsplicing_penalty,min_shortend,
-		       max_middle_insertions,max_middle_deletions,
 		       allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-		       allvalidp,keep_floors_p,/*genestrand*/0);
+		       allvalidp,keep_floors_p,/*genestrand*/0,/*first_read_p*/true);
 
       if ((*npaths = List_length(hits)) == 0) {
 	stage3array = (Stage3end_T *) NULL;
@@ -14161,6 +13374,7 @@ single_read (int *npaths, int *first_absmq, int *second_absmq,
 					      genome,quality_string,/*displayp*/true);
       }
 
+      History_free(&gmap_history);
       Compress_free(&query_compress_fwd);
       Compress_free(&query_compress_rev);
       Stage1_free(&this,querylength); 
@@ -14172,19 +13386,18 @@ single_read (int *npaths, int *first_absmq, int *second_absmq,
 
 static Stage3end_T *
 single_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_absmq,
-				  Shortread_T queryseq, Indexdb_T indexdb_geneplus, Indexdb_T indexdb_geneminus,
+				  Shortread_T queryseq, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
 				  int indexdb_size_threshold, Genome_T genome, Floors_T *floors_array,
 				  double user_maxlevel_float, int subopt_levels,
-				  int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+				  int indel_penalty_middle, int indel_penalty_end,
 				  bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-				  Chrpos_T shortsplicedist,
 				  int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-				  Oligoindex_T *oligoindices_major, int noligoindices_major,
-				  Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-				  Pairpool_T pairpool, Diagpool_T diagpool,
+				  Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor, 
+				  Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 				  Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 				  bool keep_floors_p) {
   Stage3end_T *stage3array;
+  History_T gmap_history;
   List_T hits, hits_geneplus = NULL, hits_geneminus = NULL;
   T this_geneplus = NULL, this_geneminus = NULL;
   int user_maxlevel;
@@ -14195,13 +13408,15 @@ single_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
   bool allvalidp;
 
   if ((querylength = Shortread_fulllength(queryseq)) < min_readlength) {
-    fprintf(stderr,"GSNAP cannot handle reads shorter than %d bp\n",min_readlength);
+    fprintf(stderr,"Read %s has length %d < min_readlength %d.  Skipping\n",
+	    Shortread_accession(queryseq),querylength,min_readlength);
+    /* fprintf(stderr,"You may want to build a genomic index with a smaller k-mer value using the -k flag to gmap_build\n"); */
     *npaths = 0;
     return (Stage3end_T *) NULL;
 
   } else if (querylength > MAX_READLENGTH) {
-    fprintf(stderr,"GSNAP cannot handle reads longer than %d bp.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
-	    MAX_READLENGTH);
+    fprintf(stderr,"Read %s has length %d > MAX_READLENGTH %d.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
+	    Shortread_accession(queryseq),querylength,MAX_READLENGTH);
     *npaths = 0;
     return (Stage3end_T *) NULL;
 
@@ -14226,41 +13441,45 @@ single_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
       user_maxlevel = 0;
     }
 
-    query_compress_fwd = Compress_new(queryuc_ptr,querylength,/*plusp*/true);
-    query_compress_rev = Compress_new(queryuc_ptr,querylength,/*plusp*/false);
+    query_compress_fwd = Compress_new_fwd(queryuc_ptr,querylength);
+    query_compress_rev = Compress_new_rev(queryuc_ptr,querylength);
+    gmap_history = History_new();
     make_complement_buffered(queryrc,queryuc_ptr,querylength);
 
-    if (read_oligos(&allvalidp,this_geneplus,queryuc_ptr,querylength,query_lastpos,/*genestrand*/+1) > 0) {
-      hits_geneplus = align_end(&cutoff_level,this_geneplus,query_compress_fwd,query_compress_rev,
+    if (read_oligos(&allvalidp,this_geneplus,queryuc_ptr,querylength,query_lastpos,/*genestrand*/+1,
+		    /*first_read_p*/true) > 0) {
+      hits_geneplus = align_end(&cutoff_level,gmap_history,this_geneplus,
+				query_compress_fwd,query_compress_rev,
 				queryuc_ptr,queryrc,querylength,query_lastpos,
-				indexdb_geneplus,indexdb_geneplus,indexdb_size_threshold,floors_array,
-				oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-				pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+				indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+				floors_array,oligoindices_major,oligoindices_minor,
+				pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 				user_maxlevel,subopt_levels,
-				indel_penalty_middle,indel_penalty_end,shortsplicedist,
+				indel_penalty_middle,indel_penalty_end,
 				localsplicing_penalty,distantsplicing_penalty,min_shortend,
-				max_middle_insertions,max_middle_deletions,
 				allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-				allvalidp,keep_floors_p,/*genestrand*/+1);
+				allvalidp,keep_floors_p,/*genestrand*/+1,/*first_read_p*/true);
     }
 
-    if (read_oligos(&allvalidp,this_geneminus,queryuc_ptr,querylength,query_lastpos,/*genestrand*/+2) > 0) {
-      hits_geneminus = align_end(&cutoff_level,this_geneminus,query_compress_fwd,query_compress_rev,
+    if (read_oligos(&allvalidp,this_geneminus,queryuc_ptr,querylength,query_lastpos,/*genestrand*/+2,
+		    /*first_read_p*/true) > 0) {
+      hits_geneminus = align_end(&cutoff_level,gmap_history,this_geneminus,
+				 query_compress_fwd,query_compress_rev,
 				 queryuc_ptr,queryrc,querylength,query_lastpos,
-				 indexdb_geneminus,indexdb_geneminus,indexdb_size_threshold,floors_array,
-				 oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-				 pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+				 indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+				 floors_array,oligoindices_major,oligoindices_minor,
+				 pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 				 user_maxlevel,subopt_levels,
-				 indel_penalty_middle,indel_penalty_end,shortsplicedist,
+				 indel_penalty_middle,indel_penalty_end,
 				 localsplicing_penalty,distantsplicing_penalty,min_shortend,
-				 max_middle_insertions,max_middle_deletions,
 				 allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-				 allvalidp,keep_floors_p,/*genestrand*/+2);
+				 allvalidp,keep_floors_p,/*genestrand*/+2,/*first_read_p*/true);
     }
 
     hits = List_append(hits_geneplus,hits_geneminus);
     hits = Stage3end_optimal_score(hits,cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/true,/*finalp*/true);
+    hits = Stage3end_filter_terminals(hits,querylength);
     hits = Stage3end_remove_overlaps(hits,/*finalp*/true);
     hits = Stage3end_optimal_score(hits,cutoff_level,subopt_levels,query_compress_fwd,query_compress_rev,
 				   /*keep_gmap_p*/false,/*finalp*/true);
@@ -14276,6 +13495,7 @@ single_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 					    genome,quality_string,/*displayp*/true);
     }
     
+    History_free(&gmap_history);
     Compress_free(&query_compress_fwd);
     Compress_free(&query_compress_rev);
     Stage1_free(&this_geneminus,querylength); 
@@ -14287,38 +13507,35 @@ single_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 
 Stage3end_T *
 Stage1_single_read (int *npaths, int *first_absmq, int *second_absmq,
-		    Shortread_T queryseq, Indexdb_T indexdb, Indexdb_T indexdb2,
+		    Shortread_T queryseq, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
 		    int indexdb_size_threshold, Genome_T genome, Floors_T *floors_array,
 		    double user_maxlevel_float, int subopt_levels,
-		    int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+		    int indel_penalty_middle, int indel_penalty_end,
 		    bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		    Chrpos_T shortsplicedist,
 		    int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-		    Oligoindex_T *oligoindices_major, int noligoindices_major,
-		    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		    Pairpool_T pairpool, Diagpool_T diagpool,
+		    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		    bool keep_floors_p) {
 
   if (mode == STANDARD || mode == CMET_STRANDED || mode == ATOI_STRANDED) {
     return single_read(&(*npaths),&(*first_absmq),&(*second_absmq),
-		       queryseq,/*indexdb_fwd*/indexdb,/*indexdb_rev*/indexdb2,
-		       indexdb_size_threshold,genome,floors_array,user_maxlevel_float,subopt_levels,
+		       queryseq,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+		       genome,floors_array,user_maxlevel_float,subopt_levels,
 		       indel_penalty_middle,indel_penalty_end,
-		       max_middle_insertions,max_middle_deletions,
 		       allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-		       shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-		       oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		       pairpool,diagpool,dynprogL,dynprogM,dynprogR,keep_floors_p);
+		       localsplicing_penalty,distantsplicing_penalty,min_shortend,
+		       oligoindices_major,oligoindices_minor,
+		       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,keep_floors_p);
   } else if (mode == CMET_NONSTRANDED || mode == ATOI_NONSTRANDED) {
-    return single_read_tolerant_nonstranded(&(*npaths),&(*first_absmq),&(*second_absmq),queryseq,/*indexdb_geneplus*/indexdb,/*indexdb_geneminus*/indexdb2,
-					    indexdb_size_threshold,genome,floors_array,user_maxlevel_float,subopt_levels,
+    return single_read_tolerant_nonstranded(&(*npaths),&(*first_absmq),&(*second_absmq),queryseq,
+					    indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+					    genome,floors_array,user_maxlevel_float,subopt_levels,
 					    indel_penalty_middle,indel_penalty_end,
-					    max_middle_insertions,max_middle_deletions,
 					    allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-					    shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-					    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-					    pairpool,diagpool,dynprogL,dynprogM,dynprogR,keep_floors_p);
+					    localsplicing_penalty,distantsplicing_penalty,min_shortend,
+					    oligoindices_major,oligoindices_minor,
+					    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,keep_floors_p);
   } else {
     fprintf(stderr,"Do not recognize mode %d\n",mode);
     abort();
@@ -14332,7 +13549,7 @@ Stage1_single_read (int *npaths, int *first_absmq, int *second_absmq,
 
 
 static List_T
-align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3, 
+align_halfmapping_with_gmap (History_T gmap_history, Stage3end_T hit5, Stage3end_T hit3, 
 			     Shortread_T queryseq5, Shortread_T queryseq3,
 			     char *queryuc_ptr, int querylength, int query_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
@@ -14341,12 +13558,11 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 			     Compress_T query_compress_fwd, Compress_T query_compress_rev,
 			     struct Segment_T *plus_segments, int plus_nsegments,
 			     struct Segment_T *minus_segments, int minus_nsegments,
-			     Oligoindex_T *oligoindices_major, int noligoindices_major,
-			     Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			     Pairpool_T pairpool, Diagpool_T diagpool,
+			     Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			     Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 			     Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 			     int pairmax, Chrpos_T shortsplicedist, int user_maxlevel,
-			     int genestrand) {
+			     int genestrand, bool first_read_p) {
   List_T hits = NULL;
   int sensedir, sense_try;
   int overlap;
@@ -14384,6 +13600,11 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 	debug13(printf("Found primers\n"));
 	genomicbound = subtract_bounded(Stage3end_genomicstart(hit5),querylength,chroffset);
 
+      } else if (Stage3end_anomalous_splice_p(hit5) == true) {
+	/* Go from genomicstart */
+	debug13(printf("Anomalous splice\n"));
+	genomicbound = subtract_bounded(Stage3end_genomicstart(hit5),querylength,chroffset);
+
       } else {
 	genomicbound = subtract_bounded(Stage3end_genomicend(hit5),querylength,chroffset);
 
@@ -14520,6 +13741,11 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 	debug13(printf("Found primers\n"));
 	genomicbound = add_bounded(Stage3end_genomicstart(hit5),querylength,chrhigh);
 
+      } else if (Stage3end_anomalous_splice_p(hit5) == true) {
+	/* Go from genomicstart */
+	debug13(printf("Anomalous splice\n"));
+	genomicbound = add_bounded(Stage3end_genomicstart(hit5),querylength,chrhigh);
+
       } else {
 	genomicbound = add_bounded(Stage3end_genomicend(hit5),querylength,chrhigh);
 	
@@ -14672,6 +13898,11 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 	debug13(printf("Found primers\n"));
 	genomicbound = add_bounded(Stage3end_genomicend(hit3),querylength,chrhigh);
 
+      } else if (Stage3end_anomalous_splice_p(hit3) == true) {
+	/* Go from genomicend */
+	debug13(printf("Anomalous splice\n"));
+	genomicbound = add_bounded(Stage3end_genomicend(hit3),querylength,chrhigh);
+
       } else {
 	genomicbound = add_bounded(Stage3end_genomicstart(hit3),querylength,chrhigh);
 
@@ -14808,6 +14039,11 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 	debug13(printf("Found primers\n"));
 	genomicbound = subtract_bounded(Stage3end_genomicend(hit3),querylength,chroffset);
 
+      } else if (Stage3end_anomalous_splice_p(hit3) == true) {
+	/* Go from genomicend */
+	debug13(printf("Anomalous splice\n"));
+	genomicbound = subtract_bounded(Stage3end_genomicend(hit3),querylength,chroffset);
+
       } else {
 	genomicbound = subtract_bounded(Stage3end_genomicstart(hit3),querylength,chroffset);
 
@@ -14952,14 +14188,14 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 
   if (close_mappingstart_p == true && close_mappingend_p == true) {
     debug13(printf("Halfmapping: Running gmap with close mappingstart and close mappingend\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,
-		    queryuc_ptr,querylength,sense_try,favor_right_p,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+		    hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 		    /*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 		    query_compress_fwd,query_compress_rev,close_mappingstart_greedy,close_mappingend_greedy,
 		    close_knownsplice_limit_low,close_knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
 
     if (good_start_p == true && good_end_p == true) {
       /* Success */
@@ -14968,52 +14204,52 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
     } else if (/* require both ends to be good */ 0 && good_start_p == true) {
       if (fallback_mappingend_p == true) {
 	debug13(printf("Halfmapping: Re-running gmap with close mappingstart only\n"));
-	hits = run_gmap(&good_start_p,&good_end_p,hits,
-			queryuc_ptr,querylength,sense_try,favor_right_p,
+	hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+			hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 			/*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 			query_compress_fwd,query_compress_rev,close_mappingstart_greedy,mappingend,
 			close_knownsplice_limit_low,knownsplice_limit_high,
-			watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-			oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+			watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+			oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
       }
 
     } else if (/* require both ends to be good */ 0 && good_end_p == true) {
       if (fallback_mappingstart_p == true) {
 	debug13(printf("Halfmapping: Re-running gmap with close mappingend only\n"));
-	hits = run_gmap(&good_start_p,&good_end_p,hits,
-			queryuc_ptr,querylength,sense_try,favor_right_p,
+	hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+			hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 			/*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 			query_compress_fwd,query_compress_rev,mappingstart,close_mappingend_greedy,
 			knownsplice_limit_low,close_knownsplice_limit_high,
-			watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-			oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+			watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+			oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
       }
     } else {
       if (fallback_mappingstart_p == true && fallback_mappingend_p == true) {
 	debug13(printf("Halfmapping: Re-running gmap with far mappingstart and mappingend\n"));
-	hits = run_gmap(&good_start_p,&good_end_p,hits,
-			queryuc_ptr,querylength,sense_try,favor_right_p,
+	hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+			hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 			/*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 			query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 			knownsplice_limit_low,knownsplice_limit_high,
-			watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-			oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+			watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+			oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
       }
     }
 
   } else if (close_mappingstart_p == true) {
     debug13(printf("Halfmapping: Running gmap with close mappingstart\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,
-		    queryuc_ptr,querylength,sense_try,favor_right_p,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+		    hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 		    /*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 		    query_compress_fwd,query_compress_rev,close_mappingstart_greedy,mappingend,
 		    close_knownsplice_limit_low,knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
 
     if (good_start_p == true && /* require both ends to be good */ good_end_p == true) {
       /* Success */
@@ -15021,26 +14257,26 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
       debug13(printf("Skipping re-run of gmap\n"));
     } else if (fallback_mappingstart_p == true) {
       debug13(printf("Halfmapping: Re-running gmap with far mappingstart\n"));
-      hits = run_gmap(&good_start_p,&good_end_p,hits,
-		      queryuc_ptr,querylength,sense_try,favor_right_p,
+      hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+		      hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 		      /*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 		      query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 		      knownsplice_limit_low,knownsplice_limit_high,
-		      watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		      oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		      pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		      watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		      oligoindices_major,oligoindices_minor,
+		      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
     }
 
   } else if (close_mappingend_p == true) {
     debug13(printf("Halfmapping: Running gmap with close mappingend\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,
-		    queryuc_ptr,querylength,sense_try,favor_right_p,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+		    hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 		    /*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 		    query_compress_fwd,query_compress_rev,mappingstart,close_mappingend_greedy,
 		    knownsplice_limit_low,close_knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
 
     if (good_end_p == true && /* require both ends to be good */ good_start_p == true) {
       /* Success */
@@ -15048,26 +14284,26 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
       debug13(printf("Skipping re-run of gmap\n"));
     } else if (fallback_mappingend_p == true) {
       debug13(printf("Halfmapping: Re-running gmap with far mappingend\n"));
-      hits = run_gmap(&good_start_p,&good_end_p,hits,
-		      queryuc_ptr,querylength,sense_try,favor_right_p,
+      hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+		      hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 		      /*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 		      query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 		      knownsplice_limit_low,knownsplice_limit_high,
-		      watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		      oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		      pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		      watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		      oligoindices_major,oligoindices_minor,
+		      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
     }
 
   } else {
     debug13(printf("Halfmapping: Running gmap with far mappingstart and mappingend\n"));
-    hits = run_gmap(&good_start_p,&good_end_p,hits,
-		    queryuc_ptr,querylength,sense_try,favor_right_p,
+    hits = run_gmap(&good_start_p,&good_end_p,gmap_history,
+		    hits,queryuc_ptr,querylength,sense_try,favor_right_p,
 		    /*paired_favor_mode*/favor_right_p == true ? +1 : -1,zero_offset,
 		    query_compress_fwd,query_compress_rev,mappingstart,mappingend,
 		    knownsplice_limit_low,knownsplice_limit_high,
-		    watsonp,genestrand,chrnum,chroffset,chrhigh,chrlength,
-		    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-		    pairpool,diagpool,dynprogL,dynprogM,dynprogR,shortsplicedist,user_maxlevel);
+		    watsonp,genestrand,first_read_p,chrnum,chroffset,chrhigh,chrlength,
+		    oligoindices_major,oligoindices_minor,
+		    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,user_maxlevel);
   }
 
   return hits;
@@ -15076,6 +14312,7 @@ align_halfmapping_with_gmap (Stage3end_T hit5, Stage3end_T hit3,
 
 static List_T
 align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
+		      History_T gmap_history_5, History_T gmap_history_3,
 		      Compress_T query5_compress_fwd, Compress_T query5_compress_rev,
 		      Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
 		      struct Segment_T **plus_segments_genestrand_5, int *plus_nsegments_genestrand_5,
@@ -15086,11 +14323,11 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 		      char *queryuc_ptr_5, char *queryuc_ptr_3,
 		      int querylength5, int querylength3, int query5_lastpos, int query3_lastpos,
 		      int localsplicing_penalty,
-		      Oligoindex_T *oligoindices_major, int noligoindices_major,
-		      Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		      Pairpool_T pairpool, Diagpool_T diagpool,
+		      Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		      Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		      Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-		      int pairmax, Chrpos_T shortsplicedist, int user_maxlevel_5, int user_maxlevel_3,
+		      int pairmax, int user_maxlevel_5, int user_maxlevel_3,
+		      int cutoff_level_5, int cutoff_level_3,
 		      Pairtype_T pairtype, bool expect_concordant_p, bool redo_for_sense_p) {
   Stage3pair_T newpair, stage3pair;
   List_T gmap5_hits = NULL, gmap3_hits = NULL, good_gmap5_hits = NULL, good_gmap3_hits = NULL;
@@ -15117,7 +14354,11 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 
     /* Was querylength5 - Stage3end_matches(hit5) > 5 */
     debug13(printf("**Looking at hit5\n"));
-    if (Stage3end_hittype(hit5) == GMAP && redo_for_sense_p == false) {
+    if (Stage3end_sarrayp(hit5) == true && redo_for_sense_p == false) {
+      /* Skip */
+      debug13(printf("Skipping hit5 from sarray search\n"));
+
+    } else if (Stage3end_hittype(hit5) == GMAP && redo_for_sense_p == false) {
       /* Skip */
       debug13(printf("Skipping hit5 of type GMAP\n"));
 
@@ -15128,14 +14369,15 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
       debug13(printf("Skipping hit5 of type TERMINAL\n"));
 #endif
 
-    } else if (querylength5 - Stage3end_nmatches(hit5) <= user_maxlevel_5) {
+    } else if (querylength5 - Stage3end_nmatches_posttrim(hit5) <= user_maxlevel_5) {
       /* Skip */
       debug13(printf("Skipping hit with nmismatches %d - %d <= user_maxlevel %d\n",
-		     querylength5,Stage3end_nmatches(hit5),user_maxlevel_5));
+		     querylength5,Stage3end_nmatches_posttrim(hit5),user_maxlevel_5));
 
     } else if (expect_concordant_p == false) {
       debug13(printf("expect_concordant_p is false, so running GMAP single end on 5'\n"));
-      gmap5_hits = align_single_hit_with_gmap(hit5,/*extend_left_p*/true,/*extend_right_p*/true,
+      gmap5_hits = align_single_hit_with_gmap(gmap_history_5,hit5,
+					      /*extend_left_p*/true,/*extend_right_p*/true,
 					      queryuc_ptr_5,querylength5,query5_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 					      queryrc5,Shortread_invertedp(queryseq5),
@@ -15145,22 +14387,25 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 					      plus_nsegments_genestrand_5[genestrand],
 					      minus_segments_genestrand_5[genestrand],
 					      minus_nsegments_genestrand_5[genestrand],
-					      oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,
-					      pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					      shortsplicedist,user_maxlevel_5,genestrand);
+					      oligoindices_major,oligoindices_minor,
+					      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					      user_maxlevel_5,genestrand,/*first_read_p*/true);
 
-      missing_hit = querylength5 - Stage3end_nmatches(hit5);
+      missing_hit = querylength5 - Stage3end_nmatches_posttrim(hit5);
       for (b = gmap5_hits; b != NULL; b = List_next(b)) {
 	gmap5 = (Stage3end_T) List_head(b);
-	missing_gmap = querylength5 - Stage3end_nmatches(gmap5);
-	if (missing_gmap < missing_hit/2) {
+	missing_gmap = querylength5 - Stage3end_nmatches_posttrim(gmap5);
+	if (Stage3end_score(gmap5) > cutoff_level_5 + gmap_allowance) {
+	  debug13(printf("Score is only %d vs cutoff_level_5 %d\n",Stage3end_score(gmap5),cutoff_level_5));
+	  Stage3end_free(&gmap5);
+	} else if (missing_gmap < missing_hit/2) {
 	  debug13(printf("GMAP with %d matches, %d missing is significantly better than 5' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap5),missing_gmap,Stage3end_nmatches(hit5),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap5),missing_gmap,Stage3end_nmatches_posttrim(hit5),missing_hit));
 	  good_gmap5_hits = List_push(good_gmap5_hits,(void *) gmap5);
+	  Stage3end_set_improved_by_gmap(hit5);
 	} else {
 	  debug13(printf("GMAP with %d matches, %d missing is not significantly better than 5' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap5),missing_gmap,Stage3end_nmatches(hit5),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap5),missing_gmap,Stage3end_nmatches_posttrim(hit5),missing_hit));
 	  Stage3end_free(&gmap5);
 	}
       }
@@ -15174,7 +14419,8 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 		     Stage3end_contains_known_splicesite(hit5)));
     
       /* Want high quality because we already have a pretty good answer */
-      gmap5_hits = align_halfmapping_with_gmap(/*hit5*/NULL,hit3,queryseq5,queryseq3,
+      gmap5_hits = align_halfmapping_with_gmap(gmap_history_5,/*hit5*/NULL,hit3,
+					       queryseq5,queryseq3,
 					       queryuc_ptr_5,/*querylength*/querylength5,query5_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 					       queryrc5,Shortread_invertedp(queryseq5),
@@ -15184,25 +14430,29 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 					       plus_nsegments_genestrand_5[genestrand],
 					       minus_segments_genestrand_5[genestrand],
 					       minus_nsegments_genestrand_5[genestrand],
-					       oligoindices_major,noligoindices_major,
-					       oligoindices_minor,noligoindices_minor,
-					       pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					       pairmax,shortsplicedist,user_maxlevel_5,genestrand);
+					       oligoindices_major,oligoindices_minor,
+					       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					       pairmax,shortsplicedist,user_maxlevel_5,genestrand,
+					       /*first_read_p*/true);
 
-      missing_hit = querylength5 - Stage3end_nmatches(hit5);
+      missing_hit = querylength5 - Stage3end_nmatches_posttrim(hit5);
       for (a = gmap5_hits; a != NULL; a = List_next(a)) {
 	gmap5 = (Stage3end_T) List_head(a);
-	missing_gmap = querylength5 - Stage3end_nmatches(gmap5);
-	if (redo_for_sense_p == true && Stage3end_sensedir(hit5) == 0) {
+	missing_gmap = querylength5 - Stage3end_nmatches_posttrim(gmap5);
+	if (Stage3end_score(gmap5) > cutoff_level_5 + gmap_allowance) {
+	  debug13(printf("Score is only %d vs cutoff_level_5 %d\n",Stage3end_score(gmap5),cutoff_level_5));
+	  Stage3end_free(&gmap5);
+	} else if (redo_for_sense_p == true && Stage3end_sensedir(hit5) == 0) {
 	  debug13(printf("redo_for_sense, so using this one\n"));
 	  good_gmap5_hits = List_push(good_gmap5_hits,(void *) gmap5);
 	} else if (missing_gmap < missing_hit/2) {
 	  debug13(printf("GMAP with %d matches, %d missing is significantly better than 5' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap5),missing_gmap,Stage3end_nmatches(hit5),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap5),missing_gmap,Stage3end_nmatches_posttrim(hit5),missing_hit));
 	  good_gmap5_hits = List_push(good_gmap5_hits,(void *) gmap5);
+	  Stage3end_set_improved_by_gmap(hit5);
 	} else {
 	  debug13(printf("GMAP with %d matches, %d missing is not significantly better than 5' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap5),missing_gmap,Stage3end_nmatches(hit5),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap5),missing_gmap,Stage3end_nmatches_posttrim(hit5),missing_hit));
 	  Stage3end_free(&gmap5);
 	}
       }
@@ -15210,7 +14460,11 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
     }
 
     debug13(printf("**Looking at hit3\n"));
-    if (Stage3end_hittype(hit3) == GMAP && redo_for_sense_p == false) {
+    if (Stage3end_sarrayp(hit3) == true && redo_for_sense_p == false) {
+      /* Skip */
+      debug13(printf("Skipping hit3 from sarray search\n"));
+
+    } else if (Stage3end_hittype(hit3) == GMAP && redo_for_sense_p == false) {
       /* Skip */
       debug13(printf("Skipping hit3 of type GMAP\n"));
 
@@ -15221,14 +14475,15 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
       debug13(printf("Skipping hit3 of type TERMINAL\n"));
 #endif
 
-    } else if (querylength3 - Stage3end_nmatches(hit3) <= user_maxlevel_3) {
+    } else if (querylength3 - Stage3end_nmatches_posttrim(hit3) <= user_maxlevel_3) {
       /* Skip */
       debug13(printf("Skipping hit3 with nmismatches %d - %d <= user_maxlevel %d\n",
-		     querylength3,Stage3end_nmatches(hit3),user_maxlevel_3));
+		     querylength3,Stage3end_nmatches_posttrim(hit3),user_maxlevel_3));
 
     } else if (expect_concordant_p == false) {
       debug13(printf("expect_concordant_p is false, so running GMAP single end on 3'\n"));
-      gmap3_hits = align_single_hit_with_gmap(hit3,/*extend_left_p*/true,/*extend_right_p*/true,
+      gmap3_hits = align_single_hit_with_gmap(gmap_history_3,hit3,
+					      /*extend_left_p*/true,/*extend_right_p*/true,
 					      queryuc_ptr_3,querylength3,query3_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 					      queryrc3,Shortread_invertedp(queryseq3),
@@ -15238,22 +14493,25 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 					      plus_nsegments_genestrand_3[genestrand],
 					      minus_segments_genestrand_3[genestrand],
 					      minus_nsegments_genestrand_3[genestrand],
-					      oligoindices_major,noligoindices_major,
-					      oligoindices_minor,noligoindices_minor,
-					      pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					      shortsplicedist,user_maxlevel_3,genestrand);
+					      oligoindices_major,oligoindices_minor,
+					      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					      user_maxlevel_3,genestrand,/*first_read_p*/false);
 
-      missing_hit = querylength3 - Stage3end_nmatches(hit3);
+      missing_hit = querylength3 - Stage3end_nmatches_posttrim(hit3);
       for (b = gmap3_hits; b != NULL; b = List_next(b)) {
 	gmap3 = (Stage3end_T) List_head(b);
-	missing_gmap = querylength3 - Stage3end_nmatches(gmap3);
-	if (missing_gmap < missing_hit/2) {
+	missing_gmap = querylength3 - Stage3end_nmatches_posttrim(gmap3);
+	if (Stage3end_score(gmap3) > cutoff_level_3 + gmap_allowance) {
+	  debug13(printf("Score is only %d vs cutoff_level_3 %d\n",Stage3end_score(gmap3),cutoff_level_3));
+	  Stage3end_free(&gmap3);
+	} else if (missing_gmap < missing_hit/2) {
 	  debug13(printf("GMAP with %d matches, %d missing is significantly better than 3' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap3),missing_gmap,Stage3end_nmatches(hit3),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap3),missing_gmap,Stage3end_nmatches_posttrim(hit3),missing_hit));
 	  good_gmap3_hits = List_push(good_gmap3_hits,(void *) gmap3);
+	  Stage3end_set_improved_by_gmap(hit3);
 	} else {
 	  debug13(printf("GMAP with %d matches, %d missing is not significantly better than 3' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap3),missing_gmap,Stage3end_nmatches(hit3),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap3),missing_gmap,Stage3end_nmatches_posttrim(hit3),missing_hit));
 	  Stage3end_free(&gmap3);
 	}
       }
@@ -15267,7 +14525,8 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 		     Stage3end_contains_known_splicesite(hit3)));
 
       /* Want high quality because we already have a pretty good answer */
-      gmap3_hits = align_halfmapping_with_gmap(hit5,/*hit3*/NULL,queryseq5,queryseq3,
+      gmap3_hits = align_halfmapping_with_gmap(gmap_history_3,hit5,/*hit3*/NULL,
+					       queryseq5,queryseq3,
 					       queryuc_ptr_3,/*querylength*/querylength3,query3_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 					       queryrc3,Shortread_invertedp(queryseq3),
@@ -15277,25 +14536,29 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 					       plus_nsegments_genestrand_3[genestrand],
 					       minus_segments_genestrand_3[genestrand],
 					       minus_nsegments_genestrand_3[genestrand],
-					       oligoindices_major,noligoindices_major,
-					       oligoindices_minor,noligoindices_minor,
-					       pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-					       pairmax,shortsplicedist,user_maxlevel_3,genestrand);
+					       oligoindices_major,oligoindices_minor,
+					       pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					       pairmax,shortsplicedist,user_maxlevel_3,genestrand,
+					       /*first_read_p*/false);
 
-      missing_hit = querylength3 - Stage3end_nmatches(hit3);
+      missing_hit = querylength3 - Stage3end_nmatches_posttrim(hit3);
       for (b = gmap3_hits; b != NULL; b = List_next(b)) {
 	gmap3 = (Stage3end_T) List_head(b);
-	missing_gmap = querylength3 - Stage3end_nmatches(gmap3);
-	if (redo_for_sense_p == true && Stage3end_sensedir(hit3) == 0) {
+	missing_gmap = querylength3 - Stage3end_nmatches_posttrim(gmap3);
+	if (Stage3end_score(gmap3) > cutoff_level_3 + gmap_allowance) {
+	  debug13(printf("Score is only %d vs cutoff_level_3 %d\n",Stage3end_score(gmap3),cutoff_level_3));
+	  Stage3end_free(&gmap3);
+	} else if (redo_for_sense_p == true && Stage3end_sensedir(hit3) == 0) {
 	  debug13(printf("redo_for_sense, so using this one\n"));
 	  good_gmap3_hits = List_push(good_gmap3_hits,(void *) gmap3);
 	} else if (missing_gmap < missing_hit/2) {
 	  debug13(printf("GMAP with %d matches, %d missing is significantly better than 3' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap3),missing_gmap,Stage3end_nmatches(hit3),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap3),missing_gmap,Stage3end_nmatches_posttrim(hit3),missing_hit));
 	  good_gmap3_hits = List_push(good_gmap3_hits,(void *) gmap3);
+	  Stage3end_set_improved_by_gmap(hit3);
 	} else {
 	  debug13(printf("GMAP with %d matches, %d missing is not significantly better than 3' hit with %d matches, %d missing\n",
-			 Stage3end_nmatches(gmap3),missing_gmap,Stage3end_nmatches(hit3),missing_hit));
+			 Stage3end_nmatches_posttrim(gmap3),missing_gmap,Stage3end_nmatches_posttrim(hit3),missing_hit));
 	  Stage3end_free(&gmap3);
 	}
       }
@@ -15444,10 +14707,49 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
     }
   }
 
+  debug13(printf("End of align_pair_with_gmap\n"));
+
   return result;
 }
 
 
+static bool
+better_free_end_exists_p (List_T subs, List_T indels, List_T singlesplicing, List_T doublesplicing,
+			  int querylength) {
+  int best_concordant_score = querylength, score;
+
+  if ((score = Stage3end_best_score_paired(subs)) < best_concordant_score) {
+    best_concordant_score = score;
+  }
+  if ((score = Stage3end_best_score_paired(indels)) < best_concordant_score) {
+    best_concordant_score = score;
+  }
+  if ((score = Stage3end_best_score_paired(singlesplicing)) < best_concordant_score) {
+    best_concordant_score = score;
+  }
+  if ((score = Stage3end_best_score_paired(doublesplicing)) < best_concordant_score) {
+    best_concordant_score = score;
+  }
+  debug(printf("Best concordant score = %d\n",best_concordant_score));
+
+  if (Stage3end_equiv_score_unpaired_p(subs,best_concordant_score) == true) {
+    debug(printf("Better or equivalent score found in subs\n"));
+    return true;
+  } else if (Stage3end_equiv_score_unpaired_p(indels,best_concordant_score) == true) {
+    debug(printf("Better or equivalent score found in indels\n"));
+    return true;
+  } else if (Stage3end_equiv_score_unpaired_p(singlesplicing,best_concordant_score) == true) {
+    debug(printf("Better or equivalent score found in singlesplicing\n"));
+    return true;
+  } else if (Stage3end_equiv_score_unpaired_p(doublesplicing,best_concordant_score) == true) {
+    debug(printf("Better or equivalent score found in doublesplicing\n"));
+    return true;
+  } else {
+    return false;
+  }
+}
+
+
 
 #define HITARRAY_SUBS 0
 #define HITARRAY_INDELS 1
@@ -15458,22 +14760,20 @@ align_pair_with_gmap (Pairtype_T *final_pairtype, List_T result,
 static List_T
 align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *cutoff_level_3,
 	    List_T *samechr, List_T *conc_transloc, List_T *with_terminal,
-	    List_T *hits5, List_T *hits3, T this5, T this3,
+	    History_T gmap_history_5, History_T gmap_history_3, List_T *hits5, List_T *hits3, T this5, T this3,
 	    Compress_T query5_compress_fwd, Compress_T query5_compress_rev,
 	    Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
 	    char *queryuc_ptr_5, char *queryuc_ptr_3, char *queryrc5, char *queryrc3,
 	    int querylength5, int querylength3, int query5_lastpos, int query3_lastpos,
 	    Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold, Floors_T *floors_array,
 
-	    Oligoindex_T *oligoindices_major, int noligoindices_major,
-	    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-	    Pairpool_T pairpool, Diagpool_T diagpool,
+	    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+	    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 	    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 
 	    int user_maxlevel_5, int user_maxlevel_3, int subopt_levels,
 	    int indel_penalty_middle, int indel_penalty_end,
-	    Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-	    int max_middle_insertions, int max_middle_deletions,
+	    int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
 	    bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
 	    bool allvalidp5, bool allvalidp3, Chrpos_T pairmax,
 	    int maxpairedpaths, bool keep_floors_p, Shortread_T queryseq5, Shortread_T queryseq3,
@@ -15484,8 +14784,8 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
   List_T gmap5_hits, gmap3_hits, a;
   Stage3end_T hit5, hit3, gmap5, gmap3;
   List_T hitarray5[HITARRAY_N], hitarray3[HITARRAY_N];
-  List_T subs5 = NULL, indels5 = NULL, singlesplicing5 = NULL, doublesplicing5 = NULL, terminals5 = NULL;
-  List_T subs3 = NULL, indels3 = NULL, singlesplicing3 = NULL, doublesplicing3 = NULL, terminals3 = NULL;
+  List_T subs5 = NULL, indels5 = NULL, ambiguous5 = NULL, singlesplicing5 = NULL, doublesplicing5 = NULL, terminals5 = NULL;
+  List_T subs3 = NULL, indels3 = NULL, ambiguous3 = NULL, singlesplicing3 = NULL, doublesplicing3 = NULL, terminals3 = NULL;
   List_T longsinglesplicing5 = NULL, longsinglesplicing3 = NULL;
   int ignore_found_score, done_level_5, done_level_3, opt_level, fast_level_5, fast_level_3,
     mismatch_level_5, mismatch_level_3, nmismatches, max_mismatches_allowed;
@@ -15496,7 +14796,8 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
   List_T *donors_plus_3, *antidonors_plus_3, *acceptors_plus_3, *antiacceptors_plus_3,
     *donors_minus_3, *antidonors_minus_3, *acceptors_minus_3, *antiacceptors_minus_3;
 
-  bool did_alignment_p;
+  bool spanningset5p, spanningset3p, completeset5p, completeset3p;
+  bool did_alignment_p, did_singlesplicing5_p, did_singlesplicing3_p;
   bool any_omitted_p_5, any_omitted_p_3;
   Floors_T floors5, floors3;
   bool alloc_floors_p_5 = false, alloc_floors_p_3 = false, floors5_computed_p = false, floors3_computed_p = false,
@@ -15504,10 +14805,25 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
   int best_score_paired;
   bool found_terminals_p = false;
   int nconcordant = 0, nsamechr = 0;
+  Indexdb_T plus_indexdb_5, plus_indexdb_3, minus_indexdb_5, minus_indexdb_3;
+
+  if (genestrand == +2) {
+    plus_indexdb_5 = indexdb_rev;
+    plus_indexdb_3 = indexdb_fwd;
+    minus_indexdb_5 = indexdb_fwd;
+    minus_indexdb_3 = indexdb_rev;
+  } else {
+    plus_indexdb_5 = indexdb_fwd;
+    plus_indexdb_3 = indexdb_rev;
+    minus_indexdb_5 = indexdb_rev;
+    minus_indexdb_3 = indexdb_fwd;
+  }
+
 
   *samechr = (List_T) NULL;
   *conc_transloc = (List_T) NULL;
   *with_terminal = (List_T) NULL;
+  *abort_pairing_p = false;
 
   /* For paired-end alignment, ignore found_scores from single-end
      alignments.  Use only the found_score from
@@ -15574,112 +14890,75 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 #endif
   opt_level = user_maxlevel_5 + user_maxlevel_3;
   done_level_5 = user_maxlevel_5 /* + subopt_levels */;
-  done_level_3 = user_maxlevel_3 /* + subopt_levels */;
-  debug(printf("0> opt_level %d, done_level %d,%d\n",opt_level,done_level_5,done_level_3));
-
-  /* 1A. Exact.  Requires compress if cmet or genomealt.  Creates and uses spanning set. */
-  mismatch_level_5 = 0;
-  if (allvalidp5 == false) {
-    debug(printf("Not all oligos in 5' end are valid, so cannot perform spanning set\n"));
-    fast_level_5 = -1;
-  } else {
-    debug(printf("fast_level_5 = %d\n",fast_level_5));
-    debug(printf("*** Stage 1.  Exact ***\n"));
-    subs5 = find_spanning_exact_matches(&ignore_found_score,&nhits5,this5,genestrand,
-					querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,
-					query5_compress_fwd,query5_compress_rev);
-    mismatch_level_5 = 1;
-  }
-
-  /* 1B. Exact.  Requires compress if cmet or genomealt.  Creates and uses spanning set. */
-  mismatch_level_3 = 0;
-  if (allvalidp3 == false) {
-    debug(printf("Not all oligos in 3' end are valid, so cannot perform spanning set\n"));
-    fast_level_3 = -1;
-  } else {
-    debug(printf("fast_level_3 = %d\n",fast_level_3));
-    debug(printf("*** Stage 1.  Exact ***\n"));
-    subs3 = find_spanning_exact_matches(&ignore_found_score,&nhits3,this3,genestrand,
-					querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,
-					query3_compress_fwd,query3_compress_rev);
-    mismatch_level_3 = 1;
-  }
-
-  for (i = 0; i < HITARRAY_N; i++) {
-    hitarray5[i] = hitarray3[i] = (List_T) NULL;
-  }
-
-  /* 1. Pairing after exact */
-  /* Should not have duplicates from the spanning set procedure */
-  hitarray5[HITARRAY_SUBS] = subs5; /* = Stage3end_remove_duplicates(subs5) */;
-  hitarray3[HITARRAY_SUBS] = subs3; /* = Stage3end_remove_duplicates(subs3) */;
-  hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
-				       &(*samechr),&(*conc_transloc),&(*with_terminal),
-				       hitpairs,hitarray5,/*narray5*/HITARRAY_SUBS+1,
-				       hitarray3,/*narray3*/HITARRAY_SUBS+1,
-				       /*terminals5*/NULL,/*terminals3*/NULL,
-				       *cutoff_level_5,*cutoff_level_3,subopt_levels,
-				       splicesites,query5_compress_fwd,query5_compress_rev,
-				       query3_compress_fwd,query3_compress_rev,
-				       querylength5,querylength3,maxpairedpaths,localsplicing_penalty,
-				       genestrand);
-  debug(printf("After pairing exact, found %d concordant, %d samechr, found_score %d\n",
-	       nconcordant,nsamechr,*found_score));
-  if (*abort_pairing_p == true) {
-    *hits5 = subs5;
-    *hits3 = subs3;
-    return hitpairs;
-  } else {
-    opt_level = (*found_score < opt_level) ? *found_score : opt_level;
-    if ((done_level_5 = opt_level + subopt_levels) > user_maxlevel_5) {
-      done_level_5 = user_maxlevel_5;
-    }
-    if ((done_level_3 = opt_level + subopt_levels) > user_maxlevel_3) {
-      done_level_3 = user_maxlevel_3;
-    }
-    debug(printf("1> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
-  }
-
-  did_alignment_p = false;
+  done_level_3 = user_maxlevel_3 /* + subopt_levels */;
+  debug(printf("0> opt_level %d, done_level %d,%d\n",opt_level,done_level_5,done_level_3));
 
-  /* 2A. One mismatch.  Requires spanning set and compress. */
-  if (allvalidp5 && querylength5 >= one_miss_querylength && done_level_5 >= 1) {
-    debug(printf("*** Stage 2A.  One miss ***\n"));
-    did_alignment_p = true;
-    subs5 = find_spanning_onemiss_matches(&ignore_found_score,&nhits5,subs5,this5,genestrand,querylength5,
-					  query5_compress_fwd,query5_compress_rev);
-    mismatch_level_5 = 2;
+  for (i = 0; i < HITARRAY_N; i++) {
+    hitarray5[i] = hitarray3[i] = (List_T) NULL;
   }
 
-  /* 2B. One mismatch.  Requires spanning set and compress. */
-  if (allvalidp3 && querylength3 >= one_miss_querylength && done_level_3 >= 1) {
-    debug(printf("*** Stage 2B.  One miss ***\n"));
-    did_alignment_p = true;
-    subs3 = find_spanning_onemiss_matches(&ignore_found_score,&nhits3,subs3,this3,genestrand,querylength3,
-					  query3_compress_fwd,query3_compress_rev);
-    mismatch_level_3 = 2;
-  }
+  nhits5 = nhits3 = 0;
+
+#ifndef LARGE_GENOMES
+  if (use_sarray_p == true) {
+    /* Replaces spanning set */
+    Sarray_search_greedy(&ignore_found_score,&subs5,&indels5,&ambiguous5,&singlesplicing5,&doublesplicing5,
+			 queryuc_ptr_5,queryrc5,querylength5,
+			 query5_compress_fwd,query5_compress_rev,/*nmisses_allowed*/fast_level_5,
+			 genestrand,/*first_read_p*/true);
+    singlesplicing5 = Splice_group_by_segmenti(&ignore_found_score,singlesplicing5,&ambiguous5,querylength5,
+					       /*first_read_p*/true,/*sarrayp*/true);
+    singlesplicing5 = Splice_group_by_segmentj(&ignore_found_score,singlesplicing5,&ambiguous5,querylength5,
+					       /*first_read_p*/true,/*sarrayp*/true);
+    singlesplicing5 = List_append(singlesplicing5,ambiguous5);
+
+
+    Sarray_search_greedy(&ignore_found_score,&subs3,&indels3,&ambiguous3,&singlesplicing3,&doublesplicing3,
+			 queryuc_ptr_3,queryrc3,querylength3,
+			 query3_compress_fwd,query3_compress_rev,/*nmisses_allowed*/fast_level_3,
+			 genestrand,/*first_read_p*/false);
+    singlesplicing3 = Splice_group_by_segmenti(&ignore_found_score,singlesplicing3,&ambiguous3,querylength3,
+					       /*first_read_p*/false,/*sarrayp*/true);
+    singlesplicing3 = Splice_group_by_segmentj(&ignore_found_score,singlesplicing3,&ambiguous3,querylength3,
+					       /*first_read_p*/false,/*sarrayp*/true);
+    singlesplicing3 = List_append(singlesplicing3,ambiguous3);
+
+
+    hitarray5[HITARRAY_SUBS] = subs5 = Stage3end_remove_duplicates(subs5);
+    hitarray3[HITARRAY_SUBS] = subs3 = Stage3end_remove_duplicates(subs3);
+    hitarray5[HITARRAY_INDELS] = indels5 = Stage3end_remove_duplicates(indels5);
+    hitarray3[HITARRAY_INDELS] = indels3 = Stage3end_remove_duplicates(indels3);
+    hitarray5[HITARRAY_SINGLESPLICING] = singlesplicing5;
+    hitarray3[HITARRAY_SINGLESPLICING] = singlesplicing3;
+    hitarray5[HITARRAY_DOUBLESPLICING] = doublesplicing5;
+    hitarray3[HITARRAY_DOUBLESPLICING] = doublesplicing3;
+    debug(printf("sarray: 5' end has %d subs, %d indels, %d single splices, %d double splices\n",
+		 List_length(subs5),List_length(indels5),List_length(singlesplicing5),List_length(doublesplicing5)));
+    debug(printf("sarray: 3' end has %d subs, %d indels, %d single splices, %d double splices\n",
+		 List_length(subs3),List_length(indels3),List_length(singlesplicing3),List_length(doublesplicing3)));
 
-  if (did_alignment_p == true) {
-    /* 2. Pairing after one mismatch */
-    hitarray5[HITARRAY_SUBS] = subs5 = Stage3end_remove_duplicates(subs5,queryseq5,queryseq3);
-    hitarray3[HITARRAY_SUBS] = subs3 = Stage3end_remove_duplicates(subs3,queryseq5,queryseq3);
     hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
 					 &(*samechr),&(*conc_transloc),&(*with_terminal),
-					 hitpairs,hitarray5,/*narray5*/HITARRAY_SUBS+1,
-					 hitarray3,/*narray3*/HITARRAY_SUBS+1,
+					 hitpairs,hitarray5,/*narray5*/HITARRAY_DOUBLESPLICING+1,
+					 hitarray3,/*narray3*/HITARRAY_DOUBLESPLICING+1,
 					 /*terminals5*/NULL,/*terminals3*/NULL,
 					 *cutoff_level_5,*cutoff_level_3,subopt_levels,
 					 splicesites,query5_compress_fwd,query5_compress_rev,
 					 query3_compress_fwd,query3_compress_rev,
 					 querylength5,querylength3,maxpairedpaths,localsplicing_penalty,
 					 genestrand);
-    debug(printf("After pairing one mismatch, found %d concordant, %d samechr, found_score %d\n",
+
+    debug(printf("After pairing sarray, found %d concordant, %d samechr, found_score %d\n",
 		 nconcordant,nsamechr,*found_score));
     if (*abort_pairing_p == true) {
       *hits5 = subs5;
       *hits3 = subs3;
-      return Stage3pair_remove_circular_alias(hitpairs);
+      hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+      hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+#endif
+      return hitpairs;
+
     } else {
       opt_level = (*found_score < opt_level) ? *found_score : opt_level;
       if ((done_level_5 = opt_level + subopt_levels) > user_maxlevel_5) {
@@ -15688,43 +14967,63 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
       if ((done_level_3 = opt_level + subopt_levels) > user_maxlevel_3) {
 	done_level_3 = user_maxlevel_3;
       }
-      debug(printf("2> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
-    }
-  }
-
-
-  did_alignment_p = false;
-
-  /* 3A. Mismatches via spanning set.  Requires spanning set and compress. */
-  if (allvalidp5 && done_level_5 >= 2) {
-    /* NOTE: Since done_level isn't updated, can do in one batch instead of iteratively */
-    while (mismatch_level_5 <= fast_level_5 && mismatch_level_5 <= done_level_5) {
-      debug(printf("*** Stage 3A (level %d).  Spanning set mismatches ***\n",mismatch_level_5));
-      did_alignment_p = true;
-      subs5 = find_spanning_multimiss_matches(&ignore_found_score,&nhits5,subs5,this5,genestrand,NREQUIRED_FAST,querylength5,
-					      query5_compress_fwd,query5_compress_rev,
-					      /*nmisses_allowed*/mismatch_level_5);
-      mismatch_level_5++;
+      debug(printf("SA> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
     }
+    nhits5 = List_length(subs5);
+    nhits3 = List_length(subs3);
   }
+#endif
 
-  /* 3B. Mismatches via spanning set.  Requires spanning set and compress. */
-  if (allvalidp3 && done_level_3 >= 2) {
-    /* NOTE: Since done_level isn't updated, can do in one batch instead of iteratively */
-    while (mismatch_level_3 <= fast_level_3 && mismatch_level_3 <= done_level_3) {
-      debug(printf("*** Stage 3B (level %d).  Spanning set mismatches ***\n",mismatch_level_3));
-      did_alignment_p = true;
-      subs3 = find_spanning_multimiss_matches(&ignore_found_score,&nhits3,subs3,this3,genestrand,NREQUIRED_FAST,querylength3,
-					      query3_compress_fwd,query3_compress_rev,
-					      /*nmisses_allowed*/mismatch_level_3);
-      mismatch_level_3++;
+  if (nconcordant == 0) {
+    spanningset5p = spanningset3p = true;
+  } else {
+    spanningset5p = spanningset3p = false;
+    if (better_free_end_exists_p(subs5,indels5,singlesplicing5,doublesplicing5,querylength5) == true) {
+      spanningset3p = true;	/* Do search on other end */
+    }
+    if (better_free_end_exists_p(subs3,indels3,singlesplicing3,doublesplicing3,querylength3) == true) {
+      spanningset5p = true;	/* Do search on other end */
+    }
+  }
+
+  debug(printf("After sarray, found_score = %d\n",*found_score));
+  if (spanningset5p == true || spanningset3p == true) {
+    /* 1A. Exact.  Requires compress if cmet or genomealt.  Creates and uses spanning set. */
+    debug(printf("Performing spanning set with found_score %d\n",*found_score));
+
+    mismatch_level_5 = 0;
+    if (allvalidp5 == false) {
+      debug(printf("Not all oligos in 5' end are valid, so cannot perform spanning set\n"));
+      fast_level_5 = -1;
+    } else if (spanningset5p == true) {
+      debug(printf("fast_level_5 = %d\n",fast_level_5));
+      debug(printf("*** Stage 1.  Exact ***\n"));
+      ignore_found_score = *found_score;
+      subs5 = find_spanning_exact_matches(&ignore_found_score,&nhits5,subs5,this5,genestrand,/*first_read_p*/true,
+					  querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+					  query5_compress_fwd,query5_compress_rev);
+      mismatch_level_5 = 1;
+    }
+
+    /* 1B. Exact.  Requires compress if cmet or genomealt.  Creates and uses spanning set. */
+    mismatch_level_3 = 0;
+    if (allvalidp3 == false) {
+      debug(printf("Not all oligos in 3' end are valid, so cannot perform spanning set\n"));
+      fast_level_3 = -1;
+    } else if (spanningset3p == true) {
+      debug(printf("fast_level_3 = %d\n",fast_level_3));
+      debug(printf("*** Stage 1.  Exact ***\n"));
+      ignore_found_score = *found_score;
+      subs3 = find_spanning_exact_matches(&ignore_found_score,&nhits3,subs3,this3,genestrand,/*first_read_p*/false,
+					  querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+					  query3_compress_fwd,query3_compress_rev);
+      mismatch_level_3 = 1;
     }
-  }
 
-  if (did_alignment_p == true) {
-    /* 3. Pairing after spanning set subs */
-    hitarray5[HITARRAY_SUBS] = subs5 = Stage3end_remove_duplicates(subs5,queryseq5,queryseq3);
-    hitarray3[HITARRAY_SUBS] = subs3 = Stage3end_remove_duplicates(subs3,queryseq5,queryseq3);
+    /* 1. Pairing after exact */
+    /* Should not have duplicates from the spanning set procedure */
+    hitarray5[HITARRAY_SUBS] = subs5; /* = Stage3end_remove_duplicates(subs5) */;
+    hitarray3[HITARRAY_SUBS] = subs3; /* = Stage3end_remove_duplicates(subs3) */;
     hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
 					 &(*samechr),&(*conc_transloc),&(*with_terminal),
 					 hitpairs,hitarray5,/*narray5*/HITARRAY_SUBS+1,
@@ -15735,12 +15034,12 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 					 query3_compress_fwd,query3_compress_rev,
 					 querylength5,querylength3,maxpairedpaths,localsplicing_penalty,
 					 genestrand);
-    debug(printf("After pairing spanning set, found %d concordant, %d samechr, found_score %d\n",
+    debug(printf("After pairing exact, found %d concordant, %d samechr, found_score %d\n",
 		 nconcordant,nsamechr,*found_score));
     if (*abort_pairing_p == true) {
       *hits5 = subs5;
       *hits3 = subs3;
-      return Stage3pair_remove_circular_alias(hitpairs);
+      return hitpairs;
     } else {
       opt_level = (*found_score < opt_level) ? *found_score : opt_level;
       if ((done_level_5 = opt_level + subopt_levels) > user_maxlevel_5) {
@@ -15749,23 +15048,164 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
       if ((done_level_3 = opt_level + subopt_levels) > user_maxlevel_3) {
 	done_level_3 = user_maxlevel_3;
       }
-      debug(printf("3> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
+      debug(printf("1> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
+    }
+
+    did_alignment_p = false;
+
+    /* 2A. One mismatch.  Requires spanning set and compress. */
+    if (spanningset5p && allvalidp5 && querylength5 >= one_miss_querylength && done_level_5 >= 1) {
+      debug(printf("*** Stage 2A.  One miss ***\n"));
+      did_alignment_p = true;
+      ignore_found_score = *found_score;
+      subs5 = find_spanning_onemiss_matches(&ignore_found_score,&nhits5,subs5,this5,genestrand,/*first_read_p*/true,
+					    querylength5,query5_compress_fwd,query5_compress_rev);
+      mismatch_level_5 = 2;
+    }
+
+    /* 2B. One mismatch.  Requires spanning set and compress. */
+    if (spanningset3p && allvalidp3 && querylength3 >= one_miss_querylength && done_level_3 >= 1) {
+      debug(printf("*** Stage 2B.  One miss ***\n"));
+      did_alignment_p = true;
+      ignore_found_score = *found_score;
+      subs3 = find_spanning_onemiss_matches(&ignore_found_score,&nhits3,subs3,this3,genestrand,/*first_read_p*/false,
+					    querylength3,query3_compress_fwd,query3_compress_rev);
+      mismatch_level_3 = 2;
+    }
+
+    if (did_alignment_p == true) {
+      /* 2. Pairing after one mismatch */
+      hitarray5[HITARRAY_SUBS] = subs5 /* = Stage3end_remove_duplicates(subs5,queryseq5,queryseq3) */;
+      hitarray3[HITARRAY_SUBS] = subs3 /* = Stage3end_remove_duplicates(subs3,queryseq5,queryseq3) */;
+      hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
+					   &(*samechr),&(*conc_transloc),&(*with_terminal),
+					   hitpairs,hitarray5,/*narray5*/HITARRAY_SUBS+1,
+					   hitarray3,/*narray3*/HITARRAY_SUBS+1,
+					   /*terminals5*/NULL,/*terminals3*/NULL,
+					   *cutoff_level_5,*cutoff_level_3,subopt_levels,
+					   splicesites,query5_compress_fwd,query5_compress_rev,
+					   query3_compress_fwd,query3_compress_rev,
+					   querylength5,querylength3,maxpairedpaths,localsplicing_penalty,
+					   genestrand);
+      debug(printf("After pairing one mismatch, found %d concordant, %d samechr, found_score %d\n",
+		   nconcordant,nsamechr,*found_score));
+      if (*abort_pairing_p == true) {
+	*hits5 = subs5;
+	*hits3 = subs3;
+	hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+	hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+#endif
+	return hitpairs;
+      } else {
+	opt_level = (*found_score < opt_level) ? *found_score : opt_level;
+	if ((done_level_5 = opt_level + subopt_levels) > user_maxlevel_5) {
+	  done_level_5 = user_maxlevel_5;
+	}
+	if ((done_level_3 = opt_level + subopt_levels) > user_maxlevel_3) {
+	  done_level_3 = user_maxlevel_3;
+	}
+	debug(printf("2> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
+      }
+    }
+
+
+    did_alignment_p = false;
+
+    /* 3A. Mismatches via spanning set.  Requires spanning set and compress. */
+    if (spanningset5p && allvalidp5 && done_level_5 >= 2) {
+      /* NOTE: Since done_level isn't updated, can do in one batch instead of iteratively */
+      while (mismatch_level_5 <= fast_level_5 && mismatch_level_5 <= done_level_5) {
+	debug(printf("*** Stage 3A (level %d).  Spanning set mismatches ***\n",mismatch_level_5));
+	did_alignment_p = true;
+	ignore_found_score = *found_score;
+	subs5 = find_spanning_multimiss_matches(&ignore_found_score,&nhits5,subs5,this5,genestrand,/*first_read_p*/true,
+						NREQUIRED_FAST,querylength5,query5_compress_fwd,query5_compress_rev,
+						/*nmisses_allowed*/mismatch_level_5);
+	mismatch_level_5++;
+      }
+    }
+
+    /* 3B. Mismatches via spanning set.  Requires spanning set and compress. */
+    if (spanningset3p && allvalidp3 && done_level_3 >= 2) {
+      /* NOTE: Since done_level isn't updated, can do in one batch instead of iteratively */
+      while (mismatch_level_3 <= fast_level_3 && mismatch_level_3 <= done_level_3) {
+	debug(printf("*** Stage 3B (level %d).  Spanning set mismatches ***\n",mismatch_level_3));
+	did_alignment_p = true;
+	ignore_found_score = *found_score;
+	subs3 = find_spanning_multimiss_matches(&ignore_found_score,&nhits3,subs3,this3,genestrand,/*first_read_p*/true,
+						NREQUIRED_FAST,querylength3,query3_compress_fwd,query3_compress_rev,
+						/*nmisses_allowed*/mismatch_level_3);
+	mismatch_level_3++;
+      }
+    }
+
+    if (did_alignment_p == true) {
+      /* 3. Pairing after spanning set subs */
+      hitarray5[HITARRAY_SUBS] = subs5 /* = Stage3end_remove_duplicates(subs5,queryseq5,queryseq3) */;
+      hitarray3[HITARRAY_SUBS] = subs3 /* = Stage3end_remove_duplicates(subs3,queryseq5,queryseq3) */;
+      hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
+					   &(*samechr),&(*conc_transloc),&(*with_terminal),
+					   hitpairs,hitarray5,/*narray5*/HITARRAY_SUBS+1,
+					   hitarray3,/*narray3*/HITARRAY_SUBS+1,
+					   /*terminals5*/NULL,/*terminals3*/NULL,
+					   *cutoff_level_5,*cutoff_level_3,subopt_levels,
+					   splicesites,query5_compress_fwd,query5_compress_rev,
+					   query3_compress_fwd,query3_compress_rev,
+					   querylength5,querylength3,maxpairedpaths,localsplicing_penalty,
+					   genestrand);
+      debug(printf("After pairing spanning set, found %d concordant, %d samechr, found_score %d\n",
+		   nconcordant,nsamechr,*found_score));
+      if (*abort_pairing_p == true) {
+	*hits5 = subs5;
+	*hits3 = subs3;
+	hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+	hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+#endif
+	return hitpairs;
+      } else {
+	opt_level = (*found_score < opt_level) ? *found_score : opt_level;
+	if ((done_level_5 = opt_level + subopt_levels) > user_maxlevel_5) {
+	  done_level_5 = user_maxlevel_5;
+	}
+	if ((done_level_3 = opt_level + subopt_levels) > user_maxlevel_3) {
+	  done_level_3 = user_maxlevel_3;
+	}
+	debug(printf("3> found_score = %d, opt_level %d, done_level %d,%d\n",*found_score,opt_level,done_level_5,done_level_3));
+      }
     }
   }
 
 
+  if (hitpairs == NULL) {
+    completeset5p = completeset3p = true;
+  } else {
+    completeset5p = completeset3p = false;
+    if (better_free_end_exists_p(subs5,indels5,singlesplicing5,doublesplicing5,querylength5) == true) {
+      completeset3p = true;	/* Do search on other end */
+    }
+    if (better_free_end_exists_p(subs3,indels3,singlesplicing3,doublesplicing3,querylength3) == true) {
+      completeset5p = true;	/* Do search on other end */
+    }
+  }
   did_alignment_p = false;
 
   /* 4/5A.  Complete set mismatches and indels, omitting frequent oligos */
-  if (done_level_5 > fast_level_5 || done_level_5 >= indel_penalty_middle || done_level_5 >= indel_penalty_end) {
+  if (use_sarray_p == true && completeset5p == false) {
+    /* Skip.  Suffix array already found something */
+    debug(printf("Skipping complete set on 5', because sarray found a hitpair\n"));
+
+  } else if (done_level_5 > fast_level_5 || done_level_5 >= indel_penalty_middle || done_level_5 >= indel_penalty_end) {
     did_alignment_p = true;
 
 #if 1
     floors5 = compute_floors(&any_omitted_p_5,&alloc_floors_p_5,floors_array,this5,
-			     querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			     max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+			     querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+			     indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 			     keep_floors_p);
     floors5_computed_p = true;
+    ignore_found_score = *found_score;
     complete_set_mm_indels(&ignore_found_score,&segments5_computed_p,
 			   &opt_level,&done_level_5,user_maxlevel_5,/*revise_levels_p*/false,
 			   &nhits5,&subs5,&indels5,this5,query5_compress_fwd,query5_compress_rev,
@@ -15773,75 +15213,82 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			   queryuc_ptr_5,queryrc5,
 #endif
 			   querylength5,query5_lastpos,floors5,subopt_levels,
-			   indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			   indel_penalty_middle,indel_penalty_end,
 			   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			   fast_level_5,genestrand);
+			   fast_level_5,genestrand,/*first_read_p*/true);
 
 #else
     /* Using obsolete masktype */
     if (masktype == MASK_NONE) {
       debug(printf("*** Stage 4A,5A.  Complete mm/indels with no masking with done_level %d ***\n",done_level_5));
+      ignore_found_score = *found_score;
       complete_set_mm_indels(&ignore_found_score,&segments5_computed_p,
 			     &any_omitted_p_5,&opt_level,&done_level_5,user_maxlevel_5,/*revise_levels_p*/false,
 			     &nhits5,&subs5,&indels5,this5,query5_compress_fwd,query5_compress_rev,
 #if defined(DEBUG2) || defined(DEBUG2E)
 			     queryuc_ptr_5,queryrc5,
 #endif
-			     querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			     floors_array,subopt_levels,
-			     indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			     querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+			     indexdb_size_threshold,floors_array,subopt_levels,
+			     indel_penalty_middle,indel_penalty_end,
 			     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			     fast_level_5,/*omit_frequent_p*/false,/*omit_repetitive_p*/false,keep_floors_p,
-			     genestrand);
+			     genestrand,/*first_read_p*/true);
     } else {
       debug(printf("*** Stage 4A,5A.  Complete mm/indels masking frequent oligos with done_level %d ***\n",done_level_5));
+      ignore_found_score = *found_score;
       complete_set_mm_indels(&ignore_found_score,&segments5_computed_p,
 			     &any_omitted_p_5,&opt_level,&done_level_5,user_maxlevel_5,/*revise_levels_p*/false,
 			     &nhits5,&subs5,&indels5,this5,query5_compress_fwd,query5_compress_rev,
 #if defined(DEBUG2) || defined(DEBUG2E)
 			     queryuc_ptr_5,queryrc5,
 #endif
-			     querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			     floors_array,subopt_levels,
-			     indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			     querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+			     indexdb_size_threshold,floors_array,subopt_levels,
+			     indel_penalty_middle,indel_penalty_end,
 			     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			     fast_level_5,/*omit_frequent_p*/true,
 			     /*omit_repetitive_p*/(masktype == MASK_REPETITIVE || masktype == MASK_GREEDY_REPETITIVE) ? true : false,
-			     keep_floors_p,genestrand);
+			     keep_floors_p,genestrand,/*first_read_p*/true);
       if ((masktype == MASK_GREEDY_FREQUENT || masktype == MASK_GREEDY_REPETITIVE) && subs5 == NULL && indels5 == NULL && any_omitted_p_5 == true) {
 	FREE(this->minus_segments_5);
 	FREE(this->plus_segments_5);
 
 	/* 4/5A.  Complete set mismatches and indels, with all oligos */
 	debug(printf("*** Stage 4A,5A.  Complete mm/indels with no masking with done_level %d ***\n",done_level_5));
+	ignore_found_score = *found_score;
 	complete_set_mm_indels(&ignore_found_score,&segments5_computed_p,
 			       &any_omitted_p_5,&opt_level,&done_level_5,user_maxlevel_5,/*revise_levels_p*/false,
 			       &nhits5,&subs5,&indels5,this5,query5_compress_fwd,query5_compress_rev,
 #if defined(DEBUG2) || defined(DEBUG2E)
 			       queryuc_ptr_5,queryrc5,
 #endif
-			       querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			       floors_array,subopt_levels,
-			       indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			       querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+			       indexdb_size_threshold,floors_array,subopt_levels,
+			       indel_penalty_middle,indel_penalty_end,
 			       allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			       fast_level_5,/*omit_frequent_p*/false,/*omit_repetitive_p*/false,keep_floors_p,
-			       genestrand);
+			       genestrand,/*first_read_p*/true);
       }
     }
 #endif
   }
 
   /* 4/5B.  Complete set mismatches and indels, omitting frequent oligos */
-  if (done_level_3 > fast_level_3 || done_level_3 >= indel_penalty_middle || done_level_3 >= indel_penalty_end) {
+  if (use_sarray_p == true && completeset3p == false) {
+    /* Skip.  Suffix array already found something */
+    debug(printf("Skipping complete set on 3', because sarray found a hitpair\n"));
+
+  } else if (done_level_3 > fast_level_3 || done_level_3 >= indel_penalty_middle || done_level_3 >= indel_penalty_end) {
     did_alignment_p = true;
 
 #if 1
     floors3 = compute_floors(&any_omitted_p_3,&alloc_floors_p_3,floors_array,this3,
-			     querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			     max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+			     querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+			     indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 			     keep_floors_p);
     floors3_computed_p = true;
-
+    ignore_found_score = *found_score;
     complete_set_mm_indels(&ignore_found_score,&segments3_computed_p,
 			   &opt_level,&done_level_3,user_maxlevel_3,/*revise_levels_p*/false,
 			   &nhits3,&subs3,&indels3,this3,query3_compress_fwd,query3_compress_rev,
@@ -15849,71 +15296,78 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			   queryuc_ptr_3,queryrc3,
 #endif
 			   querylength3,query3_lastpos,floors3,subopt_levels,
-			   indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			   indel_penalty_middle,indel_penalty_end,
 			   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			   fast_level_3,genestrand);
+			   fast_level_3,genestrand,/*first_read_p*/false);
 
 #else
     if (masktype == MASK_NONE) {
       debug(printf("*** Stage 4B,5B.  Complete mm/indels with no masking with done_level %d ***\n",done_level_3));
+      ignore_found_score = *found_score;
       complete_set_mm_indels(&ignore_found_score,&segments3_computed_p,
 			     &any_omitted_p_3,&opt_level,&done_level_3,user_maxlevel_3,/*revise_levels_p*/false,
 			     &nhits3,&subs3,&indels3,this3,query3_compress_fwd,query3_compress_rev,queryuc_ptr_3,
 #if defined(DEBUG2) || defined(DEBUG2E)
 			     queryrc3,
 #endif
-			     querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			     floors_array,subopt_levels,
-			     indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			     querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+			     indexdb_size_threshold,floors_array,subopt_levels,
+			     indel_penalty_middle,indel_penalty_end,
 			     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			     fast_level_3,/*omit_frequent_p*/false,/*omit_repetitive_p*/false,keep_floors_p,
-			     genestrand);
+			     genestrand,/*first_read_p*/false);
     } else {
       debug(printf("*** Stage 4B,5B.  Complete mm/indels masking frequent oligos with done_level %d ***\n",done_level_3));
+      ignore_found_score = *found_score;
       complete_set_mm_indels(&ignore_found_score,&segments3_computed_p,
 			     &any_omitted_p_3,&opt_level,&done_level_3,user_maxlevel_3,/*revise_levels_p*/false,
 			     &nhits3,&subs3,&indels3,this3,query3_compress_fwd,query3_compress_rev,
 #if defined(DEBUG2) || defined(DEBUG2E)
 			     queryuc_ptr_3,queryrc3,
 #endif
-			     querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			     floors_array,subopt_levels,
-			     indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			     querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+			     indexdb_size_threshold,floors_array,subopt_levels,
+			     indel_penalty_middle,indel_penalty_end,
 			     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			     fast_level_3,/*omit_frequent_p*/true,
 			     /*omit_repetitive_p*/(masktype == MASK_REPETITIVE || masktype == MASK_GREEDY_REPETITIVE) ? true : false,
-			     keep_floors_p,genestrand);
+			     keep_floors_p,genestrand,/*first_read_p*/false);
       if ((masktype == MASK_GREEDY_FREQUENT || masktype == MASK_GREEDY_REPETITIVE) && subs3 == NULL && indels3 == NULL && any_omitted_p_3 == true) {
 	FREE(this->minus_segments_3);
 	FREE(this->plus_segments_3);
 
 	/* 4/5B.  Complete set mismatches and indels, with all oligos */
 	debug(printf("*** Stage 4B,5B.  Complete mm/indels with no masking with done_level %d ***\n",done_level_3));
+	ignore_found_score = *found_score;
 	complete_set_mm_indels(&ignore_found_score,&segments3_computed_p,
 			       &any_omitted_p_3,&opt_level,&done_level_3,user_maxlevel_3,/*revise_levels_p*/false,
 			       &nhits3,&subs3,&indels3,this3,query3_compress_fwd,query3_compress_rev,
 #if defined(DEBUG2) || defined(DEBUG2E)
 			       queryuc_ptr_3,queryrc3,
 #endif
-			       querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-			       floors_array,subopt_levels,
-			       indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			       querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+			       indexdb_size_threshold,floors_array,subopt_levels,
+			       indel_penalty_middle,indel_penalty_end,
 			       allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			       fast_level_3,/*omit_frequent_p*/false,/*omit_repetitive_p*/false,keep_floors_p,
-			       genestrand);
+			       genestrand,/*first_read_p*/false);
       }
     }
 #endif
   }
 
+  debug(printf("complete: 5' end has %d subs, %d indels, %d single splices, %d double splices\n",
+	       List_length(subs5),List_length(indels5),List_length(singlesplicing5),List_length(doublesplicing5)));
+  debug(printf("complete: 3' end has %d subs, %d indels, %d single splices, %d double splices\n",
+	       List_length(subs3),List_length(indels3),List_length(singlesplicing3),List_length(doublesplicing3)));
 
   if (did_alignment_p == true) {
     /* 4/5. Pairing after complete set subs and indels */
     debug(printf("Starting pairing of 4 and 5\n"));
-    hitarray5[HITARRAY_SUBS] = subs5 = Stage3end_remove_duplicates(subs5,queryseq5,queryseq3);
-    hitarray5[HITARRAY_INDELS] = indels5 = Stage3end_remove_duplicates(indels5,queryseq5,queryseq3);
-    hitarray3[HITARRAY_SUBS] = subs3 = Stage3end_remove_duplicates(subs3,queryseq5,queryseq3);
-    hitarray3[HITARRAY_INDELS] = indels3 = Stage3end_remove_duplicates(indels3,queryseq5,queryseq3);
+    hitarray5[HITARRAY_SUBS] = subs5 /* = Stage3end_remove_duplicates(subs5,queryseq5,queryseq3) */;
+    hitarray5[HITARRAY_INDELS] = indels5 /* = Stage3end_remove_duplicates(indels5,queryseq5,queryseq3) */;
+    hitarray3[HITARRAY_SUBS] = subs3 /* = Stage3end_remove_duplicates(subs3,queryseq5,queryseq3) */;
+    hitarray3[HITARRAY_INDELS] = indels3 /* = Stage3end_remove_duplicates(indels3,queryseq5,queryseq3) */;
     hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
 					 &(*samechr),&(*conc_transloc),&(*with_terminal),
 					 hitpairs,hitarray5,/*narray5*/HITARRAY_INDELS+1,
@@ -15929,7 +15383,11 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     if (*abort_pairing_p == true) {
       *hits5 = List_append(subs5,indels5);
       *hits3 = List_append(subs3,indels3);
-      return Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+      hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#endif
+      hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+      return hitpairs;
     } else {
       opt_level = (*found_score < opt_level) ? *found_score : opt_level;
       if ((done_level_5 = opt_level + subopt_levels) > user_maxlevel_5) {
@@ -15942,10 +15400,26 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     }
   }
 
+  if (hitpairs == NULL) {
+    completeset5p = completeset3p = true;
+  } else {
+    completeset5p = completeset3p = false;
+    if (better_free_end_exists_p(subs5,indels5,singlesplicing5,doublesplicing5,querylength5) == true) {
+      completeset3p = true;	/* Do search on other end */
+    }
+    if (better_free_end_exists_p(subs3,indels3,singlesplicing3,doublesplicing3,querylength3) == true) {
+      completeset5p = true;	/* Do search on other end */
+    }
+  }
 
   /* 6/7/8. Local splicing.  Requires compress and all positions fetched. */
   /* Subtract 1 from done_level for previous hits */
-  if (knownsplicingp || novelsplicingp) {
+  did_singlesplicing5_p = false;
+  if (use_sarray_p == true && completeset5p == false) {
+    /* Skip.  Suffix array already found something */
+    debug(printf("Skipping complete set on 5', because sarray found a hitpair\n"));
+
+  } else if (knownsplicingp || novelsplicingp) {
     debug(printf("Deciding whether to do singlesplicing: done_level_5 %d >=? localsplicing_penalty %d\n",
 		 done_level_5,localsplicing_penalty));
 
@@ -15954,31 +15428,50 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
       /* Always mask frequent oligos for splicing, which must be transcriptional */
       if (floors5_computed_p == false) {
 	floors5 = compute_floors(&any_omitted_p_5,&alloc_floors_p_5,floors_array,this5,
-				 querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-				 max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 				 keep_floors_p);
 	floors5_computed_p = true;
       }
 
       if (segments5_computed_p == false) {
-	this5->plus_segments = identify_all_segments(&this5->plus_nsegments,this5->plus_positions,this5->plus_npositions,
-						     this5->omitted,querylength5,query5_lastpos,floors5,/*plusp*/true);
-	this5->minus_segments = identify_all_segments(&this5->minus_nsegments,this5->minus_positions,this5->minus_npositions,
-						      this5->omitted,querylength5,query5_lastpos,floors5,/*plusp*/false);
+	this5->plus_segments = identify_all_segments(&this5->plus_nsegments,&this5->plus_spliceable,&this5->plus_nspliceable,
+#ifdef LARGE_GENOMES
+						     this5->plus_positions_high,this5->plus_positions_low,
+#else
+						     this5->plus_positions,
+#endif
+						     this5->plus_npositions,this5->omitted,querylength5,query5_lastpos,floors5,
+						     /*plusp*/true);
+	this5->minus_segments = identify_all_segments(&this5->minus_nsegments,&this5->minus_spliceable,&this5->minus_nspliceable,
+#ifdef LARGE_GENOMES
+						      this5->minus_positions_high,this5->minus_positions_low,
+#else
+						      this5->minus_positions,
+#endif
+						      this5->minus_npositions,this5->omitted,querylength5,query5_lastpos,floors5,
+						      /*plusp*/false);
 	segments5_computed_p = true;
       }
 
-      singlesplicing5 = complete_set_singlesplicing(&ignore_found_score,floors5,
-						    this5->plus_segments,this5->plus_nsegments,
-						    this5->minus_segments,this5->minus_nsegments,
+      did_singlesplicing5_p = true;
+      ignore_found_score = *found_score;
+      singlesplicing5 = complete_set_singlesplicing(&ignore_found_score,singlesplicing5,floors5,this5,
 						    query5_compress_fwd,query5_compress_rev,
 						    querylength5,query5_lastpos,
-						    shortsplicedist,localsplicing_penalty,
+						    localsplicing_penalty,
 						    /*max_mismatches_allowed*/done_level_5 - localsplicing_penalty,
-						    /*first_read_p*/true,genestrand,
+						    genestrand,/*first_read_p*/true,
 						    /*subs_or_indels_p*/(subs5 != NULL || indels5 != NULL) ? true : false);
     }
+  }
 
+  did_singlesplicing3_p = false;
+  if (use_sarray_p == true && completeset3p == false) {
+    /* Skip.  Suffix array already found something */
+    debug(printf("Skipping complete set on 3', because sarray found a hitpair\n"));
+
+  } else if (knownsplicingp || novelsplicingp) {
     debug(printf("Deciding whether to do singlesplicing: done_level_3 %d >=? localsplicing_penalty %d\n",
 		 done_level_3,localsplicing_penalty));
     if (done_level_3 >= localsplicing_penalty) {
@@ -15986,31 +15479,45 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
       /* Always mask frequent oligos for splicing, which must be transcriptional */
       if (floors3_computed_p == false) {
 	floors3 = compute_floors(&any_omitted_p_3,&alloc_floors_p_3,floors_array,this3,
-				 querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-				 max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 				 keep_floors_p);
 	floors3_computed_p = true;
       }
 
       if (segments3_computed_p == false) {
-	this3->plus_segments = identify_all_segments(&this3->plus_nsegments,this3->plus_positions,this3->plus_npositions,
-						     this3->omitted,querylength3,query3_lastpos,floors3,/*plusp*/true);
-	this3->minus_segments = identify_all_segments(&this3->minus_nsegments,this3->minus_positions,this3->minus_npositions,
-						      this3->omitted,querylength3,query3_lastpos,floors3,/*plusp*/false);
+	this3->plus_segments = identify_all_segments(&this3->plus_nsegments,&this3->plus_spliceable,&this3->plus_nspliceable,
+#ifdef LARGE_GENOMES
+						     this3->plus_positions_high,this3->plus_positions_low,
+#else
+						     this3->plus_positions,
+#endif
+						     this3->plus_npositions,this3->omitted,querylength3,query3_lastpos,floors3,
+						     /*plusp*/true);
+	this3->minus_segments = identify_all_segments(&this3->minus_nsegments,&this3->minus_spliceable,&this3->minus_nspliceable,
+#ifdef LARGE_GENOMES
+						      this3->minus_positions_high,this3->minus_positions_low,
+#else
+						      this3->minus_positions,
+#endif
+						      this3->minus_npositions,this3->omitted,querylength3,query3_lastpos,floors3,
+						      /*plusp*/false);
 	segments3_computed_p = true;
       }
 
-      singlesplicing3 = complete_set_singlesplicing(&ignore_found_score,floors3,
-						    this3->plus_segments,this3->plus_nsegments,
-						    this3->minus_segments,this3->minus_nsegments,
+      did_singlesplicing3_p = true;
+      ignore_found_score = *found_score;
+      singlesplicing3 = complete_set_singlesplicing(&ignore_found_score,singlesplicing3,floors3,this3,
 						    query3_compress_fwd,query3_compress_rev,
 						    querylength3,query3_lastpos,
-						    shortsplicedist,localsplicing_penalty,
+						    localsplicing_penalty,
 						    /*max_mismatches_allowed*/done_level_3 - localsplicing_penalty,
-						    /*first_read_p*/false,genestrand,
+						    genestrand,/*first_read_p*/false,
 						    /*subs_or_indels_p*/(subs3 != NULL || indels3 != NULL) ? true : false);
     }
+  }
 
+  if (did_singlesplicing5_p == true || did_singlesplicing3_p == true) {
     /* 6.  Pairing after single splicing */
     /* Mark ambiguous splices only for single-end reads */
     hitarray5[HITARRAY_SINGLESPLICING] = singlesplicing5;
@@ -16037,7 +15544,11 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
       }
       *hits5 = List_append(subs5,List_append(indels5,singlesplicing5));
       *hits3 = List_append(subs3,List_append(indels3,singlesplicing3));
-      return Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+      hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#endif
+      hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+      return hitpairs;
 
     } else {
       opt_level = (*found_score < opt_level) ? *found_score : opt_level;
@@ -16051,31 +15562,42 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 		   *found_score,opt_level,done_level_5,done_level_3));
     }
 
-
     /* 7.  Double splicing */
     if (done_level_5 >= localsplicing_penalty) {
       debug(printf("*** Stage 7A.  Double splicing masking frequent oligos with done_level %d ***\n",done_level_5));
-      doublesplicing5 = complete_set_doublesplicing(&ignore_found_score,floors5,
-						    this5->plus_segments,this5->plus_nsegments,
-						    this5->minus_segments,this5->minus_nsegments,
+      if (floors5_computed_p == false) {
+	floors5 = compute_floors(&any_omitted_p_5,&alloc_floors_p_5,floors_array,this5,
+				 querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 keep_floors_p);
+	floors5_computed_p = true;
+      }
+      ignore_found_score = *found_score;
+      doublesplicing5 = complete_set_doublesplicing(&ignore_found_score,doublesplicing5,floors5,this5,
 						    query5_compress_fwd,query5_compress_rev,
 						    queryuc_ptr_5,queryrc5,querylength5,query5_lastpos,
-						    shortsplicedist,localsplicing_penalty,min_shortend,
+						    localsplicing_penalty,min_shortend,
 						    /*max_mismatches_allowed*/done_level_5 - localsplicing_penalty,
-						    /*pairedp*/true,/*first_read_p*/true,genestrand,
+						    /*pairedp*/true,genestrand,/*first_read_p*/true,
 						    /*subs_or_indels_p*/(subs5 != NULL || indels5 != NULL) ? true : false);
     }
 
     if (done_level_3 >= localsplicing_penalty) {
       debug(printf("*** Stage 7B.  Double splicing masking frequent oligos with done_level %d ***\n",done_level_3));
-      doublesplicing3 = complete_set_doublesplicing(&ignore_found_score,floors3,
-						    this3->plus_segments,this3->plus_nsegments,
-						    this3->minus_segments,this3->minus_nsegments,
+      if (floors3_computed_p == false) {
+	floors3 = compute_floors(&any_omitted_p_3,&alloc_floors_p_3,floors_array,this3,
+				 querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 keep_floors_p);
+	floors3_computed_p = true;
+      }
+      ignore_found_score = *found_score;
+      doublesplicing3 = complete_set_doublesplicing(&ignore_found_score,doublesplicing3,floors3,this3,
 						    query3_compress_fwd,query3_compress_rev,
 						    queryuc_ptr_3,queryrc3,querylength3,query3_lastpos,
-						    shortsplicedist,localsplicing_penalty,min_shortend,
+						    localsplicing_penalty,min_shortend,
 						    /*max_mismatches_allowed*/done_level_3 - localsplicing_penalty,
-						    /*pairedp*/true,/*first_read_p*/false,genestrand,
+						    /*pairedp*/true,genestrand,/*first_read_p*/false,
 						    /*subs_or_indels_p*/(subs3 != NULL || indels3 != NULL) ? true : false);
     }
     
@@ -16084,6 +15606,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     hitarray5[HITARRAY_DOUBLESPLICING] = doublesplicing5;
     hitarray3[HITARRAY_DOUBLESPLICING] = doublesplicing3;
 
+    debug(printf("Starting Stage3_pair_up_concordant\n"));
     hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
 					 &(*samechr),&(*conc_transloc),&(*with_terminal),
 					 hitpairs,hitarray5,/*narray5*/HITARRAY_DOUBLESPLICING+1,
@@ -16105,7 +15628,11 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
       }
       *hits5 = List_append(subs5,List_append(indels5,List_append(singlesplicing5,doublesplicing5)));
       *hits3 = List_append(subs3,List_append(indels3,List_append(singlesplicing3,doublesplicing3)));
-      return Stage3pair_remove_circular_alias(hitpairs);
+      hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+      hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+#endif
+      return hitpairs;
 
     } else {
       opt_level = (*found_score < opt_level) ? *found_score : opt_level;
@@ -16142,7 +15669,8 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			       queryuc_ptr_5,
 #endif
 			       floors5,querylength5,query5_lastpos,/*query_compress*/query5_compress_fwd,
-			       /*max_mismatches_allowed*/max_splice_mismatches_5,/*plusp*/true,genestrand);
+			       /*max_mismatches_allowed*/max_splice_mismatches_5,/*plusp*/true,genestrand,
+			       /*first_read_p*/true);
 
       find_spliceends_shortend(&antidonors_minus_5,&donors_minus_5,&antiacceptors_minus_5,&acceptors_minus_5,
 			       this5->minus_segments,this5->minus_nsegments,
@@ -16150,8 +15678,10 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			       /*queryptr*/queryrc5,
 #endif
 			       floors5,querylength5,query5_lastpos,/*query_compress*/query5_compress_rev,
-			       /*max_mismatches_allowed*/max_splice_mismatches_5,/*plusp*/false,genestrand);
+			       /*max_mismatches_allowed*/max_splice_mismatches_5,/*plusp*/false,genestrand,
+			       /*first_read_p*/true);
 
+      ignore_found_score = *found_score;
       singlesplicing5 = find_splicepairs_shortend(&ignore_found_score,/*hits*/singlesplicing5,
 						  donors_plus_5,antidonors_plus_5,acceptors_plus_5,antiacceptors_plus_5,
 						  donors_minus_5,antidonors_minus_5,acceptors_minus_5,antiacceptors_minus_5,
@@ -16184,7 +15714,8 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			       queryuc_ptr_3,
 #endif
 			       floors3,querylength3,query3_lastpos,/*query_compress*/query3_compress_fwd,
-			       /*max_mismatches_allowed*/max_splice_mismatches_3,/*plusp*/true,genestrand);
+			       /*max_mismatches_allowed*/max_splice_mismatches_3,/*plusp*/true,genestrand,
+			       /*first_read_p*/false);
 
       find_spliceends_shortend(&antidonors_minus_3,&donors_minus_3,&antiacceptors_minus_3,&acceptors_minus_3,
 			       this3->minus_segments,this3->minus_nsegments,
@@ -16192,8 +15723,10 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			       /*queryptr*/queryrc3,
 #endif
 			       floors3,querylength3,query3_lastpos,/*query_compress*/query3_compress_rev,
-			       /*max_mismatches_allowed*/max_splice_mismatches_3,/*plusp*/false,genestrand);
+			       /*max_mismatches_allowed*/max_splice_mismatches_3,/*plusp*/false,genestrand,
+			       /*first_read_p*/false);
       
+      ignore_found_score = *found_score;
       singlesplicing3 = find_splicepairs_shortend(&ignore_found_score,/*hits*/singlesplicing3,
 						  donors_plus_3,antidonors_plus_3,acceptors_plus_3,antiacceptors_plus_3,
 						  donors_minus_3,antidonors_minus_3,acceptors_minus_3,antiacceptors_minus_3,
@@ -16205,8 +15738,8 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 
     if (singlesplicing5 != NULL || singlesplicing3 != NULL) {
       /* 8.  Pairing after short-overlaps */
-      hitarray5[HITARRAY_SINGLESPLICING] = singlesplicing5 = Stage3end_remove_duplicates(singlesplicing5,queryseq5,queryseq3);
-      hitarray3[HITARRAY_SINGLESPLICING] = singlesplicing3 = Stage3end_remove_duplicates(singlesplicing3,queryseq5,queryseq3);
+      hitarray5[HITARRAY_SINGLESPLICING] = singlesplicing5 /* = Stage3end_remove_duplicates(singlesplicing5,queryseq5,queryseq3) */;
+      hitarray3[HITARRAY_SINGLESPLICING] = singlesplicing3 /* = Stage3end_remove_duplicates(singlesplicing3,queryseq5,queryseq3) */;
       hitpairs = Stage3_pair_up_concordant(&(*abort_pairing_p),&(*found_score),&nconcordant,&nsamechr,
 					   &(*samechr),&(*conc_transloc),&(*with_terminal),
 					   hitpairs,hitarray5,/*narray5*/HITARRAY_DOUBLESPLICING+1,
@@ -16279,14 +15812,23 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 
   *hits5 = List_append(subs5,List_append(indels5,List_append(singlesplicing5,doublesplicing5)));
   *hits3 = List_append(subs3,List_append(indels3,List_append(singlesplicing3,doublesplicing3)));
-
+  debug(printf("overall: 5' end has %d subs, %d indels, %d single splices, %d double splices\n",
+	       List_length(subs5),List_length(indels5),List_length(singlesplicing5),List_length(doublesplicing5)));
+  debug(printf("overall: 3' end has %d subs, %d indels, %d single splices, %d double splices\n",
+	       List_length(subs3),List_length(indels3),List_length(singlesplicing3),List_length(doublesplicing3)));
 
   if (gmap_pairsearch_p == true) {
+    debug(printf("Test for stage 9.  Comparing if found score %d >= trigger_score_for_gmap %d\n",
+		 *found_score,trigger_score_for_gmap));
+
     /* 9A,B.  GMAP pairsearch/halfmapping/unpaired */
     /* Our previous test for doing GMAP was if nconcordant == 0, but
        could lead to a false positive concordant match. */
     /* Do not update nconcordant, because poor GMAP alignments can stop search for a distant splice */
-    if (*found_score > trigger_score_for_gmap && *abort_pairing_p == false) {
+
+    /* Relying upon trigger_score_for_gmap can occasionally lead to faulty concordant alignments.  However, running it on everything
+       speed by half */
+    if (*found_score >= trigger_score_for_gmap && *abort_pairing_p == false) {
       debug(printf("Stage 9.  Found score %d > %d.  Seeing if GMAP will help on %d + %d results\n",
 		   *found_score,trigger_score_for_gmap,List_length(*hits5),List_length(*hits3)));
 
@@ -16313,59 +15855,56 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 	  if (Stage3end_hittype(hit5) == TRANSLOC_SPLICE) {
 	    debug13(printf("No GMAP on transloc splice\n"));
 	  } else if (Stage3end_paired_usedp(hit5) == false && Stage3end_score(hit5) <= best_score_paired) {
-	    gmap3_hits = align_halfmapping_with_gmap(hit5,/*hit3*/NULL,queryseq5,queryseq3,
+	    gmap3_hits = align_halfmapping_with_gmap(gmap_history_3,hit5,/*hit3*/NULL,queryseq5,queryseq3,
 						     queryuc_ptr_3,/*querylength*/querylength3,query3_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 						     queryrc3,Shortread_invertedp(queryseq3),
 #endif
 						     query3_compress_fwd,query3_compress_rev,
 						     this3->plus_segments,this3->plus_nsegments,this3->minus_segments,this3->minus_nsegments,
-						     oligoindices_major,noligoindices_major,
-						     oligoindices_minor,noligoindices_minor,
-						     pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-						     pairmax,shortsplicedist,user_maxlevel_5,genestrand);
+						     oligoindices_major,oligoindices_minor,
+						     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+						     pairmax,shortsplicedist,user_maxlevel_5,genestrand,
+						     /*first_read_p*/false);
 	    for (a = gmap3_hits; a != NULL; a = List_next(a)) {
 	      gmap3 = (Stage3end_T) List_head(a);
 	      debug13(printf("=> Successful pairsearch GMAP on hit3 with score %d and nmatches %d\n",
-			     Stage3end_score(gmap3),Stage3end_nmatches(gmap3)));
-	      if ((newpair = Stage3pair_new(Stage3end_copy(hit5),gmap3,splicesites,
-					    query5_compress_fwd,query5_compress_rev,
-					    query3_compress_fwd,query3_compress_rev,genestrand,
-					    /*pairtype*/CONCORDANT,localsplicing_penalty,
-					    /*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
+			     Stage3end_score(gmap3),Stage3end_nmatches_posttrim(gmap3)));
+
+	      if (Stage3end_score(gmap3) > *cutoff_level_3 + gmap_allowance) {
+		/* nsalvage += 1; */
+		debug13(printf("Score is only %d vs cutoff level %d\n",Stage3end_score(gmap3),*cutoff_level_3));
+		Stage3end_free(&gmap3);
+
+	      } else if ((newpair = Stage3pair_new(Stage3end_copy(hit5),gmap3,splicesites,
+						   query5_compress_fwd,query5_compress_rev,
+						   query3_compress_fwd,query3_compress_rev,genestrand,
+						   /*pairtype*/CONCORDANT,localsplicing_penalty,
+						   /*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
 		debug13(printf(  "newpair is NULL\n"));
 		/* Stage3end_free(&gmap3); -- done by Stage3pair_new */
 
-	      } else if (Stage3end_gmap_max_match_length(gmap3) < querylength3/2) {
-		/* nsalvage += 1; */
-		debug13(printf("Max match length is only %d => nconcordant %d\n",
-			       Stage3end_gmap_max_match_length(gmap3),nconcordant));
-		if (Stage3end_hittype(hit5) == TERMINAL) {
-		  *with_terminal = List_push(*with_terminal,(void *) newpair);
-		} else {
-		  hitpairs = List_push(hitpairs,(void *) newpair);
+	      } else if (Stage3end_hittype(hit5) != TERMINAL) {
+		if (Stage3end_nmatches_posttrim(gmap3) >= querylength3 - (*cutoff_level_3) &&
+		    Stage3end_gmap_max_match_length(gmap3) >= querylength3/2) {
+		  /* Want high standard for nconcordant, since this precludes finding terminals */
+		  nconcordant += 1;
+		  debug13(printf("High quality (nmatches %d >= querylength %d - cutoff level %d) => nconcordant %d\n",
+				 Stage3end_nmatches_posttrim(gmap3),querylength3,*cutoff_level_3,nconcordant));
 		}
-
-	      } else if (Stage3end_nmatches(gmap3) >= querylength3 - (*cutoff_level_3)) {
-		/* Save hit5-gmap3 */
-		nconcordant += 1;
-		debug13(printf("High quality (nmatches %d >= querylength %d - cutoff level %d) => nconcordant %d\n",
-			       Stage3end_nmatches(gmap3),querylength3,*cutoff_level_3,nconcordant));
-		if (Stage3end_hittype(hit5) == TERMINAL) {
-		  *with_terminal = List_push(*with_terminal,(void *) newpair);
-		} else {
-		  hitpairs = List_push(hitpairs,(void *) newpair);
+		hitpairs = List_push(hitpairs,(void *) newpair);
+	      } else if (Stage3end_terminal_length(hit5) >= terminal_output_minlength) {
+		if (Stage3end_nmatches_posttrim(gmap3) >= querylength3 - (*cutoff_level_3) &&
+		    Stage3end_gmap_max_match_length(gmap3) >= querylength3/2) {
+		  /* Want high standard for nconcordant, since this precludes finding terminals */
+		  nconcordant += 1;
+		  debug13(printf("High quality (nmatches %d >= querylength %d - cutoff level %d) => nconcordant %d\n",
+				 Stage3end_nmatches_posttrim(gmap3),querylength3,*cutoff_level_3,nconcordant));
 		}
-
+		*with_terminal = List_push(*with_terminal,(void *) newpair);
 	      } else {
-		/* nsalvage += 1; */
-		debug13(printf("Not high quality (nmatches %d) => nconcordant %d\n",
-			       Stage3end_nmatches(gmap3),nconcordant));
-		if (Stage3end_hittype(hit5) == TERMINAL) {
-		  *with_terminal = List_push(*with_terminal,(void *) newpair);
-		} else {
-		  hitpairs = List_push(hitpairs,(void *) newpair);
-		}
+		/* Stage3end_free(&gmap3); */
+		Stage3pair_free(&newpair);
 	      }
 	    }
 	    List_free(&gmap3_hits);
@@ -16386,60 +15925,57 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 	  if (Stage3end_hittype(hit3) == TRANSLOC_SPLICE) {
 	    debug13(printf("Not GMAP on transloc splice\n"));
 	  } else if (Stage3end_paired_usedp(hit3) == false && Stage3end_score(hit3) <= best_score_paired) {
-	    gmap5_hits = align_halfmapping_with_gmap(/*hit5*/NULL,hit3,queryseq5,queryseq3,
+	    gmap5_hits = align_halfmapping_with_gmap(gmap_history_5,/*hit5*/NULL,hit3,queryseq5,queryseq3,
 						     queryuc_ptr_5,/*querylength*/querylength5,query5_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 						     queryrc5,Shortread_invertedp(queryseq5),
 #endif
 						     query5_compress_fwd,query5_compress_rev,
 						     this5->plus_segments,this5->plus_nsegments,this5->minus_segments,this5->minus_nsegments,
-						     oligoindices_major,noligoindices_major,
-						     oligoindices_minor,noligoindices_minor,
-						     pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-						     pairmax,shortsplicedist,user_maxlevel_5,genestrand);
+						     oligoindices_major,oligoindices_minor,
+						     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+						     pairmax,shortsplicedist,user_maxlevel_5,genestrand,
+						     /*first_read_p*/true);
 	    for (a = gmap5_hits; a != NULL; a = List_next(a)) {
 	      gmap5 = (Stage3end_T) List_head(a);
 	      debug13(printf("=> Successful pairsearch GMAP on hit5 with score %d and nmatches %d\n",
-			     Stage3end_score(gmap5),Stage3end_nmatches(gmap5)));
-	      if ((newpair = Stage3pair_new(gmap5,Stage3end_copy(hit3),splicesites,
-					    query5_compress_fwd,query5_compress_rev,
-					    query3_compress_fwd,query3_compress_rev,genestrand,
-					    /*pairtype*/CONCORDANT,localsplicing_penalty,
-					    /*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
+			     Stage3end_score(gmap5),Stage3end_nmatches_posttrim(gmap5)));
+
+	      /* Stage3end_nmatches_posttrim(gmap5) >= querylength5 - (*cutoff_level_5); */
+	      if (Stage3end_score(gmap5) > *cutoff_level_5 + gmap_allowance) {
+		/* nsalvage += 1; */
+		debug13(printf("Score is only %d vs cutoff level %d\n",Stage3end_score(gmap5),*cutoff_level_5));
+		Stage3end_free(&gmap5);
+
+	      } else if ((newpair = Stage3pair_new(gmap5,Stage3end_copy(hit3),splicesites,
+						   query5_compress_fwd,query5_compress_rev,
+						   query3_compress_fwd,query3_compress_rev,genestrand,
+						   /*pairtype*/CONCORDANT,localsplicing_penalty,
+						   /*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
 		debug13(printf(  "newpair is NULL\n"));
 		/* Stage3end_free(&gmap5); -- done by Stage3pair_new */
 
-	      } else if (Stage3end_gmap_max_match_length(gmap5) < querylength5/2) {
-		/* nsalvage += 1; */
-		debug13(printf("Max match length is only %d => nconcordant %d\n",
-			       Stage3end_gmap_max_match_length(gmap5),nconcordant));
-		if (Stage3end_hittype(hit3) == TERMINAL) {
-		  *with_terminal = List_push(*with_terminal,(void *) newpair);
-		} else {
-		  hitpairs = List_push(hitpairs,(void *) newpair);
+	      } else if (Stage3end_hittype(hit3) != TERMINAL) {
+		if (Stage3end_nmatches_posttrim(gmap5) >= querylength5 - (*cutoff_level_5) &&
+		    Stage3end_gmap_max_match_length(gmap5) >= querylength5/2) {
+		  /* Want high standard for nconcordant, since this precludes finding terminals */
+		  nconcordant += 1;
+		  debug13(printf("High quality (nmatches %d >= querylength %d - cutoff level %d) => nconcordant %d\n",
+				 Stage3end_nmatches_posttrim(gmap5),querylength5,*cutoff_level_5,nconcordant));
 		}
-
-	      } else if (Stage3end_nmatches(gmap5) >= querylength5 - (*cutoff_level_5)) {
-		/* Save gmap5-hit3 */
-		nconcordant += 1;
-		debug13(printf("High quality (nmatches %d >= querylength %d - cutoff level %d) => nconcordant %d\n",
-			       Stage3end_nmatches(gmap5),querylength5,*cutoff_level_5,nconcordant));
-		if (Stage3end_hittype(hit3) == TERMINAL) {
-		  *with_terminal = List_push(*with_terminal,(void *) newpair);
-		} else {
-		  hitpairs = List_push(hitpairs,(void *) newpair);
+		hitpairs = List_push(hitpairs,(void *) newpair);
+	      } else if (Stage3end_terminal_length(hit3) >= terminal_output_minlength) {
+		if (Stage3end_nmatches_posttrim(gmap5) >= querylength5 - (*cutoff_level_5) &&
+		    Stage3end_gmap_max_match_length(gmap5) >= querylength5/2) {
+		  /* Want high standard for nconcordant, since this precludes finding terminals */
+		  nconcordant += 1;
+		  debug13(printf("High quality (nmatches %d >= querylength %d - cutoff level %d) => nconcordant %d\n",
+				 Stage3end_nmatches_posttrim(gmap5),querylength5,*cutoff_level_5,nconcordant));
 		}
-
+		*with_terminal = List_push(*with_terminal,(void *) newpair);
 	      } else {
-		/* nsalvage += 1; */
-		debug13(printf("Not high quality (nmatches %d) => nconcordant %d\n",
-			       Stage3end_nmatches(gmap5),nconcordant));
-		if (Stage3end_hittype(hit3) == TERMINAL) {
-		  *with_terminal = List_push(*with_terminal,(void *) newpair);
-		} else {
-		  hitpairs = List_push(hitpairs,(void *) newpair);
-		}
-
+		/* Stage3end_free(&gmap5); */
+		Stage3pair_free(&newpair);
 	      }
 	    }
 	    List_free(&gmap5_hits);
@@ -16481,7 +16017,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			      /*queryptr*/queryuc_ptr_5,
 #endif
 			      floors5,querylength5,query5_lastpos,/*query_compress*/query5_compress_fwd,
-			      max_splice_mismatches_5,/*plusp*/true,genestrand);
+			      max_splice_mismatches_5,/*plusp*/true,genestrand,/*first_read_p*/true);
       debug(printf("Finished find_spliceends (plus)\n"));
 
       debug(printf("Starting find_spliceends (minus)\n"));
@@ -16491,7 +16027,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			      /*queryptr*/queryrc5,
 #endif
 			      floors5,querylength5,query5_lastpos,/*query_compress*/query5_compress_rev,
-			      max_splice_mismatches_5,/*plusp*/false,genestrand);
+			      max_splice_mismatches_5,/*plusp*/false,genestrand,/*first_read_p*/true);
       debug(printf("Finished find_spliceends (minus)\n"));
 
 
@@ -16522,10 +16058,11 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 		       List_length(donors_minus_5[nmismatches]),List_length(acceptors_minus_5[nmismatches]),
 		       List_length(antidonors_minus_5[nmismatches]),List_length(antiacceptors_minus_5[nmismatches])));
 
+	ignore_found_score = *found_score;
 	*hits5 = find_splicepairs_distant(&ignore_found_score,&nsplicepairs5,&longsinglesplicing5,*hits5,
 					  donors_plus_5,antidonors_plus_5,acceptors_plus_5,antiacceptors_plus_5,
 					  donors_minus_5,antidonors_minus_5,acceptors_minus_5,antiacceptors_minus_5,
-					  shortsplicedist,localsplicing_penalty,distantsplicing_penalty,
+					  localsplicing_penalty,distantsplicing_penalty,
 					  querylength5,nmismatches,/*first_read_p*/true);
 	nmismatches++;
       }
@@ -16577,7 +16114,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			      /*queryptr*/queryuc_ptr_3,
 #endif
 			      floors3,querylength3,query3_lastpos,/*query_compress*/query3_compress_fwd,
-			      max_splice_mismatches_3,/*plusp*/true,genestrand);
+			      max_splice_mismatches_3,/*plusp*/true,genestrand,/*first_read_p*/false);
       debug(printf("Finished find_spliceends (plus)\n"));
 
       debug(printf("Starting find_spliceends (minus)\n"));
@@ -16587,7 +16124,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 			      /*queryptr*/queryrc3,
 #endif
 			      floors3,querylength3,query3_lastpos,/*query_compress*/query3_compress_rev,
-			      max_splice_mismatches_3,/*plusp*/false,genestrand);
+			      max_splice_mismatches_3,/*plusp*/false,genestrand,/*first_read_p*/false);
       debug(printf("Finished find_spliceends (minus)\n"));
 
       /* 10B.  Distant splicing */
@@ -16617,10 +16154,11 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 		       List_length(donors_minus_3[nmismatches]),List_length(acceptors_minus_3[nmismatches]),
 		       List_length(antidonors_minus_3[nmismatches]),List_length(antiacceptors_minus_3[nmismatches])));
 
+	ignore_found_score = *found_score;
 	*hits3 = find_splicepairs_distant(&ignore_found_score,&nsplicepairs3,&longsinglesplicing3,*hits3,
 					  donors_plus_3,antidonors_plus_3,acceptors_plus_3,antiacceptors_plus_3,
 					  donors_minus_3,antidonors_minus_3,acceptors_minus_3,antiacceptors_minus_3,
-					  shortsplicedist,localsplicing_penalty,distantsplicing_penalty,
+					  localsplicing_penalty,distantsplicing_penalty,
 					  querylength3,nmismatches,/*first_read_p*/false);
 	nmismatches++;
       }
@@ -16681,6 +16219,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
   }
 
 
+  debug13(printf("nconcordant = %d\n",nconcordant));
   /* 11A,B.  Terminals */  /* Without nconcordant constraint, speed drops by 1/2 */
   if (nconcordant == 0 && /* nsalvage == 0 && */ *abort_pairing_p == false) {
     /* Previously used found_score > trigger_score_for_terminals */
@@ -16692,17 +16231,27 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 		   done_level_5,terminal_threshold));
       if (floors5_computed_p == false) {
 	floors5 = compute_floors(&any_omitted_p_5,&alloc_floors_p_5,floors_array,this5,
-				 querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-				 max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 				 keep_floors_p);
       }
 
       if (segments5_computed_p == false) {
-	this5->plus_segments = identify_all_segments_for_terminals(&this5->plus_nsegments,this5->plus_positions,this5->plus_npositions,
-								   this5->omitted,querylength5,query5_lastpos,
+	this5->plus_segments = identify_all_segments_for_terminals(&this5->plus_nsegments,
+#ifdef LARGE_GENOMES
+								   this5->plus_positions_high,this5->plus_positions_low,
+#else
+								   this5->plus_positions,
+#endif
+								   this5->plus_npositions,this5->omitted,querylength5,query5_lastpos,
 								   floors5,max_mismatches_allowed,/*plusp*/true);
-	this5->minus_segments = identify_all_segments_for_terminals(&this5->minus_nsegments,this5->minus_positions,this5->minus_npositions,
-								    this5->omitted,querylength5,query5_lastpos,
+	this5->minus_segments = identify_all_segments_for_terminals(&this5->minus_nsegments,
+#ifdef LARGE_GENOMES
+								    this5->minus_positions_high,this5->minus_positions_low,
+#else
+								    this5->minus_positions,
+#endif
+								    this5->minus_npositions,this5->omitted,querylength5,query5_lastpos,
 								    floors5,max_mismatches_allowed,/*plusp*/false);
       }
 
@@ -16713,7 +16262,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 #endif
 				  floors5,querylength5,query5_lastpos,
 				  query5_compress_fwd,query5_compress_rev,
-				  max_mismatches_allowed,/*max_terminal_length*/end_miss_one,genestrand);
+				  max_mismatches_allowed,genestrand,/*first_read_p*/true);
 #if 0
       *hits5 = Stage3end_remove_overlaps(List_append(*hits5,terminals5),/*finalp*/false);
 #endif
@@ -16726,16 +16275,26 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 
       if (floors3_computed_p == false) {
 	floors3 = compute_floors(&any_omitted_p_3,&alloc_floors_p_3,floors_array,this3,
-				 querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-				 max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 				 keep_floors_p);
       }
       if (segments3_computed_p == false) {
-	this3->plus_segments = identify_all_segments_for_terminals(&this3->plus_nsegments,this3->plus_positions,this3->plus_npositions,
-								   this3->omitted,querylength3,query3_lastpos,
+	this3->plus_segments = identify_all_segments_for_terminals(&this3->plus_nsegments,
+#ifdef LARGE_GENOMES
+								   this3->plus_positions_high,this3->plus_positions_low,
+#else
+								   this3->plus_positions,
+#endif
+								   this3->plus_npositions,this3->omitted,querylength3,query3_lastpos,
 								   floors3,max_mismatches_allowed,/*plusp*/true);
-	this3->minus_segments = identify_all_segments_for_terminals(&this3->minus_nsegments,this3->minus_positions,this3->minus_npositions,
-								    this3->omitted,querylength3,query3_lastpos,
+	this3->minus_segments = identify_all_segments_for_terminals(&this3->minus_nsegments,
+#ifdef LARGE_GENOMES
+								    this3->minus_positions_high,this3->minus_positions_low,
+#else
+								    this3->minus_positions,
+#endif
+								    this3->minus_npositions,this3->omitted,querylength3,query3_lastpos,
 								    floors3,max_mismatches_allowed,/*plusp*/false);
       }
 
@@ -16746,7 +16305,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 #endif
 				  floors3,querylength3,query3_lastpos,
 				  query3_compress_fwd,query3_compress_rev,
-				  max_mismatches_allowed,/*max_terminal_length*/end_miss_one,genestrand);
+				  max_mismatches_allowed,genestrand,/*first_read_p*/false);
 #if 0
       *hits3 = Stage3end_remove_overlaps(List_append(*hits3,terminals3),/*finalp*/false);
 #endif
@@ -16797,17 +16356,27 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 		   done_level_5,terminal_threshold));
       if (floors5_computed_p == false) {
 	floors5 = compute_floors(&any_omitted_p_5,&alloc_floors_p_5,floors_array,this5,
-				 querylength5,query5_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-				 max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 querylength5,query5_lastpos,plus_indexdb_5,minus_indexdb_5,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 				 keep_floors_p);
       }
 
       if (segments5_computed_p == false) {
-	this5->plus_segments = identify_all_segments_for_terminals(&this5->plus_nsegments,this5->plus_positions,this5->plus_npositions,
-								   this5->omitted,querylength5,query5_lastpos,
+	this5->plus_segments = identify_all_segments_for_terminals(&this5->plus_nsegments,
+#ifdef LARGE_GENOMES
+								   this5->plus_positions_high,this5->plus_positions_low,
+#else
+								   this5->plus_positions,
+#endif
+								   this5->plus_npositions,this5->omitted,querylength5,query5_lastpos,
 								   floors5,max_mismatches_allowed,/*plusp*/true);
-	this5->minus_segments = identify_all_segments_for_terminals(&this5->minus_nsegments,this5->minus_positions,this5->minus_npositions,
-								    this5->omitted,querylength5,query5_lastpos,
+	this5->minus_segments = identify_all_segments_for_terminals(&this5->minus_nsegments,
+#ifdef LARGE_GENOMES
+								    this5->minus_positions_high,this5->minus_positions_low,
+#else
+								    this5->minus_positions,
+#endif
+								    this5->minus_npositions,this5->omitted,querylength5,query5_lastpos,
 								    floors5,max_mismatches_allowed,/*plusp*/false);
       }
 
@@ -16818,7 +16387,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 #endif
 				  floors5,querylength5,query5_lastpos,
 				  query5_compress_fwd,query5_compress_rev,
-				  max_mismatches_allowed,/*max_terminal_length*/end_miss_two,genestrand);
+				  max_mismatches_allowed,genestrand,/*first_read_p*/true);
 #if 0
       *hits5 = Stage3end_remove_overlaps(List_append(*hits5,terminals5),/*finalp*/false);
 #endif
@@ -16831,16 +16400,26 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 		   done_level_3,terminal_threshold));
       if (floors3_computed_p == false) {
 	floors3 = compute_floors(&any_omitted_p_3,&alloc_floors_p_3,floors_array,this3,
-				 querylength3,query3_lastpos,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
-				 max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
+				 querylength3,query3_lastpos,plus_indexdb_3,minus_indexdb_3,
+				 indexdb_size_threshold,max_end_insertions,/*omit_frequent_p*/true,/*omit_repetitive_p*/true,
 				 keep_floors_p);
       }
       if (segments3_computed_p == false) {
-	this3->plus_segments = identify_all_segments_for_terminals(&this3->plus_nsegments,this3->plus_positions,this3->plus_npositions,
-								   this3->omitted,querylength3,query3_lastpos,
+	this3->plus_segments = identify_all_segments_for_terminals(&this3->plus_nsegments,
+#ifdef LARGE_GENOMES
+								   this3->plus_positions_high,this3->plus_positions_low,
+#else
+								   this3->plus_positions,
+#endif
+								   this3->plus_npositions,this3->omitted,querylength3,query3_lastpos,
 								   floors3,max_mismatches_allowed,/*plusp*/true);
-	this3->minus_segments = identify_all_segments_for_terminals(&this3->minus_nsegments,this3->minus_positions,this3->minus_npositions,
-								    this3->omitted,querylength3,query3_lastpos,
+	this3->minus_segments = identify_all_segments_for_terminals(&this3->minus_nsegments,
+#ifdef LARGE_GENOMES
+								    this3->minus_positions_high,this3->minus_positions_low,
+#else
+								    this3->minus_positions,
+#endif
+								    this3->minus_npositions,this3->omitted,querylength3,query3_lastpos,
 								    floors3,max_mismatches_allowed,/*plusp*/false);
       }
 
@@ -16851,7 +16430,7 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 #endif
 				  floors3,querylength3,query3_lastpos,
 				  query3_compress_fwd,query3_compress_rev,
-				  max_mismatches_allowed,/*max_terminal_length*/end_miss_two,genestrand);
+				  max_mismatches_allowed,genestrand,/*first_read_p*/false);
 #if 0
       *hits3 = Stage3end_remove_overlaps(List_append(*hits3,terminals3),/*finalp*/false);
 #endif
@@ -16893,7 +16472,9 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
 #endif
 
 
-  if (nconcordant == 0 && found_terminals_p == true && gmap_terminal_p == true) {
+  debug13(printf("found_terminals_p = %d\n",found_terminals_p));
+  /* nconcordant might include a concordant pair of terminals */
+  if (/* nconcordant == 0 && */ found_terminals_p == true && gmap_terminal_p == true) {
     /* 13.  GMAP terminal */
     /* Go ahead and resolve overlaps on each end by Stage3end, since
        we cannot do it by Stage3pair, but do not apply optimal
@@ -16918,38 +16499,40 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     terminals5 = Stage3end_sort_bymatches(terminals5);
     for (p = terminals5; p != NULL && i < max_gmap_terminal; p = List_next(p)) {
       hit5 = (Stage3end_T) List_head(p);
-      debug13(printf("#%d/%d with nmatches %d\n",i,max_gmap_terminal,Stage3end_nmatches(hit5)));
+      debug13(printf("#%d/%d with nmatches %d\n",i,max_gmap_terminal,Stage3end_nmatches_posttrim(hit5)));
       assert(Stage3end_hittype(hit5) == TERMINAL);
       if (1 || Stage3end_hittype(hit5) == TERMINAL /* && Stage3end_paired_usedp(hit5) == false && Stage3end_score(hit5) <= best_score_paired */) {
-	gmap3_hits = align_halfmapping_with_gmap(hit5,/*hit3*/NULL,queryseq5,queryseq3,
+	gmap3_hits = align_halfmapping_with_gmap(gmap_history_3,hit5,/*hit3*/NULL,queryseq5,queryseq3,
 						 queryuc_ptr_3,/*querylength*/querylength3,query3_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 						 queryrc3,Shortread_invertedp(queryseq3),
 #endif
 						 query3_compress_fwd,query3_compress_rev,
 						 this3->plus_segments,this3->plus_nsegments,this3->minus_segments,this3->minus_nsegments,
-						 oligoindices_major,noligoindices_major,
-						 oligoindices_minor,noligoindices_minor,
-						 pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-						 pairmax,shortsplicedist,user_maxlevel_3,genestrand);
+						 oligoindices_major,oligoindices_minor,
+						 pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+						 pairmax,shortsplicedist,user_maxlevel_3,genestrand,
+						 /*first_read_p*/false);
 
 	for (a = gmap3_hits; a != NULL; a = List_next(a)) {
 	  gmap3 = (Stage3end_T) List_head(a);
-	  debug13(printf("=> Successful terminal GMAP on hit3 with score %d and nmatches %d\n",
-			 Stage3end_score(gmap3),Stage3end_nmatches(gmap3)));
-	  if ((newpair = Stage3pair_new(Stage3end_copy(hit5),gmap3,splicesites,
-					query5_compress_fwd,query5_compress_rev,
-					query3_compress_fwd,query3_compress_rev,genestrand,
-					/*pairtype*/CONCORDANT,localsplicing_penalty,
-					/*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
+	  debug13(printf("=> Successful terminal GMAP on hit3 %p with score %d and nmatches %d.  Copying hit5 %p\n",
+			 gmap3,Stage3end_score(gmap3),Stage3end_nmatches_posttrim(gmap3),hit5));
+	  if (Stage3end_score(gmap3) > *cutoff_level_3 + gmap_allowance) {
+	    debug13(printf("Score is only %d vs cutoff level %d\n",Stage3end_score(gmap3),*cutoff_level_3));
+	    Stage3end_free(&gmap3);
+	  } else if ((newpair = Stage3pair_new(Stage3end_copy(hit5),gmap3,splicesites,
+					       query5_compress_fwd,query5_compress_rev,
+					       query3_compress_fwd,query3_compress_rev,genestrand,
+					       /*pairtype*/CONCORDANT,localsplicing_penalty,
+					       /*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
 	    /* Stage3end_free(&gmap3); -- done by Stage3pair_new */
-	  } else if (Stage3end_gmap_max_match_length(gmap3) < querylength3/2) {
-	    debug13(printf("Max match length is only %d\n",Stage3end_gmap_max_match_length(gmap3)));
-	    Stage3pair_free(&newpair);
-
-	  } else {
+	  } else if (Stage3end_terminal_length(hit5) >= terminal_output_minlength) {
 	    /* Save hit5-gmap3 */
 	    *with_terminal = List_push(*with_terminal,(void *) newpair);
+	  } else {
+	    /* Stage3end_free(&gmap3); */
+	    Stage3pair_free(&newpair);
 	  }
 	}
 	List_free(&gmap3_hits);
@@ -16963,37 +16546,40 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     terminals3 = Stage3end_sort_bymatches(terminals3);
     for (p = terminals3; p != NULL && i < max_gmap_terminal; p = List_next(p)) {
       hit3 = (Stage3end_T) List_head(p);
-      debug13(printf("#%d/%d with nmatches %d\n",i,max_gmap_terminal,Stage3end_nmatches(hit3)));
+      debug13(printf("#%d/%d with nmatches %d\n",i,max_gmap_terminal,Stage3end_nmatches_posttrim(hit3)));
       assert(Stage3end_hittype(hit3) == TERMINAL);
       if (1 || Stage3end_hittype(hit3) == TERMINAL /* && Stage3end_paired_usedp(hit3) == false && Stage3end_score(hit3) <= best_score_paired */) {
-	gmap5_hits = align_halfmapping_with_gmap(/*hit5*/NULL,hit3,queryseq5,queryseq3,
+	gmap5_hits = align_halfmapping_with_gmap(gmap_history_5,/*hit5*/NULL,hit3,queryseq5,queryseq3,
 						 queryuc_ptr_5,/*querylength*/querylength5,query5_lastpos,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 						 queryrc5,Shortread_invertedp(queryseq5),
 #endif
 						 query5_compress_fwd,query5_compress_rev,
 						 this5->plus_segments,this5->plus_nsegments,this5->minus_segments,this5->minus_nsegments,
-						 oligoindices_major,noligoindices_major,
-						 oligoindices_minor,noligoindices_minor,
-						 pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-						 pairmax,shortsplicedist,user_maxlevel_5,genestrand);
+						 oligoindices_major,oligoindices_minor,
+						 pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+						 pairmax,shortsplicedist,user_maxlevel_5,genestrand,
+						 /*first_read_p*/true);
 	for (a = gmap5_hits; a != NULL; a = List_next(a)) {
 	  gmap5 = (Stage3end_T) List_head(a);
-	  debug13(printf("=> Successful terminal GMAP on hit5 with score %d and nmatches %d\n",
-			 Stage3end_score(gmap5),Stage3end_nmatches(gmap5)));
-	  if ((newpair = Stage3pair_new(gmap5,Stage3end_copy(hit3),splicesites,
+	  debug13(printf("=> Successful terminal GMAP on hit5 %p with score %d and nmatches %d.  Copying hit3 %p\n",
+			 hit5,Stage3end_score(gmap5),Stage3end_nmatches_posttrim(gmap5),hit3));
+	  if (Stage3end_score(gmap5) > *cutoff_level_5 + gmap_allowance) {
+	    debug13(printf("Score is only %d vs cutoff level %d\n",Stage3end_score(gmap5),*cutoff_level_5));
+	    Stage3end_free(&gmap5);
+
+	  } else if ((newpair = Stage3pair_new(gmap5,Stage3end_copy(hit3),splicesites,
 					query5_compress_fwd,query5_compress_rev,
 					query3_compress_fwd,query3_compress_rev,genestrand,
 					/*pairtype*/CONCORDANT,localsplicing_penalty,
 					/*private5p*/true,/*private3p*/true,/*expect_concordant_p*/true)) == NULL) {
 	    /* Stage3end_free(&gmap5); -- done by Stage3pair_new */
-	  } else if (Stage3end_gmap_max_match_length(gmap5) < querylength3/2) {
-	    debug13(printf("Max match length is only %d\n",Stage3end_gmap_max_match_length(gmap5)));
-	    Stage3pair_free(&newpair);
-
-	  } else {
+	  } else if (Stage3end_terminal_length(hit3) >= terminal_output_minlength) {
 	    /* Save gmap5-hit3 */
 	    *with_terminal = List_push(*with_terminal,(void *) newpair);
+	  } else {
+	    /* Stage3end_free(&gmap5); */
+	    Stage3pair_free(&newpair);
 	  }
 	}
 	List_free(&gmap5_hits);
@@ -17004,7 +16590,6 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     debug(printf("13> After GMAP terminals, found %d concordant\n",nconcordant));
   }
 
-
   if (alloc_floors_p_5 == true) {
     Floors_free(&floors5);
   }
@@ -17023,57 +16608,93 @@ align_pair (bool *abort_pairing_p, int *found_score, int *cutoff_level_5, int *c
     *hits3 = List_append(*hits3,terminals3);
   }
 
-  return Stage3pair_remove_circular_alias(hitpairs);
+  hitpairs = Stage3pair_remove_circular_alias(hitpairs);
+#if 0
+  hitpairs = Stage3pair_remove_overlaps(hitpairs,/*translocp*/false,/*finalp*/true);
+#endif
+  return hitpairs;
 }
 
 
 static Pairtype_T
-choose_among_paired (List_T hitpairs, List_T samechr, List_T conc_transloc, List_T with_terminal) {
+choose_among_paired (int *best_nmatches_paired, int *best_nmatches_5, int *best_nmatches_3,
+		     List_T hitpairs, List_T samechr, List_T conc_transloc, List_T with_terminal) {
   Pairtype_T final_pairtype = UNPAIRED;
   List_T p;
   Stage3pair_T hitpair;
-  int best_nmatches = 0, nmatches;
+  int nmatches, nmatches5, nmatches3;
 
-  debug13(printf("choose: %d hitpairs, %d conc_transloc, %d with_terminal, %d samechr\n",
+  debug16(printf("choose: %d hitpairs, %d conc_transloc, %d with_terminal, %d samechr\n",
 		 List_length(hitpairs),List_length(conc_transloc),List_length(with_terminal),List_length(samechr)));
+
+  *best_nmatches_paired = 0;
   for (p = hitpairs; p != NULL; p = p->rest) {
     hitpair = (Stage3pair_T) p->first;
-    if ((nmatches = Stage3pair_nmatches(hitpair)) > best_nmatches) {
+    if ((nmatches = Stage3pair_nmatches_posttrim(&nmatches5,&nmatches3,hitpair)) > *best_nmatches_paired) {
       final_pairtype = CONCORDANT;
-      best_nmatches = nmatches;
+      *best_nmatches_paired = nmatches;
+      *best_nmatches_5 = nmatches5;
+      *best_nmatches_3 = nmatches3;
     }
   }
 
-  best_nmatches += 1;		/* penalty for choosing translocation over others */
+  *best_nmatches_paired += 1; /* penalty for choosing translocation over others */
 
   for (p = conc_transloc; p != NULL; p = p->rest) {
     hitpair = (Stage3pair_T) p->first;
-    if ((nmatches = Stage3pair_nmatches(hitpair)) > best_nmatches) {
+    if ((nmatches = Stage3pair_nmatches_posttrim(&nmatches5,&nmatches3,hitpair)) > *best_nmatches_paired) {
       final_pairtype = CONCORDANT_TRANSLOCATIONS;
-      best_nmatches = nmatches;
+      *best_nmatches_paired = nmatches;
+      *best_nmatches_5 = nmatches5;
+      *best_nmatches_3 = nmatches3;
     }
   }
 
   for (p = with_terminal; p != NULL; p = p->rest) {
     hitpair = (Stage3pair_T) p->first;
-    if ((nmatches = Stage3pair_nmatches(hitpair)) > best_nmatches) {
+    if ((nmatches = Stage3pair_nmatches_posttrim(&nmatches5,&nmatches3,hitpair)) > *best_nmatches_paired) {
       final_pairtype = CONCORDANT_TERMINAL;
-      best_nmatches = nmatches;
+      *best_nmatches_paired = nmatches;
+      *best_nmatches_5 = nmatches5;
+      *best_nmatches_3 = nmatches3;
     }
   }
 
   for (p = samechr; p != NULL; p = p->rest) {
     hitpair = (Stage3pair_T) p->first;
-    if ((nmatches = Stage3pair_nmatches(hitpair)) > best_nmatches) {
+    if ((nmatches = Stage3pair_nmatches_posttrim(&nmatches5,&nmatches3,hitpair)) > *best_nmatches_paired) {
       final_pairtype = PAIRED_UNSPECIFIED;
-      best_nmatches = nmatches;
+      *best_nmatches_paired = nmatches;
+      *best_nmatches_5 = nmatches5;
+      *best_nmatches_3 = nmatches3;
     }
   }
 
+  debug16(printf("best_nmatches_paired among paired = %d = %d + %d\n",
+		 *best_nmatches_paired,*best_nmatches_5,*best_nmatches_3));
+
   return final_pairtype;
 }
 
 
+static int
+best_nmatches_singleend (List_T hits) {
+  int best_nmatches = 0;
+  List_T p;
+  Stage3end_T hit;
+  int nmatches;
+
+  for (p = hits; p != NULL; p = p->rest) {
+    hit = (Stage3end_T) p->first;
+    if ((nmatches = Stage3end_nmatches_posttrim(hit)) > best_nmatches) {
+      best_nmatches = nmatches;
+    }
+  }
+
+  return best_nmatches;
+}
+
+
 
 /* Clean up all previous calculations */
 static void
@@ -17116,19 +16737,20 @@ paired_results_free (T this5, T this3, List_T hitpairs, List_T samechr, List_T c
 
 static void
 realign_separately (Stage3end_T **stage3array5, int *nhits5, int *first_absmq5, int *second_absmq5,
-		    Stage3end_T **stage3array3, int *nhits3, int *first_absmq3, int *second_absmq3, T this5, T this3,
-		    Compress_T query5_compress_fwd, Compress_T query5_compress_rev, Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
+		    Stage3end_T **stage3array3, int *nhits3, int *first_absmq3, int *second_absmq3,
+		    History_T gmap_history_5, History_T gmap_history_3,
+		    T this5, T this3, Compress_T query5_compress_fwd, Compress_T query5_compress_rev,
+		    Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
 		    Shortread_T queryseq5, char *queryuc_ptr_5, char *queryrc5, char *quality_string_5, int querylength5, int query5_lastpos,
 		    Shortread_T queryseq3, char *queryuc_ptr_3, char *queryrc3, char *quality_string_3, int querylength3, int query3_lastpos,
 		    Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold,
 		    Genome_T genome, Floors_T *floors_array,
 		    int user_maxlevel_5, int user_maxlevel_3, int subopt_levels,
-		    int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+		    int indel_penalty_middle, int indel_penalty_end,
 		    bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		    Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-		    Oligoindex_T *oligoindices_major, int noligoindices_major,
-		    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		    Pairpool_T pairpool, Diagpool_T diagpool,
+		    int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
+		    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		    bool keep_floors_p, int genestrand) {
   List_T singlehits5, singlehits3;
@@ -17136,21 +16758,22 @@ realign_separately (Stage3end_T **stage3array5, int *nhits5, int *first_absmq5,
   bool allvalidp5, allvalidp3;
 
   /* Re-align 5' end as a single end */
-  if (read_oligos(&allvalidp5,this5,queryuc_ptr_5,querylength5,query5_lastpos,genestrand) == 0) {
+  if (read_oligos(&allvalidp5,this5,queryuc_ptr_5,querylength5,query5_lastpos,genestrand,
+		  /*first_read_p*/true) == 0) {
     debug(printf("Aborting because no hits found anywhere\n"));
     singlehits5 = (List_T) NULL;
   } else {
-    singlehits5 = align_end(&cutoff_level_5,this5,query5_compress_fwd,query5_compress_rev,
+    singlehits5 = align_end(&cutoff_level_5,gmap_history_5,this5,
+			    query5_compress_fwd,query5_compress_rev,
 			    queryuc_ptr_5,queryrc5,querylength5,query5_lastpos,
-			    indexdb_fwd,indexdb_rev,indexdb_size_threshold,floors_array,
-			    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			    pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+			    indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			    floors_array,oligoindices_major,oligoindices_minor,
+			    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 			    user_maxlevel_5,subopt_levels,
 			    indel_penalty_middle,indel_penalty_end,
-			    shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-			    max_middle_insertions,max_middle_deletions,
+			    localsplicing_penalty,distantsplicing_penalty,min_shortend,
 			    allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			    allvalidp5,keep_floors_p,genestrand);
+			    allvalidp5,keep_floors_p,genestrand,/*first_read_p*/true);
   }
 
   if ((*nhits5 = List_length(singlehits5)) == 0) {
@@ -17164,21 +16787,22 @@ realign_separately (Stage3end_T **stage3array5, int *nhits5, int *first_absmq5,
   }
 
   /* Re-align 3' end as a single end */
-  if (read_oligos(&allvalidp3,this3,queryuc_ptr_3,querylength3,query3_lastpos,genestrand) == 0) {
+  if (read_oligos(&allvalidp3,this3,queryuc_ptr_3,querylength3,query3_lastpos,genestrand,
+		  /*first_read_p*/false) == 0) {
     debug(printf("Aborting because no hits found anywhere\n"));
     singlehits3 = (List_T) NULL;
   } else {
-    singlehits3 = align_end(&cutoff_level_3,this3,query3_compress_fwd,query3_compress_rev,
+    singlehits3 = align_end(&cutoff_level_3,gmap_history_3,this3,
+			    query3_compress_fwd,query3_compress_rev,
 			    queryuc_ptr_3,queryrc3,querylength3,query3_lastpos,
-			    indexdb_fwd,indexdb_rev,indexdb_size_threshold,floors_array,
-			    oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			    pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+			    indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			    floors_array,oligoindices_major,oligoindices_minor,
+			    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 			    user_maxlevel_3,subopt_levels,
 			    indel_penalty_middle,indel_penalty_end,
-			    shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-			    max_middle_insertions,max_middle_deletions,
+			    localsplicing_penalty,distantsplicing_penalty,min_shortend,
 			    allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			    allvalidp3,keep_floors_p,genestrand);
+			    allvalidp3,keep_floors_p,genestrand,/*first_read_p*/false);
   }
 
   if ((*nhits3 = List_length(singlehits3)) == 0) {
@@ -17201,7 +16825,7 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 			    Stage3end_T **stage3array5, int *nhits5, int *first_absmq5, int *second_absmq5,
 			    Stage3end_T **stage3array3, int *nhits3, int *first_absmq3, int *second_absmq3,
 			    List_T hitpairs, List_T samechr, List_T conc_transloc, List_T with_terminal,
-			    List_T hits5, List_T hits3,
+			    List_T hits5, List_T hits3, History_T gmap_history_5, History_T gmap_history_3,
 			    Compress_T query5_compress_fwd, Compress_T query5_compress_rev,
 			    Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
 			    struct Segment_T **plus_segments_genestrand_5, int *plus_nsegments_genestrand_5,
@@ -17211,24 +16835,26 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 			    Shortread_T queryseq5, char *queryuc_ptr_5, char *quality_string_5, int querylength5, int query5_lastpos,
 			    Shortread_T queryseq3, char *queryuc_ptr_3, char *quality_string_3, int querylength3, int query3_lastpos,
 			    Genome_T genome, int subopt_levels, int cutoff_level_5, int cutoff_level_3,
-			    Chrpos_T shortsplicedist, int localsplicing_penalty,
-			    Oligoindex_T *oligoindices_major, int noligoindices_major,
-			    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-			    Pairpool_T pairpool, Diagpool_T diagpool,
+			    int localsplicing_penalty,
+			    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+			    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 			    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 			    Chrpos_T pairmax, int user_maxlevel_5, int user_maxlevel_3) {
   Stage3pair_T *stage3pairarray, stage3pair, newpair;
   Stage3end_T hit5, hit3;
   List_T result, singlehits5, singlehits3, p;
   Pairtype_T pairtype;
+  double percentage_paired, percentage_single;
+  int best_nmatches_paired, best_nmatches_paired_5, best_nmatches_paired_3, best_nmatches_5, best_nmatches_3;
 
   
-  debug13(printf("Entered consolidate_paired_results\n"));
-  *final_pairtype = choose_among_paired(hitpairs,samechr,conc_transloc,with_terminal);
+  debug16(printf("Entered consolidate_paired_results.  Passing pointer %p\n",&best_nmatches_paired));
+  *final_pairtype = choose_among_paired(&best_nmatches_paired,&best_nmatches_paired_5,&best_nmatches_paired_3,
+					hitpairs,samechr,conc_transloc,with_terminal);
 
   if (*final_pairtype == CONCORDANT) {
     /* Have concordant results */
-    debug13(printf("Have %d concordant results\n",List_length(hitpairs)));
+    debug16(printf("Have %d concordant results\n",List_length(hitpairs)));
     for (p = samechr; p != NULL; p = List_next(p)) {
       stage3pair = (Stage3pair_T) List_head(p);
       Stage3pair_free(&stage3pair);
@@ -17252,7 +16878,7 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
     }
 
     if (gmap_improvement_p == false) {
-      debug13(printf("No GMAP improvement: Before removing overlaps, %d results\n",List_length(hitpairs)));
+      debug16(printf("No GMAP improvement: Before removing overlaps, %d results\n",List_length(hitpairs)));
       result = Stage3pair_optimal_score(hitpairs,/*cutoff*/1000000,subopt_levels,
 					query5_compress_fwd,query5_compress_rev,
 					query3_compress_fwd,query3_compress_rev,
@@ -17264,10 +16890,10 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 					/*keep_gmap_p*/false,/*finalp*/true);
       result = Stage3pair_resolve_multimapping(result);
       /* result = Stage3pair_sort_distance(result); */
-      debug13(printf("After removing overlaps, %d results\n",List_length(result)));
+      debug16(printf("After removing overlaps, %d results\n",List_length(result)));
 
     } else {
-      debug13(printf("GMAP improvement: Before removing overlaps, %d results\n",List_length(hitpairs)));
+      debug16(printf("GMAP improvement: Before removing overlaps, %d results\n",List_length(hitpairs)));
       result = Stage3pair_optimal_score(hitpairs,/*cutoff*/1000000,subopt_levels,
 					query5_compress_fwd,query5_compress_rev,
 					query3_compress_fwd,query3_compress_rev,
@@ -17279,9 +16905,10 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 					/*keep_gmap_p*/false,/*finalp*/false);
       result = Stage3pair_resolve_multimapping(result);
       /* result = Stage3pair_sort_distance(result); */
-      debug13(printf("After removing overlaps, %d results\n",List_length(result)));
+      debug16(printf("After removing overlaps, %d results\n",List_length(result)));
 
-      result = align_pair_with_gmap(&(*final_pairtype),result,query5_compress_fwd,query5_compress_rev,
+      result = align_pair_with_gmap(&(*final_pairtype),result,gmap_history_5,gmap_history_3,
+				    query5_compress_fwd,query5_compress_rev,
 				    query3_compress_fwd,query3_compress_rev,
 				    plus_segments_genestrand_5,plus_nsegments_genestrand_5,
 				    minus_segments_genestrand_5,minus_nsegments_genestrand_5,
@@ -17290,14 +16917,14 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 				    queryseq5,queryseq3,queryuc_ptr_5,queryuc_ptr_3,
 				    querylength5,querylength3,query5_lastpos,query3_lastpos,
 				    localsplicing_penalty,
-				    oligoindices_major,noligoindices_major,
-				    oligoindices_minor,noligoindices_minor,
-				    pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-				    pairmax,shortsplicedist,user_maxlevel_5,user_maxlevel_3,
+				    oligoindices_major,oligoindices_minor,
+				    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				    pairmax,user_maxlevel_5,user_maxlevel_3,cutoff_level_5,cutoff_level_3,
 				    /*pairtype*/CONCORDANT,/*expect_concordant_p*/true,
 				    /*redo_for_sense_p*/false);
       if (Stage3pair_sense_consistent_p(result) == false) {
-	result = align_pair_with_gmap(&(*final_pairtype),result,query5_compress_fwd,query5_compress_rev,
+	result = align_pair_with_gmap(&(*final_pairtype),result,gmap_history_5,gmap_history_3,
+				      query5_compress_fwd,query5_compress_rev,
 				      query3_compress_fwd,query3_compress_rev,
 				      plus_segments_genestrand_5,plus_nsegments_genestrand_5,
 				      minus_segments_genestrand_5,minus_nsegments_genestrand_5,
@@ -17306,10 +16933,9 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 				      queryseq5,queryseq3,queryuc_ptr_5,queryuc_ptr_3,
 				      querylength5,querylength3,query5_lastpos,query3_lastpos,
 				      localsplicing_penalty,
-				      oligoindices_major,noligoindices_major,
-				      oligoindices_minor,noligoindices_minor,
-				      pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-				      pairmax,shortsplicedist,user_maxlevel_5,user_maxlevel_3,
+				      oligoindices_major,oligoindices_minor,
+				      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				      pairmax,user_maxlevel_5,user_maxlevel_3,cutoff_level_5,cutoff_level_3,
 				      /*pairtype*/CONCORDANT,/*expect_concordant_p*/true,
 				      /*redo_for_sense_p*/true);
       }
@@ -17328,7 +16954,7 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 
   } else if (*final_pairtype == PAIRED_UNSPECIFIED) {
     /* Have paired results */
-    debug13(printf("Have paired results\n"));
+    debug16(printf("Have paired results\n"));
     for (p = hitpairs; p != NULL; p = List_next(p)) {
       stage3pair = (Stage3pair_T) List_head(p);
       Stage3pair_free(&stage3pair);
@@ -17348,7 +16974,7 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
     List_free(&with_terminal);
 
     if (gmap_improvement_p == false) {
-      debug13(printf("No GMAP improvement: Before removing overlaps, %d results\n",List_length(samechr)));
+      debug16(printf("No GMAP improvement: Before removing overlaps, %d results\n",List_length(samechr)));
       result = Stage3pair_optimal_score(samechr,/*cutoff*/1000000,subopt_levels,
 					query5_compress_fwd,query5_compress_rev,
 					query3_compress_fwd,query3_compress_rev,
@@ -17360,7 +16986,7 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 					/*keep_gmap_p*/false,/*finalp*/true);
       result = Stage3pair_resolve_multimapping(result);
     } else {
-      debug13(printf("GMAP improvement: Before removing overlaps, %d results\n",List_length(samechr)));
+      debug16(printf("GMAP improvement: Before removing overlaps, %d results\n",List_length(samechr)));
       result = Stage3pair_optimal_score(samechr,/*cutoff*/1000000,subopt_levels,
 					query5_compress_fwd,query5_compress_rev,
 					query3_compress_fwd,query3_compress_rev,
@@ -17372,7 +16998,8 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 					/*keep_gmap_p*/false,/*finalp*/false);
       result = Stage3pair_resolve_multimapping(result);
 
-      result = align_pair_with_gmap(&(*final_pairtype),result,query5_compress_fwd,query5_compress_rev,
+      result = align_pair_with_gmap(&(*final_pairtype),result,gmap_history_5,gmap_history_3,
+				    query5_compress_fwd,query5_compress_rev,
 				    query3_compress_fwd,query3_compress_rev,
 				    plus_segments_genestrand_5,plus_nsegments_genestrand_5,
 				    minus_segments_genestrand_5,minus_nsegments_genestrand_5,
@@ -17381,10 +17008,9 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 				    queryseq5,queryseq3,queryuc_ptr_5,queryuc_ptr_3,
 				    querylength5,querylength3,query5_lastpos,query3_lastpos,
 				    localsplicing_penalty,
-				    oligoindices_major,noligoindices_major,
-				    oligoindices_minor,noligoindices_minor,
-				    pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-				    pairmax,shortsplicedist,user_maxlevel_5,user_maxlevel_3,
+				    oligoindices_major,oligoindices_minor,
+				    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				    pairmax,user_maxlevel_5,user_maxlevel_3,cutoff_level_5,cutoff_level_3,
 				    /*pairtype*/PAIRED_UNSPECIFIED,/*expect_concordant_p*/false,
 				    /*redo_for_sense_p*/false);
       result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
@@ -17397,10 +17023,18 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 					query3_compress_fwd,query3_compress_rev,
 					/*keep_gmap_p*/false,/*finalp*/true);
       result = Stage3pair_resolve_multimapping(result);
+
+      if (Stage3pair_concordantp(result) == true) {
+	debug16(printf("Found remaining concordant solution, so removing non-concordant ones\n"));
+	*final_pairtype = CONCORDANT;
+	result = Stage3pair_filter_nonconcordant(result);
+      } else {
+	*final_pairtype = PAIRED_UNSPECIFIED;
+      }
     }
 
   } else if (*final_pairtype == CONCORDANT_TRANSLOCATIONS) {
-    debug13(printf("Have %d concordant translocation results\n",List_length(conc_transloc)));
+    debug16(printf("Have %d concordant translocation results\n",List_length(conc_transloc)));
     for (p = hitpairs; p != NULL; p = List_next(p)) {
       stage3pair = (Stage3pair_T) List_head(p);
       Stage3pair_free(&stage3pair);
@@ -17429,81 +17063,115 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 				      query3_compress_fwd,query3_compress_rev,
 				      /*keep_gmap_p*/false,/*finalp*/true);
     result = Stage3pair_resolve_multimapping(result);
-    debug13(printf("Finally, have %d concordant translocation results\n",List_length(result)));
+    debug16(printf("Finally, have %d concordant translocation results\n",List_length(result)));
+
+  } else if (*final_pairtype == CONCORDANT_TERMINAL) {
+    debug16(printf("Have concordant terminal results.  Need to check against halfmapping\n"));
+
+    /* Combine evidence */
+    percentage_paired = 1.0 - (1.0 - (double) best_nmatches_paired_5/(double) querylength5) * (1.0 - (double) best_nmatches_paired_3/(double) querylength3);
+
+    best_nmatches_5 = best_nmatches_singleend(hits5);
+    best_nmatches_3 = best_nmatches_singleend(hits3);
+    percentage_single = (double) best_nmatches_5/(double) querylength5;
+    if ((double) best_nmatches_3/(double) querylength3 > percentage_single) {
+      percentage_single = (double) best_nmatches_3/(double) querylength3;
+    }
+
+    debug16(printf("best_nmatches_5 = %d, best_nmatches_3 = %d\n",best_nmatches_5,best_nmatches_3));
+    debug16(printf("=> misses_paired = %d, misses_5 = %d, misses_3 = %d\n",
+		   querylength5 + querylength3 - best_nmatches_paired,querylength5 - best_nmatches_5,querylength3 - best_nmatches_3));
+    debug16(printf("=> match_percentage paired = %f + %f => %f, percentage_5 = %f, percentage_3 = %f\n",
+		   (double) best_nmatches_paired_5/(double) querylength5,
+		   (double) best_nmatches_paired_3/(double) querylength3,
+		   percentage_paired,(double) best_nmatches_5/(double) querylength5,(double) best_nmatches_3/(double) querylength3));
+
+    if (percentage_single > percentage_paired) {
+      debug16(printf("Unpaired is better than concordant_terminal\n"));
+      for (p = hitpairs; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&hitpairs);
+
+      for (p = samechr; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&samechr);
+
+      for (p = with_terminal; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&with_terminal);
+
+      for (p = conc_transloc; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&conc_transloc);
 
-  } else if (*final_pairtype == CONCORDANT_TERMINAL) {
-    debug13(printf("Have concordant terminal results\n"));
-    *final_pairtype = CONCORDANT; /* CONCORDANT_TERMINAL used just to rank results behind translocations */
+      result = (List_T) NULL;
 
-    for (p = hitpairs; p != NULL; p = List_next(p)) {
-      stage3pair = (Stage3pair_T) List_head(p);
-      Stage3pair_free(&stage3pair);
-    }
-    List_free(&hitpairs);
+    } else {
+      debug16(printf("Concordant_terminal is better than unpaired\n"));
+      *final_pairtype = CONCORDANT; /* CONCORDANT_TERMINAL used just to rank results behind translocations */
 
-    for (p = samechr; p != NULL; p = List_next(p)) {
-      stage3pair = (Stage3pair_T) List_head(p);
-      Stage3pair_free(&stage3pair);
-    }
-    List_free(&samechr);
+      for (p = hitpairs; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&hitpairs);
 
-    for (p = conc_transloc; p != NULL; p = List_next(p)) {
-      stage3pair = (Stage3pair_T) List_head(p);
-      Stage3pair_free(&stage3pair);
-    }
-    List_free(&conc_transloc);
+      for (p = samechr; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&samechr);
 
-    if (novelsplicingp || knownsplicingp) {
-      with_terminal = Stage3pair_remove_excess_terminals(with_terminal);
-    }
+      for (p = conc_transloc; p != NULL; p = List_next(p)) {
+	stage3pair = (Stage3pair_T) List_head(p);
+	Stage3pair_free(&stage3pair);
+      }
+      List_free(&conc_transloc);
 
-    if (gmap_improvement_p == false) {
-      debug13(printf("No GMAP improvement: Before removing overlaps, %d results\n",List_length(with_terminal)));
-      result = Stage3pair_optimal_score(with_terminal,/*cutoff*/1000000,subopt_levels,
-					query5_compress_fwd,query5_compress_rev,
-					query3_compress_fwd,query3_compress_rev,
-					/*keep_gmap_p*/true,/*finalp*/true);
-      result = Stage3pair_remove_overlaps(result,/*translocp*/false,/*finalp*/true);
-      result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
-					query5_compress_fwd,query5_compress_rev,
-					query3_compress_fwd,query3_compress_rev,
-					/*keep_gmap_p*/false,/*finalp*/true);
-      result = Stage3pair_resolve_multimapping(result);
-      /* result = Stage3pair_sort_distance(result); */
-      debug13(printf("After removing overlaps, %d results\n",List_length(result)));
+      if (novelsplicingp || knownsplicingp) {
+	with_terminal = Stage3pair_remove_excess_terminals(with_terminal);
+      }
 
-    } else {
-      debug13(printf("GMAP improvement: Before removing overlaps, %d results\n",List_length(with_terminal)));
-      result = Stage3pair_optimal_score(with_terminal,/*cutoff*/1000000,subopt_levels,
-					query5_compress_fwd,query5_compress_rev,
-					query3_compress_fwd,query3_compress_rev,
-					/*keep_gmap_p*/true,/*finalp*/false);
-      result = Stage3pair_remove_overlaps(result,/*translocp*/false,/*finalp*/false);
-      result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
-					query5_compress_fwd,query5_compress_rev,
-					query3_compress_fwd,query3_compress_rev,
-					/*keep_gmap_p*/false,/*finalp*/false);
-      result = Stage3pair_resolve_multimapping(result);
-      /* result = Stage3pair_sort_distance(result); */
-      debug13(printf("After removing overlaps, %d results\n",List_length(result)));
+      if (gmap_improvement_p == false) {
+	debug16(printf("No GMAP improvement: Before removing overlaps, %d results\n",List_length(with_terminal)));
+	result = Stage3pair_optimal_score(with_terminal,/*cutoff*/1000000,subopt_levels,
+					  query5_compress_fwd,query5_compress_rev,
+					  query3_compress_fwd,query3_compress_rev,
+					  /*keep_gmap_p*/true,/*finalp*/true);
+	result = Stage3pair_remove_overlaps(result,/*translocp*/false,/*finalp*/true);
+	result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
+					  query5_compress_fwd,query5_compress_rev,
+					  query3_compress_fwd,query3_compress_rev,
+					  /*keep_gmap_p*/false,/*finalp*/true);
+	result = Stage3pair_resolve_multimapping(result);
+	/* result = Stage3pair_sort_distance(result); */
+	debug16(printf("After removing overlaps, %d results\n",List_length(result)));
 
-      result = align_pair_with_gmap(&(*final_pairtype),result,query5_compress_fwd,query5_compress_rev,
-				    query3_compress_fwd,query3_compress_rev,
-				    plus_segments_genestrand_5,plus_nsegments_genestrand_5,
-				    minus_segments_genestrand_5,minus_nsegments_genestrand_5,
-				    plus_segments_genestrand_3,plus_nsegments_genestrand_3,
-				    minus_segments_genestrand_3,minus_nsegments_genestrand_3,
-				    queryseq5,queryseq3,queryuc_ptr_5,queryuc_ptr_3,
-				    querylength5,querylength3,query5_lastpos,query3_lastpos,
-				    localsplicing_penalty,
-				    oligoindices_major,noligoindices_major,
-				    oligoindices_minor,noligoindices_minor,
-				    pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-				    pairmax,shortsplicedist,user_maxlevel_5,user_maxlevel_3,
-				    /*pairtype*/CONCORDANT,/*expect_concordant_p*/true,
-				    /*redo_for_sense_p*/false);
-      if (Stage3pair_sense_consistent_p(result) == false) {
-	result = align_pair_with_gmap(&(*final_pairtype),result,query5_compress_fwd,query5_compress_rev,
+      } else {
+	debug16(printf("GMAP improvement: Before removing overlaps, %d results\n",List_length(with_terminal)));
+	result = Stage3pair_optimal_score(with_terminal,/*cutoff*/1000000,subopt_levels,
+					  query5_compress_fwd,query5_compress_rev,
+					  query3_compress_fwd,query3_compress_rev,
+					  /*keep_gmap_p*/true,/*finalp*/false);
+	result = Stage3pair_remove_overlaps(result,/*translocp*/false,/*finalp*/false);
+	result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
+					  query5_compress_fwd,query5_compress_rev,
+					  query3_compress_fwd,query3_compress_rev,
+					  /*keep_gmap_p*/false,/*finalp*/false);
+	result = Stage3pair_resolve_multimapping(result);
+	/* result = Stage3pair_sort_distance(result); */
+	debug16(printf("After removing overlaps, %d results\n",List_length(result)));
+
+	result = align_pair_with_gmap(&(*final_pairtype),result,gmap_history_5,gmap_history_3,
+				      query5_compress_fwd,query5_compress_rev,
 				      query3_compress_fwd,query3_compress_rev,
 				      plus_segments_genestrand_5,plus_nsegments_genestrand_5,
 				      minus_segments_genestrand_5,minus_nsegments_genestrand_5,
@@ -17512,28 +17180,44 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 				      queryseq5,queryseq3,queryuc_ptr_5,queryuc_ptr_3,
 				      querylength5,querylength3,query5_lastpos,query3_lastpos,
 				      localsplicing_penalty,
-				      oligoindices_major,noligoindices_major,
-				      oligoindices_minor,noligoindices_minor,
-				      pairpool,diagpool,dynprogL,dynprogM,dynprogR,
-				      pairmax,shortsplicedist,user_maxlevel_5,user_maxlevel_3,
+				      oligoindices_major,oligoindices_minor,
+				      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				      pairmax,user_maxlevel_5,user_maxlevel_3,cutoff_level_5,cutoff_level_3,
 				      /*pairtype*/CONCORDANT,/*expect_concordant_p*/true,
-				      /*redo_for_sense_p*/true);
-      }
-
-      result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
-					query5_compress_fwd,query5_compress_rev,
-					query3_compress_fwd,query3_compress_rev,
-					/*keep_gmap_p*/true,/*finalp*/true);
-      result = Stage3pair_remove_overlaps(result,/*translocp*/false,/*finalp*/true);
-      result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
+				      /*redo_for_sense_p*/false);
+	if (Stage3pair_sense_consistent_p(result) == false) {
+	  result = align_pair_with_gmap(&(*final_pairtype),result,gmap_history_5,gmap_history_3,
 					query5_compress_fwd,query5_compress_rev,
 					query3_compress_fwd,query3_compress_rev,
-					/*keep_gmap_p*/false,/*finalp*/true);
-      result = Stage3pair_resolve_multimapping(result);
+					plus_segments_genestrand_5,plus_nsegments_genestrand_5,
+					minus_segments_genestrand_5,minus_nsegments_genestrand_5,
+					plus_segments_genestrand_3,plus_nsegments_genestrand_3,
+					minus_segments_genestrand_3,minus_nsegments_genestrand_3,
+					queryseq5,queryseq3,queryuc_ptr_5,queryuc_ptr_3,
+					querylength5,querylength3,query5_lastpos,query3_lastpos,
+					localsplicing_penalty,
+					oligoindices_major,oligoindices_minor,
+					pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+					pairmax,user_maxlevel_5,user_maxlevel_3,cutoff_level_5,cutoff_level_3,
+					/*pairtype*/CONCORDANT,/*expect_concordant_p*/true,
+					/*redo_for_sense_p*/true);
+	}
+
+	result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
+					  query5_compress_fwd,query5_compress_rev,
+					  query3_compress_fwd,query3_compress_rev,
+					  /*keep_gmap_p*/true,/*finalp*/true);
+	result = Stage3pair_remove_overlaps(result,/*translocp*/false,/*finalp*/true);
+	result = Stage3pair_optimal_score(result,/*cutoff*/1000000,subopt_levels,
+					  query5_compress_fwd,query5_compress_rev,
+					  query3_compress_fwd,query3_compress_rev,
+					  /*keep_gmap_p*/false,/*finalp*/true);
+	result = Stage3pair_resolve_multimapping(result);
+      }
     }
 
   } else {
-    debug13(printf("Have unpaired results\n"));
+    debug16(printf("Have unpaired results\n"));
     /* Need to free conc_transloc, since we can get here with multiple results */
     for (p = conc_transloc; p != NULL; p = List_next(p)) {
       stage3pair = (Stage3pair_T) List_head(p);
@@ -17554,6 +17238,7 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
   if (result == NULL) {
     singlehits5 = Stage3end_optimal_score(hits5,cutoff_level_5,subopt_levels,query5_compress_fwd,query5_compress_rev,
 					  /*keep_gmap_p*/true,/*finalp*/true);
+    singlehits5 = Stage3end_filter_terminals(singlehits5,querylength5);
     singlehits5 = Stage3end_linearize_5(singlehits5);
     singlehits5 = Stage3end_remove_overlaps(singlehits5,/*finalp*/true);
     singlehits5 = Stage3end_optimal_score(singlehits5,cutoff_level_5,subopt_levels,query5_compress_fwd,query5_compress_rev,
@@ -17562,19 +17247,20 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 
     singlehits3 = Stage3end_optimal_score(hits3,cutoff_level_3,subopt_levels,query3_compress_fwd,query3_compress_rev,
 					  /*keep_gmap_p*/true,/*finalp*/true);
+    singlehits3 = Stage3end_filter_terminals(singlehits3,querylength3);
     singlehits3 = Stage3end_linearize_3(singlehits3);
     singlehits3 = Stage3end_remove_overlaps(singlehits3,/*finalp*/true);
     singlehits3 = Stage3end_optimal_score(singlehits3,cutoff_level_3,subopt_levels,query3_compress_fwd,query3_compress_rev,
 					  /*keep_gmap_p*/false,/*finalp*/true);
     singlehits3 = Stage3end_resolve_multimapping(singlehits3);
 
-    debug13(printf("5' end has %d hits and 3' end has %d hits\n",
+    debug16(printf("5' end has %d hits and 3' end has %d hits\n",
 		   List_length(singlehits5),List_length(singlehits3)));
 
     if (List_length(singlehits5) == 1 && List_length(singlehits3) == 1 &&
 	(pairtype = Stage3_determine_pairtype(hit5=(Stage3end_T) List_head(singlehits5),hit3=(Stage3end_T) List_head(singlehits3))) != UNPAIRED) {
       /* Convert unpaired uniq to a paired uniq */
-      debug13(printf("Converting unpaired uniq to paired uniq\n"));
+      debug16(printf("Converting unpaired uniq to paired uniq, with initial pairtype %s\n",Pairtype_string(pairtype)));
       if ((newpair = Stage3pair_new(hit5,hit3,splicesites,
 				    query5_compress_fwd,query5_compress_rev,
 				    query3_compress_fwd,query3_compress_rev,
@@ -17589,8 +17275,10 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 	    
 	*npaths = 1;
 	if (pairtype == CONCORDANT) {
+	  debug16(printf("final pairtype is CONCORDANT\n"));
 	  *final_pairtype = CONCORDANT;
 	} else {
+	  debug16(printf("final pairtype is PAIRED_UNSPECIFIED\n"));
 	  *final_pairtype = PAIRED_UNSPECIFIED;
 	}
 	Stage3pair_privatize(stage3pairarray,/*npairs*/1);
@@ -17613,14 +17301,26 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
     if ((*nhits5 = List_length(singlehits5)) == 0) {
       *stage3array5 = (Stage3end_T *) NULL;
     } else {
+#if 0
       singlehits5 = Stage3end_unalias_circular(singlehits5);
+#else
+      singlehits5 = Stage3end_remove_circular_alias(singlehits5); /* Contains a call to unalias_circular */
+      singlehits5 = Stage3end_remove_duplicates(singlehits5); /* Aliases can cause duplicates */
+      *nhits5 = List_length(singlehits5);
+#endif
       *stage3array5 = (Stage3end_T *) List_to_array_out(singlehits5,NULL); List_free(&singlehits5);
     }
 
     if ((*nhits3 = List_length(singlehits3)) == 0) {
       *stage3array3 = (Stage3end_T *) NULL;
     } else {
+#if 0
       singlehits3 = Stage3end_unalias_circular(singlehits3);
+#else
+      singlehits3 = Stage3end_remove_circular_alias(singlehits3); /* Contains a call to unalias_circular */
+      singlehits3 = Stage3end_remove_duplicates(singlehits3); /* Aliases can cause duplicates */
+      *nhits3 = List_length(singlehits3);
+#endif
       *stage3array3 = (Stage3end_T *) List_to_array_out(singlehits3,NULL); List_free(&singlehits3);
     }
 
@@ -17655,14 +17355,14 @@ consolidate_paired_results (int *npaths, int *first_absmq, int *second_absmq, Pa
 						genome,quality_string_3,/*displayp*/true);
       }
     }
-    debug13(printf("Result is NULL, and we have %d hits on 5' end and %d hits on 3' end\n",*nhits5,*nhits3));
+    debug16(printf("Result is NULL, and we have %d hits on 5' end and %d hits on 3' end\n",*nhits5,*nhits3));
     return (Stage3pair_T *) NULL;
 
   } else {
     /* result != NULL */
-    /* Concordant, paired, or transloc pairs found.  Remove single hits.
-       Value of *concordantp assigned above. */
-    debug13(printf("Result is not NULL, and we fall through to concordant, paired, or transloc pairs\n"));
+    /* Concordant, paired, or transloc pairs found.  Remove single hits. */
+    debug16(printf("Result is not NULL (%d paths), and we fall through to concordant, paired, or transloc pairs\n",
+		   List_length(result)));
 
     *npaths = List_length(result);
     stage3pairarray = (Stage3pair_T *) List_to_array_out(result,NULL); List_free(&result);
@@ -17691,12 +17391,11 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
 	     Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold,
 	     Genome_T genome, Floors_T *floors_array,
 	     double user_maxlevel_float, int subopt_levels,
-	     int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+	     int indel_penalty_middle, int indel_penalty_end,
 	     bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-	     Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-	     Oligoindex_T *oligoindices_major, int noligoindices_major,
-	     Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-	     Pairpool_T pairpool, Diagpool_T diagpool,
+	     int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
+	     Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+	     Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 	     Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 	     Chrpos_T pairmax, bool keep_floors_p) {
   Stage3pair_T *stage3pairarray;
@@ -17706,6 +17405,7 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
   char *queryuc_ptr_5, *queryuc_ptr_3, *quality_string_5, *quality_string_3;
   char queryrc5[MAX_READLENGTH+1], queryrc3[MAX_READLENGTH+1];
   Compress_T query5_compress_fwd = NULL, query5_compress_rev = NULL, query3_compress_fwd = NULL, query3_compress_rev = NULL;
+  History_T gmap_history_5, gmap_history_3;
   int user_maxlevel_5, user_maxlevel_3;
   int found_score, cutoff_level_5, cutoff_level_3;
   int querylength5, querylength3, query5_lastpos, query3_lastpos;
@@ -17722,19 +17422,163 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
   querylength5 = Shortread_fulllength(queryseq5);
   querylength3 = Shortread_fulllength(queryseq3);
 
-  if (querylength5 < min_readlength || querylength3 < min_readlength) {
-    fprintf(stderr,"GSNAP cannot handle reads shorter than %d bp\n",min_readlength);
+  if (querylength5 < min_readlength && querylength3 < min_readlength) {
+    fprintf(stderr,"Paired-read %s has lengths %d and %d < min_readlength %d.  Skipping.\n",
+	    Shortread_accession(queryseq5),querylength5,querylength3,min_readlength);
+    /* fprintf(stderr,"You may want to build a genomic index with a smaller k-mer value using the -k flag to gmap_build\n"); */
     *npaths = *nhits5 = *nhits3 = 0;
     *stage3array5 = *stage3array3 = (Stage3end_T *) NULL;
     return (Stage3pair_T *) NULL;
 
   } else if (querylength5 > MAX_READLENGTH || querylength3 > MAX_READLENGTH) {
-    fprintf(stderr,"GSNAP cannot handle reads longer than %d bp.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
-	    MAX_READLENGTH);
+    fprintf(stderr,"Paired-read %s has lengths %d and %d > MAX_READLENGTH %d.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
+	    Shortread_accession(queryseq5),querylength5,querylength3,MAX_READLENGTH);
     *npaths = *nhits5 = *nhits3 = 0;
     *stage3array5 = *stage3array3 = (Stage3end_T *) NULL;
     return (Stage3pair_T *) NULL;
 
+  } else if (querylength5 < min_readlength) {
+    /* Solve just 3' end */
+    fprintf(stderr,"First end of paired-read %s has length %d < min_readlength %d.  Aligning second end only.\n",
+	    Shortread_accession(queryseq5),querylength5,min_readlength);
+    *nhits5 = 0;
+    *stage3array5 = (Stage3end_T *) NULL;
+
+    if (user_maxlevel_float < 0.0) {
+      user_maxlevel_3 = -1;
+    } else if (user_maxlevel_float > 0.0 && user_maxlevel_float < 1.0) {
+      user_maxlevel_3 = (int) rint(user_maxlevel_float * (double) querylength3);
+    } else {
+      user_maxlevel_3 = (int) user_maxlevel_float;
+    }
+
+    this3 = Stage1_new(querylength3);
+    queryuc_ptr_3 = Shortread_fullpointer_uc(queryseq3);
+    quality_string_3 = Shortread_quality_string(queryseq3);
+    query3_lastpos = querylength3 - index1part;
+
+    /* Limit search on repetitive sequences */
+    if (check_dinucleotides(queryuc_ptr_3,querylength3) == false) {
+      user_maxlevel_3 = 0;
+    }
+
+    noligos3 = read_oligos(&allvalidp3,this3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/0,
+			   /*first_read_p*/false);
+    if (noligos3 == 0) {
+      debug(printf("Aborting because no hits found anywhere\n"));
+      Stage1_free(&this3,querylength3);
+
+      *npaths = *nhits3 = 0;
+      *stage3array3 = (Stage3end_T *) NULL;
+      return (Stage3pair_T *) NULL;
+
+    } else {
+      query3_compress_fwd = Compress_new_fwd(queryuc_ptr_3,querylength3);
+      query3_compress_rev = Compress_new_rev(queryuc_ptr_3,querylength3);
+      gmap_history_3 = History_new();
+      make_complement_buffered(queryrc3,queryuc_ptr_3,querylength3);
+
+      hits3 = align_end(&cutoff_level_3,gmap_history_3,this3,
+			query3_compress_fwd,query3_compress_rev,
+			queryuc_ptr_3,queryrc3,querylength3,query3_lastpos,
+			indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			floors_array,oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+			user_maxlevel_3,subopt_levels,
+			indel_penalty_middle,indel_penalty_end,
+			localsplicing_penalty,distantsplicing_penalty,min_shortend,
+			allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
+			allvalidp3,keep_floors_p,/*genestrand*/0,/*first_read_p*/false);
+
+      if ((*nhits3 = List_length(hits3)) == 0) {
+	*stage3array3 = (Stage3end_T *) NULL;
+      } else {
+	*stage3array3 = (Stage3end_T *) List_to_array_out(hits3,NULL); List_free(&hits3);
+	*stage3array3 = Stage3end_eval_and_sort(&(*nhits3),&(*first_absmq3),&(*second_absmq3),
+						*stage3array3,maxpaths_search,queryseq3,
+						query3_compress_fwd,query3_compress_rev,
+						genome,quality_string_3,/*displayp*/true);
+      }
+      *npaths = 0;
+      *final_pairtype = UNPAIRED;
+      History_free(&gmap_history_3);
+      Compress_free(&query3_compress_fwd);
+      Compress_free(&query3_compress_rev);
+      Stage1_free(&this3,querylength3);
+      return (Stage3pair_T *) NULL;
+    }
+
+  } else if (querylength3 < min_readlength) {
+    /* Solve just 5' end */
+    fprintf(stderr,"Second end of paired-read %s has length %d < min_readlength %d.  Aligning first end only.\n",
+	    Shortread_accession(queryseq5),querylength3,min_readlength);
+    *nhits3 = 0;
+    *stage3array3 = (Stage3end_T *) NULL;
+
+    if (user_maxlevel_float < 0.0) {
+      user_maxlevel_5 = -1;
+    } else if (user_maxlevel_float > 0.0 && user_maxlevel_float < 1.0) {
+      user_maxlevel_5 = (int) rint(user_maxlevel_float * (double) querylength5);
+    } else {
+      user_maxlevel_5 = (int) user_maxlevel_float;
+    }
+
+    this5 = Stage1_new(querylength5);
+    queryuc_ptr_5 = Shortread_fullpointer_uc(queryseq5);
+    quality_string_5 = Shortread_quality_string(queryseq5);
+    query5_lastpos = querylength5 - index1part;
+
+    /* Limit search on repetitive sequences */
+    if (check_dinucleotides(queryuc_ptr_5,querylength5) == false) {
+      user_maxlevel_5 = 0;
+    }
+
+    noligos5 = read_oligos(&allvalidp5,this5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/0,
+			   /*first_read_p*/true);
+    if (noligos5 == 0) {
+      debug(printf("Aborting because no hits found anywhere\n"));
+      Stage1_free(&this5,querylength5);
+
+      *npaths = *nhits5 = 0;
+      *stage3array5 = (Stage3end_T *) NULL;
+      return (Stage3pair_T *) NULL;
+
+    } else {
+      query5_compress_fwd = Compress_new_fwd(queryuc_ptr_5,querylength5);
+      query5_compress_rev = Compress_new_rev(queryuc_ptr_5,querylength5);
+      gmap_history_5 = History_new();
+      make_complement_buffered(queryrc5,queryuc_ptr_5,querylength5);
+
+      hits5 = align_end(&cutoff_level_5,gmap_history_5,this5,
+			query5_compress_fwd,query5_compress_rev,
+			queryuc_ptr_5,queryrc5,querylength5,query5_lastpos,
+			indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+			floors_array,oligoindices_major,oligoindices_minor,
+			pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+			user_maxlevel_5,subopt_levels,
+			indel_penalty_middle,indel_penalty_end,
+			localsplicing_penalty,distantsplicing_penalty,min_shortend,
+			allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
+			allvalidp5,keep_floors_p,/*genestrand*/0,/*first_read_p*/true);
+
+      if ((*nhits5 = List_length(hits5)) == 0) {
+	*stage3array5 = (Stage3end_T *) NULL;
+      } else {
+	*stage3array5 = (Stage3end_T *) List_to_array_out(hits5,NULL); List_free(&hits5);
+	*stage3array5 = Stage3end_eval_and_sort(&(*nhits5),&(*first_absmq5),&(*second_absmq5),
+						*stage3array5,maxpaths_search,queryseq5,
+						query5_compress_fwd,query5_compress_rev,
+						genome,quality_string_5,/*displayp*/true);
+      }
+      *npaths = 0;
+      *final_pairtype = UNPAIRED;
+      History_free(&gmap_history_5);
+      Compress_free(&query5_compress_fwd);
+      Compress_free(&query5_compress_rev);
+      Stage1_free(&this5,querylength5);
+      return (Stage3pair_T *) NULL;
+    }
+
   } else {
     if (user_maxlevel_float < 0.0) {
       user_maxlevel_5 = user_maxlevel_3 = -1;
@@ -17762,8 +17606,10 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
       user_maxlevel_3 = 0;
     }
 
-    noligos5 = read_oligos(&allvalidp5,this5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/0);
-    noligos3 = read_oligos(&allvalidp3,this3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/0);
+    noligos5 = read_oligos(&allvalidp5,this5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/0,
+			   /*first_read_p*/true);
+    noligos3 = read_oligos(&allvalidp3,this3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/0,
+			   /*first_read_p*/false);
     if (noligos5 == 0 && noligos3 == 0) {
       debug(printf("Aborting because no hits found anywhere\n"));
       Stage1_free(&this3,querylength3);
@@ -17774,35 +17620,35 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
       return (Stage3pair_T *) NULL;
 
     } else {
-      abort_pairing_p = false;
-
-      query5_compress_fwd = Compress_new(queryuc_ptr_5,querylength5,/*plusp*/true);
-      query5_compress_rev = Compress_new(queryuc_ptr_5,querylength5,/*plusp*/false);
-      query3_compress_fwd = Compress_new(queryuc_ptr_3,querylength3,/*plusp*/true);
-      query3_compress_rev = Compress_new(queryuc_ptr_3,querylength3,/*plusp*/false);
+      query5_compress_fwd = Compress_new_fwd(queryuc_ptr_5,querylength5);
+      query5_compress_rev = Compress_new_rev(queryuc_ptr_5,querylength5);
+      query3_compress_fwd = Compress_new_fwd(queryuc_ptr_3,querylength3);
+      query3_compress_rev = Compress_new_rev(queryuc_ptr_3,querylength3);
+      gmap_history_5 = History_new();
+      gmap_history_3 = History_new();
       make_complement_buffered(queryrc5,queryuc_ptr_5,querylength5);
       make_complement_buffered(queryrc3,queryuc_ptr_3,querylength3);
 
       hitpairs = align_pair(&abort_pairing_p,&found_score,&cutoff_level_5,&cutoff_level_3,
-			    &samechr,&conc_transloc,&with_terminal,&hits5,&hits3,this5,this3,
-			    query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
+			    &samechr,&conc_transloc,&with_terminal,gmap_history_5,gmap_history_3,
+			    &hits5,&hits3,this5,this3,query5_compress_fwd,query5_compress_rev,
+			    query3_compress_fwd,query3_compress_rev,
 			    queryuc_ptr_5,queryuc_ptr_3,queryrc5,queryrc3,
 			    querylength5,querylength3,query5_lastpos,query3_lastpos,
 			    indexdb_fwd,indexdb_rev,indexdb_size_threshold,floors_array,
 
-			    oligoindices_major,noligoindices_major,
-			    oligoindices_minor,noligoindices_minor,
-			    pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+			    oligoindices_major,oligoindices_minor,
+			    pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 
 			    user_maxlevel_5,user_maxlevel_3,subopt_levels,
 			    indel_penalty_middle,indel_penalty_end,
-			    shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-			    max_middle_insertions,max_middle_deletions,
+			    localsplicing_penalty,distantsplicing_penalty,min_shortend,
 			    allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 			    allvalidp5,allvalidp3,pairmax,maxpairedpaths,keep_floors_p,
 			    queryseq5,queryseq3,/*genestrand*/0);
 
       if (abort_pairing_p == true) {
+	debug16(printf("abort_pairing_p is true\n"));
 	paired_results_free(this5,this3,hitpairs,samechr,conc_transloc,with_terminal,
 			    hits5,hits3,querylength5,querylength3);
 
@@ -17810,20 +17656,23 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
 	this3 = Stage1_new(querylength3);
 	realign_separately(stage3array5,&(*nhits5),&(*first_absmq5),&(*second_absmq5),
 			   stage3array3,&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-			   this5,this3,query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
+			   gmap_history_5,gmap_history_3,this5,this3,
+			   query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
 			   queryseq5,queryuc_ptr_5,queryrc5,quality_string_5,querylength5,query5_lastpos,
 			   queryseq3,queryuc_ptr_3,queryrc3,quality_string_3,querylength3,query3_lastpos,
 			   indexdb_fwd,indexdb_rev,indexdb_size_threshold,genome,floors_array,
 			   user_maxlevel_5,user_maxlevel_3,subopt_levels,
-			   indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			   indel_penalty_middle,indel_penalty_end,
 			   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			   shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-			   oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			   pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+			   localsplicing_penalty,distantsplicing_penalty,min_shortend,
+			   oligoindices_major,oligoindices_minor,
+			   pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 			   keep_floors_p,/*genestrand*/0);
 
 	*npaths = 0;
 	*final_pairtype = UNPAIRED;
+	History_free(&gmap_history_3);
+	History_free(&gmap_history_5);
 	Compress_free(&query5_compress_fwd);
 	Compress_free(&query5_compress_rev);
 	Compress_free(&query3_compress_fwd);
@@ -17833,20 +17682,23 @@ paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T *final
 	return (Stage3pair_T *) NULL;
 
       } else {
-	stage3pairarray = consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
-						     &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
-						     &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-						     hitpairs,samechr,conc_transloc,with_terminal,hits5,hits3,
-						     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
-						     &this5->plus_segments,&this5->plus_nsegments,&this5->minus_segments,&this5->minus_nsegments,
-						     &this3->plus_segments,&this3->plus_nsegments,&this3->minus_segments,&this3->minus_nsegments,
-						     queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
-						     queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
-						     genome,subopt_levels,cutoff_level_5,cutoff_level_3,
-						     shortsplicedist,localsplicing_penalty,
-						     oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						     pairpool,diagpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
-
+	stage3pairarray =
+	  consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
+				     &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
+				     &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
+				     hitpairs,samechr,conc_transloc,with_terminal,hits5,hits3,gmap_history_5,gmap_history_3,
+				     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
+				     &this5->plus_segments,&this5->plus_nsegments,&this5->minus_segments,&this5->minus_nsegments,
+				     &this3->plus_segments,&this3->plus_nsegments,&this3->minus_segments,&this3->minus_nsegments,
+				     queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
+				     queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
+				     genome,subopt_levels,cutoff_level_5,cutoff_level_3,
+				     localsplicing_penalty,
+				     oligoindices_major,oligoindices_minor,
+				     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
+
+	History_free(&gmap_history_3);
+	History_free(&gmap_history_5);
 	Compress_free(&query5_compress_fwd);
 	Compress_free(&query5_compress_rev);
 	Compress_free(&query3_compress_fwd);
@@ -17865,15 +17717,14 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 				  Stage3end_T **stage3array5, int *nhits5, int *first_absmq5, int *second_absmq5,
 				  Stage3end_T **stage3array3, int *nhits3, int *first_absmq3, int *second_absmq3,
 				  Shortread_T queryseq5, Shortread_T queryseq3,
-				  Indexdb_T indexdb_geneplus, Indexdb_T indexdb_geneminus, int indexdb_size_threshold,
+				  Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold,
 				  Genome_T genome, Floors_T *floors_array,
 				  double user_maxlevel_float, int subopt_levels,
-				  int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+				  int indel_penalty_middle, int indel_penalty_end,
 				  bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-				  Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-				  Oligoindex_T *oligoindices_major, int noligoindices_major,
-				  Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-				  Pairpool_T pairpool, Diagpool_T diagpool,
+				  int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
+				  Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+				  Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 				  Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 				  Chrpos_T pairmax, bool keep_floors_p) {
   Stage3pair_T *stage3pairarray;
@@ -17886,6 +17737,7 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
   char *queryuc_ptr_5, *queryuc_ptr_3, *quality_string_5, *quality_string_3;
   char queryrc5[MAX_READLENGTH+1], queryrc3[MAX_READLENGTH+1];
   Compress_T query5_compress_fwd = NULL, query5_compress_rev = NULL, query3_compress_fwd = NULL, query3_compress_rev = NULL;
+  History_T gmap_history_5, gmap_history_3;
   int user_maxlevel_5, user_maxlevel_3;
   int found_score_geneplus, found_score_geneminus;
   int cutoff_level_5, cutoff_level_3;
@@ -17907,19 +17759,193 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
   querylength5 = Shortread_fulllength(queryseq5);
   querylength3 = Shortread_fulllength(queryseq3);
 
-  if (querylength5 < min_readlength || querylength3 < min_readlength) {
-    fprintf(stderr,"GSNAP cannot handle reads shorter than %d bp\n",min_readlength);
+  if (querylength5 < min_readlength && querylength3 < min_readlength) {
+    fprintf(stderr,"Paired-read %s has lengths %d and %d < min_readlength %d.  Skipping.\n",
+	    Shortread_accession(queryseq5),querylength5,querylength3,min_readlength);
+    /* fprintf(stderr,"You may want to build a genomic index with a smaller k-mer value using the -k flag to gmap_build\n"); */
     *npaths = *nhits5 = *nhits3 = 0;
     *stage3array5 = *stage3array3 = (Stage3end_T *) NULL;
     return (Stage3pair_T *) NULL;
 
   } else if (querylength5 > MAX_READLENGTH || querylength3 > MAX_READLENGTH) {
-    fprintf(stderr,"GSNAP cannot handle reads longer than %d bp.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
-	    MAX_READLENGTH);
+    fprintf(stderr,"Paired-read %s has lengths %d and %d > MAX_READLENGTH %d.  Either run configure and make again with a higher value of MAX_READLENGTH, or consider using GMAP instead.\n",
+	    Shortread_accession(queryseq5),querylength5,querylength3,MAX_READLENGTH);
     *npaths = *nhits5 = *nhits3 = 0;
     *stage3array5 = *stage3array3 = (Stage3end_T *) NULL;
     return (Stage3pair_T *) NULL;
 
+  } else if (querylength5 < min_readlength) {
+    /* Solve just 3' end */
+    fprintf(stderr,"First end of paired-read %s has length %d < min_readlength %d.  Aligning second end only.\n",
+	    Shortread_accession(queryseq5),querylength5,min_readlength);
+    *nhits5 = 0;
+    *stage3array5 = (Stage3end_T *) NULL;
+
+    if (user_maxlevel_float < 0.0) {
+      user_maxlevel_3 = -1;
+    } else if (user_maxlevel_float > 0.0 && user_maxlevel_float < 1.0) {
+      user_maxlevel_3 = (int) rint(user_maxlevel_float * (double) querylength3);
+    } else {
+      user_maxlevel_3 = (int) user_maxlevel_float;
+    }
+
+    this_geneplus_3 = Stage1_new(querylength3);
+    this_geneminus_3 = Stage1_new(querylength3);
+
+    queryuc_ptr_3 = Shortread_fullpointer_uc(queryseq3);
+    quality_string_3 = Shortread_quality_string(queryseq3);
+    query3_lastpos = querylength3 - index1part;
+
+    /* Limit search on repetitive sequences */
+    if (check_dinucleotides(queryuc_ptr_3,querylength3) == false) {
+      user_maxlevel_3 = 0;
+    }
+
+    query3_compress_fwd = Compress_new_fwd(queryuc_ptr_3,querylength3);
+    query3_compress_rev = Compress_new_rev(queryuc_ptr_3,querylength3);
+    gmap_history_3 = History_new();
+    make_complement_buffered(queryrc3,queryuc_ptr_3,querylength3);
+
+    if (read_oligos(&allvalidp3,this_geneplus_3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/+1,
+		    /*first_read_p*/false) == 0) {
+      hits_geneplus_3 = (List_T) NULL;
+    } else {
+      hits_geneplus_3 = align_end(&cutoff_level_3,gmap_history_3,this_geneplus_3,
+				  query3_compress_fwd,query3_compress_rev,
+				  queryuc_ptr_3,queryrc3,querylength3,query3_lastpos,
+				  indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+				  floors_array,oligoindices_major,oligoindices_minor,
+				  pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				  user_maxlevel_3,subopt_levels,
+				  indel_penalty_middle,indel_penalty_end,
+				  localsplicing_penalty,distantsplicing_penalty,min_shortend,
+				  allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
+				  allvalidp3,keep_floors_p,/*genestrand*/+1,/*first_read_p*/false);
+    }
+
+    if (read_oligos(&allvalidp3,this_geneminus_3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/+2,
+		    /*first_read_p*/false) == 0) {
+      hits_geneminus_3 = (List_T) NULL;
+    } else {
+      hits_geneminus_3 = align_end(&cutoff_level_3,gmap_history_3,this_geneminus_3,
+				   query3_compress_fwd,query3_compress_rev,
+				   queryuc_ptr_3,queryrc3,querylength3,query3_lastpos,
+				   indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+				   floors_array,oligoindices_major,oligoindices_minor,
+				   pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				   user_maxlevel_3,subopt_levels,
+				   indel_penalty_middle,indel_penalty_end,
+				   localsplicing_penalty,distantsplicing_penalty,min_shortend,
+				   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
+				   allvalidp3,keep_floors_p,/*genestrand*/+2,/*first_read_p*/false);
+    }
+
+    hits3 = List_append(hits_geneplus_3,hits_geneminus_3);
+    if ((*nhits3 = List_length(hits3)) == 0) {
+      *stage3array3 = (Stage3end_T *) NULL;
+    } else {
+      *stage3array3 = (Stage3end_T *) List_to_array_out(hits3,NULL); List_free(&hits3);
+      *stage3array3 = Stage3end_eval_and_sort(&(*nhits3),&(*first_absmq3),&(*second_absmq3),
+					      *stage3array3,maxpaths_search,queryseq3,
+					      query3_compress_fwd,query3_compress_rev,
+					      genome,quality_string_3,/*displayp*/true);
+    }
+
+    *npaths = 0;
+    *final_pairtype = UNPAIRED;
+    History_free(&gmap_history_3);
+    Compress_free(&query3_compress_fwd);
+    Compress_free(&query3_compress_rev);
+    Stage1_free(&this_geneminus_3,querylength3);
+    Stage1_free(&this_geneplus_3,querylength3);
+    return (Stage3pair_T *) NULL;
+
+  } else if (querylength3 < min_readlength) {
+    /* Solve just 5' end */
+    fprintf(stderr,"Second end of paired-read %s has length %d < min_readlength %d.  Aligning first end only.\n",
+	    Shortread_accession(queryseq5),querylength3,min_readlength);
+    *nhits3 = 0;
+    *stage3array3 = (Stage3end_T *) NULL;
+
+    if (user_maxlevel_float < 0.0) {
+      user_maxlevel_5 = -1;
+    } else if (user_maxlevel_float > 0.0 && user_maxlevel_float < 1.0) {
+      user_maxlevel_5 = (int) rint(user_maxlevel_float * (double) querylength5);
+    } else {
+      user_maxlevel_5 = (int) user_maxlevel_float;
+    }
+
+    this_geneplus_5 = Stage1_new(querylength5);
+    this_geneminus_5 = Stage1_new(querylength5);
+
+    queryuc_ptr_5 = Shortread_fullpointer_uc(queryseq5);
+    quality_string_5 = Shortread_quality_string(queryseq5);
+    query5_lastpos = querylength5 - index1part;
+
+    /* Limit search on repetitive sequences */
+    if (check_dinucleotides(queryuc_ptr_5,querylength5) == false) {
+      user_maxlevel_5 = 0;
+    }
+
+    query5_compress_fwd = Compress_new_fwd(queryuc_ptr_5,querylength5);
+    query5_compress_rev = Compress_new_rev(queryuc_ptr_5,querylength5);
+    gmap_history_5 = History_new();
+    make_complement_buffered(queryrc5,queryuc_ptr_5,querylength5);
+
+    if (read_oligos(&allvalidp5,this_geneplus_5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/+1,
+		    /*first_read_p*/true) == 0) {
+      hits_geneplus_5 = (List_T) NULL;
+    } else {
+      hits_geneplus_5 = align_end(&cutoff_level_5,gmap_history_5,this_geneplus_5,
+				  query5_compress_fwd,query5_compress_rev,
+				  queryuc_ptr_5,queryrc5,querylength5,query5_lastpos,
+				  indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+				  floors_array,oligoindices_major,oligoindices_minor,
+				  pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				  user_maxlevel_5,subopt_levels,
+				  indel_penalty_middle,indel_penalty_end,
+				  localsplicing_penalty,distantsplicing_penalty,min_shortend,
+				  allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
+				  allvalidp5,keep_floors_p,/*genestrand*/+1,/*first_read_p*/true);
+    }
+
+    if (read_oligos(&allvalidp5,this_geneminus_5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/+2,
+		    /*first_read_p*/true) == 0) {
+      hits_geneminus_5 = (List_T) NULL;
+    } else {
+      hits_geneminus_5 = align_end(&cutoff_level_5,gmap_history_5,this_geneminus_5,
+				   query5_compress_fwd,query5_compress_rev,
+				   queryuc_ptr_5,queryrc5,querylength5,query5_lastpos,
+				   indexdb_fwd,indexdb_rev,indexdb_size_threshold,
+				   floors_array,oligoindices_major,oligoindices_minor,
+				   pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
+				   user_maxlevel_5,subopt_levels,
+				   indel_penalty_middle,indel_penalty_end,
+				   localsplicing_penalty,distantsplicing_penalty,min_shortend,
+				   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
+				   allvalidp5,keep_floors_p,/*genestrand*/+2,/*first_read_p*/true);
+    }
+
+    hits5 = List_append(hits_geneplus_5,hits_geneminus_5);
+    if ((*nhits5 = List_length(hits5)) == 0) {
+      *stage3array5 = (Stage3end_T *) NULL;
+    } else {
+      *stage3array5 = (Stage3end_T *) List_to_array_out(hits5,NULL); List_free(&hits5);
+      *stage3array5 = Stage3end_eval_and_sort(&(*nhits5),&(*first_absmq5),&(*second_absmq5),
+					      *stage3array5,maxpaths_search,queryseq5,
+					      query5_compress_fwd,query5_compress_rev,
+					      genome,quality_string_5,/*displayp*/true);
+    }
+
+    *npaths = 0;
+    *final_pairtype = UNPAIRED;
+    History_free(&gmap_history_5);
+    Compress_free(&query5_compress_fwd);
+    Compress_free(&query5_compress_rev);
+    Stage1_free(&this_geneminus_5,querylength5);
+    Stage1_free(&this_geneplus_5,querylength5);
+    return (Stage3pair_T *) NULL;
+
   } else {
     if (user_maxlevel_float < 0.0) {
       user_maxlevel_5 = user_maxlevel_3 = -1;
@@ -17950,16 +17976,20 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
       user_maxlevel_3 = 0;
     }
 
-    query5_compress_fwd = Compress_new(queryuc_ptr_5,querylength5,/*plusp*/true);
-    query5_compress_rev = Compress_new(queryuc_ptr_5,querylength5,/*plusp*/false);
-    query3_compress_fwd = Compress_new(queryuc_ptr_3,querylength3,/*plusp*/true);
-    query3_compress_rev = Compress_new(queryuc_ptr_3,querylength3,/*plusp*/false);
+    query5_compress_fwd = Compress_new_fwd(queryuc_ptr_5,querylength5);
+    query5_compress_rev = Compress_new_rev(queryuc_ptr_5,querylength5);
+    query3_compress_fwd = Compress_new_fwd(queryuc_ptr_3,querylength3);
+    query3_compress_rev = Compress_new_rev(queryuc_ptr_3,querylength3);
+    gmap_history_5 = History_new();
+    gmap_history_3 = History_new();
     make_complement_buffered(queryrc5,queryuc_ptr_5,querylength5);
     make_complement_buffered(queryrc3,queryuc_ptr_3,querylength3);
 
     abort_pairing_p_geneplus = false;
-    noligos5 = read_oligos(&allvalidp5,this_geneplus_5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/+1);
-    noligos3 = read_oligos(&allvalidp3,this_geneplus_3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/+1);
+    noligos5 = read_oligos(&allvalidp5,this_geneplus_5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/+1,
+			   /*first_read_p*/true);
+    noligos3 = read_oligos(&allvalidp3,this_geneplus_3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/+1,
+			   /*first_read_p*/false);
 
     if (noligos5 == 0 && noligos3 == 0) {
       debug(printf("Aborting because no hits found anywhere\n"));
@@ -17969,28 +17999,29 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
       hitpairs_geneplus = align_pair(&abort_pairing_p_geneplus,&found_score_geneplus,
 				     &cutoff_level_5,&cutoff_level_3,
 				     &samechr_geneplus,&conc_transloc_geneplus,&with_terminal_geneplus,
+				     gmap_history_5,gmap_history_3,
 				     &hits_geneplus_5,&hits_geneplus_3,this_geneplus_5,this_geneplus_3,
 				     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
 				     queryuc_ptr_5,queryuc_ptr_3,queryrc5,queryrc3,
 				     querylength5,querylength3,query5_lastpos,query3_lastpos,
-				     indexdb_geneplus,indexdb_geneplus,indexdb_size_threshold,floors_array,
+				     indexdb_fwd,indexdb_rev,indexdb_size_threshold,floors_array,
 
-				     oligoindices_major,noligoindices_major,
-				     oligoindices_minor,noligoindices_minor,
-				     pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+				     oligoindices_major,oligoindices_minor,
+				     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 
 				     user_maxlevel_5,user_maxlevel_3,subopt_levels,
 				     indel_penalty_middle,indel_penalty_end,
-				     shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-				     max_middle_insertions,max_middle_deletions,
+				     localsplicing_penalty,distantsplicing_penalty,min_shortend,
 				     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 				     allvalidp5,allvalidp3,pairmax,maxpairedpaths,keep_floors_p,
 				     queryseq5,queryseq3,/*genestrand*/+1);
     }
 
     abort_pairing_p_geneminus = false;
-    noligos5 = read_oligos(&allvalidp5,this_geneminus_5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/+2);
-    noligos3 = read_oligos(&allvalidp3,this_geneminus_3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/+2);
+    noligos5 = read_oligos(&allvalidp5,this_geneminus_5,queryuc_ptr_5,querylength5,query5_lastpos,/*genestrand*/+2,
+			   /*first_read_p*/true);
+    noligos3 = read_oligos(&allvalidp3,this_geneminus_3,queryuc_ptr_3,querylength3,query3_lastpos,/*genestrand*/+2,
+			   /*first_read_p*/false);
 
     if (noligos5 == 0 && noligos3 == 0) {
       debug(printf("Aborting because no hits found anywhere\n"));
@@ -18000,20 +18031,19 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
       hitpairs_geneminus = align_pair(&abort_pairing_p_geneminus,&found_score_geneminus,
 				      &cutoff_level_5,&cutoff_level_3,
 				      &samechr_geneminus,&conc_transloc_geneminus,&with_terminal_geneminus,
+				      gmap_history_5,gmap_history_3,
 				      &hits_geneminus_5,&hits_geneminus_3,this_geneminus_5,this_geneminus_3,
 				      query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
 				      queryuc_ptr_5,queryuc_ptr_3,queryrc5,queryrc3,
 				      querylength5,querylength3,query5_lastpos,query3_lastpos,
-				      indexdb_geneminus,indexdb_geneminus,indexdb_size_threshold,floors_array,
+				      indexdb_fwd,indexdb_rev,indexdb_size_threshold,floors_array,
 
-				      oligoindices_major,noligoindices_major,
-				      oligoindices_minor,noligoindices_minor,
-				      pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+				      oligoindices_major,oligoindices_minor,
+				      pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 
 				      user_maxlevel_5,user_maxlevel_3,subopt_levels,
 				      indel_penalty_middle,indel_penalty_end,
-				      shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-				      max_middle_insertions,max_middle_deletions,
+				      localsplicing_penalty,distantsplicing_penalty,min_shortend,
 				      allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
 				      allvalidp5,allvalidp3,pairmax,maxpairedpaths,keep_floors_p,
 				      queryseq5,queryseq3,/*genestrand*/+2);
@@ -18024,6 +18054,7 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 			  with_terminal_geneminus,hits_geneminus_5,hits_geneminus_3,querylength5,querylength3);
 
       if (abort_pairing_p_geneplus == true) {
+	debug16(printf("abort_pairing_p_geneplus is true\n"));
 	paired_results_free(this_geneplus_5,this_geneplus_3,hitpairs_geneplus,samechr_geneplus,conc_transloc_geneplus,
 			    with_terminal_geneplus,hits_geneplus_5,hits_geneplus_3,querylength5,querylength3);
 
@@ -18031,21 +18062,23 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 	this_geneplus_3 = Stage1_new(querylength3);
 	realign_separately(stage3array5,&(*nhits5),&(*first_absmq5),&(*second_absmq5),
 			   stage3array3,&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-			   this_geneplus_5,this_geneplus_3,
+			   gmap_history_5,gmap_history_3,this_geneplus_5,this_geneplus_3,
 			   query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
 			   queryseq5,queryuc_ptr_5,queryrc5,quality_string_5,querylength5,query5_lastpos,
 			   queryseq3,queryuc_ptr_3,queryrc3,quality_string_3,querylength3,query3_lastpos,
-			   indexdb_geneplus,indexdb_geneplus,indexdb_size_threshold,genome,floors_array,
+			   indexdb_fwd,indexdb_rev,indexdb_size_threshold,genome,floors_array,
 			   user_maxlevel_5,user_maxlevel_3,subopt_levels,
-			   indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			   indel_penalty_middle,indel_penalty_end,
 			   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			   shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-			   oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			   pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+			   localsplicing_penalty,distantsplicing_penalty,min_shortend,
+			   oligoindices_major,oligoindices_minor,
+			   pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 			   keep_floors_p,/*genestrand*/+1);
 
 	*npaths = 0;
 	*final_pairtype = UNPAIRED;
+	History_free(&gmap_history_3);
+	History_free(&gmap_history_5);
 	Compress_free(&query5_compress_fwd);
 	Compress_free(&query5_compress_rev);
 	Compress_free(&query3_compress_fwd);
@@ -18065,21 +18098,23 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 	minus_segments_genestrand_3[+1] = this_geneplus_3->minus_segments;
 	minus_nsegments_genestrand_3[+1] = this_geneplus_3->minus_nsegments;
 
-	stage3pairarray = consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
-						     &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
-						     &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-						     hitpairs_geneplus,samechr_geneplus,conc_transloc_geneplus,with_terminal_geneplus,
-						     hits_geneplus_5,hits_geneplus_3,
-						     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
-						     plus_segments_genestrand_5,plus_nsegments_genestrand_5,minus_segments_genestrand_5,minus_nsegments_genestrand_5,
-						     plus_segments_genestrand_3,plus_nsegments_genestrand_3,minus_segments_genestrand_3,minus_nsegments_genestrand_3,
-						     queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
-						     queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
-						     genome,subopt_levels,cutoff_level_5,cutoff_level_3,
-						     shortsplicedist,localsplicing_penalty,
-						     oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						     pairpool,diagpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
-
+	stage3pairarray =
+	  consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
+				     &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
+				     &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
+				     hitpairs_geneplus,samechr_geneplus,conc_transloc_geneplus,with_terminal_geneplus,
+				     hits_geneplus_5,hits_geneplus_3,gmap_history_5,gmap_history_3,
+				     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
+				     plus_segments_genestrand_5,plus_nsegments_genestrand_5,minus_segments_genestrand_5,minus_nsegments_genestrand_5,
+				     plus_segments_genestrand_3,plus_nsegments_genestrand_3,minus_segments_genestrand_3,minus_nsegments_genestrand_3,
+				     queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
+				     queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
+				     genome,subopt_levels,cutoff_level_5,cutoff_level_3,
+				     localsplicing_penalty,
+				     oligoindices_major,oligoindices_minor,
+				     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
+	History_free(&gmap_history_3);
+	History_free(&gmap_history_5);
 	Compress_free(&query5_compress_fwd);
 	Compress_free(&query5_compress_rev);
 	Compress_free(&query3_compress_fwd);
@@ -18094,6 +18129,7 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 			  with_terminal_geneplus,hits_geneplus_5,hits_geneplus_3,querylength5,querylength3);
 
       if (abort_pairing_p_geneminus == true) {
+	debug16(printf("abort_pairing_p_geneminus is true\n"));
 	paired_results_free(this_geneminus_5,this_geneminus_3,hitpairs_geneminus,samechr_geneminus,conc_transloc_geneminus,
 			    with_terminal_geneminus,hits_geneminus_5,hits_geneminus_3,querylength5,querylength3);
 
@@ -18101,21 +18137,23 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 	this_geneminus_3 = Stage1_new(querylength3);
 	realign_separately(stage3array5,&(*nhits5),&(*first_absmq5),&(*second_absmq5),
 			   stage3array3,&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-			   this_geneminus_5,this_geneminus_3,
+			   gmap_history_5,gmap_history_3,this_geneminus_5,this_geneminus_3,
 			   query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
 			   queryseq5,queryuc_ptr_5,queryrc5,quality_string_5,querylength5,query5_lastpos,
 			   queryseq3,queryuc_ptr_3,queryrc3,quality_string_3,querylength3,query3_lastpos,
-			   indexdb_geneminus,indexdb_geneminus,indexdb_size_threshold,genome,floors_array,
+			   indexdb_fwd,indexdb_rev,indexdb_size_threshold,genome,floors_array,
 			   user_maxlevel_5,user_maxlevel_3,subopt_levels,
-			   indel_penalty_middle,indel_penalty_end,max_middle_insertions,max_middle_deletions,
+			   indel_penalty_middle,indel_penalty_end,
 			   allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-			   shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-			   oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-			   pairpool,diagpool,dynprogL,dynprogM,dynprogR,
+			   localsplicing_penalty,distantsplicing_penalty,min_shortend,
+			   oligoindices_major,oligoindices_minor,
+			   pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,
 			   keep_floors_p,/*genestrand*/+2);
 
 	*npaths = 0;
 	*final_pairtype = UNPAIRED;
+	History_free(&gmap_history_3);
+	History_free(&gmap_history_5);
 	Compress_free(&query5_compress_fwd);
 	Compress_free(&query5_compress_rev);
 	Compress_free(&query3_compress_fwd);
@@ -18135,21 +18173,23 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
 	minus_segments_genestrand_3[+2] = this_geneminus_3->minus_segments;
 	minus_nsegments_genestrand_3[+2] = this_geneminus_3->minus_nsegments;
 
-	stage3pairarray = consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
-						     &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
-						     &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-						     hitpairs_geneminus,samechr_geneminus,conc_transloc_geneminus,with_terminal_geneminus,
-						     hits_geneminus_5,hits_geneminus_3,
-						     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
-						     plus_segments_genestrand_5,plus_nsegments_genestrand_5,minus_segments_genestrand_5,minus_nsegments_genestrand_5,
-						     plus_segments_genestrand_3,plus_nsegments_genestrand_3,minus_segments_genestrand_3,minus_nsegments_genestrand_3,
-						     queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
-						     queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
-						     genome,subopt_levels,cutoff_level_5,cutoff_level_3,
-						     shortsplicedist,localsplicing_penalty,
-						     oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						     pairpool,diagpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
-
+	stage3pairarray =
+	  consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
+				     &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
+				     &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
+				     hitpairs_geneminus,samechr_geneminus,conc_transloc_geneminus,with_terminal_geneminus,
+				     hits_geneminus_5,hits_geneminus_3,gmap_history_5,gmap_history_3,
+				     query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
+				     plus_segments_genestrand_5,plus_nsegments_genestrand_5,minus_segments_genestrand_5,minus_nsegments_genestrand_5,
+				     plus_segments_genestrand_3,plus_nsegments_genestrand_3,minus_segments_genestrand_3,minus_nsegments_genestrand_3,
+				     queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
+				     queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
+				     genome,subopt_levels,cutoff_level_5,cutoff_level_3,
+				     localsplicing_penalty,
+				     oligoindices_major,oligoindices_minor,
+				     pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
+	History_free(&gmap_history_3);
+	History_free(&gmap_history_5);
 	Compress_free(&query5_compress_fwd);
 	Compress_free(&query5_compress_rev);
 	Compress_free(&query3_compress_fwd);
@@ -18187,19 +18227,22 @@ paired_read_tolerant_nonstranded (int *npaths, int *first_absmq, int *second_abs
       minus_segments_genestrand_3[+2] = this_geneminus_3->minus_segments;
       minus_nsegments_genestrand_3[+2] = this_geneminus_3->minus_nsegments;
 
-      stage3pairarray = consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
-						   &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
-						   &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-						   hitpairs,samechr,conc_transloc,with_terminal,hits5,hits3,
-						   query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
-						   plus_segments_genestrand_5,plus_nsegments_genestrand_5,minus_segments_genestrand_5,minus_nsegments_genestrand_5,
-						   plus_segments_genestrand_3,plus_nsegments_genestrand_3,minus_segments_genestrand_3,minus_nsegments_genestrand_3,
-						   queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
-						   queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
-						   genome,subopt_levels,cutoff_level_5,cutoff_level_3,
-						   shortsplicedist,localsplicing_penalty,
-						   oligoindices_major,noligoindices_major,oligoindices_minor,noligoindices_minor,
-						   pairpool,diagpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
+      stage3pairarray =
+	consolidate_paired_results(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
+				   &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
+				   &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
+				   hitpairs,samechr,conc_transloc,with_terminal,hits5,hits3,gmap_history_5,gmap_history_3,
+				   query5_compress_fwd,query5_compress_rev,query3_compress_fwd,query3_compress_rev,
+				   plus_segments_genestrand_5,plus_nsegments_genestrand_5,minus_segments_genestrand_5,minus_nsegments_genestrand_5,
+				   plus_segments_genestrand_3,plus_nsegments_genestrand_3,minus_segments_genestrand_3,minus_nsegments_genestrand_3,
+				   queryseq5,queryuc_ptr_5,quality_string_5,querylength5,query5_lastpos,
+				   queryseq3,queryuc_ptr_3,quality_string_3,querylength3,query3_lastpos,
+				   genome,subopt_levels,cutoff_level_5,cutoff_level_3,
+				   localsplicing_penalty,
+				   oligoindices_major,oligoindices_minor,
+				   pairpool,diagpool,cellpool,dynprogL,dynprogM,dynprogR,pairmax,user_maxlevel_5,user_maxlevel_3);
+      History_free(&gmap_history_3);
+      History_free(&gmap_history_5);
       Compress_free(&query5_compress_fwd);
       Compress_free(&query5_compress_rev);
       Compress_free(&query3_compress_fwd);
@@ -18219,15 +18262,14 @@ Stage1_paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T
 		    Stage3end_T **stage3array5, int *nhits5, int *first_absmq5, int *second_absmq5,
 		    Stage3end_T **stage3array3, int *nhits3, int *first_absmq3, int *second_absmq3,
 		    Shortread_T queryseq5, Shortread_T queryseq3,
-		    Indexdb_T indexdb, Indexdb_T indexdb2, int indexdb_size_threshold,
+		    Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold,
 		    Genome_T genome, Floors_T *floors_array,
 		    double user_maxlevel_float, int subopt_levels,
-		    int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+		    int indel_penalty_middle, int indel_penalty_end,
 		    bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		    Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-		    Oligoindex_T *oligoindices_major, int noligoindices_major,
-		    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		    Pairpool_T pairpool, Diagpool_T diagpool,
+		    int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
+		    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		    Chrpos_T pairmax, bool keep_floors_p) {
 
@@ -18235,28 +18277,24 @@ Stage1_paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T
     return paired_read(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
 		       &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
 		       &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-		       queryseq5,queryseq3,/*indexdb_fwd*/indexdb,/*indexdb_rev*/indexdb2,indexdb_size_threshold,
+		       queryseq5,queryseq3,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
 		       genome,floors_array,user_maxlevel_float,subopt_levels,
 		       indel_penalty_middle,indel_penalty_end,
-		       max_middle_insertions,max_middle_deletions,
 		       allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-		       shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-		       oligoindices_major,noligoindices_major,
-		       oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+		       localsplicing_penalty,distantsplicing_penalty,min_shortend,
+		       oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 		       dynprogL,dynprogM,dynprogR,pairmax,keep_floors_p);
 
   } else if (mode == CMET_NONSTRANDED || mode == ATOI_NONSTRANDED) {
     return paired_read_tolerant_nonstranded(&(*npaths),&(*first_absmq),&(*second_absmq),&(*final_pairtype),
 					    &(*stage3array5),&(*nhits5),&(*first_absmq5),&(*second_absmq5),
 					    &(*stage3array3),&(*nhits3),&(*first_absmq3),&(*second_absmq3),
-					    queryseq5,queryseq3,/*indexdb_geneplus*/indexdb,/*indexdb_geneminus*/indexdb2,indexdb_size_threshold,
+					    queryseq5,queryseq3,indexdb_fwd,indexdb_rev,indexdb_size_threshold,
 					    genome,floors_array,user_maxlevel_float,subopt_levels,
 					    indel_penalty_middle,indel_penalty_end,
-					    max_middle_insertions,max_middle_deletions,
 					    allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-					    shortsplicedist,localsplicing_penalty,distantsplicing_penalty,min_shortend,
-					    oligoindices_major,noligoindices_major,
-					    oligoindices_minor,noligoindices_minor,pairpool,diagpool,
+					    localsplicing_penalty,distantsplicing_penalty,min_shortend,
+					    oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
 					    dynprogL,dynprogM,dynprogR,pairmax,keep_floors_p);
   } else {
     fprintf(stderr,"Do not recognize mode %d\n",mode);
@@ -18275,28 +18313,30 @@ Stage1hr_cleanup () {
 
 
 void
-Stage1hr_setup (int index1part_in, int index1interval_in, int spansize_in,
-		Univ_IIT_T chromosome_iit_in, int nchromosomes_in,
+Stage1hr_setup (bool use_sarray_p_in, int index1part_in, int index1interval_in,
+		int spansize_in, Univ_IIT_T chromosome_iit_in, int nchromosomes_in,
 		Genome_T genomealt, Mode_T mode_in, int maxpaths_search_in,
-		int terminal_threshold_in,
+		int terminal_threshold_in, int terminal_output_minlength_in,
 
 		Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
 		Chrpos_T *splicedists_in, int nsplicesites_in,
 		
 		bool novelsplicingp_in, bool knownsplicingp_in,
 		bool distances_observed_p_in,
-		int shortsplicedist_known_in, int shortsplicedist_novelend_in,
+		Chrpos_T max_middle_insertions_in, Chrpos_T max_middle_deletions_in,
+		Chrpos_T shortsplicedist_in, Chrpos_T shortsplicedist_known_in, Chrpos_T shortsplicedist_novelend_in,
 		Chrpos_T min_intronlength_in,
 
 		int min_distantsplicing_end_matches_in, int min_distantsplicing_identity_in,
 
 		int nullgap_in, int maxpeelback_in, int maxpeelback_distalmedial_in,
 		int extramaterial_end_in, int extramaterial_paired_in,
-		int gmap_mode, int trigger_score_for_gmap_in,
+		int gmap_mode, int trigger_score_for_gmap_in, int gmap_allowance_in,
 		int max_gmap_pairsearch_in, int max_gmap_terminal_in,
 		int max_gmap_improvement_in, int antistranded_penalty_in) {
   bool gmapp = false;
 
+  use_sarray_p = use_sarray_p_in;
   index1part = index1part_in;
   index1interval = index1interval_in;
   two_index1intervals = index1interval_in + index1interval_in;
@@ -18325,6 +18365,7 @@ Stage1hr_setup (int index1part_in, int index1interval_in, int spansize_in,
   maxpaths_search = maxpaths_search_in;
 
   terminal_threshold = terminal_threshold_in;
+  terminal_output_minlength = terminal_output_minlength_in;
 
   splicesites = splicesites_in;
   splicetypes = splicetypes_in;
@@ -18334,10 +18375,23 @@ Stage1hr_setup (int index1part_in, int index1interval_in, int spansize_in,
   novelsplicingp = novelsplicingp_in;
   knownsplicingp = knownsplicingp_in;
   distances_observed_p = distances_observed_p_in;
+
+  max_middle_insertions = max_middle_insertions_in;
+  max_middle_deletions = max_middle_deletions_in;
+
+  shortsplicedist = shortsplicedist_in;
   shortsplicedist_known = shortsplicedist_known_in;
   shortsplicedist_novelend = shortsplicedist_novelend_in;
-  min_intronlength = min_intronlength_in;
 
+  overall_max_distance = shortsplicedist;
+  if (max_middle_deletions > overall_max_distance) {
+    overall_max_distance = max_middle_deletions;
+  }
+  if (max_middle_insertions > overall_max_distance) {
+    overall_max_distance = max_middle_insertions;
+  }
+
+  min_intronlength = min_intronlength_in;
   min_distantsplicing_end_matches = min_distantsplicing_end_matches_in;
   min_distantsplicing_identity = min_distantsplicing_identity_in;
 
@@ -18396,6 +18450,7 @@ Stage1hr_setup (int index1part_in, int index1interval_in, int spansize_in,
 
 
   trigger_score_for_gmap = trigger_score_for_gmap_in;
+  gmap_allowance = gmap_allowance_in;
 
   max_gmap_pairsearch = max_gmap_pairsearch_in;
   max_gmap_terminal = max_gmap_terminal_in;
diff --git a/src/stage1hr.h b/src/stage1hr.h
index 6204f3f..4c646e1 100644
--- a/src/stage1hr.h
+++ b/src/stage1hr.h
@@ -1,4 +1,4 @@
-/* $Id: stage1hr.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: stage1hr.h 135447 2014-05-07 22:25:45Z twu $ */
 #ifndef STAGE1HR_INCLUDED
 #define STAGE1HR_INCLUDED
 #include "bool.h"
@@ -13,7 +13,11 @@
 #include "resulthr.h"		/* For Pairtype_T */
 #include "stage3hr.h"
 
-#include "oligoindex.h"
+#ifdef PMAP
+#include "oligoindex_pmap.h"
+#else
+#include "oligoindex_hr.h"
+#endif
 #include "pairpool.h"
 #include "diagpool.h"
 #include "dynprog.h"
@@ -49,16 +53,14 @@ Stage1_free (T *old, int querylength);
 
 extern Stage3end_T *
 Stage1_single_read (int *npaths, int *first_absmq, int *second_absmq,
-		    Shortread_T queryseq, Indexdb_T indexdb, Indexdb_T indexdb2,
+		    Shortread_T queryseq, Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev,
 		    int indexdb_size_threshold, Genome_T genome, Floors_T *floors_array,
 		    double usermax_level_float, int subopt_levels,
-		    int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+		    int indel_penalty_middle, int indel_penalty_end,
 		    bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		    Chrpos_T shortsplicedist,
 		    int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-		    Oligoindex_T *oligoindices_major, int noligoindices_major,
-		    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		    Pairpool_T pairpool, Diagpool_T diagpool,
+		    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		    bool keep_floors_p);
 
@@ -67,15 +69,14 @@ Stage1_paired_read (int *npaths, int *first_absmq, int *second_absmq, Pairtype_T
 		    Stage3end_T **stage3array5, int *nhits5, int *first_absmq5, int *second_absmq5,
 		    Stage3end_T **stage3array3, int *nhits3, int *first_absmq3, int *second_absmq3,
 		    Shortread_T queryseq5, Shortread_T queryseq3,
-		    Indexdb_T indexdb, Indexdb_T indexdb2, int indexdb_size_threshold,
+		    Indexdb_T indexdb_fwd, Indexdb_T indexdb_rev, int indexdb_size_threshold,
 		    Genome_T genome, Floors_T *floors_array,
 		    double usermax_level_float, int subopt_levels,
-		    int indel_penalty_middle, int indel_penalty_end, int max_middle_insertions, int max_middle_deletions,
+		    int indel_penalty_middle, int indel_penalty_end,
 		    bool allow_end_indels_p, int max_end_insertions, int max_end_deletions, int min_indel_end_matches,
-		    Chrpos_T shortsplicedist, int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
-		    Oligoindex_T *oligoindices_major, int noligoindices_major,
-		    Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		    Pairpool_T pairpool, Diagpool_T diagpool,
+		    int localsplicing_penalty, int distantsplicing_penalty, int min_shortend,
+		    Oligoindex_array_T oligoindices_major, Oligoindex_array_T oligoindices_minor,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
 		    Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
 		    Chrpos_T pairmax, bool keep_floors_p);
 
@@ -83,24 +84,25 @@ extern void
 Stage1hr_cleanup ();
 
 extern void
-Stage1hr_setup (int index1part_in, int index1interval_in, int spansize_in,
-		Univ_IIT_T chromosome_iit_in, int nchromosomes_in,
+Stage1hr_setup (bool use_sarray_p_in, int index1part_in, int index1interval_in,
+		int spansize_in, Univ_IIT_T chromosome_iit_in, int nchromosomes_in,
 		Genome_T genomealt, Mode_T mode_in, int maxpaths_search_in,
-		int terminal_threshold_in,
+		int terminal_threshold_in, int terminal_output_minlength_in,
 
 		Univcoord_T *splicesites_in, Splicetype_T *splicetypes_in,
 		Chrpos_T *splicedists_in, int nsplicesites_in,
 
 		bool novelsplicingp_in, bool knownsplicingp_in,
 		bool distances_observed_p_in,
-		int shortsplicedist_known_in, int shortsplicedist_novelend_in,
+		Chrpos_T max_middle_insertions_in, Chrpos_T max_middle_deletions_in,
+		Chrpos_T shortsplicedist_in, Chrpos_T shortsplicedist_known_in, Chrpos_T shortsplicedist_novelend_in,
 		Chrpos_T min_intronlength_in,
 
 		int min_distantsplicing_end_matches_in, int min_distantsplicing_identity_in,
 
 		int nullgap_in, int maxpeelback_in, int maxpeelback_distalmedial_in,
 		int extramaterial_end_in, int extramaterial_paired_in,
-		int gmap_mode, int trigger_score_for_gmap_in,
+		int gmap_mode, int trigger_score_for_gmap_in, int gmap_allowance_in,
 		int max_gmap_pairsearch_in, int max_gmap_terminal_in,
 		int max_gmap_improvement_in, int antistranded_penalty_in);
 
diff --git a/src/stage2.c b/src/stage2.c
index dac67d6..fc5626d 100644
--- a/src/stage2.c
+++ b/src/stage2.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stage2.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: stage2.c 137652 2014-05-30 16:49:12Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -17,15 +17,16 @@ static char rcsid[] = "$Id: stage2.c 99737 2013-06-27 19:33:03Z twu $";
 #include "listdef.h"
 #include "intlist.h"
 #include "diag.h"
-#include "oligoindex_hr.h"
-#include "genome_hr.h"
+#include "genome_sites.h"
 #include "complement.h"
+#include "maxent_hr.h"
 
 
 /* Tests whether genomicseg == query in convert_to_nucleotides, and
    whether oligoindex_hr gives same results as oligoindex */
 /* #define EXTRACT_GENOMICSEG 1 */
 
+/* #define USE_DIAGPOOL 1 -- Defined in diagpool.h */
 
 /* #define SQUARE 1 */
 
@@ -45,7 +46,18 @@ static char rcsid[] = "$Id: stage2.c 99737 2013-06-27 19:33:03Z twu $";
 #define INTRON_PENALTY_UNKNOWN 8
 #define INTRON_PENALTY_INCONSISTENT 16
 
-#define NINTRON_PENALTY_MISMATCH 8
+/* Needs to be high to avoid short exons, but needs to be low to identify short exons. */
+/* On an example by Nathan Weeks, needed to set this value to be 1 or
+   0 to find a short exon.  Setting to 0 gives too many short exons.
+   Also found querydist_credit to be a bad idea. */
+#define NINTRON_PENALTY_MISMATCH 1
+/* #define USE_QUERYDIST_CREDIT 1 */
+
+#define NON_CANONICAL_PENALTY_ENDS 4
+#define NON_CANONICAL_PENALTY_MIDDLE 4
+#define MISS_BEHIND 16
+#define GREEDY_ADVANCE 6
+#define FINAL_SCORE_TOLERANCE 8
 
 #define ENOUGH_CONSECUTIVE 32
 
@@ -89,16 +101,36 @@ static char rcsid[] = "$Id: stage2.c 99737 2013-06-27 19:33:03Z twu $";
 
 #define SHIFT_EXTRA 15
 
+#define ONE 1.0
+#define TEN_THOUSAND 10000.0
+#define HUNDRED_THOUSAND 100000.0
+#define ONE_MILLION 1000000.0
+
+
+
 static bool splicingp;
+static bool use_canonical_middle_p;
+static bool use_canonical_ends_p;
 static int suboptimal_score_end;
 static int suboptimal_score_start;
 static Mode_T mode;
 static bool snps_p;
 
 void
-Stage2_setup (bool splicingp_in, int suboptimal_score_start_in, int suboptimal_score_end_in,
+Stage2_setup (bool splicingp_in, bool cross_species_p,
+	      int suboptimal_score_start_in, int suboptimal_score_end_in,
 	      Mode_T mode_in, bool snps_p_in) {
   splicingp = splicingp_in;
+  if (splicingp == true) {
+    use_canonical_ends_p = true;
+  } else {
+    use_canonical_ends_p = false;
+  }
+  if (cross_species_p == true) {
+    use_canonical_middle_p = true;
+  } else {
+    use_canonical_middle_p = false;
+  }
   suboptimal_score_start = suboptimal_score_start_in;
   suboptimal_score_end = suboptimal_score_end_in;
   mode = mode_in;
@@ -166,12 +198,12 @@ Stage2_setup (bool splicingp_in, int suboptimal_score_start_in, int suboptimal_s
 /* Dynamic programming */
 /* Can also define debug9(x) as: if (querypos == XX) {x;} */
 #ifdef DEBUG9
-#define debug9(x) x
+#define debug9(x) if (querypos == 39) {x;}
 #else 
 #define debug9(x)
 #endif
 
-/* Grand winner */
+/* binary search */
 #ifdef DEBUG10
 #define debug10(x) x
 #else 
@@ -185,92 +217,55 @@ Stage2_setup (bool splicingp_in, int suboptimal_score_start_in, int suboptimal_s
 #define debug11(x)
 #endif
 
+/* Grand winner */
+#ifdef DEBUG12
+#define debug12(x) x
+#else 
+#define debug12(x)
+#endif
 
 
 #define T Stage2_T
 struct T {
-  List_T path;
-  int nfwdintrons;
-  int ncanonical;
-  int nnoncanonical;
-  int cdna_direction;
-
-  double diag_runtime;
-  double align_runtime;
-  int indexsize;
+  List_T middle;
+  List_T all_starts;
+  List_T all_ends;
 };
 
-List_T
-Stage2_path (T this) {
-  return this->path;
-}
-
-int
-Stage2_ncanonical (T this) {
-  return this->ncanonical;
-}
-
-int
-Stage2_nnoncanonical (T this) {
-  return this->nnoncanonical;
-}
 
-int
-Stage2_cdna_direction (T this) {
-  return this->cdna_direction;
+void
+Stage2_free (T *old) {
+  /* List_free(&(*old)->middle); -- Not necessary because of pairpool */
+  List_free(&(*old)->all_starts);
+  List_free(&(*old)->all_ends);
+  FREE(*old);
+  return;
 }
 
-double
-Stage2_diag_runtime (T this) {
-  return this->diag_runtime;
-}
+static T
+Stage2_new (List_T middle, List_T all_starts, List_T all_ends) {
+  T new = (T) MALLOC(sizeof(*new));
 
-double
-Stage2_align_runtime (T this) {
-  return this->align_runtime;
-}
+  new->middle = middle;
+  new->all_starts = all_starts;
+  new->all_ends = all_ends;
 
-int
-Stage2_indexsize (T this) {
-  return this->indexsize;
+  return new;
 }
 
-int
-Stage2_pathlength (T this) {
-  return List_length(this->path);
+List_T
+Stage2_middle (T this) {
+  return this->middle;
 }
 
-#if 0
-static T
-Stage2_new (List_T path, int nfwdintrons, int nrevintrons, int nunkintrons,
-	    int cdna_direction, int indexsize_nt) {
-  T new = (T) MALLOC(sizeof(*new));
-
-  new->path = path;
-  if (cdna_direction > 0) {
-    new->ncanonical = nfwdintrons;
-    new->nnoncanonical = nrevintrons + nunkintrons;
-  } else if (cdna_direction < 0) {
-    new->ncanonical = nrevintrons;
-    new->nnoncanonical = nfwdintrons + nunkintrons;
-  } else {
-    abort();
-  }
-  new->cdna_direction = cdna_direction;
-  new->indexsize = indexsize_nt;
-
-  return new;
+List_T
+Stage2_all_starts (T this) {
+  return this->all_starts;
 }
-#endif	    
 
-void
-Stage2_free (T *old) {
-  if (*old) {
-    /* These cells are taken from Pairpool_T and should not be freed. */
-    /* List_free(&(*old)->path); */
-    FREE(*old);
-  }
-  return;
+List_T
+Stage2_all_ends (T this) {
+  return this->all_ends;
 }
 
 
@@ -279,38 +274,37 @@ Stage2_free (T *old) {
 typedef struct Link_T *Link_T;
 struct Link_T {
   int fwd_consecutive;
-  int fwd_rootposition;		/* Last branch, or equivalently beginning of consecutive run */
+  int fwd_rootposition;
   /*int fwd_rootnlinks;*/		/* Number of links in last branch */
   int fwd_score;
 
   int fwd_pos;
   int fwd_hit;
-#ifdef USE_SUBOPTIMAL_STARTS
-  Chrpos_T fwd_initposition;
-  Intlist_T fwd_pos_ties;
-  Intlist_T fwd_hit_ties;
-#endif
 
+#ifdef DEBUG9
+  int fwd_tracei;		/* Corresponds to a distinct set of branches */
   int fwd_intronnfwd;
   int fwd_intronnrev;
   int fwd_intronnunk;
-#ifndef PMAP
+#endif
+
+#ifdef SEPARATE_FWD_REV
+  /* No longer checking separate fwd/rev directions */
   int rev_consecutive;
-  int rev_rootposition;		/* Last branch, or equivalently beginning of consecutive run */
+  int rev_rootposition;
   /*int rev_rootnlinks;*/		/* Number of links in last branch */
   int rev_score;
 
   int rev_pos;
   int rev_hit;
-#ifdef USE_SUBOPTIMAL_STARTS
-  int rev_initposition;
-  Intlist_T rev_pos_ties;
-  Intlist_T rev_hit_ties;
-#endif
 
+#ifdef DEBUG9
+  int rev_tracei;		/* Corresponds to a distinct set of branches */
   int rev_intronnfwd;
   int rev_intronnrev;
   int rev_intronnunk;
+#endif	/* rev */
+
 #endif
 };
 
@@ -322,7 +316,8 @@ Linkmatrix_1d_new (int length1, int *lengths2, int totallength) {
   struct Link_T **links;
   int i;
   
-  links = (struct Link_T **) CALLOC(length1,sizeof(struct Link_T *));
+  /* Outer dimension can be MALLOC, but inner one must be CALLOC */
+  links = (struct Link_T **) MALLOC(length1 * sizeof(struct Link_T *));
   links[0] = (struct Link_T *) CALLOC(totallength,sizeof(struct Link_T));
   for (i = 1; i < length1; i++) {
     if (lengths2[i-1] < 0) {
@@ -334,31 +329,6 @@ Linkmatrix_1d_new (int length1, int *lengths2, int totallength) {
   return links;
 }
 
-#ifdef USE_SUBOPTIMAL_STARTS
-static void
-Linkmatrix_gc (struct Link_T **links, int length1, int *lengths2) {
-  int i, j;
-
-  for (i = 0; i < length1; i++) {
-    for (j = 0; j < lengths2[i]; j++) {
-      if (links[i][j].fwd_pos_ties) {
-	Intlist_free(&(links[i][j].fwd_pos_ties));
-	Intlist_free(&(links[i][j].fwd_hit_ties));
-      }
-#ifndef PMAP
-      if (links[i][j].rev_pos_ties) {
-	Intlist_free(&(links[i][j].rev_pos_ties));
-	Intlist_free(&(links[i][j].rev_hit_ties));
-      }
-#endif
-    }
-  }
-
-  return;
-}
-#endif
-
-
 static void
 Linkmatrix_1d_free (struct Link_T ***links) {
   FREE((*links)[0]);
@@ -399,34 +369,23 @@ Linkmatrix_2d_free (struct Link_T ***links, int length1) {
 
 
 #ifdef DEBUG1
-#ifdef PMAP
-/* For PMAP, indexsize is in aa */
+#ifdef SEPARATE_FWD_REV
 static void
-Linkmatrix_print_fwd (struct Link_T **links, Chrpos_T **mappings, int *npositions,
-		      char *queryseq_ptr, int indexsize) {
-  int i, j, lastpos;
+Linkmatrix_print_both (struct Link_T **links, Chrpos_T **mappings, int length1,
+		       int *npositions, char *queryseq_ptr, int indexsize) {
+  int i, j;
   char *oligo;
-  Intlist_T p, q;
 
   oligo = (char *) CALLOC(indexsize+1,sizeof(char));
-  lastpos = length1 - indexsize;
-
-  for (i = 0; i <= lastpos; i++) {
+  for (i = 0; i <= length1-indexsize; i++) {
     strncpy(oligo,&(queryseq_ptr[i]),indexsize);
     printf("Querypos %d (%s, %d positions):",i,oligo,npositions[i]);
     for (j = 0; j < npositions[i]; j++) {
-#ifdef USE_SUBOPTIMAL_STARTS
-      printf(" %d.%u:%d(%d,%d)[%u..%u]",
-	     j,mappings[i][j],links[i][j].fwd_score,
-	     links[i][j].fwd_pos,links[i][j].fwd_hit,links[i][j].fwd_initposition,links[i][j].fwd_rootposition);
-      for (p = links[i][j].fwd_pos_ties, q = links[i][j].fwd_hit_ties; p != NULL; p = Intlist_next(p), q = Intlist_next(q)) {
-	printf(" TIE at %d,%d",Intlist_head(p),Intlist_head(q));
-      }
-#else
-      printf(" %d.%u:%d(%d,%d)[%u]",
+      printf(" %d.%u:%d(%d,%d)[%u]-%d(%d,%d)[%u]",
 	     j,mappings[i][j],links[i][j].fwd_score,
-	     links[i][j].fwd_pos,links[i][j].fwd_hit,links[i][j].fwd_rootposition);
-#endif
+	     links[i][j].fwd_pos,links[i][j].fwd_hit,links[i][j].fwd_tracei,
+	     links[i][j].rev_score,
+	     links[i][j].rev_pos,links[i][j].rev_hit,links[i][j].rev_tracei);
     }
     printf("\n");
   }
@@ -438,39 +397,24 @@ Linkmatrix_print_fwd (struct Link_T **links, Chrpos_T **mappings, int *nposition
 
 #else
 
+/* For PMAP, indexsize is in aa */
 static void
-Linkmatrix_print_both (struct Link_T **links, Chrpos_T **mappings, int length1,
-		       int *npositions, char *queryseq_ptr, int indexsize) {
-  int i, j;
+Linkmatrix_print_fwd (struct Link_T **links, Chrpos_T **mappings, int length1,
+		      int *npositions, char *queryseq_ptr, int indexsize) {
+  int i, j, lastpos;
   char *oligo;
-#ifdef USE_SUBOPTIMAL_STARTS
   Intlist_T p, q;
-#endif
 
   oligo = (char *) CALLOC(indexsize+1,sizeof(char));
-  for (i = 0; i <= length1-indexsize; i++) {
+  lastpos = length1 - indexsize;
+
+  for (i = 0; i <= lastpos; i++) {
     strncpy(oligo,&(queryseq_ptr[i]),indexsize);
     printf("Querypos %d (%s, %d positions):",i,oligo,npositions[i]);
     for (j = 0; j < npositions[i]; j++) {
-#ifdef USE_SUBOPTIMAL_STARTS
-      printf(" %d.%u:%d(%d,%d)[%u..%u]-%d(%d,%d)[%u..%u]",
-	     j,mappings[i][j],links[i][j].fwd_score,
-	     links[i][j].fwd_pos,links[i][j].fwd_hit,links[i][j].fwd_initposition,links[i][j].fwd_rootposition,
-	     links[i][j].rev_score,
-	     links[i][j].rev_pos,links[i][j].rev_hit,links[i][j].rev_initposition,links[i][j].rev_rootposition);
-      for (p = links[i][j].fwd_pos_ties, q = links[i][j].fwd_hit_ties; p != NULL; p = Intlist_next(p), q = Intlist_next(q)) {
-	printf(" FWD_TIE at %d,%d",Intlist_head(p),Intlist_head(q));
-      }
-      for (p = links[i][j].rev_pos_ties, q = links[i][j].rev_hit_ties; p != NULL; p = Intlist_next(p), q = Intlist_next(q)) {
-	printf(" REV_TIE at %d,%d",Intlist_head(p),Intlist_head(q));
-      }
-#else
-      printf(" %d.%u:%d(%d,%d)[%u]-%d(%d,%d)[%u]",
+      printf(" %d.%u:%d(%d,%d)[%u]",
 	     j,mappings[i][j],links[i][j].fwd_score,
-	     links[i][j].fwd_pos,links[i][j].fwd_hit,links[i][j].fwd_rootposition,
-	     links[i][j].rev_score,
-	     links[i][j].rev_pos,links[i][j].rev_hit,links[i][j].rev_rootposition);
-#endif
+	     links[i][j].fwd_pos,links[i][j].fwd_hit,links[i][j].fwd_tracei);
     }
     printf("\n");
   }
@@ -479,6 +423,7 @@ Linkmatrix_print_both (struct Link_T **links, Chrpos_T **mappings, int length1,
   FREE(oligo);
   return;
 }
+
 #endif
 #endif
 
@@ -551,7 +496,7 @@ best_path_dump_R (struct Link_T **links, Chrpos_T **mappings,
     if (fwdp) {
       querypos = links[prev_querypos][prevhit].fwd_pos;
       hit = links[prev_querypos][prevhit].fwd_hit;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     } else {
       querypos = links[prev_querypos][prevhit].rev_pos;
       hit = links[prev_querypos][prevhit].rev_hit;
@@ -576,7 +521,7 @@ best_path_dump_R (struct Link_T **links, Chrpos_T **mappings,
     }
     if (fwdp == true) {
       printf("%d,%d",querypos,links[querypos][hit].fwd_score);
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     } else {
       printf("%d,%d",querypos,links[querypos][hit].rev_score);
 #endif
@@ -587,7 +532,7 @@ best_path_dump_R (struct Link_T **links, Chrpos_T **mappings,
     if (fwdp) {
       querypos = links[prev_querypos][prevhit].fwd_pos;
       hit = links[prev_querypos][prevhit].fwd_hit;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     } else {
       querypos = links[prev_querypos][prevhit].rev_pos;
       hit = links[prev_querypos][prevhit].rev_hit;
@@ -600,7 +545,7 @@ best_path_dump_R (struct Link_T **links, Chrpos_T **mappings,
 }
 
 static void
-active_bounds_dump_R (unsigned int *minactive, unsigned int *maxactive,
+active_bounds_dump_R (Chrpos_T *minactive, Chrpos_T *maxactive,
 		      int querylength) {
   int querypos;
   bool printp = false;
@@ -633,91 +578,33 @@ active_bounds_dump_R (unsigned int *minactive, unsigned int *maxactive,
 }
 
 
-#define TEN_THOUSAND 10000.0
-#define HUNDRED_THOUSAND 100000.0
-#define ONE_MILLION 1000000.0
-
-
 #if 0
-/* Not used anymore */
-static int
-gendist_penalty (unsigned int diffdistance, int querydistance) {
-  int penalty;
-
-  /* Add 1 to get effect of querydistance multiplier below */
-  penalty = diffdistance/HUNDRED_THOUSAND + 1;
-  if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
-    return 0;			/* was penalty */
-#if 0
-  } else if (querydistance < 8) {
-    return penalty;
-#endif
-  } else {
-    penalty *= (querydistance/8) * (querydistance/8);
-    return penalty;
-  }
-}
-#endif
-
-
 #define diffdist_penalty_nosplicing(x) (x + 1)
 #define diffdist_penalty_splicing(x) (x/TEN_THOUSAND + 1)
+#endif
 
 
-/* querydistance already has indexsize_nt subtracted */
-static int
-querydist_penalty (int querydistance) {
 #ifdef PMAP
-  return querydistance/2;
+#define QUERYDIST_PENALTY_FACTOR 2
 #else
-  return querydistance/8;
+#define QUERYDIST_PENALTY_FACTOR 8
 #endif
-}
-
 
 #if 0
+/* querydistance already has indexsize_nt subtracted */
 static int
-diffdist_mismatch_penalty (int diffdistance, bool crossspeciesp) {
-  int penalty;
-
-  if (crossspeciesp == true) {
-    if (diffdistance <= 24) {
-      return (diffdistance+7)/2;
-    } else if (diffdistance <= 40) {
-      return (diffdistance+7)/2;
-    } else if (diffdistance <= 56) {
-      return (diffdistance+7);
-    } else {
-      return (diffdistance+7)*3/2;
-    }
-  } else {
+querydist_penalty (int querydistance) {
 #ifdef PMAP
-    if (diffdistance <= 24) {
-      penalty = (diffdistance+7)/4;
-    } else if (diffdistance <= 40) {
-      penalty = (diffdistance+7)/4;
-    } else if (diffdistance <= 56) {
-      penalty = (diffdistance+7)/2;
-    } else {
-      penalty = (diffdistance+7)*3/4;
-    }
-    return penalty;
+  return querydistance/2;
 #else
-    if (diffdistance <= 24) {
-      return (diffdistance+7)/8;
-    } else if (diffdistance <= 40) {
-      return (diffdistance+7)/4;
-    } else if (diffdistance <= 56) {
-      return (diffdistance+7)/2;
-    } else {
-      return (diffdistance+7)*3/4;
-    }
+  return querydistance/8;
 #endif
-  }
 }
 #endif
 
 
+
+
 /************************************************************************
  *  Procedures for finding canonical introns quickly
  ************************************************************************/
@@ -739,168 +626,6 @@ print_last_dinucl (int *last_dinucl, int genomiclength) {
 #endif
 
 
-#if 0
-/* A specialized Boyer-Moore algorithm */
-static void
-find_canonical_dinucleotides (int *lastGT, int *lastAG, 
-#ifndef PMAP
-			      int *lastCT, int *lastAC,
-#endif
-			      char *genomicuc_ptr, int genomiclength) {
-  int pos, GT = -1, AG = -1;
-#ifndef PMAP
-  int CT = -1, AC = -1;
-#endif
-  char c1, c2;
-
-  /* printf("%.*s\n",100,genomicuc_ptr); */
-
-  lastGT[0] = lastGT[1] = lastGT[2] = -1;
-  lastAG[0] = lastAG[1] = lastAG[2] = -1;
-#ifndef PMAP
-  lastCT[0] = lastCT[1] = lastCT[2] = -1;
-  lastAC[0] = lastAC[1] = lastAC[2] = -1;
-#endif
-
-  pos = 1;			/* Not 0, so we don't overwrite initial -1's */
-  c1 = genomicuc_ptr[pos+1];
-  while (pos <= genomiclength-4) {
-    if ((c2 = genomicuc_ptr[pos+2]) == 'T') {
-      if (c1 == 'G') {
-	GT = pos;
-#ifndef PMAP
-      } else if (c1 == 'C') {
-	CT = pos;
-#endif
-      }
-      
-      lastGT[pos] = lastGT[pos+1] = GT;
-      lastAG[pos+3] = lastAG[pos+4] = AG;
-#ifndef PMAP
-      lastCT[pos] = lastCT[pos+1] = CT;
-      lastAC[pos+3] = lastAC[pos+4] = AC;
-#endif
-
-      pos += 2;
-      c1 = genomicuc_ptr[pos+1];
-
-    } else {
-      if (c2 == 'G') {
-	if (c1 == 'A') {
-	  AG = pos + 3;
-	}
-#ifndef PMAP
-      } else if (c2 == 'C') {
-	if (c1 == 'A') {
-	  AC = pos + 3;
-	}
-#endif
-      }
-	
-      lastGT[pos] = GT;
-      lastAG[pos+3] = AG;
-#ifndef PMAP
-      lastCT[pos] = CT;
-      lastAC[pos+3] = AC;
-#endif
-
-      pos++;
-      c1 = c2;
-    }
-  }
-
-  /* pos is now either genomiclength-3 (one more dinucleotide) or genomiclength-2 (none) */
-  if (pos == genomiclength-3) {
-    if ((c2 = genomicuc_ptr[pos+2]) == 'T') {
-      if (c1 == 'G') {
-	GT = pos;
-#ifndef PMAP
-      } else if (c1 == 'C') {
-	CT = pos;
-#endif
-      }
-    } else {
-      if (c2 == 'G') {
-	if (c1 == 'A') {
-	  AG = pos + 3;
-	}
-#ifndef PMAP
-      } else if (c2 == 'C') {
-	if (c1 == 'A') {
-	  AC = pos + 3;
-	}
-#endif
-      }
-    }
-    
-    lastGT[pos] = GT;
-    lastAG[pos+3] = AG;
-#ifndef PMAP
-    lastCT[pos] = CT;
-    lastAC[pos+3] = AC;
-#endif
-  }
-
-  /* Fill in rest */
-  while (pos < genomiclength - 3 + SHIFT_EXTRA) {
-    lastGT[pos] = GT;
-    lastAG[pos+3] = AG;
-#ifndef PMAP
-    lastCT[pos] = CT;
-    lastAC[pos+3] = AC;
-#endif
-    pos++;
-  }
-
-
-  debug8(printf("Old GT\n"));
-  debug8(print_last_dinucl(lastGT,genomiclength));
-  debug8(printf("Old AG\n"));
-  debug8(print_last_dinucl(lastAG,genomiclength));
-  debug8(printf("Old AC\n"));
-  debug8(print_last_dinucl(lastAC,genomiclength));
-  debug8(printf("Old CT\n"));
-  debug8(print_last_dinucl(lastCT,genomiclength));
-
-  return;
-}
-#endif
-
-
-#if 0
-static void
-find_canonical_dinucleotides_hr (int *lastGT, int *lastAG, 
-#ifndef PMAP
-				 int *lastCT, int *lastAC,
-#endif
-				 Univcoord_T genomicstart, bool plusp,
-				 int genomiclength) {
-
-  Genome_last_donor_positions(lastGT,genomicstart,/*margin5*/3,/*margin3*/3,
-			      genomiclength,plusp);
-  Genome_last_acceptor_positions(lastAG,genomicstart,/*margin5*/3,/*margin3*/3,
-				 genomiclength,plusp);
-#ifndef PMAP
-  Genome_last_antidonor_positions(lastAC,genomicstart,/*margin5*/3,/*margin3*/3,
-				  genomiclength,plusp);
-  Genome_last_antiacceptor_positions(lastCT,genomicstart,/*margin5*/3,/*margin3*/3,
-				     genomiclength,plusp);
-#endif
-
-
-  debug8(printf("New GT\n"));
-  debug8(print_last_dinucl(lastGT,genomiclength));
-  debug8(printf("New AG\n"));
-  debug8(print_last_dinucl(lastAG,genomiclength));
-  debug8(printf("New AC\n"));
-  debug8(print_last_dinucl(lastAC,genomiclength));
-  debug8(printf("New CT\n"));
-  debug8(print_last_dinucl(lastCT,genomiclength));
-
-  return;
-}
-#endif
-
 
 #if 0
 static void
@@ -979,197 +704,31 @@ check_canonical_dinucleotides_hr (int *lastGT, int *lastAG,
 #endif
 
 
+/* assert(chrstart < chrend) */
+/* For plus, chrinit = chrstart, chrterm = chrend.  For minus, chrinit = (chrhigh - chroffset) - chrend, chrterm = (chrhigh - chroffset) - chrstart. */
 
 #if 0
-static int
-get_last (int *last_dinucl, int pos) {
-  int lastpos;
-  int i;
+/* Need this procedure because we are skipping some oligomers */
+static bool
+find_shifted_canonical (Chrpos_T leftpos, Chrpos_T rightpos, int querydistance, 
+			Chrpos_T (*genome_left_position)(Chrpos_T, Chrpos_T, Univcoord_T, Univcoord_T, bool),
+			Chrpos_T (*genome_right_position)(Chrpos_T, Chrpos_T, Univcoord_T, Univcoord_T, bool),
+			Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp, bool skip_repetitive_p) {
+  Chrpos_T leftdi, rightdi;
+  Chrpos_T last_leftpos, last_rightpos;
+  int shift, leftmiss, rightmiss;
+  Chrpos_T left_chrbound, right_chrbound;
+  
+  /* leftpos = prevposition + querydistance + indexsize_nt - 1; */
+  /* rightpos = position; */
 
-  if (pos < 0) {
-    return -1;
-  }
+  debug7(printf("Looking for shifted canonical at leftpos %u to rightpos %u, chroffset %u, chrhigh %u\n",
+		leftpos,rightpos,chroffset,chrhigh));
 
 #if 0
-  i = pos;
-  while (i >= 0 && last_dinucl[i] == 0) {
-    i--;
-  }
-  if (i < 0) {
-    lastpos = -1;
-  } else {
-    lastpos = last_dinucl[i];
-  }
-#else
-  i = pos;
-  while (last_dinucl[i] == 0) {
-    i--;
-  }
-  lastpos = last_dinucl[i];
-#endif
-
-
-#if 0
-  /* Fill in region for future use */
-  while (i <= pos) {
-    last_dinucl[i] = lastpos;
-    i++;
-  }
-#else
-  /* Fill in position future use */
-  last_dinucl[pos] = lastpos;
-#endif
-
-  return lastpos;
-}
-#endif
-
-
-#if 0
-/* Need this procedure because we are skipping some oligomers */
-static bool
-find_shifted_canonical_memoize (Chrpos_T leftpos, Chrpos_T rightpos,
-				int querydistance, int **last_leftdi, int **last_rightdi,
-				Chrpos_T (*genome_left_position)(Chrpos_T, Chrpos_T, Univcoord_T, Univcoord_T, bool),
-				Chrpos_T (*genome_right_position)(Chrpos_T, Chrpos_T, Univcoord_T, Univcoord_T, bool),
-				Univcoord_T genomicstart, Univcoord_T genomicend, bool plusp,
-				bool skip_repetitive_p) {
-  int leftdi, rightdi;
-  int shift, leftmiss, rightmiss;
-
-  /* leftpos = prevposition + querydistance + indexsize_nt - 1; */
-  /* rightpos = position; */
-
-  debug7(printf("Looking for shifted canonical at leftpos %d to rightpos %d at genomic %u..%u\n",
-		leftpos,rightpos,genomicstart,genomicend));
-
-#if 0
-  /* previously checked against genomiclength */
-  if (leftpos > genomiclength || rightpos > genomiclength) {
-    return false;
-  }
-#else
-  /* Checking just before call to genome_right_position */
-#endif
-
-  assert(leftpos < rightpos);
-  if (skip_repetitive_p == false) {
-    if ((Univcoord_T) rightpos >= genomicend) {
-      return false;
-    }
-
-    if (*last_leftdi == NULL) {
-      debug7(printf("Allocating %d ints for leftdi\n",genomicend-genomicstart+SHIFT_EXTRA+1));
-      *last_leftdi = (int *) CALLOC(genomicend-genomicstart+SHIFT_EXTRA+1,sizeof(int));
-    }
-    if ((*last_leftdi)[leftpos] == 0) {
-      (*last_leftdi)[leftpos] = (*genome_left_position)(leftpos,genomicstart,genomicend,/*pos5*/3,plusp);
-    }
-
-    if (*last_rightdi == NULL) {
-      debug7(printf("Allocating %d ints for rightdi\n",genomicend-genomicstart+SHIFT_EXTRA+1));
-      *last_rightdi = (int *) CALLOC(genomicend-genomicstart+SHIFT_EXTRA+1,sizeof(int));
-    }
-    if ((*last_rightdi)[rightpos] == 0) {
-      (*last_rightdi)[rightpos] = (*genome_right_position)(rightpos,genomicstart,genomicend,/*pos5*/3,plusp);
-    }
-
-    assert((*last_leftdi)[leftpos] != 0);
-    assert((*last_rightdi)[rightpos] != 0);
-
-    return (leftpos == (*last_leftdi)[leftpos] && rightpos == (*last_rightdi)[rightpos]);
-  }
-
-  /* Allow canonical to be to right of match */
-  leftpos += SHIFT_EXTRA;
-  rightpos += SHIFT_EXTRA;
-  debug7(printf("after shift, leftpos = %u, rightpos = %u\n",leftpos,rightpos));
-
-  shift = 0;
-  while (shift <= querydistance + SHIFT_EXTRA + SHIFT_EXTRA) {
-
-    if (leftpos < 0) {
-      return false;
-#if 0
-    } else if (rightpos < 0) {
-      /* Shouldn't need to check if leftpos >= 0 and rightpos >= leftpos, in the other two conditions) */
-      return false;
-#endif
-    } else if ((Univcoord_T) rightpos >= genomicend) {
-      return false;
-    } else if (leftpos > rightpos) {
-      return false;
-    }
-    assert(rightpos >= 0);
-
-    
-    if ((*last_leftdi)[leftpos] == 0) {
-      (*last_leftdi)[leftpos] = (*genome_left_position)(leftpos,genomicstart,genomicend,/*pos5*/3,plusp);
-    }
-    assert((*last_leftdi)[leftpos] != 0);
-    if ((leftdi = (*last_leftdi)[leftpos]) < 0) {
-      debug7(printf("\n"));
-      return false;
-    } else {
-      leftmiss = leftpos - leftdi;
-    }
-
-    if ((*last_rightdi)[rightpos] == 0) {
-      (*last_rightdi)[rightpos] = (*genome_right_position)(rightpos,genomicstart,genomicend,/*pos5*/3,plusp);
-    }
-    assert((*last_rightdi)[rightpos] != 0);
-    if ((rightdi = (*last_rightdi)[rightpos]) < 0) {
-      debug7(printf("\n"));
-      return false;
-    } else {
-      rightmiss = rightpos - rightdi;
-    }
-
-    debug7(printf("shift %d/left %d (miss %d)/right %d (miss %d)\n",shift,leftpos,leftmiss,rightpos,rightmiss));
-    if (leftmiss == rightmiss) {  /* was leftmiss == 0 && rightmiss == 0, which doesn't allow for a shift */
-      debug7(printf(" => Success\n\n"));
-      return true;
-    } else if (leftmiss >= rightmiss) {
-      shift += leftmiss;
-      leftpos -= leftmiss;
-      rightpos -= leftmiss;
-    } else {
-      shift += rightmiss;
-      leftpos -= rightmiss;
-      rightpos -= rightmiss;
-    }
-  }
-
-  debug7(printf("\n"));
-  return false;
-}
-#endif
-
-
-/* assert(chrstart < chrend) */
-/* For plus, chrinit = chrstart, chrterm = chrend.  For minus, chrinit = (chrhigh - chroffset) - chrend, chrterm = (chrhigh - chroffset) - chrstart. */
-
-/* Need this procedure because we are skipping some oligomers */
-static bool
-find_shifted_canonical (Chrpos_T leftpos, Chrpos_T rightpos, int querydistance, 
-			Chrpos_T (*genome_left_position)(Chrpos_T, Chrpos_T, Univcoord_T, Univcoord_T, bool),
-			Chrpos_T (*genome_right_position)(Chrpos_T, Chrpos_T, Univcoord_T, Univcoord_T, bool),
-			Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp, bool skip_repetitive_p) {
-  Chrpos_T leftdi, rightdi;
-  Chrpos_T last_leftpos, last_rightpos;
-  int shift, leftmiss, rightmiss;
-  Chrpos_T left_chrbound, right_chrbound;
-  
-  /* leftpos = prevposition + querydistance + indexsize_nt - 1; */
-  /* rightpos = position; */
-
-  debug7(printf("Looking for shifted canonical at leftpos %u to rightpos %u, chroffset %u, chrhigh %u\n",
-		leftpos,rightpos,chroffset,chrhigh));
-
-#if 0
-  /* previously checked against genomiclength */
-  if (leftpos > genomiclength || rightpos > genomiclength) {
-    return false;
+  /* previously checked against genomiclength */
+  if (leftpos > genomiclength || rightpos > genomiclength) {
+    return false;
   }
 #else
   /* Checking just before call to genome_right_position */
@@ -1238,7 +797,7 @@ find_shifted_canonical (Chrpos_T leftpos, Chrpos_T rightpos, int querydistance,
     last_leftpos = (*genome_left_position)(leftpos,left_chrbound,chroffset,chrhigh,plusp);
     debug7(printf("last_leftpos %u\n",last_leftpos));
     assert(last_leftpos != 0U);
-    if ((leftdi = last_leftpos) == -1U) {
+    if ((leftdi = last_leftpos) == -1) {
       debug7(printf("\n"));
       return false;
     } else {
@@ -1248,7 +807,7 @@ find_shifted_canonical (Chrpos_T leftpos, Chrpos_T rightpos, int querydistance,
     last_rightpos = (*genome_right_position)(rightpos,right_chrbound,chroffset,chrhigh,plusp);
     debug7(printf("last_rightpos %u\n",last_rightpos));
     assert(last_rightpos != 0U);
-    if ((rightdi = last_rightpos) == -1U) {
+    if ((rightdi = last_rightpos) == -1) {
       debug7(printf("\n"));
       return false;
     } else {
@@ -1275,80 +834,158 @@ find_shifted_canonical (Chrpos_T leftpos, Chrpos_T rightpos, int querydistance,
   debug7(printf("\n"));
   return false;
 }
+#endif
 
 
-/* For PMAP, indexsize is in aa. */
-static void
-score_querypos_general (Link_T currlink, int querypos,
-			int querystart, int queryend, Chrpos_T position,
-			struct Link_T **links, Chrpos_T **mappings,
-			int **active, int *firstactive,
-#ifdef USE_SUBOPTIMAL_STARTS
-			int *fwd_initposition_bestscore, int *fwd_initposition_bestpos, int *fwd_initposition_besthit,
-			int *rev_initposition_bestscore, int *rev_initposition_bestpos, int *rev_initposition_besthit,
-#endif
-#ifdef BLUETARP
-			int *nactive,
-			int grand_fwd_querypos, int grand_fwd_hit,
-#ifndef PMAP
-			int grand_rev_querypos, int grand_rev_hit,
-#endif
-#endif
 #if 0
-			int *lastGT, int *lastAG,
-#ifndef PMAP
-			int *lastCT, int *lastAC, 
+/* General case for ranges in score_querypos */
+while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + indexsize_nt <= position) {
+  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+  prevlink = &(links[prev_querypos][prevhit]);
+  
+  gendistance = position - prevposition - indexsize_nt;
+  diffdistance = abs(gendistance - querydistance);
+
+  if (diffdistance < maxintronlen) {
+    if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
+      debug9(canonicalsgn = 9);
+      fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH;
+#ifdef PMAP
+      if (diffdistance % 3 != 0) {
+	fwd_score -= NONCODON_INDEL_PENALTY;
+      }
 #endif
+    } else if (near_end_p == false && prevlink->fwd_consecutive < EXON_DEFN) {
+      debug9(canonicalsgn = 0);
+      if (splicingp == true) {
+	fwd_score = prevlink->fwd_score - (diffdistance/TEN_THOUSAND + 1) - querydist_penalty - NINTRON_PENALTY_MISMATCH;
+      } else {
+	fwd_score = prevlink->fwd_score - (diffdistance/ONE + 1) - querydist_penalty - NINTRON_PENALTY_MISMATCH;
+      }
+
+    } else if (splicingp == false) {
+      debug9(canonicalsgn = 0);
+      fwd_score = prevlink->fwd_score - (diffdistance/ONE + 1) - querydist_penalty;
+
+    } else if (use_shifted_canonical_p == true) {
+      leftpos = prevposition + querydistance - 1;
+      /* printf("leftpos %d, last_leftpos %d, rightpos %d\n",leftpos,last_leftpos,rightpos); */
+      if (leftpos == last_leftpos) {
+	canonicalp = last_canonicalp;
+      } else {
+	debug7(printf("Calling find_shift_canonical fwd\n"));
+	canonicalp = find_shifted_canonical(leftpos,rightpos,querydistance-indexsize_nt,
+					    /* &lastGT,&lastAG, */
+					    Genome_prev_donor_position,Genome_prev_acceptor_position,
+					    chroffset,chrhigh,plusp,skip_repetitive_p);
+	/* And need to check for shift_canonical_rev */
+
+	last_leftpos = leftpos;
+	last_canonicalp = canonicalp;
+      }
+      if (canonicalp == true) {
+	debug9(canonicalsgn = +1);
+	fwd_score = prevlink->fwd_score - (diffdistance/TEN_THOUSAND + 1) - querydist_penalty;
+      } else {
+	debug9(canonicalsgn = 0);
+	fwd_score = prevlink->fwd_score - (diffdistance/TEN_THOUSAND + 1) - querydist_penalty - NINTRON_PENALTY_MISMATCH;
+      }
+
+    } else {
+      debug9(canonicalsgn = +1);
+      fwd_score = prevlink->fwd_score - (diffdistance/TEN_THOUSAND + 1) - querydist_penalty;
+    }
+
+    debug9(printf("\tD. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+		  prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
+		  prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
+		  best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
+		  gendistance,querydistance,canonicalsgn));
+	    
+    /* Allow ties, which should favor shorter intron */
+    if (fwd_score >= best_fwd_score) {
+      if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
+	best_fwd_consecutive = prevlink->fwd_consecutive + (querydistance + indexsize_nt);
+	/* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
+      } else {
+	best_fwd_consecutive = 0;
+	/* best_fwd_rootnlinks = 1; */
+      }
+      best_fwd_score = fwd_score;
+      best_fwd_prevpos = prev_querypos;
+      best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+      best_fwd_tracei = ++*fwd_tracei;
+      best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
+      best_fwd_intronnrev = prevlink->fwd_intronnrev;
+      best_fwd_intronnunk = prevlink->fwd_intronnunk;
+      switch (canonicalsgn) {
+      case 1: best_fwd_intronnfwd++; break;
+      case 0: best_fwd_intronnunk++; break;
+      }
 #endif
-			Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
-			int indexsize, Intlist_T processed, int sufflookback, int nsufflookback, int maxintronlen, 
-			bool localp, bool skip_repetitive_p, bool use_shifted_canonical_p) {
+      debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
+    } else {
+      debug9(printf(" => Loses to %d\n",best_fwd_score));
+    }
+  }
+
+  prevhit = active[prev_querypos][prevhit];
+ }
+#endif
+
+
+static void
+score_querypos_lookback (
+#ifdef DEBUG9
+			 int *fwd_tracei,
+#endif
+			 Link_T currlink, int querypos,
+			 int querystart, int queryend, unsigned int position,
+			 struct Link_T **links, Chrpos_T **mappings,
+			 int **active, int *firstactive,
+			 Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			 int indexsize, Intlist_T processed, int sufflookback, int nsufflookback, int maxintronlen, 
+			 bool anchoredp, bool localp, bool splicingp, bool skip_repetitive_p,
+			 bool use_canonical_p, int non_canonical_penalty) {
   Link_T prevlink;
-#ifdef USE_SUBOPTIMAL_STARTS
-  Intlist_T fwd_prevposes = NULL, fwd_prevhits = NULL, fwd_scores = NULL,
-    rev_prevposes = NULL, rev_prevhits = NULL, rev_scores = NULL, p, q, r;
-  int best_fwd_initposition = -1;
-#else
   Intlist_T p;
-#endif
 
   int best_fwd_consecutive = indexsize*NT_PER_MATCH;
-  int best_fwd_score = 0, fwd_score;
-  int best_fwd_prevpos = -1;	/* querypos */
-  int best_fwd_prevhit = -1;
-  int best_fwd_intronnfwd = 0, best_fwd_intronnrev = 0, best_fwd_intronnunk = 0;
   int best_fwd_rootposition = position;
   /* int best_fwd_rootnlinks = 1; */
-#ifndef PMAP
-  int best_rev_consecutive = indexsize*NT_PER_MATCH;
-  int best_rev_score = 0, rev_score;
-  int best_rev_prevpos = -1;	/* querypos */
-  int best_rev_prevhit = -1;
-  int best_rev_intronnfwd = 0, best_rev_intronnrev = 0, best_rev_intronnunk = 0;
-  int best_rev_rootposition = position;
-#ifdef USE_SUBOPTIMAL_STARTS
-  int best_rev_initposition = -1;
-#endif
-  /* int best_rev_rootnlinks = 1; */
+  int best_fwd_score = 0, fwd_score;
+  int best_fwd_prevpos = -1, best_fwd_prevhit = -1;
+#ifdef DEBUG9
+  int best_fwd_tracei;
+  int best_fwd_intronnfwd = 0, best_fwd_intronnrev = 0, best_fwd_intronnunk = 0;
+  int canonicalsgn;
 #endif
   bool adjacentp = false, donep;
   int prev_querypos, prevhit;
   Chrpos_T prevposition, gendistance;
-  int querydistance, diffdistance, lookback, nlookback, nseen, indexsize_nt;
-  int leftpos, last_leftpos, rightpos;
-  bool canonicalp, last_canonicalp = false;
-  int canonicalsgn;
+  Chrpos_T leftpos, last_leftpos, rightpos;
+  Univcoord_T donorpos, acceptorpos;
+  Univcoord_T prevpos, currpos;
+  int querydistance, diffdistance, lookback, nlookback, nseen, indexsize_nt, indexsize_query;
+  /* int querydist_penalty; */
+  int querydist_credit;
   int enough_consecutive;
-  bool near_end_p;
+  /* bool near_end_p; */
+  bool canonicalp;
+  double donor_score, acceptor_score, antidonor_score, antiacceptor_score;
 
 #ifdef PMAP
-  indexsize_nt = indexsize*3;
+  indexsize_nt = indexsize*3;	/* Use when evaluating across genomic positions */
 #else
   indexsize_nt = indexsize;
 #endif
+  indexsize_query = indexsize;	/* Use when evaluating across query positions */
+
 
   enough_consecutive = 32;
 
+#if 0
   if (querypos < querystart + NEAR_END_LENGTH) {
     near_end_p = true;
   } else if (querypos > queryend - NEAR_END_LENGTH) {
@@ -1356,7 +993,7 @@ score_querypos_general (Link_T currlink, int querypos,
   } else {
     near_end_p = false;
   }
-
+#endif
 
   /* A. Evaluate adjacent position (at last one processed) */
   if (processed != NULL) {
@@ -1372,658 +1009,374 @@ score_querypos_general (Link_T currlink, int querypos,
 	prevlink = &(links[prev_querypos][prevhit]);
 	best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
 	best_fwd_rootposition = prevlink->fwd_rootposition;
-#ifdef USE_SUBOPTIMAL_STARTS
-	best_fwd_initposition = prevlink->fwd_initposition;
-#endif
 	/* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
-	best_fwd_score = prevlink->fwd_score + querydistance;
-#ifndef PMAP
-	best_rev_consecutive = prevlink->rev_consecutive + querydistance;
-	best_rev_rootposition = prevlink->rev_rootposition;
-#ifdef USE_SUBOPTIMAL_STARTS
-	best_rev_initposition = prevlink->rev_initposition;
-#endif
-	/* best_rev_rootnlinks = prevlink->rev_rootnlinks + 1; */
-	best_rev_score = prevlink->rev_score + querydistance;
-#endif
+	best_fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH*querydistance;
 
-	best_fwd_prevpos = 
-#ifndef PMAP
-	  best_rev_prevpos = 
-#endif
-	  prev_querypos;
-	best_fwd_prevhit = 
-#ifndef PMAP
-	  best_rev_prevhit = 
-#endif
-	  prevhit;
+	best_fwd_prevpos = prev_querypos;
+	best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	best_fwd_tracei = prevlink->fwd_tracei;
 	best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
 	best_fwd_intronnrev = prevlink->fwd_intronnrev;
 	best_fwd_intronnunk = prevlink->fwd_intronnunk;
-#ifndef PMAP
-	best_rev_intronnfwd = prevlink->rev_intronnfwd;
-	best_rev_intronnrev = prevlink->rev_intronnrev;
-	best_rev_intronnunk = prevlink->rev_intronnunk;
 #endif
 	adjacentp = true;
-#ifdef PMAP
-	debug9(printf("\tA. Adjacent qpos %d,%d at %ux%d (scores = %d -> %d, consec = %d (from %d), intr = %d-%d-%d)\n",
+
+	debug9(printf("\tA. Adjacent qpos %d,%d at %ux%d (scores = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d)\n",
 		      prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],prevlink->fwd_score,
-		      best_fwd_score,best_fwd_consecutive,best_fwd_rootposition,
+		      best_fwd_score,best_fwd_consecutive,best_fwd_tracei,
 		      best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk));
-#else
-	debug9(printf("\tA. Adjacent qpos %d,%d at %ux%d (scores = %d/%d -> %d/%d, consec = %d/%d (from %d/%d), intr = %d-%d-%d/%d-%d-%d)\n",
-		      prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],prevlink->fwd_score,prevlink->rev_score,
-		      best_fwd_score,best_rev_score,best_fwd_consecutive,best_rev_consecutive,best_fwd_rootposition,best_rev_rootposition,
-		      best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-		      best_rev_intronnfwd,best_rev_intronnrev,best_rev_intronnunk));
-#endif
 	prevhit = -1;		/* Exit loop */
       } else {
 	prevhit = active[prev_querypos][prevhit];
       }
     }
 
-#ifdef USE_SUBOPTIMAL_STARTS
-    /* Just push one for all adjacent positions */
-    if (best_fwd_prevhit >= 0) {
-      fwd_prevposes = Intlist_push(fwd_prevposes,best_fwd_prevpos);
-      fwd_prevhits = Intlist_push(fwd_prevhits,best_fwd_prevhit);
-      fwd_scores = Intlist_push(fwd_scores,best_fwd_score);
-    }
-#ifndef PMAP
-    if (best_rev_prevhit >= 0) {
-      rev_prevposes = Intlist_push(rev_prevposes,best_rev_prevpos);
-      rev_prevhits = Intlist_push(rev_prevhits,best_rev_prevhit);
-      rev_scores = Intlist_push(rev_scores,best_rev_score);
-    }
-#endif
-#endif
   }
 
+  if (best_fwd_consecutive < enough_consecutive) {
 
-#if 0
-  /* AA. Evaluate querypos - 3 (for wobble) */
-  if (adjacentp == false && querypos >= 3) {
-    prevhit = firstactive[querypos-3];
-    while (prevhit != -1 && (prevposition = mappings[querypos-3][prevhit]) + NT_PER_CODON <= position) {
-      if (prevposition + NT_PER_CODON == position) {
-	prevlink = &(links[querypos-3][prevhit]);
-	best_fwd_consecutive = prevlink->fwd_consecutive + NT_PER_CODON;
-	best_fwd_rootposition = prevlink->fwd_rootposition;
-#ifdef USE_SUBOPTIMAL_STARTS
-	best_fwd_initposition = prevlink->fwd_initposition;
-#endif
-	/* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
-	best_fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_CODON;
-	best_rev_consecutive = prevlink->rev_consecutive + NT_PER_CODON;
-	best_rev_rootposition = prevlink->rev_rootposition;
-#ifdef USE_SUBOPTIMAL_STARTS
-	best_rev_initposition = prevlink->rev_initposition;
-#endif
-	/* best_rev_rootnlinks = prevlink->rev_rootnlinks + 1; */
-	best_rev_score = prevlink->rev_score + CONSEC_POINTS_PER_CODON;
+    /* D. Evaluate for mismatches (all other previous querypos) */
+    /* Set parameters */
+    if (adjacentp == true) {
+      /* Look not so far back */
+      nlookback = 1;
+      lookback = sufflookback/2;
+    } else {
+      /* Look farther back */
+      nlookback = nsufflookback;
+      lookback = sufflookback;
+    }
 
-	best_fwd_prevpos = best_rev_prevpos = querypos-3;
-	best_fwd_prevhit = best_rev_prevhit = prevhit;
-	best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
-	best_fwd_intronnrev = prevlink->fwd_intronnrev;
-	best_fwd_intronnunk = prevlink->fwd_intronnunk;
-	best_rev_intronnfwd = prevlink->rev_intronnfwd;
-	best_rev_intronnrev = prevlink->rev_intronnrev;
-	best_rev_intronnunk = prevlink->rev_intronnunk;
-	adjacentp = true;
+    last_leftpos = 0;		/* if use_shifted_canonical_p is true */
+    rightpos = position;	/* if use_shifted_canonical_p is true */
 
-	debug9(printf("\tAA. Codon-adjacent qpos %d,%d at %u (scores = %d/%d -> %d/%d, consec = %d/%d (from %d/%d), intr = %d-%d-%d/%d-%d-%d)\n",
-		      querypos-3,prevhit,position - NT_PER_CODON,prevlink->fwd_score,prevlink->rev_score,
-		      best_fwd_score,best_rev_score,best_fwd_consecutive,best_rev_consecutive,best_fwd_rootposition,best_rev_rootposition,
-		      best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-		      best_rev_intronnfwd,best_rev_intronnrev,best_rev_intronnunk));
-	prevhit = -1; /* Exit loop */
-      } else {
-	prevhit = active[querypos-3][prevhit];
+    donep = false;
+    nseen = 0;
+
+    p = processed;
+    if (anchoredp && querypos - indexsize_query <= querystart) {
+      /* Allow close prevpositions that overlap with anchor */
+      /* Can give rise to false positives, and increases amount of dynamic programming work */
+    } else if (0 && anchoredp && querypos == queryend) {
+      /* Test first position */
+    } else {
+      while (p != NULL && (prev_querypos = Intlist_head(p)) > querypos - indexsize_query) {
+	debug9(printf("Skipping prev_querypos %d, because too close\n",prev_querypos));
+	p = Intlist_next(p);
       }
     }
-  }
-#endif
 
-
-  if (best_fwd_consecutive < enough_consecutive
-#ifndef PMAP
-      || best_rev_consecutive < enough_consecutive
-#endif
-      ) {
-
-#ifdef BLUETARP
-    /* It looks like case D can cover cases B and C */
-
-    /* B. Evaluate for intron (at querypos - indexsize).  
-       Don't update best_consecutive, because a reasonable alternative 
-       might be a mismatch, regardless of the quality of the intron. */
+    for ( ; p != NULL && best_fwd_consecutive < enough_consecutive && donep == false;
+	 p = Intlist_next(p), nseen++) {
+      prev_querypos = Intlist_head(p);
 
 #ifdef PMAP
-    /* Use indexsize, not indexsize_nt */
-    intronpos_lower = querypos - indexsize - 1;
-    intronpos_upper = querypos - indexsize;
+      querydistance = (querypos - prev_querypos)*3;
 #else
-    intronpos_lower = intronpos_upper = querypos - indexsize_nt;
+      querydistance = querypos - prev_querypos;
 #endif
-    if (intronpos_lower < 0) {
-      intronpos_lower = 0;
-    }
 
-    for (prev_querypos = intronpos_upper; prev_querypos >= intronpos_lower; --prev_querypos) {
-      if (0 && skip_repetitive_p && nactive[prev_querypos] > MAX_NACTIVE) { /* Turn off.  If too many active, then firstactive will be -1 */
-	debug9(printf("Not evaluating for intron because nactive at prev_querypos %d is %d > max %d\n",
-		      prev_querypos,nactive[prev_querypos],MAX_NACTIVE));
-	prevhit = -1;
+#ifdef USE_QUERYDIST_CREDIT
+      if (querydistance <= indexsize_nt) {
+	querydist_credit = CONSEC_POINTS_PER_MATCH*querydistance;
       } else {
-#ifdef PMAP
-	querydistance = (querypos - prev_querypos)*3 - indexsize_nt
+	querydist_credit = CONSEC_POINTS_PER_MATCH*indexsize_nt - querydistance/QUERYDIST_PENALTY_FACTOR;
+      }
 #else
-	querydistance = (querypos - prev_querypos) - indexsize_nt;
+      /* Actually a querydist_penalty */
+      querydist_credit = -querydistance/indexsize_nt;
 #endif
-	prevhit = firstactive[prev_querypos];
+
+      if (nseen > nlookback && querydistance - indexsize_nt > lookback) {
+	donep = true;
       }
 
-      debug9(printf("Evaluating for intron at prev_querypos %d, prevhit %d\n",prev_querypos,prevhit));
-      while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + indexsize_nt <= position) {
-	prevlink = &(links[prev_querypos][prevhit]);
-	if (1 /* want to find canonicalsgn for short exons */ || prevlink->fwd_consecutive > EXON_DEFN
-#ifndef PMAP
-	    || prevlink->rev_consecutive > EXON_DEFN
-#endif
-	    ) {
-	  gendistance = position - prevposition - indexsize_nt;
-	  diffdistance = abs(gendistance - querydistance);
-	
-	  if (splicingp == false) {
-	    canonicalsgn = 0;
-	  } else if (diffdistance > maxintronlen) {
-	    canonicalsgn = 0;
-	  } else if (find_shifted_canonical(/*leftpos*/prevposition + querydistance + indexsize_nt - 1,
-					    /*rightpos*/position,querydistance,
-					    /* &lastGT,&lastAG, */
-					    Genome_prev_donor_position,Genome_prev_acceptor_position,
-					    chroffset,chrhigh,plusp,skip_repetitive_p) == true) {
-	    canonicalsgn = +1;
-#ifndef PMAP
-	  } else if (find_shifted_canonical(/*leftpos*/prevposition + querydistance + indexsize_nt - 1,
-					    /*rightpos*/position,querydistance,
-					    /* &lastCT,&lastAC, */
-					    Genome_prev_antiacceptor_position,Genome_prev_antidonor_position,
-					    chroffset,chrhigh,plusp,skip_repetitive_p) == true) {
-	    canonicalsgn = -1;
-#endif
-	  } else {
-	    canonicalsgn = 0;
+      if ((prevhit = firstactive[prev_querypos]) != -1) {
+	/* querydist_penalty = (querydistance - indexsize_nt)/QUERYDIST_PENALTY_FACTOR; */
+
+	/* Range 1: From Infinity to maxintronlen */
+	if (splicingp == true) {
+	  /* This is equivalent to diffdistance >= maxintronlen, where
+	     diffdistance = abs(gendistance - querydistance) and
+	     gendistance = (position - prevposition - indexsize_nt) */
+	  while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + maxintronlen + querydistance <= position) {
+	    /* Skip */
+	    /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	    prevhit = active[prev_querypos][prevhit];
 	  }
+	}
 
-	  /* Need to both compensate for the oligomer lost across
-	     the intron and penalize for each additional intron */
-#ifdef PMAP
-	  fwd_score = prevlink->fwd_score + querydistance + indexsize_nt;
-#else
-	  fwd_score = prevlink->fwd_score + querydistance + indexsize_nt;
-	  rev_score = prevlink->rev_score + querydistance + indexsize_nt;
-#endif
-	
-	  /* Penalty for introns. */
-	  if (diffdistance > maxintronlen) {
-	    fwd_gendistance_penalty = 
-#ifndef PMAP
-	      rev_gendistance_penalty = 
-#endif
-	      INFINITE;
-	  } else {
-	    if (canonicalsgn == 0) {
-	      /* Extra penalty for known non-canonical intron */
-	      fwd_gendistance_penalty = 
-#ifndef PMAP
-		rev_gendistance_penalty = 
-#endif
-		gendist_penalty(diffdistance,querydistance/*-indexsize_nt*/) + INTRON_PENALTY_UNKNOWN;
-	    } else if (canonicalsgn == +1) {
-	      /* Don't penalize for intron */
-	      fwd_gendistance_penalty = gendist_penalty(diffdistance,querydistance/*-indexsize_nt*/) /* - INTRON_REWARD_CONSISTENT*/;
-#ifndef PMAP
-	      rev_gendistance_penalty = gendist_penalty(diffdistance,querydistance/*-indexsize_nt*/) + INTRON_PENALTY_INCONSISTENT;
-#endif
-#ifndef PMAP
-	    } else if (canonicalsgn == -1) {
-	      fwd_gendistance_penalty = gendist_penalty(diffdistance,querydistance) + INTRON_PENALTY_INCONSISTENT;
-	      /* Don't penalize for intron */
-	      rev_gendistance_penalty = gendist_penalty(diffdistance,querydistance) /* - INTRON_REWARD_CONSISTENT*/;
-#endif
-	    }
-	  }
-	  fwd_score -= fwd_gendistance_penalty;
-#ifndef PMAP
-	  rev_score -= rev_gendistance_penalty;
-#endif
+	/* Range 2: From maxintronlen to (prev_querypos + EQUAL_DISTANCE_NOT_SPLICING) */
+	/* This is equivalent to +diffdistance > EQUAL_DISTANCE_NOT_SPLICING */
+	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + EQUAL_DISTANCE_NOT_SPLICING + querydistance < position) {
+	  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	  prevlink = &(links[prev_querypos][prevhit]);
 
-	  /* Allow ties, which should favor shorter intron */
-	  if (fwd_score >= best_fwd_score) {
-	    best_fwd_consecutive = indexsize_nt;
-	    best_fwd_rootposition = position;
-	    /* best_fwd_rootnlinks = 1; */
-	    /* best_fwd_score = fwd_score; -- Put below so debug9 works */
-	    best_fwd_prevpos = prev_querypos;
-	    best_fwd_prevhit = prevhit;
-	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
-	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
-	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
-	    switch (canonicalsgn) {
-	    case 1: best_fwd_intronnfwd++; break;
-	    case -1: best_fwd_intronnrev++; break;
-	    case 0: best_fwd_intronnunk++; break;
-	    }
-	  }
+	  gendistance = position - prevposition;
+	  assert(gendistance > querydistance); /* True because gendistance > EQUAL_DISTANCE_NOT_SPLICING + querydistance */
+	  diffdistance = gendistance - querydistance; /* No need for abs() */
 
-#ifndef PMAP
-	  /* Allow ties, which should favor shorter intron */
-	  if (rev_score >= best_rev_score) {
-	    best_rev_consecutive = indexsize_nt;
-	    best_rev_rootposition = position;
-	    /* best_rev_rootnlinks = 1; */
-	    /* best_rev_score = rev_score; -- Put below so debug9 works */
-	    best_rev_prevpos = prev_querypos;
-	    best_rev_prevhit = prevhit;
-	    best_rev_intronnfwd = prevlink->rev_intronnfwd;
-	    best_rev_intronnrev = prevlink->rev_intronnrev;
-	    best_rev_intronnunk = prevlink->rev_intronnunk;
-	    switch (canonicalsgn) {
-	    case 1: best_rev_intronnfwd++; break;
-	    case -1: best_rev_intronnrev++; break;
-	    case 0: best_rev_intronnunk++; break;
-	    }
+	  fwd_score = prevlink->fwd_score + querydist_credit /*- querydist_penalty*/;
+	  if (splicingp == true) {
+	    fwd_score -= (diffdistance/TEN_THOUSAND + 1);
+	  } else {
+	    fwd_score -= (diffdistance/ONE + 1);
 	  }
-#endif
-
-#ifdef PMAP
-	  debug9(printf("\tB. Intron qpos %d,%d at %ux%d (scores = %d -> %d, consec = %d (from %d), intr = %d-%d-%d, gendist %u, pen %d)",
-			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_rootposition,
-			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-			gendistance,fwd_gendistance_penalty));
-#else
-	  debug9(printf("\tB. Intron qpos %d,%d at %ux%d (scores = %d/%d -> %d/%d, consec = %d/%d (from %d/%d), intr = %d-%d-%d/%d-%d-%d, gendist %u, pen %d/%d)",
-			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			prevlink->fwd_score,prevlink->rev_score,fwd_score,rev_score,
-			prevlink->fwd_consecutive,prevlink->rev_consecutive,prevlink->fwd_rootposition,prevlink->rev_rootposition,
-			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-			best_rev_intronnfwd,best_rev_intronnrev,best_rev_intronnunk,
-			gendistance,fwd_gendistance_penalty,rev_gendistance_penalty));
-#endif
-	  debug9({
-	    printf(" =>");
-	    if (fwd_score > best_fwd_score) {
-	      printf(" Best fwd at %d",fwd_score);
-	    } else {
-	      printf(" Fwd loses to %d",best_fwd_score);
-	    }
-#ifndef PMAP
-	    if (rev_score > best_rev_score) {
-	      printf(" Best rev at %d",rev_score);
-	    } else {
-	      printf(" Rev loses to %d\n",best_rev_score);
-	    }
-#endif
-	    printf("\n");
-	  });
-	}
-
-	/* Put these down here so debug9 works */
-	if (fwd_score > best_fwd_score) {
-	  best_fwd_score = fwd_score;
-	}
-#ifndef PMAP
-	if (rev_score > best_rev_score) {
-	  best_rev_score = rev_score;
-	}
-#endif
-	prevhit = active[prev_querypos][prevhit];
-      }
-    }
-
-#endif /* bluetarp */
 
+	  if (0 && /*near_end_p == false &&*/ prevlink->fwd_consecutive < EXON_DEFN) {
+	    /* Misses short exons */
+	    debug9(canonicalsgn = 0);
+	    fwd_score -= NINTRON_PENALTY_MISMATCH;
 
-#ifdef BLUETARP
-    /* It looks like case D can cover cases B and C */
+	  } else if (use_canonical_p == true) {
 
-    /* C (fwd). Look back at grand querypos and hit */
-    debug9(printf("\tGrand fwd querypos is %d,%d at position %u\n",
-		  grand_fwd_querypos,grand_fwd_hit,grand_fwd_hit >= 0 ? mappings[grand_fwd_querypos][grand_fwd_hit] : 0));
-    if (grand_fwd_querypos > 0 && grand_fwd_querypos + indexsize_nt <= querypos &&
-	(prevposition = mappings[grand_fwd_querypos][grand_fwd_hit]) + indexsize_nt <= position) {
-      prev_querypos = grand_fwd_querypos;
-      prevhit = grand_fwd_hit;
-#ifdef PMAP
-      querydistance = (querypos - prev_querypos) - indexsize_nt;
+	    /* prevpos is lower genomic coordinate than currpos */
+	    /* need to subtract from position and prevposition to compensate for greedy matches */
+	    /* need to add to position and prevposition to compensate for missed matches */
+	    if (plusp == true) {
+	      prevpos = chroffset + prevposition + indexsize_nt;
+	      currpos = chroffset + position - querydistance + indexsize_nt;
+#if 0
+	      donor_score = Maxent_hr_donor_prob(prevpos,chroffset);
+	      acceptor_score = Maxent_hr_acceptor_prob(currpos,chroffset);
+	      antidonor_score = Maxent_hr_antidonor_prob(currpos,chroffset);
+	      antiacceptor_score = Maxent_hr_antiacceptor_prob(prevpos,chroffset);
+	      debug9(printf("lookback plus: sense donorpos %u, acceptorpos %u: %f..%f\n",
+			    prevpos-chroffset,currpos-chroffset+1,donor_score,acceptor_score));
+	      debug9(printf("lookback plus: anti donorpos %u, acceptorpos %u: %f..%f\n",
+			    currpos-chroffset+1,prevpos-chroffset,antidonor_score,antiacceptor_score));
+#elif 0
+	      donorpos = Genome_prev_donor_position(/*right*/prevpos + MISS_BEHIND,
+						    /*left*/prevpos - GREEDY_ADVANCE,chroffset);
+	      acceptorpos = Genome_prev_acceptor_position(/*right*/currpos + MISS_BEHIND,
+							  /*left*/currpos - GREEDY_ADVANCE,chroffset);
+	      debug9(printf("lookback plus: sense prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+
+	      donorpos = Genome_prev_antidonor_position(/*right*/currpos + MISS_BEHIND,
+							/*left*/currpos - GREEDY_ADVANCE,chroffset);
+	      acceptorpos = Genome_prev_antiacceptor_position(/*right*/prevpos + MISS_BEHIND,
+							      /*left*/prevpos - GREEDY_ADVANCE,chroffset);
+	      debug9(printf("lookback plus: anti prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
 #else
-      querydistance = querypos - prev_querypos - indexsize_nt;
+	      if (prevpos < GREEDY_ADVANCE || currpos < GREEDY_ADVANCE) {
+		canonicalp = false;
+	      } else if (Genome_sense_canonicalp(/*donor_rightbound*/prevpos + MISS_BEHIND,
+						 /*donor_leftbound*/prevpos - GREEDY_ADVANCE,
+						 /*acceptor_rightbound*/currpos + MISS_BEHIND,
+						 /*acceptor_leftbound*/currpos - GREEDY_ADVANCE,
+						 chroffset) == true) {
+		debug9(printf("lookback plus: sense canonical\n"));
+		canonicalp = true;
+	      } else if (Genome_antisense_canonicalp(/*donor_rightbound*/currpos + MISS_BEHIND,
+						     /*donor_leftbound*/currpos - GREEDY_ADVANCE,
+						     /*acceptor_rightbound*/prevpos + MISS_BEHIND,
+						     /*acceptor_leftbound*/prevpos - GREEDY_ADVANCE,
+						     chroffset) == true) {
+		debug9(printf("lookback plus: antisense canonical\n"));
+		canonicalp = true;
+	      } else {
+		debug9(printf("lookback plus: not canonical\n"));
+		canonicalp = false;
+	      }
 #endif
-      if (querydistance < MAX_GRAND_LOOKBACK) {
-	prevlink = &(links[prev_querypos][prevhit]);
-	if (1 /* want to find canonicalsgn for short exons */ || prevlink->fwd_consecutive > EXON_DEFN) {
-	  gendistance = position - prevposition - indexsize_nt;
-	  diffdistance = abs(gendistance - querydistance);
-
-	  if (splicingp == false) {
-	    canonicalsgn = 0;
-	  } else if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
-	    canonicalsgn = 9;
-	  } else if (diffdistance > maxintronlen) {
-	    canonicalsgn = 0;
-	  } else if (find_shifted_canonical(/*leftpos*/prevposition + querydistance + indexsize_nt - 1,
-					    /*rightpos*/position,querydistance,
-					    /* &lastGT,&lastAG, */
-					    Genome_prev_donor_position,Genome_prev_acceptor_position,
-					    chroffset,chrhigh,plusp,skip_repetitive_p) == true) {
-	    canonicalsgn = +1;
-	  } else {
-	    canonicalsgn = 0;
-	  }
 
-	  fwd_score = prevlink->fwd_score;
-	  if (diffdistance > maxintronlen) {
-	    fwd_score -= INFINITE;
-	  } else if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-	    fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH;
-	  } else if (diffdistance < INTRON_DEFN) {
-	    /* fwd_score -= querydist_mismatch_penalty(querydistance); */
-#ifdef PMAP
-	    if (diffdistance % 3 != 0) {
-	      fwd_score -= NONCODON_INDEL_PENALTY;
-	    }
-#endif
-	  } else if (canonicalsgn == +1) {
-	    /* Don't penalize for intron.  Don't penalize for querydistance to grand querypos. */
-	    /* fwd_score -= gendist_penalty(diffdistance,querydistance); */
-	    if (splicingp == true) {
-	      fwd_score -= diffdist_penalty_splicing(diffdistance);
 	    } else {
-	      fwd_score -= diffdist_penalty_nosplicing(diffdistance);
+	      prevpos = chrhigh + 1 - prevposition - indexsize_nt;
+	      currpos = chrhigh + 1 - position + querydistance - indexsize_nt;
+#if 0
+	      donor_score = Maxent_hr_donor_prob(currpos,chroffset);
+	      acceptor_score = Maxent_hr_acceptor_prob(prevpos,chroffset);
+	      antidonor_score = Maxent_hr_antidonor_prob(prevpos,chroffset);
+	      antiacceptor_score = Maxent_hr_antiacceptor_prob(currpos,chroffset);
+	      debug9(printf("lookback minus: sense donorpos %u, acceptorpos %u: %f..%f\n",
+			    currpos-chroffset,prevpos-chroffset+1,donor_score,acceptor_score));
+	      debug9(printf("lookback minus: anti donorpos %u, acceptorpos %u: %f..%f\n",
+			    prevpos-chroffset+1,currpos-chroffset,antidonor_score,antiacceptor_score));
+#elif 0
+	      donorpos = Genome_prev_donor_position(/*right*/currpos + GREEDY_ADVANCE,
+						    /*left*/currpos - MISS_BEHIND,chroffset);
+	      acceptorpos = Genome_prev_acceptor_position(/*right*/prevpos + GREEDY_ADVANCE,
+							  /*left*/prevpos - MISS_BEHIND,chroffset);
+	      debug9(printf("lookback minus: sense prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+
+	      donorpos = Genome_prev_antidonor_position(/*right*/prevpos + GREEDY_ADVANCE,
+							/*left*/prevpos - MISS_BEHIND,chroffset);
+	      acceptorpos = Genome_prev_antiacceptor_position(/*right*/currpos + GREEDY_ADVANCE,
+							      /*left*/currpos - MISS_BEHIND,chroffset);
+	      debug9(printf("lookback minus: anti prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+#else
+	      if (currpos < MISS_BEHIND || prevpos < MISS_BEHIND) {
+		canonicalp = false;
+	      } else if (Genome_sense_canonicalp(/*donor_rightbound*/currpos + GREEDY_ADVANCE,
+						 /*donor_leftbound*/currpos - MISS_BEHIND,
+						 /*acceptor_rightbound*/prevpos + GREEDY_ADVANCE,
+						 /*acceptor_leftbound*/prevpos - MISS_BEHIND,
+						 chroffset) == true) {
+		debug9(printf("lookback minus: sense canonical\n"));
+		canonicalp = true;
+	      } else if (Genome_antisense_canonicalp(/*donor_rightbound*/prevpos + GREEDY_ADVANCE,
+						     /*donor_leftbound*/prevpos - MISS_BEHIND,
+						     /*acceptor_rightbound*/currpos + GREEDY_ADVANCE,
+						     /*acceptor_leftbound*/currpos - MISS_BEHIND,
+						     chroffset) == true) {
+		debug9(printf("lookback minus: antisense canonical\n"));
+		canonicalp = true;
+	      } else {
+		debug9(printf("lookback minus: not canonical\n"));
+		canonicalp = false;
+	      }
+#endif
 	    }
 
-	  } else {
-	    /* fwd_score -= querydist_mismatch_penalty(querydistance); */
-	    /* fwd_gendistance_penalty = gendist_penalty(diffdistance,querydistance); */
-	    if (splicingp == true) {
-	      fwd_gendistance_penalty = diffdist_penalty_splicing(diffdistance);
-	    } else {
-	      fwd_gendistance_penalty = diffdist_penalty_nosplicing(diffdistance);
+	    if (canonicalp == false) {
+	      fwd_score -= non_canonical_penalty;
 	    }
-	    fwd_score -= fwd_gendistance_penalty;
-	    fwd_score -= NINTRON_PENALTY_MISMATCH;
+
 	  }
 
-	  debug9(printf("\tC+. Fwd grand qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from %d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+	  debug9(printf("\tD2. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
 			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_rootposition,
+			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
 			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-			gendistance,querydistance,canonicalsgn));
+			gendistance-indexsize_nt,querydistance-indexsize_nt,canonicalsgn));
 	    
-	  /* Allow ties, which should favor shorter intron */
-	  if (fwd_score >= best_fwd_score) {
+	  /* Disallow ties, which should favor adjacent */
+	  if (fwd_score > best_fwd_score) {
 	    if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-	      best_fwd_consecutive = prevlink->fwd_consecutive + NT_PER_MATCH;
-	      best_fwd_rootposition = prevlink->fwd_rootposition;
-	      /* best_fwd_rootnlinks = prevlink->rootnlinks + 1; */
+	      best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
+	      /* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
 	    } else {
-	      best_fwd_consecutive = indexsize_nt;
-	      best_fwd_rootposition = position;
+	      best_fwd_consecutive = 0;
 	      /* best_fwd_rootnlinks = 1; */
 	    }
+	    best_fwd_rootposition = prevlink->fwd_rootposition;
 	    best_fwd_score = fwd_score;
 	    best_fwd_prevpos = prev_querypos;
 	    best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	    best_fwd_tracei = ++*fwd_tracei;
 	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
 	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
 	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
 	    switch (canonicalsgn) {
 	    case 1: best_fwd_intronnfwd++; break;
-	    case -1: best_fwd_intronnrev++; break;
 	    case 0: best_fwd_intronnunk++; break;
 	    }
+#endif
 	    debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
 	  } else {
 	    debug9(printf(" => Loses to %d\n",best_fwd_score));
 	  }
-	}
-      }
-    }
 
-#ifndef PMAP
-    /* C (rev). Look back at grand querypos and hit */
-    debug9(printf("\tGrand rev querypos is %d,%d at position %u\n",
-		  grand_rev_querypos,grand_rev_hit,grand_rev_hit >= 0 ? mappings[grand_rev_querypos][grand_rev_hit] : 0));
-    if (grand_rev_querypos > 0 && grand_rev_querypos + indexsize_nt <= querypos &&
-	(prevposition = mappings[grand_rev_querypos][grand_rev_hit]) + indexsize_nt <= position) {
-      prev_querypos = grand_rev_querypos;
-      prevhit = grand_rev_hit;
-#ifdef PMAP
-      querydistance = (querypos - prev_querypos)*3 - indexsize_nt;
-#else
-      querydistance = querypos - prev_querypos - indexsize_nt;
-#endif
-      if (querydistance < MAX_GRAND_LOOKBACK) {
-	prevlink = &(links[prev_querypos][prevhit]);
-	if (1 /* want to find canonicalsgn for short exons */ || prevlink->rev_consecutive > EXON_DEFN) {
-	  gendistance = position - prevposition - indexsize_nt;
-	  diffdistance = abs(gendistance - querydistance);
+	  prevhit = active[prev_querypos][prevhit];
+	}
 
-	  if (splicingp == false) {
-	    canonicalsgn = 0;
-	  } else if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
-	    canonicalsgn = 9;
-	  } else if (diffdistance > maxintronlen) {
-	    canonicalsgn = 0;
-	  } else if (find_shifted_canonical(/*leftpos*/prevposition + querydistance + indexsize_nt - 1,
-					    /*rightpos*/position,querydistance,
-					    /* &lastCT,&lastAC, */
-					    Genome_prev_antiacceptor_position,Genome_prev_antidonor_position,
-					    chroffset,chrhigh,plusp,skip_repetitive_p) == true) {
-	    canonicalsgn = -1;
-	  } else {
-	    canonicalsgn = 0;
-	  }
+#if 0
+	/* Scoring appears to be the same as for range 4, which is rarely called */
+	/* Range 3: From (querypos + EQUAL_DISTANCE_NOT_SPLICING) to (querypos - EQUAL_DISTANCE_NOT_SPLICING) */
+	/* This is equivalent to -diffdistance > EQUAL_DISTANCE_NOT_SPLICING && prevposition + indexsize_nt <= position */
+	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + querydistance < position + EQUAL_DISTANCE_NOT_SPLICING &&
+	       prevposition + indexsize_nt <= position) {
+	  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	  prevlink = &(links[prev_querypos][prevhit]);
 
-	  rev_score = prevlink->rev_score;
-	  if (diffdistance > maxintronlen) {
-	    rev_score -= INFINITE;
-	  } else if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-	    rev_score = prevlink->rev_score + CONSEC_POINTS_PER_MATCH;
-	  } else if (diffdistance < INTRON_DEFN) {
-	    /* rev_score -= querydist_mismatch_penalty(querydistance); */
-	  } else if (canonicalsgn == -1) {
-	    /* Don't penalize for intron.  Don't penalize for querydistance back to grand querypos. */
-	    /* rev_score -= gendist_penalty(diffdistance,querydistance); */
-	    if (splicingp == true) {
-	      rev_score -= diffdist_penalty_splicing(diffdistance);
-	    } else {
-	      rev_score -= diffdist_penalty_nosplicing(diffdistance);
-	    }
+	  gendistance = position - prevposition;
+	  diffdistance = abs(gendistance - querydistance);
 
-	  } else {
-	    /* rev_score -= querydist_mismatch_penalty(querydistance); */
-	    /* rev_gendistance_penalty = gendist_penalty(diffdistance,querydistance); */
-	    if (splicingp == true) {
-	      rev_gendistance_penalty = diffdist_penalty_splicing(diffdistance);
-	    } else {
-	      rev_gendistance_penalty = diffdist_penalty_nosplicing(diffdistance);
-	    }
-	    rev_score -= rev_gendistance_penalty;
-	    rev_score -= NINTRON_PENALTY_MISMATCH;
+	  /* canonicalsgn = 9; */
+	  /* ? Add diffdistance as penalty here */
+	  fwd_score = prevlink->fwd_score + querydist_credit - (diffdistance/ONE + 1);
+#ifdef PMAP
+	  if (diffdistance % 3 != 0) {
+	    fwd_score -= NONCODON_INDEL_PENALTY;
 	  }
-
-	  debug9(printf("\tC-. Rev grand qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from %d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+#endif
+	  debug9(printf("\tD3. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
 			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			prevlink->rev_score,rev_score,prevlink->rev_consecutive,prevlink->rev_rootposition,
-			best_rev_intronnrev,best_rev_intronnrev,best_rev_intronnunk,
-			gendistance,querydistance,canonicalsgn));
+			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
+			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
+			gendistance-indexsize_nt,querydistance-indexsize_nt,/*canonicalsgn*/9));
 	    
-	  /* Allow ties, which should favor shorter intron */
-	  if (rev_score >= best_rev_score) {
+	  /* Disallow ties, which should favor adjacent */
+	  if (fwd_score > best_fwd_score) {
 	    if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-	      best_rev_consecutive = prevlink->rev_consecutive + NT_PER_MATCH;
-	      best_rev_rootposition = prevlink->rev_rootposition;
-	      /* best_rev_rootnlinks = prevlink->rev_rootnlinks + 1; */
+	      best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
+	      /* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
 	    } else {
-	      best_rev_consecutive = indexsize_nt;
-	      best_rev_rootposition = position;
-	      /* best_rev_rootnlinks = 1; */
+	      best_fwd_consecutive = 0;
+	      /* best_fwd_rootnlinks = 1; */
 	    }
-	    best_rev_score = rev_score;
-	    best_rev_prevpos = prev_querypos;
-	    best_rev_prevhit = prevhit;
-	    best_rev_intronnfwd = prevlink->rev_intronnfwd;
-	    best_rev_intronnrev = prevlink->rev_intronnrev;
-	    best_rev_intronnunk = prevlink->rev_intronnunk;
+	    best_fwd_rootposition = prevlink->fwd_rootposition;
+	    best_fwd_score = fwd_score;
+	    best_fwd_prevpos = prev_querypos;
+	    best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	    best_fwd_tracei = prevlink->fwd_tracei; /* Keep previous trace */
+	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
+	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
+	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
+#if 0
 	    switch (canonicalsgn) {
-	    case 1: best_rev_intronnfwd++; break;
-	    case -1: best_rev_intronnrev++; break;
-	    case 0: best_rev_intronnunk++; break;
+	    case 1: best_fwd_intronnfwd++; break;
+	    case 0: best_fwd_intronnunk++; break;
 	    }
-	    debug9(printf(" => Best rev at %d (consec = %d)\n",rev_score,best_rev_consecutive));
+#endif
+#endif
+	    debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
 	  } else {
-	    debug9(printf(" => Loses to %d\n",best_rev_score));
+	    debug9(printf(" => Loses to %d\n",best_fwd_score));
 	  }
+
+	  prevhit = active[prev_querypos][prevhit];
 	}
-      }
-    }
 #endif
 
-#endif /* bluetarp */
-
-
-    /* D (fwd). Evaluate for mismatches (all other previous querypos) */
-    /* Set parameters */
-    if (adjacentp == true) {
-      /* Look not so far back */
-      nlookback = 1;
-      lookback = sufflookback/2;
-    } else {
-      /* Look farther back */
-      nlookback = nsufflookback;
-      lookback = sufflookback;
-    }
+	/* Range 4: From (prev_querypos - EQUAL_DISTANCE_NOT_SPLICING) to indexsize_nt */
+	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + indexsize_nt <= position) {
+	  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	  prevlink = &(links[prev_querypos][prevhit]);
 
-    last_leftpos = 0;		/* if use_shifted_canonical_p is true */
-    rightpos = position;	/* if use_shifted_canonical_p is true */
+	  gendistance = position - prevposition;
+	  diffdistance = abs(gendistance - querydistance);
 
-    donep = false;
-    for (p = processed, nseen = 0;
-	 p != NULL && best_fwd_consecutive < enough_consecutive && donep == false;
-	 p = Intlist_next(p), nseen++) {
-				  
-      prev_querypos = Intlist_head(p);
-#ifdef PMAP
-      querydistance = (querypos - prev_querypos)*3 - indexsize_nt;
+#ifdef BAD_GMAX
+	  fwd_score = prevlink->fwd_score + querydist_credit - (diffdistance/ONE + 1) /*- querydist_penalty*/;
 #else
-      querydistance = querypos - prev_querypos - indexsize_nt;
-#endif
-
-      if (nseen > nlookback && querydistance > lookback) {
-	donep = true;
-      }
-
-      prevhit = firstactive[prev_querypos];
-      while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + indexsize_nt <= position) {
-	/* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
-	prevlink = &(links[prev_querypos][prevhit]);
-
-	gendistance = position - prevposition - indexsize_nt;
-	diffdistance = abs(gendistance - querydistance);
-
-	if (diffdistance < maxintronlen) {
-	  if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
-	    canonicalsgn = 9;
-	    fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH;
-#ifdef PMAP
-	    if (diffdistance % 3 != 0) {
-	      fwd_score -= NONCODON_INDEL_PENALTY;
-	    }
+	  /* diffdistance <= EQUAL_DISTANCE_NOT_SPLICING */
+	  /* This is how version 2013-08-14 did it */
+	  fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH;
 #endif
-	  } else if (near_end_p == false && prevlink->fwd_consecutive < EXON_DEFN) {
-	    canonicalsgn = 0;
-	    if (splicingp == true) {
-	      fwd_score = prevlink->fwd_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
-	    } else {
-	      fwd_score = prevlink->fwd_score - diffdist_penalty_nosplicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
-	    }
-
-	  } else {
-	    /* Called only near end */
-	    if (splicingp == false) {
-	      canonicalsgn = 0;
-	      fwd_score = prevlink->fwd_score - diffdist_penalty_nosplicing(diffdistance) - querydist_penalty(querydistance);
-
-	    } else if (use_shifted_canonical_p == true) {
-	      leftpos = prevposition + querydistance + indexsize_nt - 1;
-	      /* printf("leftpos %d, last_leftpos %d, rightpos %d\n",leftpos,last_leftpos,rightpos); */
-	      if (leftpos == last_leftpos) {
-		canonicalp = last_canonicalp;
-	      } else {
-		debug7(printf("Calling find_shift_canonical fwd\n"));
-		canonicalp = find_shifted_canonical(leftpos,rightpos,querydistance,
-						    /* &lastGT,&lastAG, */
-						    Genome_prev_donor_position,Genome_prev_acceptor_position,
-						    chroffset,chrhigh,plusp,skip_repetitive_p);
-		last_leftpos = leftpos;
-		last_canonicalp = canonicalp;
-	      }
-	      if (canonicalp == true) {
-		canonicalsgn = +1;
-		fwd_score = prevlink->fwd_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance);
-	      } else {
-		canonicalsgn = 0;
-		fwd_score = prevlink->fwd_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
-	      }
 
-	    } else {
-	      canonicalsgn = +1;
-	      fwd_score = prevlink->fwd_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance);
-	    }
 #if 0
-	    if (prevlink->fwd_consecutive < 20) {
-	      /* Intended to avoid too many jumps, but misses short introns */
-	      fwd_score -= diffdist_penalty(diffdistance);
-	    }
-#endif
+	  /* Used in range 4 but not in range 3 */
+	  if (/*near_end_p == false &&*/ prevlink->fwd_consecutive < EXON_DEFN) {
+	    fwd_score -= NINTRON_PENALTY_MISMATCH;
 	  }
+#endif
 
-
-	  debug9(printf("\tD+. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from %d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+	  debug9(printf("\tD4. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
 			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_rootposition,
+			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
 			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-			gendistance,querydistance,canonicalsgn));
+			gendistance-indexsize_nt,querydistance-indexsize_nt,canonicalsgn));
 	    
-#ifdef USE_SUBOPTIMAL_STARTS
-	  fwd_prevposes = Intlist_push(fwd_prevposes,prev_querypos);
-	  fwd_prevhits = Intlist_push(fwd_prevhits,prevhit);
-	  fwd_scores = Intlist_push(fwd_scores,fwd_score);
-#endif
-
-	  /* Allow ties, which should favor shorter intron */
-	  if (fwd_score >= best_fwd_score) {
+	  /* Disallow ties, which should favor adjacent */
+	  if (fwd_score > best_fwd_score) {
 	    if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-	      best_fwd_consecutive = prevlink->fwd_consecutive + (querydistance + indexsize_nt);
-	      best_fwd_rootposition = prevlink->fwd_rootposition;
+	      best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
 	      /* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
 	    } else {
 	      best_fwd_consecutive = 0;
-	      best_fwd_rootposition = position;
 	      /* best_fwd_rootnlinks = 1; */
 	    }
-#ifdef USE_SUBOPTIMAL_STARTS
-	    best_fwd_initposition = prevlink->fwd_initposition;
-#endif
+	    best_fwd_rootposition = prevlink->fwd_rootposition;
 	    best_fwd_score = fwd_score;
 	    best_fwd_prevpos = prev_querypos;
 	    best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	    /* best_fwd_tracei = ++*fwd_tracei; */
+	    best_fwd_tracei = prevlink->fwd_tracei; /* Keep previous trace, as in range 3 */
 	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
 	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
 	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
@@ -2031,151 +1384,17 @@ score_querypos_general (Link_T currlink, int querypos,
 	    case 1: best_fwd_intronnfwd++; break;
 	    case 0: best_fwd_intronnunk++; break;
 	    }
+#endif
 	    debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
 	  } else {
 	    debug9(printf(" => Loses to %d\n",best_fwd_score));
 	  }
-	}
-
-	prevhit = active[prev_querypos][prevhit];
-      }
-    }
-
-
-#ifndef PMAP
-    /* D (rev). Evaluate for mismatches (all other previous querypos) */
-    /* Parameters already set in D (fwd). */
-
-    if (splicingp == false || use_shifted_canonical_p == false) {
-      /* The rev scores are identical to the fwd scores */
-
-    } else {
-      last_leftpos = 0;
-      rightpos = position;
-      donep = false;
-      for (p = processed, nseen = 0;
-	   p != NULL && best_rev_consecutive < enough_consecutive && donep == false;
-	   p = Intlist_next(p), nseen++) {
-
-	prev_querypos = Intlist_head(p);
-#ifdef PMAP
-	querydistance = (querypos - prev_querypos)*3 - indexsize_nt;
-#else
-	querydistance = querypos - prev_querypos - indexsize_nt;
-#endif
-
-	if (nseen > nlookback && querydistance > lookback) {
-	  donep = true;
-	}
-
-	prevhit = firstactive[prev_querypos];
-	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + indexsize_nt <= position) {
-	  /* printf("rev: prevposition %u, prevhit %d\n",prevposition,prevhit); */
-	  prevlink = &(links[prev_querypos][prevhit]);
-
-	  gendistance = position - prevposition - indexsize_nt;
-	  diffdistance = abs(gendistance - querydistance);
-
-	  if (diffdistance < maxintronlen) {
-	    if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
-	      canonicalsgn = 9;
-	      rev_score = prevlink->rev_score + CONSEC_POINTS_PER_MATCH;
-
-	    } else if (near_end_p == false && prevlink->rev_consecutive < EXON_DEFN) {
-	      canonicalsgn = 0;
-	      rev_score = prevlink->rev_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
-
-	    } else {
-	      /* Called only near end */
-#if 0
-	      if (splicingp == false) {
-		/* Not possible because splicingp == true && use_shifted_canonical_p == true */
-		canonicalsgn = 0;
-		rev_score = prevlink->rev_score - diffdist_penalty_nosplicing(diffdistance) - querydist_penalty(querydistance);
-	      } else {
-#endif
-
-		leftpos = prevposition + querydistance + indexsize_nt - 1;
-		/* printf("leftpos %d, last_leftpos %d, rightpos %d\n",leftpos,last_leftpos,rightpos); */
-		if (leftpos == last_leftpos) {
-		  canonicalp = last_canonicalp;
-		} else {
-		  debug7(printf("Calling find_shift_canonical rev\n"));
-		  canonicalp = find_shifted_canonical(leftpos,rightpos,querydistance,
-						      /* &lastCT,&lastAC, */
-						      Genome_prev_antiacceptor_position,Genome_prev_antidonor_position,
-						      chroffset,chrhigh,plusp,skip_repetitive_p);
-		  last_leftpos = leftpos;
-		  last_canonicalp = canonicalp;
-		}
-		if (canonicalp == true) {
-		  canonicalsgn = -1;
-		  rev_score = prevlink->rev_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance);
-		} else {
-		  canonicalsgn = 0;
-		  rev_score = prevlink->rev_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
-		}
-#if 0
-	      }
-#endif
-
-#if 0
-	      if (prevlink->rev_consecutive < 20) {
-		/* Intended to avoid too many jumps, but misses short introns */
-		rev_score -= diffdist_penalty(diffdistance);
-	      }
-#endif
-	    }
-
-	  
-	    debug9(printf("\tD-. Rev mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from %d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
-			  prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			  prevlink->rev_score,rev_score,prevlink->rev_consecutive,prevlink->rev_rootposition,
-			  best_rev_intronnfwd,best_rev_intronnrev,best_rev_intronnunk,
-			  gendistance,querydistance,canonicalsgn));
-	    
-#ifdef USE_SUBOPTIMAL_STARTS
-	    rev_prevposes = Intlist_push(rev_prevposes,prev_querypos);
-	    rev_prevhits = Intlist_push(rev_prevhits,prevhit);
-	    rev_scores = Intlist_push(rev_scores,rev_score);
-#endif
-
-	    /* Allow ties, which should favor shorter intron */
-	    if (rev_score >= best_rev_score) {
-	      if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-		best_rev_consecutive = prevlink->rev_consecutive + (querydistance + indexsize_nt);
-		best_rev_rootposition = prevlink->rev_rootposition;
-		/* best_rev_rootnlinks = prevlink->rev_rootnlinks + 1; */
-	      } else {
-		best_rev_consecutive = 0;
-		best_rev_rootposition = position;
-		/* best_rev_rootnlinks = 1; */
-	      }
-#ifdef USE_SUBOPTIMAL_STARTS
-	      best_rev_initposition = prevlink->rev_initposition;
-#endif
-	      best_rev_score = rev_score;
-	      best_rev_prevpos = prev_querypos;
-	      best_rev_prevhit = prevhit;
-	      best_rev_intronnfwd = prevlink->rev_intronnfwd;
-	      best_rev_intronnrev = prevlink->rev_intronnrev;
-	      best_rev_intronnunk = prevlink->rev_intronnunk;
-	      switch (canonicalsgn) {
-	      case 1: best_rev_intronnfwd++; break;
-	      case -1: best_rev_intronnrev++; break;
-	      case 0: best_rev_intronnunk++; break;
-	      }
-	      debug9(printf(" => Best rev at %d (consec = %d)\n",rev_score,best_rev_consecutive));
-	    } else {
-	      debug9(printf(" => Loses to %d\n",best_rev_score));
-	    }
-	  }
 
 	  prevhit = active[prev_querypos][prevhit];
 	}
       }
+
     }
-#endif
   }
 
   /* Best_score needs to beat something positive to prevent a
@@ -2187,151 +1406,85 @@ score_querypos_general (Link_T currlink, int querypos,
   /* currlink->fwd_rootnlinks = best_fwd_rootnlinks; */
   currlink->fwd_pos = best_fwd_prevpos;
   currlink->fwd_hit = best_fwd_prevhit;
-  if (localp && currlink->fwd_pos < 0) {
+  if (currlink->fwd_pos >= 0) {
+    debug9(currlink->fwd_tracei = best_fwd_tracei);
+    currlink->fwd_score = best_fwd_score;
+  } else if (anchoredp == true) {
+    debug9(currlink->fwd_tracei = -1);
+    currlink->fwd_score = -100000;
+  } else if (localp == true) {
+    debug9(currlink->fwd_tracei = ++*fwd_tracei);
     currlink->fwd_score = indexsize_nt;
-#ifdef USE_SUBOPTIMAL_STARTS
-    currlink->fwd_initposition = position;
-#endif
   } else {
+    debug9(currlink->fwd_tracei = ++*fwd_tracei);
     currlink->fwd_score = best_fwd_score;
-#ifdef USE_SUBOPTIMAL_STARTS
-    currlink->fwd_initposition = best_fwd_initposition;
-#endif
   }
+
+#ifdef DEBUG9
   currlink->fwd_intronnfwd = best_fwd_intronnfwd;
   currlink->fwd_intronnrev = best_fwd_intronnrev;
   currlink->fwd_intronnunk = best_fwd_intronnunk;
-
-#ifndef PMAP
-  if (splicingp == true) {
-    /* linksconsecutive already assigned above */
-    currlink->rev_consecutive = best_rev_consecutive;
-    currlink->rev_rootposition = best_rev_rootposition;
-    /* currlink->rev_rootnlinks = best_rev_rootnlinks; */
-    currlink->rev_pos = best_rev_prevpos;
-    currlink->rev_hit = best_rev_prevhit;
-    if (localp && currlink->rev_pos < 0) {
-      currlink->rev_score = indexsize_nt;
-#ifdef USE_SUBOPTIMAL_STARTS
-      currlink->rev_initposition = position;
-#endif
-    } else {
-      currlink->rev_score = best_rev_score;
-#ifdef USE_SUBOPTIMAL_STARTS
-      currlink->rev_initposition = best_rev_initposition;
-#endif
-    }
-    currlink->rev_intronnfwd = best_rev_intronnfwd;
-    currlink->rev_intronnrev = best_rev_intronnrev;
-    currlink->rev_intronnunk = best_rev_intronnunk;
-  }
 #endif
 
-#ifdef PMAP
-  debug9(printf("\tChose %d,%d with score %d (fwd)\n",
-		currlink->fwd_pos,currlink->fwd_hit,currlink->fwd_score));
-#else
-  debug9(
-	 if (splicingp == false) {
-	   printf("\tChose %d,%d with score %d (fwd)\n",
-		  currlink->fwd_pos,currlink->fwd_hit,currlink->fwd_score);
-	 } else {
-	   printf("\tChose %d,%d with score %d (fwd) and %d,%d with score %d (rev)\n",
-		  currlink->fwd_pos,currlink->fwd_hit,currlink->fwd_score,currlink->rev_pos,currlink->rev_hit,currlink->rev_score);
-	 });
-#endif
+  debug9(printf("\tChose %d,%d with score %d (fwd) => trace #%d\n",
+		currlink->fwd_pos,currlink->fwd_hit,currlink->fwd_score,currlink->fwd_tracei));
   debug3(printf("%d %d  %d %d  1\n",querypos,hit,best_prevpos,best_prevhit));
 
-#ifdef USE_SUBOPTIMAL_STARTS
-  /* Add ties */
-  for (p = fwd_prevposes, q = fwd_prevhits, r = fwd_scores; p != NULL; p = Intlist_next(p), q = Intlist_next(q), r = Intlist_next(r)) {
-    prev_querypos = Intlist_head(p);
-    prevhit = Intlist_head(q);
-    fwd_score = Intlist_head(r);
-    if (fwd_score < best_fwd_score - suboptimal_score_start) {
-      /* Skip */
-    } else if (prev_querypos == best_fwd_prevpos && prevhit == best_fwd_prevhit) {
-      /* Skip */
-    } else if (links[prev_querypos][prevhit].fwd_initposition == best_fwd_initposition) {
-      /* Skip */
-    } else {
-      currlink->fwd_pos_ties = Intlist_push(currlink->fwd_pos_ties,prev_querypos);
-      currlink->fwd_hit_ties = Intlist_push(currlink->fwd_hit_ties,prevhit);
-    }
-  }
-  Intlist_free(&fwd_scores);
-  Intlist_free(&fwd_prevhits);
-  Intlist_free(&fwd_prevposes);
-
-#ifndef PMAP
-  for (p = rev_prevposes, q = rev_prevhits, r = rev_scores; p != NULL; p = Intlist_next(p), q = Intlist_next(q), r = Intlist_next(r)) {
-    prev_querypos = Intlist_head(p);
-    prevhit = Intlist_head(q);
-    rev_score = Intlist_head(r);
-    if (rev_score < best_rev_score - suboptimal_score_start) {
-      /* Skip */
-    } else if (prev_querypos == best_rev_prevpos && prevhit == best_rev_prevhit) {
-      /* Skip */
-    } else if (links[prev_querypos][prevhit].rev_initposition == best_rev_initposition) {
-      /* Skip */
-    } else {
-      currlink->rev_pos_ties = Intlist_push(currlink->rev_pos_ties,prev_querypos);
-      currlink->rev_hit_ties = Intlist_push(currlink->rev_hit_ties,prevhit);
-    }
-  }
-  Intlist_free(&rev_scores);
-  Intlist_free(&rev_prevhits);
-  Intlist_free(&rev_prevposes);
-#endif
-
-#endif
-
-  return;
-}
+  return;
+}
 
 
-/* For PMAP, indexsize is in aa. */
 static void
-score_querypos_splicing_no_shifted (Link_T currlink, int querypos, int hit,
-				    int querystart, int queryend, unsigned int position,
-				    struct Link_T **links, Chrpos_T **mappings,
-				    int **active, int *firstactive,
-#ifdef USE_SUBOPTIMAL_STARTS
-				    int *fwd_initposition_bestscore, int *fwd_initposition_bestpos, int *fwd_initposition_besthit,
-#endif
-				    int indexsize, Intlist_T processed, int sufflookback, int nsufflookback, int maxintronlen, 
-				    bool localp) {
+score_querypos_lookforward (
+#ifdef DEBUG9
+			    int *fwd_tracei,
+#endif
+			    Link_T currlink, int querypos,
+			    int querystart, int queryend, unsigned int position,
+			    struct Link_T **links, Chrpos_T **mappings,
+			    int **active, int *firstactive,
+			    Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			    int indexsize, Intlist_T processed, int sufflookback, int nsufflookback, int maxintronlen, 
+			    bool anchoredp, bool localp, bool splicingp, bool skip_repetitive_p,
+			    bool use_canonical_p, int non_canonical_penalty) {
   Link_T prevlink;
-#ifdef USE_SUBOPTIMAL_STARTS
-  Intlist_T fwd_prevposes = NULL, fwd_prevhits = NULL, fwd_scores = NULL, p, q, r;
-  int initposition;
-  int best_fwd_initposition = -1;
-#else
   Intlist_T p;
-#endif
 
   int best_fwd_consecutive = indexsize*NT_PER_MATCH;
   int best_fwd_rootposition = position;
   /* int best_fwd_rootnlinks = 1; */
   int best_fwd_score = 0, fwd_score;
   int best_fwd_prevpos = -1, best_fwd_prevhit = -1;
+#ifdef DEBUG9
+  int best_fwd_tracei;
   int best_fwd_intronnfwd = 0, best_fwd_intronnrev = 0, best_fwd_intronnunk = 0;
+  int canonicalsgn;
+#endif
   bool adjacentp = false, donep;
   int prev_querypos, prevhit;
   Chrpos_T prevposition, gendistance;
-  int querydistance, diffdistance, lookback, nlookback, nseen, indexsize_nt;
-  int canonicalsgn;
+  Chrpos_T leftpos, rightpos, last_rightpos;
+  Univcoord_T prevpos, currpos;
+  Univcoord_T donorpos, acceptorpos;
+  int querydistance, diffdistance, lookback, nlookback, nseen, indexsize_nt, indexsize_query;
+  /* int querydist_penalty; */
+  int querydist_credit;
   int enough_consecutive;
-  bool near_end_p;
+  /* bool near_end_p; */
+  bool canonicalp;
+  double donor_score, acceptor_score, antidonor_score, antiacceptor_score;
 
 #ifdef PMAP
   indexsize_nt = indexsize*3;
 #else
   indexsize_nt = indexsize;
 #endif
+  indexsize_query = indexsize;	/* Use when evaluating across query positions */
+
 
   enough_consecutive = 32;
 
+#if 0
   if (querypos < querystart + NEAR_END_LENGTH) {
     near_end_p = true;
   } else if (querypos > queryend - NEAR_END_LENGTH) {
@@ -2339,38 +1492,38 @@ score_querypos_splicing_no_shifted (Link_T currlink, int querypos, int hit,
   } else {
     near_end_p = false;
   }
-
+#endif
 
   /* A. Evaluate adjacent position (at last one processed) */
   if (processed != NULL) {
     prev_querypos = Intlist_head(processed);
 #ifdef PMAP
-    querydistance = (querypos - prev_querypos)*3;
+    querydistance = (prev_querypos - querypos)*3;
 #else
-    querydistance = querypos - prev_querypos;
+    querydistance = prev_querypos - querypos;
 #endif
     prevhit = firstactive[prev_querypos];
-    while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + querydistance <= position) {
-      if (prevposition + querydistance == position) {
+    while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) >= position + querydistance) {
+      if (prevposition == position + querydistance) {
 	prevlink = &(links[prev_querypos][prevhit]);
 	best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
-	best_fwd_rootposition = prevlink->fwd_rootposition;
-#ifdef USE_SUBOPTIMAL_STARTS
-	best_fwd_initposition = prevlink->fwd_initposition;
-#endif
 	/* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
-	best_fwd_score = prevlink->fwd_score + querydistance;
+	best_fwd_rootposition = prevlink->fwd_rootposition;
+	best_fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH*querydistance;
 
 	best_fwd_prevpos = prev_querypos;
 	best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	best_fwd_tracei = prevlink->fwd_tracei;
 	best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
 	best_fwd_intronnrev = prevlink->fwd_intronnrev;
 	best_fwd_intronnunk = prevlink->fwd_intronnunk;
+#endif
 	adjacentp = true;
 
-	debug9(printf("\tA. Adjacent qpos %d,%d at %ux%d (scores = %d -> %d, consec = %d (from %d), intr = %d-%d-%d)\n",
+	debug9(printf("\tA. Adjacent qpos %d,%d at %ux%d (scores = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d)\n",
 		      prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],prevlink->fwd_score,
-		      best_fwd_score,best_fwd_consecutive,best_fwd_rootposition,
+		      best_fwd_score,best_fwd_consecutive,best_fwd_tracei,
 		      best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk));
 	prevhit = -1;		/* Exit loop */
       } else {
@@ -2378,14 +1531,6 @@ score_querypos_splicing_no_shifted (Link_T currlink, int querypos, int hit,
       }
     }
 
-#ifdef USE_SUBOPTIMAL_STARTS
-    /* Just push one for all adjacent positions */
-    if (best_fwd_prevhit >= 0) {
-      fwd_prevposes = Intlist_push(fwd_prevposes,best_fwd_prevpos);
-      fwd_prevhits = Intlist_push(fwd_prevhits,best_fwd_prevhit);
-      fwd_scores = Intlist_push(fwd_scores,best_fwd_score);
-    }
-#endif
   }
 
   if (best_fwd_consecutive < enough_consecutive) {
@@ -2393,108 +1538,360 @@ score_querypos_splicing_no_shifted (Link_T currlink, int querypos, int hit,
     /* D. Evaluate for mismatches (all other previous querypos) */
     /* Set parameters */
     if (adjacentp == true) {
-      /* Look not so far back */
+      /* Look not so far forward */
       nlookback = 1;
       lookback = sufflookback/2;
     } else {
-      /* Look farther back */
+      /* Look farther forward */
       nlookback = nsufflookback;
       lookback = sufflookback;
     }
 
+    last_rightpos = 0;		/* if use_shifted_canonical_p is true */
+    leftpos = position;	      /* if use_shifted_canonical_p is true */
+
     donep = false;
-    for (p = processed, nseen = 0;
-	 p != NULL && best_fwd_consecutive < enough_consecutive && donep == false;
-	 p = Intlist_next(p), nseen++) {
-				  
+    nseen = 0; 
+
+    p = processed;
+    if (anchoredp && querypos + indexsize_query >= queryend) {
+      /* Allow close prevpositions that overlap with anchor */
+      /* Can give rise to false positives, and increases amount of dynamic programming work */
+      debug9(printf("No skipping because close to anchor\n"));
+    } else if (0 && anchoredp && querypos == querystart) {
+      /* Test end position */
+    } else {
+      while (p != NULL && (prev_querypos = Intlist_head(p)) < querypos + indexsize_query) {
+	debug9(printf("Skipping prev_querypos %d, because too close\n",prev_querypos));
+	p = Intlist_next(p);
+      }
+    }
+
+    for ( ; p != NULL && best_fwd_consecutive < enough_consecutive && donep == false;
+	  p = Intlist_next(p), nseen++) {
       prev_querypos = Intlist_head(p);
+				  
 #ifdef PMAP
-      querydistance = (querypos - prev_querypos)*3 - indexsize_nt;
+      querydistance = (prev_querypos - querypos)*3;
+#else
+      querydistance = prev_querypos - querypos;
+#endif
+
+#ifdef USE_QUERYDIST_CREDIT
+      /* Allow close prevpositions at beginning of path, to overlap with anchor */
+      if (querydistance <= indexsize_nt) {
+	querydist_credit = CONSEC_POINTS_PER_MATCH*querydistance;
+      } else {
+	querydist_credit = CONSEC_POINTS_PER_MATCH*indexsize_nt - querydistance/QUERYDIST_PENALTY_FACTOR;
+      }
 #else
-      querydistance = querypos - prev_querypos - indexsize_nt;
+      /* Actually a querydist_penalty */
+      querydist_credit = -querydistance/indexsize_nt;
 #endif
 
-      if (nseen > nlookback && querydistance > lookback) {
+      if (nseen > nlookback && querydistance - indexsize_nt > lookback) {
 	donep = true;
       }
 
-      prevhit = firstactive[prev_querypos];
-      while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + indexsize_nt <= position) {
-	/* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
-	prevlink = &(links[prev_querypos][prevhit]);
+      if ((prevhit = firstactive[prev_querypos]) != -1) {
+	/* querydist_penalty = (querydistance - indexsize_nt)/QUERYDIST_PENALTY_FACTOR; */
+
+	/* Range 1: From Infinity to maxintronlen */
+	if (splicingp == true) {
+	  /* This is equivalent to diffdistance >= maxintronlen, where
+	     diffdistance = abs(gendistance - querydistance) and
+	     gendistance = (position - prevposition - indexsize_nt) */
+	  while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) >= position + maxintronlen + querydistance) {
+	    /* Skip */
+	    /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	    prevhit = active[prev_querypos][prevhit];
+	  }
+	}
 
-	gendistance = position - prevposition - indexsize_nt;
-	diffdistance = abs(gendistance - querydistance);
+	/* Range 2: From maxintronlen to (prev_querypos + EQUAL_DISTANCE_NOT_SPLICING) */
+	/* This is equivalent to +diffdistance > EQUAL_DISTANCE_NOT_SPLICING */
+	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) > position + EQUAL_DISTANCE_NOT_SPLICING + querydistance) {
+	  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	  prevlink = &(links[prev_querypos][prevhit]);
 
-	if (diffdistance < maxintronlen) {
-	  if (diffdistance <= EQUAL_DISTANCE_NOT_SPLICING) {
-	    canonicalsgn = 9;
-	    fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH;
-#ifdef PMAP
-	    if (diffdistance % 3 != 0) {
-	      fwd_score -= NONCODON_INDEL_PENALTY;
-	    }
+	  gendistance = prevposition - position;
+	  assert(gendistance > querydistance); /* True because gendistance > EQUAL_DISTANCE_NOT_SPLICING + querydistance */
+	  diffdistance = gendistance - querydistance; /* No need for abs() */
+
+	  fwd_score = prevlink->fwd_score + querydist_credit /*- querydist_penalty*/;
+	  if (splicingp == true) {
+	    fwd_score -= (diffdistance/TEN_THOUSAND + 1);
+	  } else {
+	    fwd_score -= (diffdistance/ONE + 1);
+	  }
+
+	  if (0 && /*near_end_p == false &&*/ prevlink->fwd_consecutive < EXON_DEFN) {
+	    /* Misses short exons */
+	    debug9(canonicalsgn = 0);
+	    fwd_score -= NINTRON_PENALTY_MISMATCH;
+
+	  } else if (use_canonical_p == true) {
+
+	    /* prevpos is higher genomic coordinate than currpos */
+	    /* need to add to position and prevposition to compensate for greedy matches */
+	    /* need to subtract from position and prevposition to compensate for missed matches */
+	    if (plusp == true) {
+	      prevpos = chroffset + prevposition;
+	      currpos = chroffset + position + querydistance;
+#if 0
+	      donor_score = Maxent_hr_donor_prob(currpos,chroffset);
+	      acceptor_score = Maxent_hr_acceptor_prob(prevpos,chroffset);
+	      antidonor_score = Maxent_hr_antidonor_prob(prevpos,chroffset);
+	      antiacceptor_score = Maxent_hr_antiacceptor_prob(currpos,chroffset);
+	      debug9(printf("lookforward plus: sense donorpos %u, acceptorpos %u: %f..%f\n",
+			    currpos-chroffset,prevpos-chroffset+1,donor_score,acceptor_score));
+	      debug9(printf("lookforward plus: anti donorpos %u, acceptorpos %u: %f..%f\n",
+			    prevpos-chroffset+1,currpos-chroffset,antidonor_score,antiacceptor_score));
+#elif 0
+	      donorpos = Genome_prev_donor_position(/*right*/currpos + GREEDY_ADVANCE,
+						    /*left*/currpos - MISS_BEHIND,chroffset);
+	      acceptorpos = Genome_prev_acceptor_position(/*right*/prevpos + GREEDY_ADVANCE,
+							  /*left*/prevpos - MISS_BEHIND,chroffset);
+	      debug9(printf("lookforward plus: sense prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+
+	      donorpos = Genome_prev_antidonor_position(/*right*/prevpos + GREEDY_ADVANCE,
+							/*left*/prevpos - MISS_BEHIND,chroffset);
+	      acceptorpos = Genome_prev_antiacceptor_position(/*right*/currpos + GREEDY_ADVANCE,
+							      /*left*/currpos - MISS_BEHIND,chroffset);
+	      debug9(printf("lookforward plus: anti prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+#else
+	      if (currpos < MISS_BEHIND || prevpos < MISS_BEHIND) {
+		canonicalp = false;
+	      } else if (Genome_sense_canonicalp(/*donor_rightbound*/currpos + GREEDY_ADVANCE,
+						 /*donor_leftbound*/currpos - MISS_BEHIND,
+						 /*acceptor_rightbound*/prevpos + GREEDY_ADVANCE,
+						 /*acceptor_leftbound*/prevpos - MISS_BEHIND,
+						 chroffset) == true) {
+		debug9(printf("lookforward plus: sense canonical\n"));
+		canonicalp = true;
+	      } else if (Genome_antisense_canonicalp(/*donor_rightbound*/prevpos + GREEDY_ADVANCE,
+						     /*donor_leftbound*/prevpos - MISS_BEHIND,
+						     /*acceptor_rightbound*/currpos + GREEDY_ADVANCE,
+						     /*acceptor_leftbound*/currpos - MISS_BEHIND,
+						     chroffset) == true) {
+		debug9(printf("lookforward plus: antisense canonical\n"));
+		canonicalp = true;
+	      } else {
+		debug9(printf("lookforward plus: not canonical\n"));
+		canonicalp = false;
+	      }
 #endif
-	  } else if (near_end_p == false && prevlink->fwd_consecutive < EXON_DEFN) {
-	    canonicalsgn = 0;
-	    if (splicingp == true) {
-	      fwd_score = prevlink->fwd_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
+	      
 	    } else {
-	      fwd_score = prevlink->fwd_score - diffdist_penalty_nosplicing(diffdistance) - querydist_penalty(querydistance) - NINTRON_PENALTY_MISMATCH;
+	      prevpos = chrhigh + 1 - prevposition;
+	      currpos = chrhigh + 1 - position - querydistance;
+#if 0
+	      donor_score = Maxent_hr_donor_prob(prevpos,chroffset);
+	      acceptor_score = Maxent_hr_acceptor_prob(currpos,chroffset);
+	      antidonor_score = Maxent_hr_antidonor_prob(currpos,chroffset);
+	      antiacceptor_score = Maxent_hr_antiacceptor_prob(prevpos,chroffset);
+	      debug9(printf("lookforward minus: sense donorpos %u, acceptorpos %u: %f..%f\n",
+			    prevpos-chroffset,currpos-chroffset+1,donor_score,acceptor_score));
+	      debug9(printf("lookforward minus: anti donorpos %u, acceptorpos %u: %f..%f\n",
+			    currpos-chroffset+1,prevpos-chroffset,antidonor_score,antiacceptor_score)); 
+#elif 0
+	      donorpos = Genome_prev_donor_position(/*right*/prevpos + MISS_BEHIND,
+						    /*left*/prevpos - GREEDY_ADVANCE,chroffset);
+	      acceptorpos = Genome_prev_acceptor_position(/*right*/currpos + MISS_BEHIND,
+							  /*left*/currpos - GREEDY_ADVANCE,chroffset);
+	      debug9(printf("lookforward minus: sense prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+
+	      donorpos = Genome_prev_antidonor_position(/*right*/currpos + MISS_BEHIND,
+							/*left*/currpos - GREEDY_ADVANCE,chroffset);
+	      acceptorpos = Genome_prev_antiacceptor_position(/*right*/prevpos + MISS_BEHIND,
+							      /*left*/prevpos - GREEDY_ADVANCE,chroffset);
+	      debug9(printf("lookforward minus: anti prev donorpos %u, prev acceptorpos %u\n",donorpos-chroffset,acceptorpos-chroffset));
+#else
+	      if (prevpos < GREEDY_ADVANCE || currpos < GREEDY_ADVANCE) {
+		canonicalp = false;
+	      } else if (Genome_sense_canonicalp(/*donor_rightbound*/prevpos + MISS_BEHIND,
+						 /*donor_leftbound*/prevpos - GREEDY_ADVANCE,
+						 /*acceptor_rightbound*/currpos + MISS_BEHIND,
+						 /*acceptor_leftbound*/currpos - GREEDY_ADVANCE,
+						 chroffset) == true) {
+		debug9(printf("lookforward minus: sense canonical\n"));
+		canonicalp = true;
+	      } else if (Genome_antisense_canonicalp(/*donor_rightbound*/currpos + MISS_BEHIND,
+						     /*donor_leftbound*/currpos - GREEDY_ADVANCE,
+						     /*acceptor_rightbound*/prevpos + MISS_BEHIND,
+						     /*acceptor_leftbound*/prevpos - GREEDY_ADVANCE,
+						     chroffset) == true) {
+		debug9(printf("lookforward minus: antisense canonical\n"));
+		canonicalp = true;
+	      } else {
+		debug9(printf("lookforward minus: not canonical\n"));
+		canonicalp = false;
+	      }
+#endif
 	    }
 
-	  } else if (splicingp == false) {
-	    canonicalsgn = 0;
-	    fwd_score = prevlink->fwd_score - diffdist_penalty_nosplicing(diffdistance) - querydist_penalty(querydistance);
-	  } else {
-	    canonicalsgn = +1;
-	    fwd_score = prevlink->fwd_score - diffdist_penalty_splicing(diffdistance) - querydist_penalty(querydistance);
+	    if (canonicalp == false) {
+	      fwd_score -= non_canonical_penalty;
+	    }
 	  }
 
-	  debug9(printf("\tD. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from %d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+	  debug9(printf("\tD2. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
 			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
-			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_rootposition,
+			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
 			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
-			gendistance,querydistance,canonicalsgn));
+			gendistance-indexsize_nt,querydistance-indexsize_nt,canonicalsgn));
 	    
-#ifdef USE_SUBOPTIMAL_STARTS
-	  fwd_prevposes = Intlist_push(fwd_prevposes,prev_querypos);
-	  fwd_prevhits = Intlist_push(fwd_prevhits,prevhit);
-	  fwd_scores = Intlist_push(fwd_scores,fwd_score);
+	  /* Disallow ties, which should favor adjacent */
+	  if (fwd_score > best_fwd_score) {
+	    if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
+	      best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
+	      /* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
+	    } else {
+	      best_fwd_consecutive = 0;
+	      /* best_fwd_rootnlinks = 1; */
+	    }
+	    best_fwd_rootposition = prevlink->fwd_rootposition;
+	    best_fwd_score = fwd_score;
+	    best_fwd_prevpos = prev_querypos;
+	    best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	    best_fwd_tracei = ++*fwd_tracei;
+	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
+	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
+	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
+	    switch (canonicalsgn) {
+	    case 1: best_fwd_intronnfwd++; break;
+	    case 0: best_fwd_intronnunk++; break;
+	    }
 #endif
+	    debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
+	  } else {
+	    debug9(printf(" => Loses to %d\n",best_fwd_score));
+	  }
+
+	  prevhit = active[prev_querypos][prevhit];
+	}
+
+#if 0
+	/* Scoring appears to be the same as for range 4, which is rarely called */
+	/* Range 3: From (querypos + EQUAL_DISTANCE_NOT_SPLICING) to (querypos - EQUAL_DISTANCE_NOT_SPLICING) */
+	/* This is equivalent to -diffdistance > EQUAL_DISTANCE_NOT_SPLICING && prevposition + indexsize_nt <= position */
+	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) + EQUAL_DISTANCE_NOT_SPLICING > position + querydistance &&
+	       prevposition >= position + indexsize_nt) {
+	  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	  prevlink = &(links[prev_querypos][prevhit]);
+
+	  gendistance = prevposition - position;
+	  diffdistance = abs(gendistance - querydistance);
 
-	  /* Allow ties, which should favor shorter intron */
-	  if (fwd_score >= best_fwd_score) {
+	  /* canonicalsgn = 9; */
+	  /* ? Add diffdistance as penalty here */
+	  fwd_score = prevlink->fwd_score + querydist_credit - (diffdistance/ONE + 1);
+#ifdef PMAP
+	  if (diffdistance % 3 != 0) {
+	    fwd_score -= NONCODON_INDEL_PENALTY;
+	  }
+#endif
+	  debug9(printf("\tD3. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
+			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
+			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
+			gendistance-indexsize_nt,querydistance-indexsize_nt,/*canonicalsgn*/9));
+	    
+	  /* Disallow ties, which should favor adjacent */
+	  if (fwd_score > best_fwd_score) {
 	    if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
-	      best_fwd_consecutive = prevlink->fwd_consecutive + (querydistance + indexsize_nt);
-	      best_fwd_rootposition = prevlink->fwd_rootposition;
+	      best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
 	      /* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
 	    } else {
 	      best_fwd_consecutive = 0;
-	      best_fwd_rootposition = position;
 	      /* best_fwd_rootnlinks = 1; */
 	    }
-#ifdef USE_SUBOPTIMAL_STARTS
-	    best_fwd_initposition = prevlink->fwd_initposition;
-#endif
+	    best_fwd_rootposition = prevlink->fwd_rootposition;
 	    best_fwd_score = fwd_score;
 	    best_fwd_prevpos = prev_querypos;
 	    best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	    best_fwd_tracei = prevlink->fwd_tracei; /* Keep previous trace */
 	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
 	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
 	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
+#if 0
 	    switch (canonicalsgn) {
 	    case 1: best_fwd_intronnfwd++; break;
 	    case 0: best_fwd_intronnunk++; break;
 	    }
+#endif
+#endif
 	    debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
 	  } else {
 	    debug9(printf(" => Loses to %d\n",best_fwd_score));
 	  }
+
+	  prevhit = active[prev_querypos][prevhit];
 	}
+#endif
 
-	prevhit = active[prev_querypos][prevhit];
+	/* Range 4: From (prev_querypos - EQUAL_DISTANCE_NOT_SPLICING) to indexsize_nt */
+	while (prevhit != -1 && (prevposition = mappings[prev_querypos][prevhit]) >= position + indexsize_nt) {
+	  /* printf("fwd: prevposition %u, prevhit %d\n",prevposition,prevhit); */
+	  prevlink = &(links[prev_querypos][prevhit]);
+
+	  gendistance = prevposition - position;
+	  diffdistance = abs(gendistance - querydistance);
+
+#ifdef BAD_GMAX
+	  fwd_score = prevlink->fwd_score + querydist_credit - (diffdistance/ONE + 1) /*- querydist_penalty*/;
+#else
+	  /* diffdistance <= EQUAL_DISTANCE_NOT_SPLICING */
+	  /* This is how version 2013-08-14 did it */
+	  fwd_score = prevlink->fwd_score + CONSEC_POINTS_PER_MATCH;
+#endif
+#if 0
+	  if (/*near_end_p == false &&*/ prevlink->fwd_consecutive < EXON_DEFN) {
+	    fwd_score -= NINTRON_PENALTY_MISMATCH;
+	  }
+#endif
+
+	  debug9(printf("\tD4. Fwd mismatch qpos %d,%d at %ux%d (score = %d -> %d, consec = %d (from #%d), intr = %d-%d-%d, gendist %u, querydist %d, canonicalsgn %d)",
+			prev_querypos,prevhit,prevposition,active[prev_querypos][prevhit],
+			prevlink->fwd_score,fwd_score,prevlink->fwd_consecutive,prevlink->fwd_tracei,
+			best_fwd_intronnfwd,best_fwd_intronnrev,best_fwd_intronnunk,
+			gendistance-indexsize_nt,querydistance-indexsize_nt,canonicalsgn));
+	    
+	  /* Disallow ties, which should favor adjacent */
+	  if (fwd_score > best_fwd_score) {
+	    if (diffdistance <= EQUAL_DISTANCE_FOR_CONSECUTIVE) {
+	      best_fwd_consecutive = prevlink->fwd_consecutive + querydistance;
+	      /* best_fwd_rootnlinks = prevlink->fwd_rootnlinks + 1; */
+	    } else {
+	      best_fwd_consecutive = 0;
+	      /* best_fwd_rootnlinks = 1; */
+	    }
+	    best_fwd_rootposition = prevlink->fwd_rootposition;
+	    best_fwd_score = fwd_score;
+	    best_fwd_prevpos = prev_querypos;
+	    best_fwd_prevhit = prevhit;
+#ifdef DEBUG9
+	    /* best_fwd_tracei = ++*fwd_tracei; */
+	    best_fwd_tracei = prevlink->fwd_tracei; /* Keep previous trace, as in range 3 */
+	    best_fwd_intronnfwd = prevlink->fwd_intronnfwd;
+	    best_fwd_intronnrev = prevlink->fwd_intronnrev;
+	    best_fwd_intronnunk = prevlink->fwd_intronnunk;
+	    switch (canonicalsgn) {
+	    case 1: best_fwd_intronnfwd++; break;
+	    case 0: best_fwd_intronnunk++; break;
+	    }
+#endif
+	    debug9(printf(" => Best fwd at %d (consec = %d)\n",fwd_score,best_fwd_consecutive));
+	  } else {
+	    debug9(printf(" => Loses to %d\n",best_fwd_score));
+	  }
+
+	  prevhit = active[prev_querypos][prevhit];
+	}
       }
+
     }
   }
 
@@ -2507,70 +1904,49 @@ score_querypos_splicing_no_shifted (Link_T currlink, int querypos, int hit,
   /* currlink->fwd_rootnlinks = best_fwd_rootnlinks; */
   currlink->fwd_pos = best_fwd_prevpos;
   currlink->fwd_hit = best_fwd_prevhit;
-  if (localp && currlink->fwd_pos < 0) {
+  if (currlink->fwd_pos >= 0) {
+    debug9(currlink->fwd_tracei = best_fwd_tracei);
+    currlink->fwd_score = best_fwd_score;
+  } else if (anchoredp == true) {
+    debug9(currlink->fwd_tracei = -1);
+    currlink->fwd_score = -100000;
+  } else if (localp == true) {
+    debug9(currlink->fwd_tracei = ++*fwd_tracei);
     currlink->fwd_score = indexsize_nt;
-#ifdef USE_SUBOPTIMAL_STARTS
-    currlink->fwd_initposition = position;
-#endif
   } else {
+    debug9(currlink->fwd_tracei = ++*fwd_tracei);
     currlink->fwd_score = best_fwd_score;
-#ifdef USE_SUBOPTIMAL_STARTS
-    currlink->fwd_initposition = best_fwd_initposition;
-#endif
   }
+
+#ifdef DEBUG9
   currlink->fwd_intronnfwd = best_fwd_intronnfwd;
   currlink->fwd_intronnrev = best_fwd_intronnrev;
   currlink->fwd_intronnunk = best_fwd_intronnunk;
+#endif
 
-  debug9(printf("\tChose %d,%d with score %d (fwd)\n",
-	       currlink->fwd_pos,currlink->fwd_hit,currlink->fwd_score));
+  debug9(printf("\tChose %d,%d with score %d (fwd) => trace #%d\n",
+		currlink->fwd_pos,currlink->fwd_hit,currlink->fwd_score,currlink->fwd_tracei));
   debug3(printf("%d %d  %d %d  1\n",querypos,hit,best_prevpos,best_prevhit));
 
-#ifdef USE_SUBOPTIMAL_STARTS
-  /* Add ties */
-  for (p = fwd_prevposes, q = fwd_prevhits, r = fwd_scores; p != NULL; p = Intlist_next(p), q = Intlist_next(q), r = Intlist_next(r)) {
-    prev_querypos = Intlist_head(p);
-    prevhit = Intlist_head(q);
-    fwd_score = Intlist_head(r);
-    if (fwd_score < best_fwd_score - suboptimal_score_start) {
-      /* Skip */
-    } else if (prev_querypos == best_fwd_prevpos && prevhit == best_fwd_prevhit) {
-      /* Skip */
-    } else if ((initposition = links[prev_querypos][prevhit].fwd_initposition) == best_fwd_initposition) {
-      /* Skip */
-    } else if (fwd_score <= fwd_initposition_bestscore[initposition]) {
-      /* Skip */
-    } else {
-      currlink->fwd_pos_ties = Intlist_push(currlink->fwd_pos_ties,prev_querypos);
-      currlink->fwd_hit_ties = Intlist_push(currlink->fwd_hit_ties,prevhit);
-      fwd_initposition_bestscore[initposition] = fwd_score;
-      fwd_initposition_bestpos[initposition] = querypos;
-      fwd_initposition_besthit[initposition] = hit;
-    }
-  }
-  Intlist_free(&fwd_scores);
-  Intlist_free(&fwd_prevhits);
-  Intlist_free(&fwd_prevposes);
-#endif
-
   return;
 }
 
 
-
 static void
-revise_active (int **active, int *firstactive, int *nactive, 
-	       int low_hit, int high_hit, struct Link_T **links, int querypos) {
+revise_active_lookback (int **active, int *firstactive, int *nactive, 
+			int low_hit, int high_hit, struct Link_T **links, int querypos,
+			Chrpos_T **mappings) {
   int best_score, threshold, score;
   int hit, *ptr;
 
   debug6(printf("Revising querypos %d from low_hit %d to high_hit %d.  Scores:\n",querypos,low_hit,high_hit));
   if ((hit = low_hit) >= high_hit) {
     firstactive[querypos] = -1;
+    nactive[querypos] = 0;
   } else {
     debug6(printf("At hit %d, fwd_score is %d",hit,links[querypos][hit].fwd_score));
     best_score = links[querypos][hit].fwd_score;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     debug6(printf(" and rev_score is %d",links[querypos][hit].rev_score));
     if ((score = links[querypos][hit].rev_score) > best_score) {
       best_score = score;
@@ -2583,7 +1959,7 @@ revise_active (int **active, int *firstactive, int *nactive,
       if ((score = links[querypos][hit].fwd_score) > best_score) {
 	best_score = score;
       }
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
       debug6(printf(" and rev_score is %d",links[querypos][hit].rev_score));
       if ((score = links[querypos][hit].rev_score) > best_score) {
 	best_score = score;
@@ -2602,7 +1978,7 @@ revise_active (int **active, int *firstactive, int *nactive,
     hit = low_hit;
     while (hit < high_hit) {
       while (hit < high_hit && links[querypos][hit].fwd_score <= threshold
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
 	     && links[querypos][hit].rev_score <= threshold
 #endif
 	     ) {
@@ -2619,7 +1995,83 @@ revise_active (int **active, int *firstactive, int *nactive,
   }
 
   debug6(
-	 printf("Valid hits (%d) at querypos %d:",nactive[querypos],querypos);
+	 printf("Valid hits (%d) at querypos %d (firstactive %d):",nactive[querypos],querypos,firstactive[querypos]);
+	 hit = firstactive[querypos];
+	 while (hit != -1) {
+	   printf(" %d",hit);
+	   hit = active[querypos][hit];
+	 }
+	 printf("\n");
+	 );
+
+  return;
+}
+
+
+static void
+revise_active_lookforward (int **active, int *firstactive, int *nactive, 
+			   int low_hit, int high_hit, struct Link_T **links, int querypos,
+			   Chrpos_T **mappings) {
+  int best_score, threshold, score;
+  int hit, *ptr;
+
+  debug6(printf("Revising querypos %d from high_hit %d to low_hit %d.  Scores:\n",querypos,high_hit,low_hit));
+  if ((hit = high_hit - 1) < low_hit) {
+    firstactive[querypos] = -1;
+    nactive[querypos] = 0;
+  } else {
+    debug6(printf("At hit %d, fwd_score is %d",hit,links[querypos][hit].fwd_score));
+    best_score = links[querypos][hit].fwd_score;
+#ifdef SEPARATE_FWD_REV
+    debug6(printf(" and rev_score is %d",links[querypos][hit].rev_score));
+    if ((score = links[querypos][hit].rev_score) > best_score) {
+      best_score = score;
+    }
+#endif
+    debug6(printf("\n"));
+
+    for (--hit; hit >= low_hit; --hit) {
+      debug6(printf("At hit %d, fwd_score is %d",hit,links[querypos][hit].fwd_score));
+      if ((score = links[querypos][hit].fwd_score) > best_score) {
+	best_score = score;
+      }
+#ifdef SEPARATE_FWD_REV
+      debug6(printf(" and rev_score is %d",links[querypos][hit].rev_score));
+      if ((score = links[querypos][hit].rev_score) > best_score) {
+	best_score = score;
+      }
+#endif
+      debug6(printf("\n"));
+    }
+
+    threshold = best_score - SCORE_FOR_RESTRICT;
+    if (threshold < 0) {
+      threshold = 0;
+    }
+
+    nactive[querypos] = 0;
+    ptr = &(firstactive[querypos]);
+    hit = high_hit - 1;
+    while (hit >= low_hit) {
+      while (hit >= low_hit && links[querypos][hit].fwd_score <= threshold
+#ifdef SEPARATE_FWD_REV
+	     && links[querypos][hit].rev_score <= threshold
+#endif
+	     ) {
+	--hit;
+      }
+      *ptr = hit;
+      if (hit >= low_hit) {
+	nactive[querypos] += 1;
+	ptr = &(active[querypos][hit]);
+	--hit;
+      }
+    }
+    *ptr = -1;
+  }
+
+  debug6(
+	 printf("Valid hits (%d) at querypos %d (firstactive %d):",nactive[querypos],querypos,firstactive[querypos]);
 	 hit = firstactive[querypos];
 	 while (hit != -1) {
 	   printf(" %d",hit);
@@ -2631,6 +2083,8 @@ revise_active (int **active, int *firstactive, int *nactive,
   return;
 }
 
+
+
 static int **
 intmatrix_1d_new (int length1, int *lengths2, int totallength) {
   int **matrix;
@@ -2690,6 +2144,7 @@ intmatrix_2d_free (int ***matrix, int length1) {
  *   Cells used for ranking hits
  ************************************************************************/
 
+#if 0
 typedef struct Cell_T *Cell_T;
 struct Cell_T {
   int rootposition;
@@ -2699,7 +2154,7 @@ struct Cell_T {
   int score;
 };
 
-
+/* Replaced by Cellpool_T routines */
 static void
 Cell_free (Cell_T *old) {
   FREE(*old);
@@ -2718,6 +2173,7 @@ Cell_new (int rootposition, int querypos, int hit, bool fwdp, int score) {
   new->score = score;
   return new;
 }
+#endif
 
 
 static int
@@ -2729,6 +2185,12 @@ Cell_rootposition_left_cmp (const void *a, const void *b) {
     return -1;
   } else if (y->rootposition < x->rootposition) {
     return +1;
+#if 0
+  } else if (x->tracei < y->tracei) {
+    return -1;
+  } else if (y->tracei < x->tracei) {
+    return +1;
+#endif
   } else if (x->score > y->score) {
     return -1;
   } else if (y->score > x->score) {
@@ -2759,6 +2221,12 @@ Cell_rootposition_right_cmp (const void *a, const void *b) {
     return -1;
   } else if (y->rootposition < x->rootposition) {
     return +1;
+#if 0
+  } else if (x->tracei < y->tracei) {
+    return -1;
+  } else if (y->tracei < x->tracei) {
+    return +1;
+#endif
   } else if (x->score > y->score) {
     return -1;
   } else if (y->score > x->score) {
@@ -2796,19 +2264,18 @@ Cell_score_cmp (const void *a, const void *b) {
 }
 
 
-
+#ifdef USE_THRESHOLD_SCORE
+/* Doesn't work well for short dynamic programming at the ends of a read */
 static Cell_T *
-Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int length1, int *npositions,
-			  int indexsize, int bestscore, bool favor_right_p) {
+Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int querystart, int queryend, int *npositions,
+			  int indexsize, int bestscore, bool favor_right_p, Cellpool_T cellpool) {
   Cell_T *sorted, *cells;
   List_T celllist = NULL;
-  int querypos, hit, lastpos;
+  int querypos, hit;
   int rootposition, last_rootposition;
   int threshold_score;
   int ngood, ncells, i, k;
 
-  lastpos = length1 - indexsize;
-
   if (bestscore > 2*suboptimal_score_end) {
     threshold_score = bestscore - suboptimal_score_end;
   } else {
@@ -2819,7 +2286,7 @@ Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int length1, int
   }
 
   ncells = 0;
-  for (querypos = 0; querypos <= lastpos; querypos++) {
+  for (querypos = querystart; querypos <= queryend; querypos++) {
     ngood = 0;
     for (hit = 0; hit < npositions[querypos]; hit++) {
       if (links[querypos][hit].fwd_score >= threshold_score) {
@@ -2828,10 +2295,13 @@ Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int length1, int
     }
     if (ngood > 0 && ngood <= 10) {
       for (hit = 0; hit < npositions[querypos]; hit++) {
+	debug11(printf("  At %d,%d, comparing score %d with threshold_score %d\n",
+		       querypos,hit,links[querypos][hit].fwd_score,threshold_score));
 	if (links[querypos][hit].fwd_score >= threshold_score) {
 	  rootposition = links[querypos][hit].fwd_rootposition;
-	  celllist = List_push(celllist,(void *) Cell_new(rootposition,querypos,hit,/*fwdp*/true,
-							  links[querypos][hit].fwd_score));
+	  /* tracei = links[querypos][hit].fwd_tracei; */
+	  celllist = Cellpool_push(celllist,cellpool,rootposition,querypos,hit,/*fwdp*/true,
+				   links[querypos][hit].fwd_score);
 	  ncells++;
 	}
       }
@@ -2843,9 +2313,9 @@ Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int length1, int
     return (Cell_T *) NULL;
 
   } else {
-    /* Take best result for each rootposition */
+    /* Take best result for each tracei */
     cells = (Cell_T *) List_to_array(celllist,NULL);
-    List_free(&celllist);
+    /* List_free(&celllist); -- No need with cellpool */
 
     if (favor_right_p == true) {
       qsort(cells,ncells,sizeof(Cell_T),Cell_rootposition_right_cmp);
@@ -2859,10 +2329,10 @@ Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int length1, int
     last_rootposition = -1;
     for (i = 0; i < ncells; i++) {
       if (cells[i]->rootposition == last_rootposition) {
-	Cell_free(&(cells[i]));
+	/* Cell_free(&(cells[i])); -- no need with cellpool */
       } else {
-	debug11(printf("Pushing position %d, score %d, pos %d, hit %d\n",
-		       cells[i]->rootposition,cells[i]->score,cells[i]->querypos,cells[i]->hit));
+	debug11(printf("Pushing rootposition %d, trace #%d, score %d, pos %d, hit %d\n",
+		       cells[i]->rootposition,cells[i]->tracei,cells[i]->score,cells[i]->querypos,cells[i]->hit));
 	sorted[k++] = cells[i];
 	last_rootposition = cells[i]->rootposition;
       }
@@ -2877,36 +2347,101 @@ Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int length1, int
   }
 }
 
+#else
 
 static Cell_T *
-Linkmatrix_get_cells_both (int *nunique, struct Link_T **links, int length1, int *npositions,
-			   int indexsize, int bestscore, bool favor_right_p) {
+Linkmatrix_get_cells_fwd (int *nunique, struct Link_T **links, int querystart, int queryend, int *npositions,
+			  int indexsize, int bestscore, bool favor_right_p, Cellpool_T cellpool) {
   Cell_T *sorted, *cells;
   List_T celllist = NULL;
-  int querypos, hit, lastpos;
+  int querypos, hit;
   int rootposition, last_rootposition;
-  int threshold_score;
   int ngood, ncells, i, k;
 
-  lastpos = length1 - indexsize;
-
-  if (bestscore > 2*suboptimal_score_end) {
-    threshold_score = bestscore - suboptimal_score_end;
-  } else {
+  ncells = 0;
+  for (querypos = querystart; querypos <= queryend; querypos++) {
+    for (hit = 0; hit < npositions[querypos]; hit++) {
+      if (links[querypos][hit].fwd_score > 0) {
+	rootposition = links[querypos][hit].fwd_rootposition;
+	/* tracei = links[querypos][hit].fwd_tracei; */
+	celllist = Cellpool_push(celllist,cellpool,rootposition,querypos,hit,/*fwdp*/true,
+				 links[querypos][hit].fwd_score);
+	ncells++;
+      }
+    }
+  }
+
+  if (ncells == 0) {
+    *nunique = 0;
+    return (Cell_T *) NULL;
+
+  } else {
+    /* Take best result for each tracei */
+    cells = (Cell_T *) List_to_array(celllist,NULL);
+    /* List_free(&celllist); -- No need with cellpool */
+
+    if (favor_right_p == true) {
+      qsort(cells,ncells,sizeof(Cell_T),Cell_rootposition_right_cmp);
+    } else {
+      qsort(cells,ncells,sizeof(Cell_T),Cell_rootposition_left_cmp);
+    }
+
+    sorted = (Cell_T *) CALLOC(ncells,sizeof(Cell_T));
+    k = 0;
+
+    last_rootposition = -1;
+    for (i = 0; i < ncells; i++) {
+      if (cells[i]->rootposition == last_rootposition) {
+	/* Cell_free(&(cells[i])); -- no need with cellpool */
+      } else {
+	debug11(printf("Pushing rootposition %d, score %d, pos %d, hit %d\n",
+		       cells[i]->rootposition,cells[i]->score,cells[i]->querypos,cells[i]->hit));
+	sorted[k++] = cells[i];
+	last_rootposition = cells[i]->rootposition;
+      }
+    }
+    debug11(printf("\n"));
+    FREE(cells);
+  
+    *nunique = k;
+    qsort(sorted,*nunique,sizeof(Cell_T),Cell_score_cmp);
+
+    return sorted;
+  }
+}
+
+#endif
+
+static Cell_T *
+Linkmatrix_get_cells_both (int *nunique, struct Link_T **links, int querystart, int queryend, int *npositions,
+			   int indexsize, int bestscore, bool favor_right_p, Cellpool_T cellpool) {
+  Cell_T *sorted, *cells;
+  List_T celllist = NULL;
+  int querypos, hit;
+  int rootposition, last_rootposition;
+  int threshold_score;
+  int ngood, ncells, i, k;
+
+  if (bestscore > 2*suboptimal_score_end) {
+    threshold_score = bestscore - suboptimal_score_end;
+  } else {
     threshold_score = bestscore/2;
   }
   if (threshold_score <= indexsize) {
     threshold_score = indexsize + 1;
   }
 
+  debug11(printf("Entered Linkmatrix_get_cells_both with querystart %d, queryend %d, threshold score %d\n",
+		 querystart,queryend,threshold_score));
+
   ncells = 0;
-  for (querypos = 0; querypos <= lastpos; querypos++) {
+  for (querypos = querystart; querypos <= queryend; querypos++) {
     ngood = 0;
     for (hit = 0; hit < npositions[querypos]; hit++) {
       if (links[querypos][hit].fwd_score >= threshold_score) {
 	ngood++;
       }
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
       if (links[querypos][hit].rev_score >= threshold_score) {
 	ngood++;
       }
@@ -2916,15 +2451,17 @@ Linkmatrix_get_cells_both (int *nunique, struct Link_T **links, int length1, int
       for (hit = 0; hit < npositions[querypos]; hit++) {
 	if (links[querypos][hit].fwd_score >= threshold_score) {
 	  rootposition = links[querypos][hit].fwd_rootposition;
-	  celllist = List_push(celllist,(void *) Cell_new(rootposition,querypos,hit,/*fwdp*/true,
-							  links[querypos][hit].fwd_score));
+	  /* tracei = links[querypos][hit].fwd_tracei; */
+	  celllist = Cellpool_push(celllist,cellpool,rootposition,querypos,hit,/*fwdp*/true,
+				   links[querypos][hit].fwd_score);
 	  ncells++;
 	}
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
 	if (links[querypos][hit].rev_score >= threshold_score) {
 	  rootposition = links[querypos][hit].rev_rootposition;
-	  celllist = List_push(celllist,(void *) Cell_new(rootposition,querypos,hit,/*fwdp*/false,
-							  links[querypos][hit].rev_score));
+	  /* tracei = links[querypos][hit].rev_tracei; */
+	  celllist = Cellpool_push(celllist,cellpool,rootposition,querypos,hit,/*fwdp*/false,
+				   links[querypos][hit].rev_score);
 	  ncells++;
 	}
 #endif
@@ -2937,9 +2474,9 @@ Linkmatrix_get_cells_both (int *nunique, struct Link_T **links, int length1, int
     return (Cell_T *) NULL;
 
   } else {
-    /* Take best result for each rootposition */
+    /* Take best result for each tracei */
     cells = (Cell_T *) List_to_array(celllist,NULL);
-    List_free(&celllist);
+    /* List_free(&celllist); -- no need with cellpool */
 
     if (favor_right_p == true) {
       qsort(cells,ncells,sizeof(Cell_T),Cell_rootposition_right_cmp);
@@ -2953,9 +2490,9 @@ Linkmatrix_get_cells_both (int *nunique, struct Link_T **links, int length1, int
     last_rootposition = -1;
     for (i = 0; i < ncells; i++) {
       if (cells[i]->rootposition == last_rootposition) {
-	Cell_free(&(cells[i]));
+	/* Cell_free(&(cells[i])); -- no need with cellpool */
       } else {
-	debug11(printf("position %d, score %d, pos %d, hit %d\n",
+	debug11(printf("rootposition %d, score %d, pos %d, hit %d\n",
 		       cells[i]->rootposition,cells[i]->score,cells[i]->querypos,cells[i]->hit));
 	sorted[k++] = cells[i];
 	last_rootposition = cells[i]->rootposition;
@@ -2973,40 +2510,63 @@ Linkmatrix_get_cells_both (int *nunique, struct Link_T **links, int length1, int
 
 
 
+static int
+binary_search (int lowi, int highi, Chrpos_T *mappings, Chrpos_T goal) {
+  int middlei;
+
+  debug10(printf("entered binary search with lowi=%d, highi=%d, goal=%u\n",lowi,highi,goal));
+  if (mappings == NULL) {
+    return -1;
+  } else {
+    while (lowi < highi) {
+      middlei = lowi + ((highi - lowi) / 2);
+      debug10(printf("  binary: %d:%u %d:%u %d:%u   vs. %u\n",
+		     lowi,mappings[lowi],middlei,mappings[middlei],
+		     highi,mappings[highi],goal));
+      if (goal < mappings[middlei]) {
+	highi = middlei;
+      } else if (goal > mappings[middlei]) {
+	lowi = middlei + 1;
+      } else {
+	debug10(printf("binary search returns %d\n",middlei));
+	return middlei;
+      }
+    }
+
+    debug10(printf("binary search returns %d\n",highi));
+    return highi;
+  }
+}
+
 
 /* Returns celllist */
 /* For PMAP, indexsize is in aa. */
 static Cell_T *
-align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, int *npositions, int totalpositions,
-		      bool oned_matrix_p, unsigned int *minactive, unsigned int *maxactive,
-#ifdef USE_SUBOPTIMAL_STARTS
-		      int *fwd_initposition_bestpos, int *fwd_initposition_besthit,
-		      int *rev_initposition_bestpos, int *rev_initposition_besthit,
-#endif
-		      int querystart, int queryend, int querylength,
+align_compute_scores_lookback (int *ncells, struct Link_T **links, Chrpos_T **mappings, int *npositions, int totalpositions,
+			       bool oned_matrix_p, Chrpos_T *minactive, Chrpos_T *maxactive, Cellpool_T cellpool,
+			       int querystart, int queryend, int querylength,
 
-		      Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			       Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
 
-		      int indexsize, int sufflookback, int nsufflookback, int maxintronlen,
+			       int indexsize, int sufflookback, int nsufflookback, int maxintronlen,
 #ifdef DEBUG9
-		      char *queryseq_ptr,
+			       char *queryseq_ptr,
 #endif
-		      bool localp, bool skip_repetitive_p, 
-		      bool use_shifted_canonical_p, bool debug_graphic_p, bool favor_right_p) {
+			       bool anchoredp, int anchor_querypos, Chrpos_T anchor_position,
+			       bool localp, bool skip_repetitive_p, 
+			       bool use_canonical_p, int non_canonical_penalty, bool debug_graphic_p, bool favor_right_p) {
   Cell_T *cells;
   Link_T currlink, prevlink;
-  int querypos, indexsize_nt, hit, low_hit, high_hit;
+  int querypos, indexsize_nt, indexsize_query, hit, low_hit, high_hit;
   int nskipped, min_hits, specific_querypos, specific_low_hit, specific_high_hit, next_querypos;
   Intlist_T processed = NULL;
   int best_overall_score = 0;
   int grand_fwd_score, grand_fwd_querypos, grand_fwd_hit, best_fwd_hit, best_fwd_score;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
   int grand_rev_score, grand_rev_querypos, grand_rev_hit, best_rev_hit, best_rev_score;
+  debug9(int rev_tracei = 0);
 #endif
   int **active, *firstactive, *nactive;
-#ifdef USE_SUBOPTIMAL_STARTS
-  int *fwd_initposition_bestscore, *rev_initposition_bestscore;
-#endif
   Chrpos_T position, prevposition;
 #if 0
   int *lastGT, *lastAG;
@@ -3016,8 +2576,9 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
 #endif
 #ifdef DEBUG9
   char *oligo;
+  int fwd_tracei = 0;
 #endif
-#ifdef DEBUG10
+#ifdef DEBUG12
   Link_T termlink = NULL;
 #endif
 
@@ -3026,11 +2587,13 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
 #else
   indexsize_nt = indexsize;
 #endif
+  indexsize_query = indexsize;	/* Use when evaluating across query positions */
+
 
 #ifdef DEBUG9
   oligo = (char *) CALLOC(indexsize+1,sizeof(char));
 #endif
-  debug0(printf("Querystart = %d, queryend = %d, indexsize = %d\n",querystart,queryend,indexsize));
+  debug0(printf("Lookback: querystart = %d, queryend = %d, indexsize = %d\n",querystart,queryend,indexsize));
 
   if (oned_matrix_p == true) {
     active = intmatrix_1d_new(querylength,npositions,totalpositions);
@@ -3038,102 +2601,123 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
     active = intmatrix_2d_new(querylength,npositions);
   }
 
-  firstactive = (int *) CALLOC(querylength,sizeof(int));
-  nactive = (int *) CALLOC(querylength,sizeof(int));
-#ifdef USE_SUBOPTIMAL_STARTS
-  fwd_initposition_bestscore = (int *) CALLOC(genomiclength,sizeof(int));
-  rev_initposition_bestscore = (int *) CALLOC(genomiclength,sizeof(int));
-#endif
+  firstactive = (int *) MALLOC(querylength * sizeof(int));
+  nactive = (int *) MALLOC(querylength * sizeof(int));
 
   /* Initialize */
   for (querypos = 0; querypos < querystart; querypos++) {
     firstactive[querypos] = -1;
     nactive[querypos] = 0;
   }
-  while (querypos <= queryend - indexsize && npositions[querypos] <= 0) {
+  while (querypos <= queryend && npositions[querypos] <= 0) {
+    debug9(printf("Skipping querypos %d which has no positions\n",querypos));
     firstactive[querypos] = -1;
+    nactive[querypos] = 0;
     querypos++;
   }
-  if (querypos <= queryend - indexsize) {
+
+  if (anchoredp == true) {
+    /* Guaranteed to find a hit */
+    hit = binary_search(0,npositions[anchor_querypos],mappings[anchor_querypos],/*goal*/anchor_position);
+    if (mappings[anchor_querypos] == NULL) {
+      printf("mappings at anchor_querypos %d is NULL.  mappings = %p\n",anchor_querypos,mappings);
+      abort();
+    }
+
+    currlink = &(links[anchor_querypos][hit]);	
+#ifndef SEPARATE_FWD_REV
+    currlink->fwd_pos = currlink->fwd_hit = -1;
+    currlink->fwd_score = indexsize_nt;
+    currlink->fwd_consecutive = EXON_DEFN;
+    debug9(currlink->fwd_tracei = 0);
+#else
+    fprintf(stderr,"Not implemented yet\n");
+    abort();
+#endif
+
+    debug6(printf("Setting firstactive for anchorpos %d to be %d\n",anchor_querypos,hit));
+    firstactive[anchor_querypos] = hit;
+    nactive[anchor_querypos] = 1;
+    active[anchor_querypos][hit] = -1;
+
+    debug6(printf("Pushing anchorpos %d as processed\n",anchor_querypos));
+    processed = Intlist_push(processed,anchor_querypos);
+
+  } else if (querypos <= queryend) {
     for (hit = 0; hit < npositions[querypos]; hit++) {
       currlink = &(links[querypos][hit]);
-#ifdef PMAP    
+#ifndef SEPARATE_FWD_REV
       currlink->fwd_pos = currlink->fwd_hit = -1;
       currlink->fwd_score = indexsize_nt;
       currlink->fwd_consecutive = indexsize_nt;
-      currlink->fwd_rootposition = mappings[querypos][hit];
-#ifdef USE_SUBOPTIMAL_STARTS
-      currlink->fwd_initposition = mappings[querypos][hit];
-      currlink->fwd_pos_ties = currlink->fwd_hit_ties = (Intlist_T) NULL;
-#endif
+      debug9(currlink->fwd_tracei = -1);
       /* currlink->fwd_rootnlinks = 1; */
 #else
       currlink->fwd_pos = currlink->fwd_hit = -1;
       currlink->fwd_score = indexsize_nt;
       currlink->fwd_consecutive = indexsize_nt;
-      currlink->fwd_rootposition = mappings[querypos][hit];
-#ifdef USE_SUBOPTIMAL_STARTS
-      currlink->fwd_initposition = mappings[querypos][hit];
-      currlink->fwd_pos_ties = currlink->fwd_hit_ties = (Intlist_T) NULL;
-#endif
+      debug9(currlink->fwd_tracei = -1);
       /* currlink->fwd_rootnlinks = 1; */
       if (splicingp == true) {
 	currlink->rev_pos = currlink->rev_hit = -1;
 	currlink->rev_score = indexsize_nt;
 	currlink->rev_consecutive = indexsize_nt;
-	currlink->rev_rootposition = mappings[querypos][hit];
-#ifdef USE_SUBOPTIMAL_STARTS
-	currlink->rev_initposition = mappings[querypos][hit];
-	currlink->rev_pos_ties = currlink->rev_hit_ties = (Intlist_T) NULL;
-#endif
+	debug9(currlink->rev_tracei = -1);
 	/* currlink->rev_rootnlinks = 1; */
       }
 #endif
     }
-    revise_active(active,firstactive,nactive,0,npositions[querypos],links,querypos);
+    revise_active_lookback(active,firstactive,nactive,0,npositions[querypos],links,querypos,mappings);
   }
 
-
   grand_fwd_score = 0;
   grand_fwd_querypos = -1;
   grand_fwd_hit = -1;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
   if (splicingp == true) {
     grand_rev_score = 0;
     grand_rev_querypos = -1;
     grand_rev_hit = -1;
   }
 #endif
-
+  
   nskipped = 0;
   min_hits = 1000000;
   specific_querypos = -1;
 
-  /* querypos += 1; -- this causes querypos 0 to be ignored */
-  while (querypos <= queryend - indexsize) {
+  /* querypos += 1; -- this causes querypos at querystart to be ignored */
+  while (querypos <= queryend) {
     best_fwd_score = 0;
     best_fwd_hit = -1;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     best_rev_score = 0;
     best_rev_hit = -1;
 #endif
     
+    debug9(printf("Positions at querypos %d (forward order):",querypos);
+	   for (hit = 0; hit < npositions[querypos]; hit++) {
+	     printf(" %u",mappings[querypos][hit]);
+	   }
+	   printf("\n");
+	   );
+
     hit = 0;
     while (hit < npositions[querypos] && mappings[querypos][hit] < minactive[querypos]) {
       hit++;
     }
     low_hit = hit;
-    while (hit < npositions[querypos] && mappings[querypos][hit] < maxactive[querypos]) {
+    while (hit < npositions[querypos] && mappings[querypos][hit] <= maxactive[querypos]) {
       hit++;
     }
     high_hit = hit;
     debug9(printf("Querypos %d has hit %d..%d out of %d (minactive = %u, maxactive = %u)\n",
-		 querypos,low_hit,high_hit-1,npositions[querypos],minactive[querypos],maxactive[querypos]));
+		  querypos,low_hit,high_hit-1,npositions[querypos],minactive[querypos],maxactive[querypos]));
 
     /* Can't use nactive yet, so use high_hit - low_hit */
     if (skip_repetitive_p && high_hit - low_hit >= MAX_NACTIVE && nskipped <= MAX_SKIPPED) { /* Previously turned off */
       debug6(printf("Too many active (%d - %d) at querypos %d.  Setting firstactive to be -1\n",high_hit,low_hit,querypos));
       firstactive[querypos] = -1;
+      nactive[querypos] = 0;
       nskipped++;
       debug9(printf("  %d skipped because of %d hits\n",nskipped,high_hit - low_hit + 1));
 
@@ -3157,64 +2741,28 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
 	next_querypos = querypos + 1;
       }
 
-      if (use_shifted_canonical_p == true) {
-	for (hit = low_hit; hit < high_hit; hit++) {
-	  currlink = &(links[querypos][hit]);
-	  position = mappings[querypos][hit];
+      for (hit = low_hit; hit < high_hit; hit++) {
+	currlink = &(links[querypos][hit]);
+	position = mappings[querypos][hit];
 	  
-	  debug9(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
-	  debug9(printf("Finding link at querypos %d,%d at %ux%d (%s).  prev_querypos was %d\n",
-			querypos,hit,position,active[querypos][hit],oligo,processed ? Intlist_head(processed) : -1));
+	debug9(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
+	debug9(printf("Finding link looking back at querypos %d,%d at %ux%d (%s).  prev_querypos was %d\n",
+		      querypos,hit,position,active[querypos][hit],oligo,processed ? Intlist_head(processed) : -1));
 
-	  score_querypos_general(currlink,querypos,querystart,queryend,position,
-				 links,mappings,active,firstactive,
-#ifdef USE_SUBOPTIMAL_STARTS
-				 fwd_initposition_bestscore,fwd_initposition_bestpos,fwd_initposition_besthit,
-				 rev_initposition_bestscore,rev_initposition_bestpos,rev_initposition_besthit,
-#endif
-#if 0
-				 lastGT,lastAG,
-#ifndef PMAP
-				 lastCT,lastAC,
-#endif
-#endif
-				 chroffset,chrhigh,plusp,
-				 indexsize,processed,sufflookback,nsufflookback,maxintronlen,
-				 localp,skip_repetitive_p,use_shifted_canonical_p);
-
-	  if (currlink->fwd_score > best_fwd_score) {
-	    best_fwd_score = currlink->fwd_score;
-	    best_fwd_hit = hit;
-	  }
-#ifndef PMAP
-	  if (currlink->rev_score > best_rev_score) {
-	    best_rev_score = currlink->rev_score;
-	    best_rev_hit = hit;
-	  }
-#endif
-	}
-
-      } else {
-	for (hit = low_hit; hit < high_hit; hit++) {
-	  currlink = &(links[querypos][hit]);
-	  position = mappings[querypos][hit];
-	  
-	  debug9(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
-	  debug9(printf("Finding link at querypos %d,%d at %ux%d (%s).  prev_querypos was %d\n",
-			querypos,hit,position,active[querypos][hit],oligo,processed ? Intlist_head(processed) : -1));
-
-	  score_querypos_splicing_no_shifted(currlink,querypos,hit,querystart,queryend,position,
-					     links,mappings,active,firstactive,
-#ifdef USE_SUBOPTIMAL_STARTS
-					     fwd_initposition_bestscore,fwd_initposition_bestpos,fwd_initposition_besthit,
-#endif
-					     indexsize,processed,sufflookback,nsufflookback,maxintronlen,
-					     localp);
-
-	  if (currlink->fwd_score > best_fwd_score) {
-	    best_fwd_score = currlink->fwd_score;
-	    best_fwd_hit = hit;
-	  }
+	score_querypos_lookback(
+#ifdef DEBUG9
+				&fwd_tracei,
+#endif
+				currlink,querypos,querystart,queryend,position,
+				links,mappings,active,firstactive,
+				chroffset,chrhigh,plusp,
+				indexsize,processed,sufflookback,nsufflookback,maxintronlen,
+				anchoredp,localp,splicingp,skip_repetitive_p,use_canonical_p,
+				non_canonical_penalty);
+
+	if (currlink->fwd_score > best_fwd_score) {
+	  best_fwd_score = currlink->fwd_score;
+	  best_fwd_hit = hit;
 	}
       }
 
@@ -3226,38 +2774,42 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
       min_hits = 1000000;
       specific_querypos = -1;
       
-#ifdef PMAP
+#ifndef SEPARATE_FWD_REV
       debug9(printf("Overall result at querypos %d yields best_fwd_hit %d\n",
-		   querypos,best_fwd_hit));
+		    querypos,best_fwd_hit));
 #else
       debug9(printf("Overall result at querypos %d yields best_fwd_hit %d and best_rev_hit %d\n",
-		   querypos,best_fwd_hit,best_rev_hit));
+		    querypos,best_fwd_hit,best_rev_hit));
 #endif
 
       if (splicingp == true && best_fwd_hit >= 0 && links[querypos][best_fwd_hit].fwd_hit < 0 && 
-	  grand_fwd_querypos >= 0 && querypos >= grand_fwd_querypos + indexsize_nt) {
+	  grand_fwd_querypos >= 0 && querypos >= grand_fwd_querypos + indexsize_query) {
 	prevlink = &(links[grand_fwd_querypos][grand_fwd_hit]);
 	if ((best_fwd_score = prevlink->fwd_score - (querypos - grand_fwd_querypos)) > 0) {
 	  prevposition = mappings[grand_fwd_querypos][grand_fwd_hit];
-	  for (hit = low_hit; hit < high_hit; hit++) {
-	    currlink = &(links[querypos][hit]);
-	    if ((position = mappings[querypos][hit]) >= prevposition + indexsize_nt) {
-	      currlink->fwd_consecutive = indexsize_nt;
-	      currlink->fwd_rootposition = position;
-#ifdef USE_SUBOPTIMAL_STARTS
-	      currlink->fwd_initposition = prevlink->fwd_initposition;
-#endif
-	      /* currlink->fwd_rootnlinks = 1; */
-	      currlink->fwd_pos = grand_fwd_querypos;
-	      currlink->fwd_hit = grand_fwd_hit;
-	      currlink->fwd_score = best_fwd_score;
-	      currlink->fwd_intronnfwd = prevlink->fwd_intronnfwd;
-	      currlink->fwd_intronnrev = prevlink->fwd_intronnrev;
-	      currlink->fwd_intronnunk = prevlink->fwd_intronnunk + 1;
+	  debug12(printf("Considering prevposition %u to position %u as a grand fwd lookback\n",prevposition,position));
+	  if (position > prevposition + maxintronlen) {
+	    debug12(printf("  => Too long\n"));
+	  } else {
+	    for (hit = low_hit; hit < high_hit; hit++) {
+	      currlink = &(links[querypos][hit]);
+	      if ((position = mappings[querypos][hit]) >= prevposition + indexsize_nt) {
+		currlink->fwd_consecutive = indexsize_nt;
+		/* currlink->fwd_rootnlinks = 1; */
+		currlink->fwd_pos = grand_fwd_querypos;
+		currlink->fwd_hit = grand_fwd_hit;
+		currlink->fwd_score = best_fwd_score;
+#ifdef DEBUG9
+		currlink->fwd_tracei = ++fwd_tracei;
+		currlink->fwd_intronnfwd = prevlink->fwd_intronnfwd;
+		currlink->fwd_intronnrev = prevlink->fwd_intronnrev;
+		currlink->fwd_intronnunk = prevlink->fwd_intronnunk + 1;
+#endif
+	      }
 	    }
+	    debug12(printf("At querypos %d, setting all fwd hits to point back to grand_fwd %d,%d with a score of %d\n",
+			 querypos,grand_fwd_querypos,grand_fwd_hit,prevlink->fwd_score));
 	  }
-	  debug10(printf("At querypos %d, setting all fwd hits to point back to grand_fwd %d,%d with a score of %d\n",
-		       querypos,grand_fwd_querypos,grand_fwd_hit,prevlink->fwd_score));
 	}
       }
 
@@ -3267,43 +2819,47 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
 	grand_fwd_score = best_fwd_score;
 	grand_fwd_querypos = querypos;
 	grand_fwd_hit = best_fwd_hit;
-	debug10(termlink = &(links[querypos][best_fwd_hit]));
-	debug10(printf("At querypos %d, revising grand fwd to be hit %d with score of %d (pointing back to %d,%d)\n",
-		     querypos,best_fwd_hit,best_fwd_score,termlink->fwd_pos,termlink->fwd_hit));
+	debug12(termlink = &(links[querypos][best_fwd_hit]));
+	debug12(printf("At querypos %d, revising grand fwd to be hit %d with score of %d (pointing back to %d,%d)\n",
+		       querypos,best_fwd_hit,best_fwd_score,termlink->fwd_pos,termlink->fwd_hit));
       }
 
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
       if (best_rev_score > best_overall_score) {
 	best_overall_score = best_rev_score;
       }
 
-      if (splicingp == false || use_shifted_canonical_p == false) {
+      if (splicingp == false || use_canonical_p == false) {
 	/* rev scores should be the same as the fwd scores */
       } else {
 	if (best_rev_hit >= 0 && links[querypos][best_rev_hit].rev_hit < 0 && 
-	    grand_rev_querypos >= 0 && querypos >= grand_rev_querypos + indexsize_nt) {
+	    grand_rev_querypos >= 0 && querypos >= grand_rev_querypos + indexsize_query) {
 	  prevlink = &(links[grand_rev_querypos][grand_rev_hit]);
 	  if ((best_rev_score = prevlink->rev_score - (querypos - grand_rev_querypos)) > 0) {
 	    prevposition = mappings[grand_rev_querypos][grand_rev_hit];
-	    for (hit = low_hit; hit < high_hit; hit++) {
-	      currlink = &(links[querypos][hit]);
-	      if ((position = mappings[querypos][hit]) >= prevposition + indexsize_nt) {
-		currlink->rev_consecutive = indexsize_nt;
-		currlink->rev_rootposition = position;
-#ifdef USE_SUBOPTIMAL_STARTS
-		currlink->rev_initposition = prevlink->rev_initposition;
-#endif
-		/* currlink->rev_rootnlinks = 1; */
-		currlink->rev_pos = grand_rev_querypos;
-		currlink->rev_hit = grand_rev_hit;
-		currlink->rev_score = best_rev_score;
-		currlink->rev_intronnrev = prevlink->rev_intronnfwd;
-		currlink->rev_intronnrev = prevlink->rev_intronnrev;
-		currlink->rev_intronnunk = prevlink->rev_intronnunk + 1;
+	    debug12(printf("Considering prevposition %u to position %u as a grand rev lookback\n",prevposition,position));
+	    if (position > prevposition + maxintronlen) {
+	      debug12(printf("  => Too long\n"));
+	    } else {
+	      for (hit = low_hit; hit < high_hit; hit++) {
+		currlink = &(links[querypos][hit]);
+		if ((position = mappings[querypos][hit]) >= prevposition + indexsize_nt) {
+		  currlink->rev_consecutive = indexsize_nt;
+		  /* currlink->rev_rootnlinks = 1; */
+		  currlink->rev_pos = grand_rev_querypos;
+		  currlink->rev_hit = grand_rev_hit;
+		  currlink->rev_score = best_rev_score;
+#ifdef DEBUG9
+		  currlink->rev_tracei = ++rev_tracei;
+		  currlink->rev_intronnrev = prevlink->rev_intronnfwd;
+		  currlink->rev_intronnrev = prevlink->rev_intronnrev;
+		  currlink->rev_intronnunk = prevlink->rev_intronnunk + 1;
+#endif
+		}
 	      }
+	      debug12(printf("At querypos %d, setting all rev hits to point back to grand_rev %d,%d with a score of %d\n",
+			     querypos,grand_rev_querypos,grand_rev_hit,prevlink->rev_score));
 	    }
-	    debug10(printf("At querypos %d, setting all rev hits to point back to grand_rev %d,%d with a score of %d\n",
-			  querypos,grand_rev_querypos,grand_rev_hit,prevlink->rev_score));
 	  }
 	}
 
@@ -3317,8 +2873,9 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
       }
 #endif
 
-      revise_active(active,firstactive,nactive,low_hit,high_hit,links,querypos);
-      debug10(printf("Pushing querypos %d onto processed\n",querypos));
+      revise_active_lookback(active,firstactive,nactive,low_hit,high_hit,links,querypos,mappings);
+      /* Need to push querypos, even if firstactive[querypos] == -1 */
+      debug6(printf("Pushing querypos %d onto processed\n",querypos));
       processed = Intlist_push(processed,querypos);
       querypos = next_querypos;
     }
@@ -3326,34 +2883,11 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
 
   Intlist_free(&processed);
 
-#if 0
-  if (use_shifted_canonical_p == true) {
-#ifndef PMAP
-    if (lastAC != NULL) {
-      FREE(lastAC);
-    }
-    if (lastCT != NULL) {
-      FREE(lastCT);
-    }
-#endif
-    if (lastAG != NULL) {
-      FREE(lastAG);
-    }
-    if (lastGT != NULL) {
-      FREE(lastGT);
-    }
-  }
-#endif
-
   /* These are the final active oligomers, after pruning by score */
   if (debug_graphic_p == true) {
     mappings_dump_R(mappings,npositions,querylength,active,firstactive,indexsize,"active.mers");
   }
 
-#ifdef USE_SUBOPTIMAL_STARTS
-  FREE(rev_initposition_bestscore);
-  FREE(fwd_initposition_bestscore);
-#endif
   FREE(nactive);
   FREE(firstactive);
 
@@ -3365,12 +2899,19 @@ align_compute_scores (int *ncells, struct Link_T **links, Chrpos_T **mappings, i
 
 
   /* Grand winners */
-  debug10(printf("Finding grand winners, using root position method\n"));
-  if (splicingp == false || use_shifted_canonical_p == false) {
-    cells = Linkmatrix_get_cells_fwd(&(*ncells),links,querylength,npositions,indexsize,best_overall_score,favor_right_p);
+  debug12(printf("Finding grand winners, using root position method\n"));
+#ifdef SEPARATE_FWD_REV
+  if (splicingp == false || use_canonical_p == false) {
+    cells = Linkmatrix_get_cells_fwd(&(*ncells),links,querystart,queryend,npositions,
+				     indexsize,best_overall_score,favor_right_p,cellpool);
   } else {
-    cells = Linkmatrix_get_cells_both(&(*ncells),links,querylength,npositions,indexsize,best_overall_score,favor_right_p);
+    cells = Linkmatrix_get_cells_both(&(*ncells),links,querystart,queryend,npositions,
+				      indexsize,best_overall_score,favor_right_p,cellpool);
   }
+#else
+  cells = Linkmatrix_get_cells_fwd(&(*ncells),links,querystart,queryend,npositions,
+				   indexsize,best_overall_score,favor_right_p,cellpool);
+#endif
 
   debug9(FREE(oligo));
 
@@ -3403,7 +2944,7 @@ static List_T
 traceback_one (int querypos, int hit, struct Link_T **links, Chrpos_T **mappings,
 	       char *queryseq_ptr, char *queryuc_ptr, 
 #ifdef PMAP
-	       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
+	       Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp, bool lookbackp,
 #endif
 #ifdef DEBUG0
 	       int indexsize,
@@ -3427,15 +2968,27 @@ traceback_one (int querypos, int hit, struct Link_T **links, Chrpos_T **mappings
 
 #ifdef PMAP
     /* Change querypos positions from protein to nucleotide */
-    c2 = get_genomic_nt(&c2_alt,position+2,chroffset,chrhigh,watsonp);
-    path = Pairpool_push(path,pairpool,querypos*3+2,position+2,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
-			 /*dynprogindex*/0);
-    c2 = get_genomic_nt(&c2_alt,position+1,chroffset,chrhigh,watsonp);
-    path = Pairpool_push(path,pairpool,querypos*3+1,position+1,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
-			 /*dynprogindex*/0);
-    c2 = get_genomic_nt(&c2_alt,position,chroffset,chrhigh,watsonp);
-    path = Pairpool_push(path,pairpool,querypos*3,position,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
-			 /*dynprogindex*/0);
+    if (lookbackp == true) {
+      c2 = get_genomic_nt(&c2_alt,position+2,chroffset,chrhigh,watsonp);
+      path = Pairpool_push(path,pairpool,querypos*3+2,position+2,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
+			   /*dynprogindex*/0);
+      c2 = get_genomic_nt(&c2_alt,position+1,chroffset,chrhigh,watsonp);
+      path = Pairpool_push(path,pairpool,querypos*3+1,position+1,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
+			   /*dynprogindex*/0);
+      c2 = get_genomic_nt(&c2_alt,position,chroffset,chrhigh,watsonp);
+      path = Pairpool_push(path,pairpool,querypos*3,position,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
+			   /*dynprogindex*/0);
+    } else {
+      c2 = get_genomic_nt(&c2_alt,position,chroffset,chrhigh,watsonp);
+      path = Pairpool_push(path,pairpool,querypos*3,position,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
+			   /*dynprogindex*/0);
+      c2 = get_genomic_nt(&c2_alt,position+1,chroffset,chrhigh,watsonp);
+      path = Pairpool_push(path,pairpool,querypos*3+1,position+1,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
+			   /*dynprogindex*/0);
+      c2 = get_genomic_nt(&c2_alt,position+2,chroffset,chrhigh,watsonp);
+      path = Pairpool_push(path,pairpool,querypos*3+2,position+2,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
+			   /*dynprogindex*/0);
+    }
 #else
     /* genomic nucleotide same as queryseq */
     c2 = queryuc_ptr[querypos];
@@ -3448,18 +3001,24 @@ traceback_one (int querypos, int hit, struct Link_T **links, Chrpos_T **mappings
     debug0(oligo = (char *) CALLOC(indexsize+1,sizeof(char)));
     debug0(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
     if (fwdp == true) {
-      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d (from %d), intr = %d(+)/%d(-)/%d(?)\n",
+      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d",
 		    querypos,hit,oligo,position,
-		    links[querypos][hit].fwd_score,links[querypos][hit].fwd_consecutive,links[querypos][hit].fwd_rootposition,
-		    links[querypos][hit].fwd_intronnfwd,links[querypos][hit].fwd_intronnrev,
+		    links[querypos][hit].fwd_score,links[querypos][hit].fwd_consecutive));
+      debug9(printf(" (from #%d), intr = %d(+)/%d(-)/%d(?)",
+		    links[querypos][hit].fwd_tracei,links[querypos][hit].fwd_intronnfwd,links[querypos][hit].fwd_intronnrev,
 		    links[querypos][hit].fwd_intronnunk));
-#ifndef PMAP
+      debug0(printf("\n"));
+
+#ifdef SEPARATE_FWD_REV
     } else {
-      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d (from %d), intr = %d(+)/%d(-)/%d(?)\n",
+      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d",
 		    querypos,hit,oligo,position,
-		    links[querypos][hit].rev_score,links[querypos][hit].rev_consecutive,links[querypos][hit].rev_rootposition,
-		    links[querypos][hit].rev_intronnfwd,links[querypos][hit].rev_intronnrev,
+		    links[querypos][hit].rev_score,links[querypos][hit].rev_consecutive));
+      debug9(printf(" (from #%d), intr = %d(+)/%d(-)/%d(?)",
+		    links[querypos][hit].rev_tracei,links[querypos][hit].rev_intronnfwd,links[querypos][hit].rev_intronnrev,
 		    links[querypos][hit].rev_intronnunk));
+      debug0(printf("\n"));
+
 #endif
     }
 #endif
@@ -3471,7 +3030,7 @@ traceback_one (int querypos, int hit, struct Link_T **links, Chrpos_T **mappings
     if (fwdp == true) {
       querypos = links[prev_querypos][prevhit].fwd_pos;
       hit = links[prev_querypos][prevhit].fwd_hit;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     } else {
       querypos = links[prev_querypos][prevhit].rev_pos;
       hit = links[prev_querypos][prevhit].rev_hit;
@@ -3529,18 +3088,22 @@ traceback_one_snps (int querypos, int hit, struct Link_T **links, Chrpos_T **map
     debug0(oligo = (char *) CALLOC(indexsize+1,sizeof(char)));
     debug0(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
     if (fwdp == true) {
-      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d (from %d), intr = %d(+)/%d(-)/%d(?)\n",
+      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d",
 		    querypos,hit,oligo,position,
-		    links[querypos][hit].fwd_score,links[querypos][hit].fwd_consecutive,links[querypos][hit].fwd_rootposition,
-		    links[querypos][hit].fwd_intronnfwd,links[querypos][hit].fwd_intronnrev,
+		    links[querypos][hit].fwd_score,links[querypos][hit].fwd_consecutive));
+      debug9(printf(" (from #%d), intr = %d(+)/%d(-)/%d(?)",
+		    links[querypos][hit].fwd_tracei,links[querypos][hit].fwd_intronnfwd,links[querypos][hit].fwd_intronnrev,
 		    links[querypos][hit].fwd_intronnunk));
-#ifndef PMAP
+      debug0(printf("\n"));
+#ifdef SEPARATE_FWD_REV
     } else {
-      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d (from %d), intr = %d(+)/%d(-)/%d(?)\n",
+      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d",
 		    querypos,hit,oligo,position,
-		    links[querypos][hit].rev_score,links[querypos][hit].rev_consecutive,links[querypos][hit].rev_rootposition,
-		    links[querypos][hit].rev_intronnfwd,links[querypos][hit].rev_intronnrev,
+		    links[querypos][hit].rev_score,links[querypos][hit].rev_consecutive));
+      debug9(printf(" (from #%d), intr = %d(+)/%d(-)/%d(?)",
+		    links[querypos][hit].rev_tracei,links[querypos][hit].rev_intronnfwd,links[querypos][hit].rev_intronnrev,
 		    links[querypos][hit].rev_intronnunk));
+      debug0(printf("\n"));
 #endif
     }
 #endif
@@ -3552,7 +3115,7 @@ traceback_one_snps (int querypos, int hit, struct Link_T **links, Chrpos_T **map
     if (fwdp == true) {
       querypos = links[prev_querypos][prevhit].fwd_pos;
       hit = links[prev_querypos][prevhit].fwd_hit;
-#ifndef PMAP
+#ifdef SEPARATE_FWD_REV
     } else {
       querypos = links[prev_querypos][prevhit].rev_pos;
       hit = links[prev_querypos][prevhit].rev_hit;
@@ -3565,159 +3128,536 @@ traceback_one_snps (int querypos, int hit, struct Link_T **links, Chrpos_T **map
 }
 
 
-
-#ifdef USE_SUBOPTIMAL_STARTS
+/* Performs dynamic programming.  For PMAP, indexsize is in aa. */
 static List_T
-traceback_ties (List_T path, int querypos, int hit, struct Link_T **links, Chrpos_T **mappings,
-		int *fwd_initposition_bestpos, int *fwd_initposition_besthit,
-		int *rev_initposition_bestpos, int *rev_initposition_besthit,
-		char *queryseq_ptr, Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
-		Pairpool_T pairpool, int indexsize, bool fwdp) {
-  List_T newpaths = NULL;
-  List_T copy;
-  Chrpos_T position, initposition;
-  Link_T currlink;
-  List_T p;
-  Intlist_T q, r;
-  char c2, c2_alt;
+align_compute_lookback (Chrpos_T **mappings, int *npositions, int totalpositions,
+			bool oned_matrix_p, Chrpos_T *minactive, Chrpos_T *maxactive, Cellpool_T cellpool,
+			char *queryseq_ptr, char *queryuc_ptr, int querylength, int querystart, int queryend,
+			Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			int indexsize, int sufflookback, int nsufflookback, int maxintronlen, Pairpool_T pairpool,
+			bool anchoredp, int anchor_querypos, Chrpos_T anchor_position,
+			bool localp, bool skip_repetitive_p, bool use_canonical_p, int non_canonical_penalty,
+			bool favor_right_p, int max_nalignments, bool debug_graphic_p) {
+  List_T all_paths = NULL;
+  struct Link_T **links;
+
+  Cell_T *cells, cell;
+  int ncells, i;
+
+  bool fwdp;
+  int querypos, hit;
+  int bestscore;
+
+
+  if (oned_matrix_p == true) {
+    links = Linkmatrix_1d_new(querylength,npositions,totalpositions);
+  } else {
+    links = Linkmatrix_2d_new(querylength,npositions);
+  }
+
+  /* These are all oligomers */
+  if (debug_graphic_p == true) {
+    mappings_dump_R(mappings,npositions,querylength,/*active*/NULL,/*firstactive*/NULL,indexsize,"all.mers");
+  }
+  
+  cells = align_compute_scores_lookback(&ncells,links,mappings,npositions,totalpositions,
+					oned_matrix_p,minactive,maxactive,cellpool,
+					querystart,queryend,querylength,
+			       
+					chroffset,chrhigh,plusp,
+
+					indexsize,sufflookback,nsufflookback,maxintronlen,
+#ifdef DEBUG9
+					queryseq_ptr,
+#endif
+					anchoredp,anchor_querypos,anchor_position,localp,
+					skip_repetitive_p,use_canonical_p,non_canonical_penalty,
+					debug_graphic_p,favor_right_p);
+
+#ifdef SEPARATE_FWD_REV
+  debug1(Linkmatrix_print_both(links,mappings,querylength,npositions,queryseq_ptr,indexsize));
+#else
+  debug1(Linkmatrix_print_fwd(links,mappings,querylength,npositions,queryseq_ptr,indexsize));
+#endif
+
+  if (ncells == 0) {
+    all_paths = (List_T) NULL;
+
+  } else {
+    bestscore = cells[0]->score;
 
+    debug11(printf("Looping on %d cells, allowing up to %d alignments, plus any with best score %d\n",
+		   ncells,max_nalignments,bestscore));
+
+    for (i = 0; i < ncells && (i < max_nalignments || cells[i]->score == bestscore)
+	   && cells[i]->score > bestscore - FINAL_SCORE_TOLERANCE; i++) {
+      cell = cells[i];
+      querypos = cell->querypos;
+      hit = cell->hit;
+      fwdp = cell->fwdp;
+      debug11(printf("Starting subpath %d for rootposition %d with score %d, querypos %d, hit %d, position %u\n",
+		     i,cell->rootposition,cell->score,querypos,hit,mappings[querypos][hit]));
+
+
+      if (debug_graphic_p == true) {
+	best_path_dump_R(links,mappings,querypos,hit,fwdp,"best.path");
+	printf("plot(all.mers,col=\"black\",pch=\".\",xlab=\"Query\",ylab=\"Genomic\")\n");
+	printf("points(active.mers,col=\"red\",pch=\".\")\n");
+	printf("points(best.path,col=\"green\",pch=\".\")\n");
+	printf("lines(querypos,minactive,col=\"blue\")\n");
+	printf("lines(querypos,maxactive,col=\"blue\")\n");
+      }
+
+      if (snps_p == true) {
+	all_paths = List_push(all_paths,(void *) traceback_one_snps(querypos,hit,links,mappings,queryseq_ptr,queryuc_ptr,	
+								    chroffset,chrhigh,/*watsonp*/plusp,
 #ifdef DEBUG0
-  char *oligo;
+								    indexsize,
+#endif
+								    pairpool,fwdp));
+      } else {
+	all_paths = List_push(all_paths,(void *) traceback_one(querypos,hit,links,mappings,queryseq_ptr,queryuc_ptr,	
+#ifdef PMAP
+							       chroffset,chrhigh,/*watsonp*/plusp,/*lookbackp*/true,
 #endif
+#ifdef DEBUG0
+							       indexsize,
+#endif
+							       pairpool,fwdp));
+      }
 
+    }
+    debug11(printf("\n"));
+
+#if 0
+    /* No need with cellpool */
+    for (i = 0; i < ncells; i++) {
+      cell = cells[i];
+      Cell_free(&cell);
+    }
+#endif
+    FREE(cells);
+  }
 
-  if (querypos < 0) {
-    return List_push(NULL,(void *) path);
 
+  if (oned_matrix_p == true) {
+    Linkmatrix_1d_free(&links);
   } else {
-    position = mappings[querypos][hit];
-    currlink = &(links[querypos][hit]);
+    Linkmatrix_2d_free(&links,querylength);
+  }
+
+#if 0
+  for (p = all_paths; p != NULL; p = List_next(p)) {
+    Pair_dump_list(List_head(p),/*zerobasedp*/true);
+    printf("\n");
+  }
+#endif
+
+  return all_paths;
+}
+
+
+
+/* Returns celllist */
+/* For PMAP, indexsize is in aa. */
+static Cell_T *
+align_compute_scores_lookforward (int *ncells, struct Link_T **links, Chrpos_T **mappings, int *npositions, int totalpositions,
+				  bool oned_matrix_p, Chrpos_T *minactive, Chrpos_T *maxactive, Cellpool_T cellpool,
+				  int querystart, int queryend, int querylength,
+				  Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+				  int indexsize, int sufflookback, int nsufflookback, int maxintronlen,
+#ifdef DEBUG9
+				  char *queryseq_ptr,
+#endif
+				  bool anchoredp, int anchor_querypos, Chrpos_T anchor_position,
+				  bool localp, bool skip_repetitive_p, 
+				  bool use_canonical_p, int non_canonical_penalty,
+				  bool debug_graphic_p, bool favor_right_p) {
+  Cell_T *cells;
+  Link_T currlink, prevlink;
+  int querypos, indexsize_nt, indexsize_query, hit, low_hit, high_hit;
+  int nskipped, min_hits, specific_querypos, specific_low_hit, specific_high_hit, next_querypos;
+  Intlist_T processed = NULL;
+  int best_overall_score = 0;
+  int grand_fwd_score, grand_fwd_querypos, grand_fwd_hit, best_fwd_hit, best_fwd_score;
+#ifdef SEPARATE_FWD_REV
+  int grand_rev_score, grand_rev_querypos, grand_rev_hit, best_rev_hit, best_rev_score;
+  debug9(int rev_tracei = 0);
+#endif
+  int **active, *firstactive, *nactive;
+  Chrpos_T position, prevposition;
+#if 0
+  int *lastGT, *lastAG;
+#ifndef PMAP
+  int *lastCT, *lastAC;
+#endif
+#endif
+#ifdef DEBUG9
+  char *oligo;
+  int fwd_tracei = 0;
+#endif
+#ifdef DEBUG12
+  Link_T termlink = NULL;
+#endif
 
 #ifdef PMAP
-    /* Change querypos positions from protein to nucleotide */
-    c2 = get_genomic_nt(&c2_alt,position+2,chroffset,chrhigh,watsonp);
-    path = Pairpool_push(path,pairpool,querypos*3+2,position+2,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
-			 /*dynprogindex*/0);
-    c2 = get_genomic_nt(&c2_alt,position+1,chroffset,chrhigh,watsonp);
-    path = Pairpool_push(path,pairpool,querypos*3+1,position+1,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
-			 /*dynprogindex*/0);
-    c2 = get_genomic_nt(&c2_alt,position,chroffset,chrhigh,watsonp);
-    path = Pairpool_push(path,pairpool,querypos*3,position,/*cdna*/c2,MATCH_COMP,c2,c2_alt,
-			 /*dynprogindex*/0);
+  indexsize_nt = indexsize*3;
 #else
-    /* genomic nucleotide same as queryseq */
-    path = Pairpool_push(path,pairpool,querypos,position,queryseq_ptr[querypos],MATCH_COMP,
-			 /*genome*/queryuc_ptr[querypos],/*genomealt*/GENOMEALT_DEFERRED,
-			 /*dynprogindex*/0);
+  indexsize_nt = indexsize;
 #endif
+  indexsize_query = indexsize;	/* Use when evaluating across query positions */
 
-#ifdef DEBUG0
-    debug0(oligo = (char *) CALLOC(indexsize+1,sizeof(char)));
-    debug0(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
-    if (fwdp == true) {
-      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d (from %d), intr = %d(+)/%d(-)/%d(?)\n",
-		    querypos,hit,oligo,position,
-		    links[querypos][hit].fwd_score,links[querypos][hit].fwd_consecutive,links[querypos][hit].fwd_rootposition,
-		    links[querypos][hit].fwd_intronnfwd,links[querypos][hit].fwd_intronnrev,
-		    links[querypos][hit].fwd_intronnunk));
-#ifndef PMAP
-    } else {
-      debug0(printf("Pushing %d,%d (%s) at %u, score = %d, consec = %d (from %d), intr = %d(+)/%d(-)/%d(?)\n",
-		    querypos,hit,oligo,position,
-		    links[querypos][hit].rev_score,links[querypos][hit].rev_consecutive,links[querypos][hit].rev_rootposition,
-		    links[querypos][hit].rev_intronnfwd,links[querypos][hit].rev_intronnrev,
-		    links[querypos][hit].rev_intronnunk));
+
+#ifdef DEBUG9
+  oligo = (char *) CALLOC(indexsize+1,sizeof(char));
 #endif
+  debug0(printf("Lookforward: querystart = %d, queryend = %d, indexsize = %d\n",querystart,queryend,indexsize));
+
+  if (oned_matrix_p == true) {
+    active = intmatrix_1d_new(querylength,npositions,totalpositions);
+  } else {
+    active = intmatrix_2d_new(querylength,npositions);
+  }
+
+  firstactive = (int *) MALLOC(querylength * sizeof(int));
+  nactive = (int *) MALLOC(querylength * sizeof(int));
+
+  /* Initialize */
+  for (querypos = querylength - 1; querypos > queryend; querypos--) {
+    firstactive[querypos] = -1;
+    nactive[querypos] = 0;
+  }
+  while (querypos >= querystart && npositions[querypos] <= 0) {
+    debug9(printf("Skipping querypos %d which has no positions\n",querypos));
+    firstactive[querypos] = -1;
+    nactive[querypos] = 0;
+    querypos--;
+  }
+  if (anchoredp == true) {
+    /* Guaranteed to find a hit */
+    hit = binary_search(0,npositions[anchor_querypos],mappings[anchor_querypos],/*goal*/anchor_position);
+    if (mappings[anchor_querypos] == NULL) {
+      printf("mappings at anchor_querypos %d is NULL.  mappings = %p\n",anchor_querypos,mappings);
+      abort();
     }
+
+    currlink = &(links[anchor_querypos][hit]);	
+#ifndef SEPARATE_FWD_REV
+    currlink->fwd_pos = currlink->fwd_hit = -1;
+    currlink->fwd_score = indexsize_nt;
+    currlink->fwd_consecutive = EXON_DEFN;
+    debug9(currlink->fwd_tracei = 0);
+#else
+    fprintf(stderr,"Not implemented yet\n");
+    abort();
 #endif
-    debug0(FREE(oligo));
 
-    if (fwdp == true) {
-      newpaths = traceback_ties(path,/*querypos*/currlink->fwd_pos,/*hit*/currlink->fwd_hit,links,mappings,
-				fwd_initposition_bestpos,fwd_initposition_besthit,
-				rev_initposition_bestpos,rev_initposition_besthit,
-				queryseq_ptr,chroffset,chrhigh,watsonp,
-				pairpool,indexsize,fwdp);
-      for (q = currlink->fwd_pos_ties, r = currlink->fwd_hit_ties; q != NULL; q = Intlist_next(q), r = Intlist_next(r)) {
-	initposition = links[Intlist_head(q)][Intlist_head(r)].fwd_initposition;
-	if (fwd_initposition_bestpos[initposition] == querypos && fwd_initposition_besthit[initposition] == hit) {
-	  debug0(printf("Recursing from %d,%d to %d,%d\n",querypos,hit,Intlist_head(q),Intlist_head(r)));
-	  copy = Pairpool_copy(path,pairpool);
-	  newpaths = List_append(newpaths,traceback_ties(copy,/*querypos*/Intlist_head(q),/*hit*/Intlist_head(r),links,mappings,
-							 fwd_initposition_bestpos,fwd_initposition_besthit,
-							 rev_initposition_bestpos,rev_initposition_besthit,
-							 queryseq_ptr,chroffset,chrhigh,watsonp,
-							 pairpool,indexsize,fwdp));
-	  debug0(printf("Returning from recursion\n"));
+    debug6(printf("Setting firstactive for anchorpos %d to be %d\n",anchor_querypos,hit));
+    firstactive[anchor_querypos] = hit;
+    nactive[anchor_querypos] = 1;
+    active[anchor_querypos][hit] = -1;
+
+    debug6(printf("Pushing anchorpos %d as processed\n",anchor_querypos));
+    processed = Intlist_push(processed,anchor_querypos);
+
+  } else if (querypos >= querystart) {
+    for (hit = npositions[querypos] - 1; hit >= 0; --hit) {
+      currlink = &(links[querypos][hit]);
+#ifndef SEPARATE_FWD_REV
+      currlink->fwd_pos = currlink->fwd_hit = -1;
+      currlink->fwd_score = indexsize_nt;
+      currlink->fwd_consecutive = indexsize_nt;
+      debug9(currlink->fwd_tracei = -1);
+      /* currlink->fwd_rootnlinks = 1; */
+#else
+      currlink->fwd_pos = currlink->fwd_hit = -1;
+      currlink->fwd_score = indexsize_nt;
+      currlink->fwd_consecutive = indexsize_nt;
+      debug9(currlink->fwd_tracei = -1);
+      /* currlink->fwd_rootnlinks = 1; */
+      if (splicingp == true) {
+	currlink->rev_pos = currlink->rev_hit = -1;
+	currlink->rev_score = indexsize_nt;
+	currlink->rev_consecutive = indexsize_nt;
+	currlink->rev_tracei = -1;
+	/* currlink->rev_rootnlinks = 1; */
+      }
+#endif
+    }
+    revise_active_lookforward(active,firstactive,nactive,0,npositions[querypos],links,querypos,mappings);
+  }
+
+
+  grand_fwd_score = 0;
+  grand_fwd_querypos = -1;
+  grand_fwd_hit = -1;
+#ifdef SEPARATE_FWD_REV
+  if (splicingp == true) {
+    grand_rev_score = 0;
+    grand_rev_querypos = -1;
+    grand_rev_hit = -1;
+  }
+#endif
+
+  nskipped = 0;
+  min_hits = 1000000;
+  specific_querypos = -1;
+
+  /* querypos -= 1; -- this causes querypos at queryend to be ignored */
+  while (querypos >= querystart) {
+    best_fwd_score = 0;
+    best_fwd_hit = -1;
+#ifdef SEPARATE_FWD_REV
+    best_rev_score = 0;
+    best_rev_hit = -1;
+#endif
+    
+    debug9(printf("Positions at querypos %d (reverse order):",querypos);
+	   for (hit = npositions[querypos] - 1; hit >= 0; --hit) {
+	     printf(" %u",mappings[querypos][hit]);
+	   }
+	   printf("\n");
+	   );
+
+    hit = npositions[querypos] - 1;
+    while (hit >= 0 && mappings[querypos][hit] > maxactive[querypos]) {
+      --hit;
+    }
+    high_hit = hit + 1;
+    while (hit >= 0 && mappings[querypos][hit] >= minactive[querypos]) {
+      --hit;
+    }
+    low_hit = hit + 1;
+    debug9(printf("Querypos %d has hit %d..%d out of %d (minactive = %u, maxactive = %u)\n",
+		  querypos,high_hit-1,low_hit,npositions[querypos],minactive[querypos],maxactive[querypos]));
+
+    /* Can't use nactive yet, so use high_hit - low_hit */
+    if (skip_repetitive_p && high_hit - low_hit >= MAX_NACTIVE && nskipped <= MAX_SKIPPED) { /* Previously turned off */
+      debug6(printf("Too many active (%d - %d) at querypos %d.  Setting firstactive to be -1\n",high_hit,low_hit,querypos));
+      firstactive[querypos] = -1;
+      nactive[querypos] = 0;
+      nskipped++;
+      debug9(printf("  %d skipped because of %d hits\n",nskipped,high_hit - low_hit + 1));
+
+      /* Store most specific querypos in section of skipped */
+      if (high_hit - low_hit < min_hits) {
+	min_hits = high_hit - low_hit;
+	specific_querypos = querypos;
+	specific_low_hit = low_hit;
+	specific_high_hit = high_hit;
+      }
+      querypos--;
+
+    } else {
+      if (nskipped > MAX_SKIPPED) {
+	debug9(printf("Too many skipped.  Going back to specific querypos %d\n",specific_querypos));
+	next_querypos = querypos;
+	querypos = specific_querypos;
+	low_hit = specific_low_hit;
+	high_hit = specific_high_hit;
+      } else {
+	next_querypos = querypos - 1;
+      }
+
+      for (hit = high_hit - 1; hit >= low_hit; --hit) {
+	currlink = &(links[querypos][hit]);
+	position = mappings[querypos][hit];
+	
+	debug9(strncpy(oligo,&(queryseq_ptr[querypos]),indexsize));
+	debug9(printf("Finding link looking forward at querypos %d,%d at %ux%d (%s).  prev_querypos was %d\n",
+		      querypos,hit,position,active[querypos][hit],oligo,processed ? Intlist_head(processed) : -1));
+	
+	score_querypos_lookforward(
+#ifdef DEBUG9
+				   &fwd_tracei,
+#endif
+				   currlink,querypos,querystart,queryend,position,
+				   links,mappings,active,firstactive,
+				   chroffset,chrhigh,plusp,
+				   indexsize,processed,sufflookback,nsufflookback,maxintronlen,
+				   anchoredp,localp,splicingp,skip_repetitive_p,use_canonical_p,
+				   non_canonical_penalty);
+
+	if (currlink->fwd_score > best_fwd_score) {
+	  best_fwd_score = currlink->fwd_score;
+	  best_fwd_hit = hit;
 	}
       }
 
-#ifndef PMAP
-    } else {
-      newpaths = traceback_ties(path,/*querypos*/currlink->rev_pos,/*hit*/currlink->rev_hit,links,mappings,
-				fwd_initposition_bestpos,fwd_initposition_besthit,
-				rev_initposition_bestpos,rev_initposition_besthit,
-				queryseq_ptr,chroffset,chrhigh,watsonp,
-				pairpool,indexsize,fwdp);
-      for (q = currlink->rev_pos_ties, r = currlink->rev_hit_ties; q != NULL; q = Intlist_next(q), r = Intlist_next(r)) {
-	initposition = links[Intlist_head(q)][Intlist_head(r)].rev_initposition;
-	if (rev_initposition_bestpos[initposition] == querypos && rev_initposition_besthit[initposition] == hit) {
-	  debug0(printf("Recursing from %d,%d to %d,%d\n",querypos,hit,Intlist_head(q),Intlist_head(r)));
-	  copy = Pairpool_copy(path,pairpool);
-	  newpaths = List_append(newpaths,traceback_ties(copy,/*querypos*/Intlist_head(q),/*hit*/Intlist_head(r),links,mappings,
-							 fwd_initposition_bestpos,fwd_initposition_besthit,
-							 rev_initposition_bestpos,rev_initposition_besthit,
-							 queryseq_ptr,chroffset,chrhigh,watsonp,
-							 pairpool,indexsize,fwdp));
-	  debug0(printf("Returning from recursion\n"));
-	}
-      }
-#endif
-    }
+      if (best_fwd_score > best_overall_score) {
+	best_overall_score = best_fwd_score;
+      }
+
+      nskipped = 0;
+      min_hits = 1000000;
+      specific_querypos = -1;
+      
+#ifndef SEPARATE_FWD_REV
+      debug9(printf("Overall result at querypos %d yields best_fwd_hit %d\n",
+		   querypos,best_fwd_hit));
+#else
+      debug9(printf("Overall result at querypos %d yields best_fwd_hit %d and best_rev_hit %d\n",
+		   querypos,best_fwd_hit,best_rev_hit));
+#endif
+
+      if (splicingp == true && best_fwd_hit >= 0 && links[querypos][best_fwd_hit].fwd_hit < 0 && 
+	  grand_fwd_querypos <= querylength - indexsize_query && querypos + indexsize_query <= grand_fwd_querypos) {
+	prevlink = &(links[grand_fwd_querypos][grand_fwd_hit]);
+	if ((best_fwd_score = prevlink->fwd_score - (grand_fwd_querypos - querypos)) > 0) {
+	  prevposition = mappings[grand_fwd_querypos][grand_fwd_hit];
+	  debug12(printf("Considering prevposition %u to position %u as a grand fwd lookback\n",prevposition,position));
+	  if (position > prevposition + maxintronlen) {
+	    debug12(printf("  => Too long\n"));
+	  } else {
+	    for (hit = high_hit - 1; hit >= low_hit; --hit) {
+	      currlink = &(links[querypos][hit]);
+	      if ((position = mappings[querypos][hit]) + indexsize_nt <= prevposition) {
+		currlink->fwd_consecutive = indexsize_nt;
+		/* currlink->fwd_rootnlinks = 1; */
+		currlink->fwd_pos = grand_fwd_querypos;
+		currlink->fwd_hit = grand_fwd_hit;
+		currlink->fwd_score = best_fwd_score;
+#ifdef DEBUG9
+		currlink->fwd_tracei = ++fwd_tracei;
+		currlink->fwd_intronnfwd = prevlink->fwd_intronnfwd;
+		currlink->fwd_intronnrev = prevlink->fwd_intronnrev;
+		currlink->fwd_intronnunk = prevlink->fwd_intronnunk + 1;
+#endif
+	      }
+	    }
+	    debug12(printf("At querypos %d, setting all fwd hits to point back to grand_fwd %d,%d with a score of %d\n",
+			   querypos,grand_fwd_querypos,grand_fwd_hit,prevlink->fwd_score));
+	  }
+	}
+      }
+
+      /* Use >= to favor longer path in case of ties */
+      if (best_fwd_hit >= 0 && best_fwd_score >= grand_fwd_score && 
+	  links[querypos][best_fwd_hit].fwd_consecutive > EXON_DEFN) {
+	grand_fwd_score = best_fwd_score;
+	grand_fwd_querypos = querypos;
+	grand_fwd_hit = best_fwd_hit;
+	debug12(termlink = &(links[querypos][best_fwd_hit]));
+	debug12(printf("At querypos %d, revising grand fwd to be hit %d with score of %d (pointing back to %d,%d)\n",
+		     querypos,best_fwd_hit,best_fwd_score,termlink->fwd_pos,termlink->fwd_hit));
+      }
+
+#ifdef SEPARATE_FWD_REV
+      if (best_rev_score > best_overall_score) {
+	best_overall_score = best_rev_score;
+      }
+
+      if (splicingp == false || use_canonical_p == false) {
+	/* rev scores should be the same as the fwd scores */
+      } else {
+	if (best_rev_hit >= 0 && links[querypos][best_rev_hit].rev_hit < 0 && 
+	    grand_rev_querypos <= querylength - indexsize_query && querypos + indexsize_query <= grand_rev_querypos) {
+	  prevlink = &(links[grand_rev_querypos][grand_rev_hit]);
+	  if ((best_rev_score = prevlink->rev_score - (grand_rev_querypos - querypos)) > 0) {
+	    prevposition = mappings[grand_rev_querypos][grand_rev_hit];
+	    debug12(printf("Considering prevposition %u to position %u as a grand rev lookback\n",prevposition,position));
+	    if (position > prevposition + maxintronlen) {
+	      debug12(printf("  => Too long\n"));
+	    } else {
+	      for (hit = high_hit - 1; hit >= low_hit; --hit) {
+		currlink = &(links[querypos][hit]);
+		if ((position = mappings[querypos][hit]) + indexsize_nt <= prevposition) {
+		  currlink->rev_consecutive = indexsize_nt;
+		  /* currlink->rev_rootnlinks = 1; */
+		  currlink->rev_pos = grand_rev_querypos;
+		  currlink->rev_hit = grand_rev_hit;
+		  currlink->rev_score = best_rev_score;
+#ifdef DEBUG9
+		  currlink->rev_tracei = ++rev_tracei;
+		  currlink->rev_intronnrev = prevlink->rev_intronnfwd;
+		  currlink->rev_intronnrev = prevlink->rev_intronnrev;
+		  currlink->rev_intronnunk = prevlink->rev_intronnunk + 1;
+#endif
+		}
+	      }
+	      debug12(printf("At querypos %d, setting all rev hits to point back to grand_rev %d,%d with a score of %d\n",
+			     querypos,grand_rev_querypos,grand_rev_hit,prevlink->rev_score));
+	    }
+	  }
+	}
+
+	/* Use >= to favor longer path in case of ties */
+	if (best_rev_hit >= 0 && best_rev_score >= grand_rev_score &&
+	    links[querypos][best_rev_hit].rev_consecutive > EXON_DEFN) {
+	  grand_rev_score = best_rev_score;
+	  grand_rev_querypos = querypos;
+	  grand_rev_hit = best_rev_hit;
+	}
+      }
+#endif
+
+      revise_active_lookforward(active,firstactive,nactive,low_hit,high_hit,links,querypos,mappings);
+      /* Need to push querypos, even if firstactive[querypos] == -1 */
+      debug6(printf("Pushing querypos %d onto processed\n",querypos));
+      processed = Intlist_push(processed,querypos);
+      querypos = next_querypos;
+    }
+  }
+
+  Intlist_free(&processed);
+
+  /* These are the final active oligomers, after pruning by score */
+  if (debug_graphic_p == true) {
+    mappings_dump_R(mappings,npositions,querylength,active,firstactive,indexsize,"active.mers");
+  }
+
+  FREE(nactive);
+  FREE(firstactive);
+
+  if (oned_matrix_p == true) {
+    intmatrix_1d_free(&active);
+  } else {
+    intmatrix_2d_free(&active,querylength);
+  }
+
 
-    return newpaths;
+  /* Grand winners */
+  debug12(printf("Finding grand winners, using root position method\n"));
+#ifdef SEPARATE_FWD_REV
+  if (splicingp == false || use_canonical_p == false) {
+    cells = Linkmatrix_get_cells_fwd(&(*ncells),links,querystart,queryend,npositions,
+				     indexsize,best_overall_score,favor_right_p,cellpool);
+  } else {
+    cells = Linkmatrix_get_cells_both(&(*ncells),links,querystart,queryend,npositions,
+				      indexsize,best_overall_score,favor_right_p,cellpool);
   }
-}
+#else
+  cells = Linkmatrix_get_cells_fwd(&(*ncells),links,querystart,queryend,npositions,
+				   indexsize,best_overall_score,favor_right_p,cellpool);
 #endif
 
+  debug9(FREE(oligo));
+
+  return cells;
+}
+
 
 /* Performs dynamic programming.  For PMAP, indexsize is in aa. */
 static List_T
-align_compute (Chrpos_T **mappings, int *npositions, int totalpositions,
-	       bool oned_matrix_p, unsigned int *minactive, unsigned int *maxactive,
-	       char *queryseq_ptr, char *queryuc_ptr, int querylength, int queryseq_trim_start, int queryseq_trim_end,
-
-	       Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
-	       int indexsize, int sufflookback, int nsufflookback, int maxintronlen, Pairpool_T pairpool,
-	       bool localp, bool skip_repetitive_p, bool use_shifted_canonical_p,
-	       bool favor_right_p, int max_nalignments, bool debug_graphic_p) {
+align_compute_lookforward (Chrpos_T **mappings, int *npositions, int totalpositions,
+			   bool oned_matrix_p, Chrpos_T *minactive, Chrpos_T *maxactive, Cellpool_T cellpool,
+			   char *queryseq_ptr, char *queryuc_ptr, int querylength, int querystart, int queryend,
+
+			   Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
+			   int indexsize, int sufflookback, int nsufflookback, int maxintronlen, Pairpool_T pairpool,
+			   bool anchoredp, int anchor_querypos, Chrpos_T anchor_position,
+			   bool localp, bool skip_repetitive_p, bool use_canonical_p, int non_canonical_penalty,
+			   bool favor_right_p, int max_nalignments, bool debug_graphic_p) {
   List_T all_paths = NULL;
   struct Link_T **links;
-#ifdef USE_SUBOPTIMAL_STARTS
-  int *fwd_initposition_bestpos, *fwd_initposition_besthit, *rev_initposition_bestpos, *rev_initposition_besthit;
-  unsigned int position;
-  int prev_querypos, prevhit;
-#endif
 
   Cell_T *cells, cell;
   int ncells, i;
 
   bool fwdp;
   int querypos, hit;
-  int querystart, queryend;
   int bestscore;
 
-
-  querystart = queryseq_trim_start;
-  queryend = queryseq_trim_end;
-
-#ifdef USE_SUBOPTIMAL_STARTS
-  fwd_initposition_bestpos = (int *) CALLOC(genomiclength,sizeof(int));
-  fwd_initposition_besthit = (int *) CALLOC(genomiclength,sizeof(int));
-  rev_initposition_bestpos = (int *) CALLOC(genomiclength,sizeof(int));
-  rev_initposition_besthit = (int *) CALLOC(genomiclength,sizeof(int));
-#endif
-
   if (oned_matrix_p == true) {
     links = Linkmatrix_1d_new(querylength,npositions,totalpositions);
   } else {
@@ -3729,27 +3669,24 @@ align_compute (Chrpos_T **mappings, int *npositions, int totalpositions,
     mappings_dump_R(mappings,npositions,querylength,/*active*/NULL,/*firstactive*/NULL,indexsize,"all.mers");
   }
   
-  cells = align_compute_scores(&ncells,links,mappings,npositions,totalpositions,
-			       oned_matrix_p,minactive,maxactive,
-#ifdef USE_SUBOPTIMAL_STARTS
-			       fwd_initposition_bestpos,fwd_initposition_besthit,
-			       rev_initposition_bestpos,rev_initposition_besthit,
-#endif
-			       querystart,queryend,querylength,
-			       
-			       chroffset,chrhigh,plusp,
+  cells = align_compute_scores_lookforward(&ncells,links,mappings,npositions,totalpositions,
+					   oned_matrix_p,minactive,maxactive,cellpool,
+					   querystart,queryend,querylength,
+					   
+					   chroffset,chrhigh,plusp,
 
-			       indexsize,sufflookback,nsufflookback,maxintronlen,
+					   indexsize,sufflookback,nsufflookback,maxintronlen,
 #ifdef DEBUG9
-			       queryseq_ptr,
+					   queryseq_ptr,
 #endif
-			       localp,skip_repetitive_p,use_shifted_canonical_p,debug_graphic_p,
-			       favor_right_p);
+					   anchoredp,anchor_querypos,anchor_position,localp,
+					   skip_repetitive_p,use_canonical_p,non_canonical_penalty,
+					   debug_graphic_p,favor_right_p);
 
-#ifdef PMAP
-  debug1(Linkmatrix_print_fwd(links,mappings,querylength,npositions,queryseq_ptr,indexsize));
-#else
+#ifdef SEPARATE_FWD_REV
   debug1(Linkmatrix_print_both(links,mappings,querylength,npositions,queryseq_ptr,indexsize));
+#else
+  debug1(Linkmatrix_print_fwd(links,mappings,querylength,npositions,queryseq_ptr,indexsize));
 #endif
 
   if (ncells == 0) {
@@ -3761,13 +3698,14 @@ align_compute (Chrpos_T **mappings, int *npositions, int totalpositions,
     debug11(printf("Looping on %d cells, allowing up to %d alignments, plus any with best score %d\n",
 		   ncells,max_nalignments,bestscore));
 
-    for (i = 0; i < ncells && (i < max_nalignments || cells[i]->score == bestscore); i++) {
+    for (i = 0; i < ncells && (i < max_nalignments || cells[i]->score == bestscore)
+	   && cells[i]->score > bestscore - FINAL_SCORE_TOLERANCE; i++) {
       cell = cells[i];
       querypos = cell->querypos;
       hit = cell->hit;
       fwdp = cell->fwdp;
-      debug11(printf("Starting subpath %d at %d with score %d, querypos %d, hit %d\n",
-		     i,mappings[querypos][hit],cell->score,querypos,hit));
+      debug11(printf("Starting subpath %d at rootposition %d with score %d, querypos %d, hit %d, position %u\n",
+		     i,cell->rootposition,cell->score,querypos,hit,mappings[querypos][hit]));
 
 
       if (debug_graphic_p == true) {
@@ -3779,14 +3717,6 @@ align_compute (Chrpos_T **mappings, int *npositions, int totalpositions,
 	printf("lines(querypos,maxactive,col=\"blue\")\n");
       }
 
-
-#ifdef USE_SUBOPTIMAL_STARTS
-      all_paths = List_append(all_paths,traceback_ties(/*path*/(List_T) NULL,querypos,hit,links,mappings,
-						       fwd_initposition_bestpos,fwd_initposition_besthit,
-						       rev_initposition_bestpos,rev_initposition_besthit,
-						       queryseq_ptr,chroffset,chrhigh,/*watsonp*/plusp,
-						       pairpool,indexsize,fwdp));
-#else
       if (snps_p == true) {
 	all_paths = List_push(all_paths,(void *) traceback_one_snps(querypos,hit,links,mappings,queryseq_ptr,queryuc_ptr,	
 								    chroffset,chrhigh,/*watsonp*/plusp,
@@ -3797,42 +3727,34 @@ align_compute (Chrpos_T **mappings, int *npositions, int totalpositions,
       } else {
 	all_paths = List_push(all_paths,(void *) traceback_one(querypos,hit,links,mappings,queryseq_ptr,queryuc_ptr,	
 #ifdef PMAP
-							       chroffset,chrhigh,/*watsonp*/plusp,
+							       chroffset,chrhigh,/*watsonp*/plusp,/*lookbackp*/false,
 #endif
 #ifdef DEBUG0
 							       indexsize,
 #endif
 							       pairpool,fwdp));
       }
-#endif
 
     }
     debug11(printf("\n"));
 
+#if 0
+    /* No need with cellpool */
     for (i = 0; i < ncells; i++) {
       cell = cells[i];
       Cell_free(&cell);
     }
+#endif
     FREE(cells);
   }
 
 
-#ifdef USE_SUBOPTIMAL_STARTS
-  Linkmatrix_gc(links,querylength,npositions);
-#endif
   if (oned_matrix_p == true) {
     Linkmatrix_1d_free(&links);
   } else {
     Linkmatrix_2d_free(&links,querylength);
   }
 
-#ifdef USE_SUBOPTIMAL_STARTS
-  FREE(rev_initposition_besthit);
-  FREE(rev_initposition_bestpos);
-  FREE(fwd_initposition_besthit);
-  FREE(fwd_initposition_bestpos);
-#endif
-
 #if 0
   for (p = all_paths; p != NULL; p = List_next(p)) {
     Pair_dump_list(List_head(p),/*zerobasedp*/true);
@@ -3844,6 +3766,70 @@ align_compute (Chrpos_T **mappings, int *npositions, int totalpositions,
 }
 
 
+
+/* Modified from stage3.c */
+static void
+get_splicesite_probs (double *left_prob, double *right_prob,
+		      Chrpos_T left_genomepos, Chrpos_T right_genomepos,
+		      Univcoord_T chroffset, Univcoord_T chrhigh, int genestrand, bool watsonp) {
+  Univcoord_T splicesitepos;
+  
+  if (watsonp == true) {
+    splicesitepos = chroffset + left_genomepos;
+    if (genestrand > 0) {
+      *left_prob = Maxent_hr_donor_prob(splicesitepos /*?*/+ 1,chroffset);
+      debug5(printf("1. donor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*left_prob));
+
+    } else {
+      *left_prob = Maxent_hr_antiacceptor_prob(splicesitepos /**/+ 1,chroffset);
+      debug5(printf("2. antiacceptor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*left_prob));
+
+    }
+  } else {
+    splicesitepos = chrhigh - left_genomepos + 1;
+    if (genestrand > 0) {
+      *left_prob = Maxent_hr_acceptor_prob(splicesitepos /*?*/- 1,chroffset);
+      debug5(printf("4. acceptor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*left_prob));
+    } else {
+      *left_prob = Maxent_hr_antidonor_prob(splicesitepos /**/- 1,chroffset);
+      debug5(printf("3. antidonor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*left_prob));
+    }
+  }
+
+  if (watsonp == true) {
+    splicesitepos = chroffset + right_genomepos + 1;
+    if (genestrand > 0) {
+      *right_prob = Maxent_hr_acceptor_prob(splicesitepos /*?*/- 1,chroffset);
+      debug5(printf("5. acceptor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*right_prob));
+    } else {
+      *right_prob = Maxent_hr_antidonor_prob(splicesitepos /**/- 1,chroffset);
+      debug5(printf("6. antidonor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*right_prob));
+
+    }
+  } else {
+    splicesitepos = chrhigh - right_genomepos;
+    if (genestrand > 0) {
+      *right_prob = Maxent_hr_donor_prob(splicesitepos /*?*/+ 1,chroffset);
+      debug5(printf("8. donor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*right_prob));
+    } else {
+      *right_prob = Maxent_hr_antiacceptor_prob(splicesitepos /**/+ 1,chroffset);
+      debug5(printf("7. antiacceptor splicesitepos is %u (%u), prob %f\n",
+		    splicesitepos,splicesitepos-chroffset,*right_prob));
+    }
+  }
+
+  return;
+}
+
+
+
 /* queryseq_ptr is NULL for PMAP.  querypos here is in nt. */
 static List_T
 convert_to_nucleotides (List_T path,
@@ -3857,11 +3843,14 @@ convert_to_nucleotides (List_T path,
   int querypos, lastquerypos, queryjump, genomejump, fill, default_fill;
   int genomepos, lastgenomepos;
   char c, c_alt;
+  double left_prob, right_prob;
 
-  debug5(printf("Beginning convert_to_nucleotides with %d pairs\n",List_length(path)));
+  debug5(printf("Beginning convert_to_nucleotides with %d pairs.  query_offset = %d, indexsize_nt = %d\n",
+		List_length(path),query_offset,indexsize_nt));
 
-  pairptr = path;
-  path = Pairpool_pop(path,&pair);
+  /* pairptr = path; */
+  /* path = Pairpool_pop(path,&pair); */
+  pair = (Pair_T) path->first;
   querypos = pair->querypos;
   genomepos = pair->genomepos;
 
@@ -3874,8 +3863,7 @@ convert_to_nucleotides (List_T path,
   lastquerypos = querypos + default_fill;
   lastgenomepos = genomepos + default_fill;
   while (lastquerypos > querypos) {
-    debug5(printf("lastquerypos %d, lastgenomepos %d\n",
-		  lastquerypos,lastgenomepos));
+    debug5(printf("querypos %d vs lastquerypos %d, lastgenomepos %d\n",querypos,lastquerypos,lastgenomepos));
 
 #ifdef PMAP
     c = get_genomic_nt(&c_alt,lastgenomepos,chroffset,chrhigh,watsonp);
@@ -3926,24 +3914,31 @@ convert_to_nucleotides (List_T path,
     --lastgenomepos;
   }
 
-  /* Take care of first pair */
+  /* Take care of observed first pair in oligomer */
   if (mode == STANDARD) {
     pair->querypos += query_offset; /* Revise coordinates */
     /*pair->genomepos += genomic_offset;*/ /* Revise coordinates */
 #ifdef WASTE
     pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-    pairs = List_push_existing(pairs,pairptr);
+    pairs = List_transfer_one(pairs,&path);
 #endif
+    debug5(printf("Transferring %c : %c at %d,%d (first pair)\n",pair->cdna,c,
+		    pair->querypos+query_offset,pair->genomepos));
   } else {
     c = get_genomic_nt(&c_alt,pair->genomepos,chroffset,chrhigh,watsonp);
     if (pair->cdna == c) {
+      pair->querypos += query_offset; /* Revise coordinates */
+      /*pair->genomepos += genomic_offset;*/ /* Revise coordinates */
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
+      debug5(printf("Transferring %c : %c at %d,%d (first pair)\n",pair->cdna,c,
+		    pair->querypos+query_offset,pair->genomepos));
     } else {
+      path = Pairpool_pop(path,&pair);
       pairs = Pairpool_push(pairs,pairpool,pair->querypos+query_offset,pair->genomepos,
 			    pair->cdna,AMBIGUOUS_COMP,c,c_alt,/*dynprogindex*/0);
       debug5(printf("Pushing %c : %c at %d,%d (first pair)\n",pair->cdna,c,
@@ -3955,8 +3950,9 @@ convert_to_nucleotides (List_T path,
   lastgenomepos = genomepos;
 
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     querypos = pair->querypos;
     genomepos = pair->genomepos;
     
@@ -3990,6 +3986,24 @@ convert_to_nucleotides (List_T path,
 	fill = default_fill;
       }
 
+      /* Recompute queryjump and genomejump */
+      queryjump -= fill;
+      genomejump -= fill;
+      debug5(printf("  Revised queryjump of %d and genomejump of %d\n",queryjump,genomejump));
+      if (genomejump > 0 || queryjump > 0) {
+	debug5(printf("  Pushing gapholder\n"));
+	pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+					/*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+#if 0
+	/* Need to run on both genestrands, and save both results in pair */
+	if (queryjump == 0) {
+	  get_splicesite_probs(&left_prob,&right_prob,genomepos+fill,lastgenomepos,
+			       chroffset,chrhigh,/*genestrand*/+1,watsonp);
+	}
+#endif
+      }
+
+      /* Fill rest of oligomer */
       lastquerypos = querypos + fill;
       lastgenomepos = genomepos + fill;
       debug5(printf("  Fill from querypos %d down to %d\n",lastquerypos,querypos));
@@ -4052,17 +4066,24 @@ convert_to_nucleotides (List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
+      debug5(printf("Transferring %c : %c at %d,%d\n",pair->cdna,c,
+		    pair->querypos+query_offset,pair->genomepos));
     } else {
       c = get_genomic_nt(&c_alt,pair->genomepos,chroffset,chrhigh,watsonp);
       if (pair->cdna == c) {
+	pair->querypos += query_offset; /* Revise coordinates */
+	/*pair->genomepos += genomic_offset;*/ /* Revise coordinates */
 #ifdef WASTE
 	pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-	pairs = List_push_existing(pairs,pairptr);
+	pairs = List_transfer_one(pairs,&path);
 #endif
+	debug5(printf("Transferring %c : %c at %d,%d\n",pair->cdna,c,
+		      pair->querypos+query_offset,pair->genomepos));
       } else {
+	path = Pairpool_pop(path,&pair);
 	pairs = Pairpool_push(pairs,pairpool,pair->querypos+query_offset,pair->genomepos,
 			      pair->cdna,AMBIGUOUS_COMP,c,c_alt,/*dynprogindex*/0);
 	debug5(printf("Pushing %c : %c at %d,%d (observed)\n",pair->cdna,c,
@@ -4075,7 +4096,8 @@ convert_to_nucleotides (List_T path,
   }
 
   debug5(Pair_dump_list(pairs,true));
-  return List_reverse(pairs);
+  /* pairs is in ascending querypos order */
+  return pairs;		      /* Used to return List_reverse(pairs) */
 }
 
 
@@ -4092,10 +4114,11 @@ convert_to_nucleotides_snps (List_T path,
   int querypos, genomepos, lastquerypos, lastgenomepos, queryjump, genomejump, fill, default_fill;
   char c, c_alt;
 
-  debug5(printf("Beginning convert_to_nucleotides with %d pairs\n",List_length(path)));
+  debug5(printf("Beginning convert_to_nucleotides_snps with %d pairs\n",List_length(path)));
 
-  pairptr = path;
-  path = Pairpool_pop(path,&pair);
+  /* pairptr = path; */
+  /* path = Pairpool_pop(path,&pair); */
+  pair = (Pair_T) path->first;
   querypos = pair->querypos;
   genomepos = pair->genomepos;
 
@@ -4161,24 +4184,31 @@ convert_to_nucleotides_snps (List_T path,
     --lastgenomepos;
   }
 
-  /* Take care of first pair */
+  /* Take care of observed first pair in oligomer */
   if (mode == STANDARD) {
     pair->querypos += query_offset; /* Revise coordinates */
     /*pair->genomepos += genomic_offset;*/ /* Revise coordinates */
 #ifdef WASTE
     pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-    pairs = List_push_existing(pairs,pairptr);
+    pairs = List_transfer_one(pairs,&path);
 #endif
+    debug5(printf("Transferring %c : %c at %d,%d\n",pair->cdna,c,
+		  pair->querypos+query_offset,pair->genomepos));
   } else {
     c = get_genomic_nt(&c_alt,pair->genomepos,chroffset,chrhigh,watsonp);
     if (pair->cdna == c) {
+      pair->querypos += query_offset; /* Revise coordinates */
+      /*pair->genomepos += genomic_offset;*/ /* Revise coordinates */
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
+      debug5(printf("Transferring %c : %c at %d,%d\n",pair->cdna,c,
+		    pair->querypos+query_offset,pair->genomepos));
     } else {
+      path = Pairpool_pop(path,&pair);
       pairs = Pairpool_push(pairs,pairpool,pair->querypos+query_offset,pair->genomepos,
 			    pair->cdna,AMBIGUOUS_COMP,c,c_alt,/*dynprogindex*/0);
       debug5(printf("Pushing %c : %c at %d,%d (first pair)\n",pair->cdna,c,
@@ -4190,8 +4220,9 @@ convert_to_nucleotides_snps (List_T path,
   lastgenomepos = genomepos;
 
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     querypos = pair->querypos;
     genomepos = pair->genomepos;
     
@@ -4225,6 +4256,17 @@ convert_to_nucleotides_snps (List_T path,
 	fill = default_fill;
       }
 
+      /* Recompute queryjump and genomejump */
+      queryjump -= fill;
+      genomejump -= fill;
+      debug5(printf("  Revised queryjump of %d and genomejump of %d\n",queryjump,genomejump));
+      if (genomejump > 0 || queryjump > 0) {
+	debug5(printf("  Pushing gapholder\n"));
+	pairs = Pairpool_push_gapholder(pairs,pairpool,queryjump,genomejump,
+					/*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      }
+
+      /* Fill rest of oligomer */
       lastquerypos = querypos + fill;
       lastgenomepos = genomepos + fill;
       debug5(printf("  Fill from querypos %d down to %d\n",lastquerypos,querypos));
@@ -4286,17 +4328,24 @@ convert_to_nucleotides_snps (List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
+      debug5(printf("Transferring %c : %c at %d,%d\n",pair->cdna,c,
+		    pair->querypos+query_offset,pair->genomepos));
     } else {
       c = get_genomic_nt(&c_alt,pair->genomepos,chroffset,chrhigh,watsonp);
       if (pair->cdna == c) {
+	pair->querypos += query_offset; /* Revise coordinates */
+	/*pair->genomepos += genomic_offset;*/ /* Revise coordinates */
 #ifdef WASTE
 	pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-	pairs = List_push_existing(pairs,pairptr);
+	pairs = List_transfer_one(pairs,&path);
 #endif
+	debug5(printf("Transferring %c : %c at %d,%d\n",pair->cdna,c,
+		      pair->querypos+query_offset,pair->genomepos));
       } else {
+	path = Pairpool_pop(path,&pair);
 	pairs = Pairpool_push(pairs,pairpool,pair->querypos+query_offset,pair->genomepos,
 			      pair->cdna,AMBIGUOUS_COMP,c,c_alt,/*dynprogindex*/0);
 	debug5(printf("Pushing %c : %c at %d,%d (observed)\n",pair->cdna,c,
@@ -4309,7 +4358,8 @@ convert_to_nucleotides_snps (List_T path,
   }
 
   debug5(Pair_dump_list(pairs,true));
-  return List_reverse(pairs);
+  /* pairs is in ascending querypos order */
+  return pairs;		      /* Used to return List_reverse(pairs) */
 }
 
 
@@ -4317,12 +4367,9 @@ convert_to_nucleotides_snps (List_T path,
 /* Returns ncovered */
 int
 Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
-#ifdef PMAP
-	     char *genomicuc_ptr,
-#endif
 	     Chrpos_T chrstart, Chrpos_T chrend,
 	     Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
-	     int genestrand, Oligoindex_T *oligoindices, int noligoindices,
+	     int genestrand, Oligoindex_array_T oligoindices,
 	     Diagpool_T diagpool, bool debug_graphic_p, bool diagnosticp) {
   int ncovered;
   int source;
@@ -4359,12 +4406,21 @@ Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
   pct_coverage = 0.0;
   Diagpool_reset(diagpool);
   diagonals = (List_T) NULL;
-  while (source < noligoindices && pct_coverage < SUFF_PCTCOVERAGE_OLIGOINDEX) {
-    oligoindex = oligoindices[source];
+  while (source < Oligoindex_array_length(oligoindices) && pct_coverage < SUFF_PCTCOVERAGE_OLIGOINDEX) {
+    oligoindex = Oligoindex_array_elt(oligoindices,source);
     indexsize = Oligoindex_indexsize(oligoindex); /* Different sources can have different indexsizes */
 #ifdef PMAP
-    Oligoindex_tally(oligoindex,genomicuc_ptr,/*genomiclength*/chrend-chrstart,queryuc_ptr,querylength,
-		     /*sequencepos*/0);
+    if (plusp == true) {
+      Oligoindex_pmap_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			    /*mappingend*/chroffset+chrend,/*plusp*/true,
+			    queryuc_ptr,querylength,/*chrpos*/chrstart);
+    } else {
+      /* Need to add 1 to mappingend to cover same range as plusp */
+      Oligoindex_pmap_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			    /*mappingend*/chroffset+chrend+1,/*plusp*/false,
+			    queryuc_ptr,querylength,/*chrpos*/(chrhigh-chroffset)-chrend);
+    }
+
 #else
 
 #ifdef EXTRACT_GENOMICSEG
@@ -4378,6 +4434,7 @@ Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
 			  /*mappingend*/chroffset+chrend,/*plusp*/true,
 			  queryuc_ptr,querylength,/*chrpos*/chrstart,genestrand);
     } else {
+      /* Need to add 1 to mappingend to cover same range as plusp */
       Oligoindex_hr_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
 			  /*mappingend*/chroffset+chrend+1,/*plusp*/false,
 			  queryuc_ptr,querylength,/*chrpos*/(chrhigh-chroffset)-chrend,genestrand);
@@ -4392,7 +4449,7 @@ Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
 #endif
 
     diagonals = Oligoindex_get_mappings(diagonals,coveredp,mappings,npositions,&totalpositions,
-					&oned_matrix_p,&maxnconsecutive,oligoindex,queryuc_ptr,
+					&oned_matrix_p,&maxnconsecutive,oligoindices,oligoindex,queryuc_ptr,
 					querylength,chrstart,chrend,chroffset,chrhigh,plusp,diagpool);
     pct_coverage = Diag_update_coverage(coveredp,&ncovered,diagonals,querylength);
     debug(printf("Stage2_scan: source = %d, ncovered = %d, pct_coverage = %f\n",source,ncovered,pct_coverage));
@@ -4415,10 +4472,12 @@ Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
   FREE(coveredp);
   FREE(mappings);		/* Don't need to free contents of mappings */
 
-  for (source = 0; source < noligoindices; source++) {
-    oligoindex = oligoindices[source];
-    Oligoindex_untally(oligoindex);
+#if 1
+  for (source = 0; source < Oligoindex_array_length(oligoindices); source++) {
+    oligoindex = Oligoindex_array_elt(oligoindices,source);
+    Oligoindex_untally(oligoindex,queryuc_ptr,querylength);
   }
+#endif
 
   return ncovered;
 }
@@ -4427,29 +4486,32 @@ Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
 List_T
 Stage2_compute (int *stage2_source, int *stage2_indexsize,
 		char *queryseq_ptr, char *queryuc_ptr, int querylength, int query_offset,	
-#ifdef PMAP
-		char *genomicuc_ptr,
-#endif
 		Chrpos_T chrstart, Chrpos_T chrend,
 		Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp, int genestrand,
-		Oligoindex_T *oligoindices, int noligoindices, double proceed_pctcoverage,
-		Pairpool_T pairpool, Diagpool_T diagpool, int sufflookback, int nsufflookback,
-		int maxintronlen, bool localp, bool skip_repetitive_p, bool use_shifted_canonical_p,
+		Oligoindex_array_T oligoindices, double proceed_pctcoverage,
+		Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		int sufflookback, int nsufflookback, int maxintronlen, bool localp, bool skip_repetitive_p,
 		bool favor_right_p, int max_nalignments, bool debug_graphic_p, bool diagnosticp,
 		Stopwatch_T stopwatch, bool diag_debug) {
-  List_T all_pairs = NULL, all_paths, path, pairs, p;
+  List_T all_stage2results = NULL, all_paths, all_ends, all_starts, end_paths, start_paths, path, pairs, p, q;
+  List_T middle;
+  Pair_T firstpair, lastpair;
+  int diag_querystart, diag_queryend;
   int indexsize, indexsize_nt;
   Oligoindex_T oligoindex;
   Chrpos_T **mappings;
   bool *coveredp, oned_matrix_p;
   int source;
   int *npositions, totalpositions;
-  unsigned int *minactive, *maxactive;
+  Chrpos_T *minactive, *maxactive;
   int ncovered;
   double pct_coverage;
   int maxnconsecutive;
   /* double diag_runtime; */
   List_T diagonals;
+  int anchor_querypos, querystart, queryend;
+  Chrpos_T anchor_position;
+
 #ifndef USE_DIAGPOOL
   List_T p;
   Diag_T diag;
@@ -4457,6 +4519,9 @@ Stage2_compute (int *stage2_source, int *stage2_indexsize,
 #ifdef DEBUG
   int nunique;
 #endif
+#ifdef DEBUG0
+  int i;
+#endif
 
 #ifdef EXTRACT_GENOMICSEG
   Count_T *counts;
@@ -4483,14 +4548,22 @@ Stage2_compute (int *stage2_source, int *stage2_indexsize,
 #ifdef USE_DIAGPOOL
   Diagpool_reset(diagpool);
 #endif
+  Cellpool_reset(cellpool);
   diagonals = (List_T) NULL;
-  while (source < noligoindices && pct_coverage < SUFF_PCTCOVERAGE_OLIGOINDEX) {
-    oligoindex = oligoindices[source];
+  while (source < Oligoindex_array_length(oligoindices) && pct_coverage < SUFF_PCTCOVERAGE_OLIGOINDEX) {
+    oligoindex = Oligoindex_array_elt(oligoindices,source);
     indexsize = Oligoindex_indexsize(oligoindex); /* Different sources can have different indexsizes */
 
 #ifdef PMAP
-    Oligoindex_tally(oligoindex,genomicuc_ptr,/*genomiclength*/chrend-chrstart,queryuc_ptr,querylength,
-		     /*sequencepos*/0);
+    if (plusp == true) {
+      Oligoindex_pmap_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			    /*mappingend*/chroffset+chrend,/*plusp*/true,
+			    queryuc_ptr,querylength,/*chrpos*/chrstart);
+    } else {
+      Oligoindex_pmap_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			    /*mappingend*/chroffset+chrend+1,/*plusp*/false,
+			    queryuc_ptr,querylength,/*chrpos*/(chrhigh-chroffset)-chrend);
+    }
 #else
 
 #if 0
@@ -4532,45 +4605,53 @@ Stage2_compute (int *stage2_source, int *stage2_indexsize,
 #endif
 
     diagonals = Oligoindex_get_mappings(diagonals,coveredp,mappings,npositions,&totalpositions,
-					&oned_matrix_p,&maxnconsecutive,oligoindex,queryuc_ptr,
+					&oned_matrix_p,&maxnconsecutive,oligoindices,oligoindex,queryuc_ptr,
 					querylength,chrstart,chrend,chroffset,chrhigh,plusp,diagpool);
     pct_coverage = Diag_update_coverage(coveredp,&ncovered,diagonals,querylength);
-    debug(printf("Stage2_compute: source = %d, ncovered = %d, pct_coverage = %f\n",source,ncovered,pct_coverage));
+    debug(printf("Stage2_compute: source = %d, ndiagonals = %d, ncovered = %d, pct_coverage = %f\n",
+		 source,List_length(diagonals),ncovered,pct_coverage));
 
     source++;
   }
   *stage2_source = source;
   *stage2_indexsize = indexsize;
+#ifdef PMAP
+  indexsize_nt = 3*indexsize;
+#else
+  indexsize_nt = indexsize;
+#endif
 
   /* diag_runtime = */ Stopwatch_stop(stopwatch);
 
-
   minactive = (unsigned int *) CALLOC(querylength,sizeof(unsigned int));
   maxactive = (unsigned int *) CALLOC(querylength,sizeof(unsigned int));
 
-
   Stopwatch_start(stopwatch);
 
   if (diag_debug == true) {
     /* Do nothing */
+    middle = (List_T) NULL;
+
   } else if (totalpositions == 0) {
     debug(printf("Quitting because totalpositions is zero\n"));
+    middle = (List_T) NULL;
 
   } else if (querylength > 150 && pct_coverage < proceed_pctcoverage && ncovered < SUFF_NCOVERED) {
     /* Filter only on long queries */
     debug(printf("Quitting because querylength %d > 150, and pct_coverage is only %f < %f, and ncovered is only %d < %d, maxnconsecutive = %d\n",
 		 querylength,pct_coverage,proceed_pctcoverage,ncovered,SUFF_NCOVERED,maxnconsecutive));
+    middle = (List_T) NULL;
 
   } else {
     debug(printf("Proceeding because maxnconsecutive is %d and pct_coverage is %f > %f or ncovered = %d > %d\n",
 		 maxnconsecutive,pct_coverage,proceed_pctcoverage,ncovered,SUFF_NCOVERED));
 
     debug(printf("Performing diag on genomiclength %u\n",chrend-chrstart));
-    Diag_compute_bounds(minactive,maxactive,diagonals,querylength,
+    Diag_compute_bounds(&diag_querystart,&diag_queryend,minactive,maxactive,diagonals,querylength,
 			debug_graphic_p,chrstart,chrend,chroffset,chrhigh,plusp);
     
     debug(
-	  nunique = Diag_compute_bounds(minactive,maxactive,diagonals,querylength,
+	  nunique = Diag_compute_bounds(&diag_querystart,&diag_queryend,minactive,maxactive,diagonals,querylength,
 					debug_graphic_p,chrstart,chrend,chroffset,chrhigh,plusp);
 	  fprintf(stderr,"%d diagonals (%d not dominated), maxnconsecutive = %d\n",
 		  List_length(diagonals),nunique,maxnconsecutive);
@@ -4582,59 +4663,203 @@ Stage2_compute (int *stage2_source, int *stage2_indexsize,
       printf("lines(querypos,maxactive,col=\"blue\")\n");
     }
 
-    all_paths = align_compute(mappings,npositions,totalpositions,
-			      oned_matrix_p,minactive,maxactive,
-			      queryseq_ptr,queryuc_ptr,querylength,
-			      /*query_trim_start*/0,/*query_trim_end*/querylength,
-			      chroffset,chrhigh,plusp,
-			      indexsize,sufflookback,nsufflookback,maxintronlen,pairpool,
-			      localp,skip_repetitive_p,use_shifted_canonical_p,
-			      favor_right_p,max_nalignments,debug_graphic_p);
+    all_paths = align_compute_lookback(mappings,npositions,totalpositions,
+				       oned_matrix_p,minactive,maxactive,cellpool,
+				       queryseq_ptr,queryuc_ptr,querylength,
+				       /*querystart*/diag_querystart,/*queryend*/diag_queryend,
+				       chroffset,chrhigh,plusp,
+				       indexsize,sufflookback,nsufflookback,maxintronlen,pairpool,
+				       /*anchoredp*/false,/*anchor_querypos*/0,/*anchor_position*/0,
+				       localp,skip_repetitive_p,use_canonical_middle_p,NON_CANONICAL_PENALTY_MIDDLE,
+				       favor_right_p,max_nalignments,debug_graphic_p);
+    for (p = all_paths; p != NULL; p = List_next(p)) {
+      path = (List_T) p->first;
+      firstpair = path->first;
+      pairs = List_reverse(path);
+      lastpair = pairs->first;
+
+      debug5(printf("Converting middle\n"));
+      if (snps_p == true) {
+	middle = convert_to_nucleotides_snps(pairs,
+#ifndef PMAP
+					     queryseq_ptr,queryuc_ptr,
+#endif
+					     chroffset,chrhigh,/*watsonp*/plusp,
+					     query_offset,pairpool,indexsize_nt);
+      } else {
+	middle = convert_to_nucleotides(pairs,
+#ifndef PMAP
+					queryseq_ptr,queryuc_ptr,
+#endif
+					chroffset,chrhigh,/*watsonp*/plusp,
+					query_offset,pairpool,indexsize_nt);
+      }
 
 #ifdef PMAP
-    indexsize_nt = 3*indexsize;
+      anchor_querypos = lastpair->querypos/3;
+      anchor_position = lastpair->genomepos - 2;
 #else
-    indexsize_nt = indexsize;
+      anchor_querypos = lastpair->querypos;
+      anchor_position = lastpair->genomepos;
+#endif
+      querystart = anchor_querypos + 1;
+      queryend = querylength - 1;
+      debug0(printf("For end, anchor querypos %d, anchor_position %u\n",anchor_querypos,anchor_position));
+
+      all_ends = (List_T) NULL;
+      end_paths = align_compute_lookback(mappings,npositions,totalpositions,
+					 oned_matrix_p,minactive,maxactive,cellpool,
+					 queryseq_ptr,queryuc_ptr,querylength,querystart,queryend,
+					 chroffset,chrhigh,plusp,
+					 indexsize,sufflookback,nsufflookback,maxintronlen,pairpool,
+					 /*anchoredp*/true,anchor_querypos,anchor_position,
+					 localp,skip_repetitive_p,use_canonical_ends_p,NON_CANONICAL_PENALTY_ENDS,
+					 favor_right_p,max_nalignments,debug_graphic_p);
+
+      /* fprintf(stderr,"%d ends\n",List_length(end_paths)); */
+      if (List_length(end_paths) == 1) {
+	pairs = (List_T) List_head(end_paths);
+	path = List_reverse(pairs);
+	debug5(printf("Converting single end\n"));
+	if (snps_p == true) {
+	  pairs = convert_to_nucleotides_snps(path,
+#ifndef PMAP
+					      queryseq_ptr,queryuc_ptr,
+#endif
+					      chroffset,chrhigh,/*watsonp*/plusp,
+					      query_offset,pairpool,indexsize_nt);
+	} else {
+	  pairs = convert_to_nucleotides(path,
+#ifndef PMAP
+					 queryseq_ptr,queryuc_ptr,
 #endif
+					 chroffset,chrhigh,/*watsonp*/plusp,
+					 query_offset,pairpool,indexsize_nt);
+	}
+	middle = List_reverse(Pairpool_join_end3(List_reverse(middle),pairs,pairpool,/*copy_end_p*/false));
+	debug0(printf("ATTACHING SINGLE END TO MIDDLE\n"));
+	debug0(Pair_dump_list(middle,true));
 
-    for (p = all_paths; p != NULL; p = List_next(p)) {
-      path = (List_T) List_head(p);
-      if (path != NULL) {
+      } else {
+	debug0(i = 0);
+	for (q = end_paths; q != NULL; q = List_next(q)) {
+	  pairs = (List_T) List_head(q);
+	  path = List_reverse(pairs);
+	  debug5(printf("Converting one end\n"));
+	  if (snps_p == true) {
+	    pairs = convert_to_nucleotides_snps(path,
+#ifndef PMAP
+						queryseq_ptr,queryuc_ptr,
+#endif
+						chroffset,chrhigh,/*watsonp*/plusp,
+						query_offset,pairpool,indexsize_nt);
+	  } else {
+	    pairs = convert_to_nucleotides(path,
+#ifndef PMAP
+					   queryseq_ptr,queryuc_ptr,
+#endif
+					   chroffset,chrhigh,/*watsonp*/plusp,
+					   query_offset,pairpool,indexsize_nt);
+	  }
+	  debug0(printf("END %d/%d\n",i++,List_length(end_paths)));
+	  debug0(Pair_dump_list(pairs,true));
+	  all_ends = List_push(all_ends,(void *) pairs);
+	}
+      }
+      List_free(&end_paths);
+
+    
+#ifdef PMAP
+      anchor_querypos = firstpair->querypos/3;
+      anchor_position = firstpair->genomepos;
+#else
+      anchor_querypos = firstpair->querypos;
+      anchor_position = firstpair->genomepos;
+#endif
+      debug0(printf("For start, anchor querypos %d, anchor_position %u\n",anchor_querypos,anchor_position));
+      querystart = 0;
+      queryend = anchor_querypos - 1;
+
+      all_starts = (List_T) NULL;
+      start_paths = align_compute_lookforward(mappings,npositions,totalpositions,
+					      oned_matrix_p,minactive,maxactive,cellpool,
+					      queryseq_ptr,queryuc_ptr,querylength,querystart,queryend,
+					      chroffset,chrhigh,plusp,
+					      indexsize,sufflookback,nsufflookback,maxintronlen,pairpool,
+					      /*anchoredp*/true,anchor_querypos,anchor_position,
+					      localp,skip_repetitive_p,use_canonical_ends_p,NON_CANONICAL_PENALTY_ENDS,
+					      favor_right_p,max_nalignments,debug_graphic_p);
+
+      /* fprintf(stderr,"%d starts\n",List_length(start_paths)); */
+      if (List_length(start_paths) == 1) {
+	path = (List_T) List_head(start_paths);
+	  debug5(printf("Converting single start\n"));
 	if (snps_p == true) {
-	  pairs = convert_to_nucleotides_snps(List_reverse(path),
+	  pairs = convert_to_nucleotides_snps(path,
 #ifndef PMAP
 					      queryseq_ptr,queryuc_ptr,
 #endif
 					      chroffset,chrhigh,/*watsonp*/plusp,
 					      query_offset,pairpool,indexsize_nt);
 	} else {
-	  pairs = convert_to_nucleotides(List_reverse(path),
+	  pairs = convert_to_nucleotides(path,
 #ifndef PMAP
 					 queryseq_ptr,queryuc_ptr,
 #endif
 					 chroffset,chrhigh,/*watsonp*/plusp,
 					 query_offset,pairpool,indexsize_nt);
 	}
-	/* Don't need to free path, because its memory belongs to pairpool */
-	all_pairs = List_push(all_pairs,(void *) pairs);
+	path = List_reverse(pairs);
+	middle = Pairpool_join_end5(middle,path,pairpool,/*copy_end_p*/false);
+	debug0(printf("ATTACHING SINGLE START TO MIDDLE\n"));
+	debug0(Pair_dump_list(middle,true));
+      } else {
+	debug0(i = 0);
+	for (q = start_paths; q != NULL; q = List_next(q)) {
+	  path = (List_T) List_head(q);
+	  debug5(printf("Converting one start\n"));
+	  if (snps_p == true) {
+	    pairs = convert_to_nucleotides_snps(path,
+#ifndef PMAP
+						queryseq_ptr,queryuc_ptr,
+#endif
+						chroffset,chrhigh,/*watsonp*/plusp,
+						query_offset,pairpool,indexsize_nt);
+	  } else {
+	    pairs = convert_to_nucleotides(path,
+#ifndef PMAP
+					   queryseq_ptr,queryuc_ptr,
+#endif
+					   chroffset,chrhigh,/*watsonp*/plusp,
+					   query_offset,pairpool,indexsize_nt);
+	  }
+	  path = List_reverse(pairs);
+	  debug0(printf("START %d/%d\n",i++,List_length(start_paths)));
+	  debug0(Pair_dump_list(path,true));
+	  all_starts = List_push(all_starts,(void *) path);
+	}
       }
+      List_free(&start_paths);
+
+      all_stage2results = List_push(all_stage2results,(void *) Stage2_new(middle,all_starts,all_ends));
     }
 
     List_free(&all_paths);
   }
 
 
-
   FREE(maxactive);
   FREE(minactive);
   FREE(npositions);
   FREE(coveredp);
   FREE(mappings);		/* Don't need to free contents of mappings */
 
-  for (source = 0; source < noligoindices; source++) {
-    oligoindex = oligoindices[source];
-    Oligoindex_untally(oligoindex);
+#if 1
+  for (source = 0; source < Oligoindex_array_length(oligoindices); source++) {
+    oligoindex = Oligoindex_array_elt(oligoindices,source);
+    Oligoindex_untally(oligoindex,queryuc_ptr,querylength);
   }
+#endif
 
   Stopwatch_stop(stopwatch);
 
@@ -4653,7 +4878,7 @@ Stage2_compute (int *stage2_source, int *stage2_indexsize,
 #endif
   }
 
-  return all_pairs;
+  return all_stage2results;
 }
 
 
@@ -4661,38 +4886,162 @@ Stage2_compute (int *stage2_source, int *stage2_indexsize,
 List_T
 Stage2_compute_one (int *stage2_source, int *stage2_indexsize,
 		    char *queryseq_ptr, char *queryuc_ptr, int querylength, int query_offset,	
-#ifdef PMAP
-		    char *genomicuc_ptr,
-#endif
 		    Chrpos_T chrstart, Chrpos_T chrend,
 		    Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp, int genestrand,
 
-		    Oligoindex_T *oligoindices, int noligoindices, double proceed_pctcoverage,
-		    Pairpool_T pairpool, Diagpool_T diagpool, int sufflookback, int nsufflookback,
-		    int maxintronlen, bool localp, bool skip_repetitive_p, bool use_shifted_canonical_p,
-		    bool favor_right_p, bool debug_graphic_p, bool diagnosticp,
-		    Stopwatch_T stopwatch, bool diag_debug) {
+		    Oligoindex_array_T oligoindices, double proceed_pctcoverage,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		    int sufflookback, int nsufflookback,  int maxintronlen, bool localp,
+		    bool skip_repetitive_p, bool use_shifted_canonical_p,
+		    bool favor_right_p, bool debug_graphic_p, bool diagnosticp) {
+  List_T pairs, all_paths;
+  List_T middle, path;
+  int indexsize, indexsize_nt;
+  Oligoindex_T oligoindex;
+  Chrpos_T **mappings;
+  bool *coveredp, oned_matrix_p;
+  int source;
+  int *npositions, totalpositions;
+  Chrpos_T *minactive, *maxactive;
+  int ncovered;
+  double pct_coverage;
+  int maxnconsecutive;
+  /* double diag_runtime; */
+  List_T diagonals;
+
+
+  debug(printf("Entered Stage2_compute_one with chrstart %u and chrend %u\n",chrstart,chrend));
+
+  coveredp = (bool *) CALLOC(querylength,sizeof(bool));
+  mappings = (Chrpos_T **) CALLOC(querylength,sizeof(Chrpos_T *));
+  npositions = (int *) CALLOC(querylength,sizeof(int));
+  totalpositions = 0;
+  maxnconsecutive = 0;
+
+  source = 0;
+  pct_coverage = 0.0;
+#ifdef USE_DIAGPOOL
+  Diagpool_reset(diagpool);
+#endif
+  Cellpool_reset(cellpool);
+  diagonals = (List_T) NULL;
+  while (source < Oligoindex_array_length(oligoindices) && pct_coverage < SUFF_PCTCOVERAGE_OLIGOINDEX) {
+    oligoindex = Oligoindex_array_elt(oligoindices,source);
+    indexsize = Oligoindex_indexsize(oligoindex); /* Different sources can have different indexsizes */
+
+#ifdef PMAP
+    if (plusp == true) {
+      Oligoindex_pmap_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			    /*mappingend*/chroffset+chrend,/*plusp*/true,
+			    queryuc_ptr,querylength,/*chrpos*/chrstart);
+    } else {
+      Oligoindex_pmap_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			    /*mappingend*/chroffset+chrend+1,/*plusp*/false,
+			    queryuc_ptr,querylength,/*chrpos*/(chrhigh-chroffset)-chrend);
+    }
+
+#else
+
+    if (plusp == true) {
+      Oligoindex_hr_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			  /*mappingend*/chroffset+chrend,/*plusp*/true,
+			  queryuc_ptr,querylength,/*chrpos*/chrstart,genestrand);
+    } else {
+      Oligoindex_hr_tally(oligoindex,/*mappingstart*/chroffset+chrstart,
+			  /*mappingend*/chroffset+chrend+1,/*plusp*/false,
+			  queryuc_ptr,querylength,/*chrpos*/(chrhigh-chroffset)-chrend,genestrand);
+    }
+
+#endif
 
-  List_T pairs, all_pairs;
+    diagonals = Oligoindex_get_mappings(diagonals,coveredp,mappings,npositions,&totalpositions,
+					&oned_matrix_p,&maxnconsecutive,oligoindices,oligoindex,queryuc_ptr,
+					querylength,chrstart,chrend,chroffset,chrhigh,plusp,diagpool);
+    pct_coverage = Diag_update_coverage(coveredp,&ncovered,diagonals,querylength);
+    debug(printf("Stage2_compute: source = %d, ncovered = %d, pct_coverage = %f\n",source,ncovered,pct_coverage));
 
-  all_pairs = Stage2_compute(&(*stage2_source),&(*stage2_indexsize),
-			     queryseq_ptr,queryuc_ptr,querylength,query_offset,
+    source++;
+  }
+  *stage2_source = source;
+  *stage2_indexsize = indexsize;
 #ifdef PMAP
-			     genomicuc_ptr,
-#endif
-			     chrstart,chrend,chroffset,chrhigh,plusp,
-			     genestrand,oligoindices,noligoindices,proceed_pctcoverage,
-			     pairpool,diagpool,sufflookback,nsufflookback,
-			     maxintronlen,localp,skip_repetitive_p,use_shifted_canonical_p,
-			     favor_right_p,/*max_nalignments*/1,debug_graphic_p,
-			     diagnosticp,stopwatch,diag_debug);
-  if (all_pairs == NULL) {
-    return (List_T) NULL;
+  indexsize_nt = 3*indexsize;
+#else
+  indexsize_nt = indexsize;
+#endif
+
+
+  minactive = (unsigned int *) CALLOC(querylength,sizeof(unsigned int));
+  maxactive = (unsigned int *) CALLOC(querylength,sizeof(unsigned int));
+
+  if (totalpositions == 0) {
+    debug(printf("Quitting because totalpositions is zero\n"));
+    middle = (List_T) NULL;
+
   } else {
-    pairs = (List_T) List_head(all_pairs);
-    List_free(&all_pairs);
-    return pairs;
+    debug(printf("Proceeding because maxnconsecutive is %d and pct_coverage is %f > %f or ncovered = %d > %d\n",
+		 maxnconsecutive,pct_coverage,proceed_pctcoverage,ncovered,SUFF_NCOVERED));
+
+    debug(printf("Performing diag on genomiclength %u\n",chrend-chrstart));
+    Diag_max_bounds(minactive,maxactive,querylength,chrstart,chrend,chroffset,chrhigh,plusp);
+    
+    if ((all_paths = align_compute_lookback(mappings,npositions,totalpositions,
+					    oned_matrix_p,minactive,maxactive,cellpool,
+					    queryseq_ptr,queryuc_ptr,querylength,
+					    /*querystart*/0,/*queryend*/querylength-1,
+					    chroffset,chrhigh,plusp,
+					    indexsize,sufflookback,nsufflookback,maxintronlen,pairpool,
+					    /*anchoredp*/false,/*anchor_querypos*/0,/*anchor_position*/0,
+					    localp,skip_repetitive_p,use_canonical_middle_p,NON_CANONICAL_PENALTY_MIDDLE,
+					    favor_right_p,/*max_nalignments*/1,debug_graphic_p)) == NULL) {
+      middle = (List_T) NULL;
+    } else if ((path = (List_T) List_head(all_paths)) == NULL) {
+      middle = (List_T) NULL;
+    } else if (snps_p == true) {
+      pairs = List_reverse(path);
+      middle = convert_to_nucleotides_snps(pairs,
+#ifndef PMAP
+					   queryseq_ptr,queryuc_ptr,
+#endif
+					   chroffset,chrhigh,/*watsonp*/plusp,
+					   query_offset,pairpool,indexsize_nt);
+    } else {
+      pairs = List_reverse(path);
+      middle = convert_to_nucleotides(pairs,
+#ifndef PMAP
+				      queryseq_ptr,queryuc_ptr,
+#endif
+				      chroffset,chrhigh,/*watsonp*/plusp,
+				      query_offset,pairpool,indexsize_nt);
+    }
+
+    List_free(&all_paths);
   }
-}
 
 
+  FREE(maxactive);
+  FREE(minactive);
+  FREE(npositions);
+  FREE(coveredp);
+  FREE(mappings);		/* Don't need to free contents of mappings */
+
+#if 1
+  for (source = 0; source < Oligoindex_array_length(oligoindices); source++) {
+    oligoindex = Oligoindex_array_elt(oligoindices,source);
+    Oligoindex_untally(oligoindex,queryuc_ptr,querylength);
+  }
+#endif
+
+#ifdef USE_DIAGPOOL
+  /* No need to free diagonals */
+#else
+  for (p = diagonals; p != NULL; p = List_next(p)) {
+    diag = (Diag_T) List_head(p);
+    Diag_free(&diag);
+  }
+  List_free(&diagonals);
+#endif
+
+  return List_reverse(middle);
+}
+
diff --git a/src/stage2.h b/src/stage2.h
index 6769c17..b7cf073 100644
--- a/src/stage2.h
+++ b/src/stage2.h
@@ -1,79 +1,69 @@
-/* $Id: stage2.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: stage2.h 135447 2014-05-07 22:25:45Z twu $ */
 #ifndef STAGE2_INCLUDED
 #define STAGE2_INCLUDED
+
+typedef struct Stage2_T *Stage2_T;
+
 #include "bool.h"
 #include "list.h"
-#include "oligoindex.h"
 #include "pairpool.h"
 #include "diagpool.h"
+#include "cellpool.h"
 #include "stopwatch.h"
 #include "mode.h"
+#ifdef PMAP
+#include "oligoindex_pmap.h"
+#else
+#include "oligoindex_hr.h"
+#endif
 
 #define T Stage2_T
-typedef struct T *T;
+
+extern List_T
+Stage2_middle (T this);
+extern List_T
+Stage2_all_starts (T this);
+extern List_T
+Stage2_all_ends (T this);
+extern void
+Stage2_free (T *old);
 
 extern void
-Stage2_setup (bool splicingp_in, int suboptimal_score_start_in, int suboptimal_score_end_in,
+Stage2_setup (bool splicingp_in, bool cross_species_p,
+	      int suboptimal_score_start_in, int suboptimal_score_end_in,
 	      Mode_T mode_in, bool snps_p_in);
-extern List_T
-Stage2_path (T this);
-extern int
-Stage2_ncanonical (T this);
-extern int
-Stage2_nnoncanonical (T this);
-extern int
-Stage2_cdna_direction (T this);
-extern double
-Stage2_diag_runtime (T this);
-extern double
-Stage2_align_runtime (T this);
-extern int
-Stage2_indexsize (T this);
-extern int
-Stage2_pathlength (T this);
 	    
 extern void
 Stage2_free (T *old);
 
 extern int
 Stage2_scan (int *stage2_source, char *queryuc_ptr, int querylength,
-#ifdef PMAP
-	     char *genomicuc_ptr,
-#endif
 	     Chrpos_T chrstart, Chrpos_T chrend,
 	     Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp,
-	     int genestrand, Oligoindex_T *oligoindices, int noligoindices,
+	     int genestrand, Oligoindex_array_T oligoindices,
 	     Diagpool_T diagpool, bool debug_graphic_p, bool diagnosticp);
 
 extern List_T
 Stage2_compute (int *stage2_source, int *stage2_indexsize,
 		char *queryseq_ptr, char *queryuc_ptr, int querylength, int query_offset,
-
-#ifdef PMAP
-		char *genomicuc_ptr,
-#endif
 		Chrpos_T chrstart, Chrpos_T chrend,
 		Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp, int genestrand,
-		Oligoindex_T *oligoindices, int noligoindices, double proceed_pctcoverage,
-		Pairpool_T pairpool, Diagpool_T diagpool, int sufflookback, int nsufflookback,
-		int maxintronlen, bool localp, bool skip_repetitive_p, bool use_shifted_canonical_p,
+		Oligoindex_array_T oligoindices, double proceed_pctcoverage,
+		Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		int sufflookback, int nsufflookback, int maxintronlen, bool localp, bool skip_repetitive_p,
 		bool favor_right_p, int max_nalignments, bool debug_graphic_p, bool diagnosticp,
 		Stopwatch_T stopwatch, bool diag_debug);
 
 extern List_T
 Stage2_compute_one (int *stage2_source, int *stage2_indexsize,
 		    char *queryseq_ptr, char *queryuc_ptr, int querylength, int query_offset,	
-#ifdef PMAP
-		    char *genomicuc_ptr,
-#endif
 		    Chrpos_T chrstart, Chrpos_T chrend,
 		    Univcoord_T chroffset, Univcoord_T chrhigh, bool plusp, int genestrand,
 
-		    Oligoindex_T *oligoindices, int noligoindices, double proceed_pctcoverage,
-		    Pairpool_T pairpool, Diagpool_T diagpool, int sufflookback, int nsufflookback,
-		    int maxintronlen, bool localp, bool skip_repetitive_p, bool use_shifted_canonical_p,
-		    bool favor_right_p, bool debug_graphic_p, bool diagnosticp,
-		    Stopwatch_T stopwatch, bool diag_debug);
+		    Oligoindex_array_T oligoindices, double proceed_pctcoverage,
+		    Pairpool_T pairpool, Diagpool_T diagpool, Cellpool_T cellpool,
+		    int sufflookback, int nsufflookback, int maxintronlen, bool localp, bool skip_repetitive_p,
+		    bool use_shifted_canonical_p, bool favor_right_p, bool debug_graphic_p, bool diagnosticp);
 #undef T
 #endif
 
diff --git a/src/stage3.c b/src/stage3.c
index cd3fd39..a578c6d 100644
--- a/src/stage3.c
+++ b/src/stage3.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stage3.c 101727 2013-07-16 23:42:52Z twu $";
+static char rcsid[] = "$Id: stage3.c 138109 2014-06-04 19:33:33Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -30,8 +30,13 @@ static char rcsid[] = "$Id: stage3.c 101727 2013-07-16 23:42:52Z twu $";
 #include "complement.h"
 #include "iit-read.h"
 #include "stage2.h"
+#include "dynprog_single.h"
+#include "dynprog_genome.h"
+#include "dynprog_cdna.h"
+#include "dynprog_end.h"
 #include "maxent.h"
 #include "maxent_hr.h"
+#include "fastlog.h"
 
 
 /* The following are the same as dividing by 2048 and 1024 */
@@ -59,11 +64,6 @@ static char rcsid[] = "$Id: stage3.c 101727 2013-07-16 23:42:52Z twu $";
 /* #define SUFFCONSECUTIVE 5 */
 /* #define MAXINCURSION 5 */
 
-/* For Stage3_append */
-#define MERGELENGTH 500000
-#define LONG_MERGELENGTH 1000000 /* For strong donor and acceptor splice sites */
-#define DONOR_THRESHOLD 0.90
-#define ACCEPTOR_THRESHOLD 0.90
 
 #define MINCOVERAGE 0.10  /* Not used anymore */
 
@@ -98,6 +98,13 @@ static char rcsid[] = "$Id: stage3.c 101727 2013-07-16 23:42:52Z twu $";
 #define LOG_99 -0.01005033585
 #define LOG_01 -4.605170186
 
+#define LOG_9999 -0.000100005
+#define LOG_90 -0.1053605
+#define LOG_75 -0.2876821
+#define LOG_25 -1.386294
+#define LOG_10 -2.302585
+#define LOG_0001 -9.21034
+
 #if 0
 /* Switches on 5 consecutive mismatches */
 #define LOG_99_9999 -0.01015034085
@@ -140,7 +147,9 @@ static char rcsid[] = "$Id: stage3.c 101727 2013-07-16 23:42:52Z twu $";
 static const Except_T gapcheck_error = {"Gap check failed"};
 static const Except_T coordinate_error = {"Coordinate error"};
 
-#define SHORTCUT 1		/* Skips re-solving introns if already canonical */
+/* #define SHORTCUT 1 */		/* Skips re-solving introns if already canonical */
+#define EXCESS_GAPHOLDERS 1
+#define MAXITER 100		/* For peelback */
 
 /* In debug mode, probably want to activate debug in pairpool.c and
    dynprog.c also */
@@ -150,6 +159,13 @@ static const Except_T coordinate_error = {"Coordinate error"};
 #define debug(x)
 #endif
 
+
+#ifdef DEBUG0
+#define debug0(x) x
+#else 
+#define debug0(x)
+#endif
+
 /* Pair dump */
 #ifdef DEBUG1
 #define debug1(x) x
@@ -192,7 +208,7 @@ static const Except_T coordinate_error = {"Coordinate error"};
 #define debug7(x)
 #endif
 
-/* changepoint */
+/* stage3debug */
 #ifdef DEBUG8
 #define debug8(x) x
 #else 
@@ -241,6 +257,26 @@ static const Except_T coordinate_error = {"Coordinate error"};
 #define debug14(x)
 #endif
 
+/* changepoint */
+#ifdef DEBUG18
+#define debug18(x) x
+#else 
+#define debug18(x)
+#endif
+
+/* mergeable */
+#ifdef DEBUG20
+#define debug20(x) x
+#else 
+#define debug20(x)
+#endif
+
+/* end_compare */
+#ifdef DEBUG21
+#define debug21(x) x
+#else 
+#define debug21(x)
+#endif
 
 
 static bool splicingp;
@@ -257,16 +293,21 @@ static Univcoord_T *splicesites;
 
 static int min_intronlength;
 static int max_deletionlength;
+static int min_indel_end_matches;
 
+static bool maximize_coverage_p = false;
 static bool output_sam_p;
+static Stage3debug_T stage3debug;
+
+static bool homopolymerp;
 
 void
 Stage3_setup (bool splicingp_in, bool novelsplicingp_in, bool require_splicedir_p_in,
 	      IIT_T splicesites_iit_in, int *splicesites_divint_crosstable_in,
 	      int donor_typeint_in, int acceptor_typeint_in,
 	      Univcoord_T *splicesites_in,
-	      int min_intronlength_in, int max_deletionlength_in,
-	      bool output_sam_p_in) {
+	      int min_intronlength_in, int max_deletionlength_in, int min_indel_end_matches_in,
+	      bool output_sam_p_in, bool homopolymerp_in, Stage3debug_T stage3debug_in) {
   splicingp = splicingp_in;
   novelsplicingp = novelsplicingp_in;
   require_splicedir_p = require_splicedir_p_in;
@@ -280,8 +321,11 @@ Stage3_setup (bool splicingp_in, bool novelsplicingp_in, bool require_splicedir_
 
   min_intronlength = min_intronlength_in;
   max_deletionlength = max_deletionlength_in;
+  min_indel_end_matches = min_indel_end_matches_in;
 
   output_sam_p = output_sam_p_in;
+  homopolymerp = homopolymerp_in;
+  stage3debug = stage3debug_in;
 
   return;
 }
@@ -339,7 +383,7 @@ struct T {
   int cdna_direction;
   int sensedir;
   bool watsonp;
-  double defect_rate;
+
   double trimmed_coverage;
   int matches;
   int unknowns;
@@ -426,6 +470,11 @@ Stage3_mapq_score (T this) {
   return this->mapq_score;
 }
 
+List_T
+Stage3_pairs (T this) {
+  return this->pairs;
+}
+
 struct Pair_T *
 Stage3_pairarray (T this) {
   return this->pairarray;
@@ -609,13 +658,6 @@ Stage3_genomicpos (T this, int querypos, bool headp) {
 }
 
 
-void
-Stage3_pathscores (bool *gapp, int *pathscores, T this, int querylength, cDNAEnd_T cdnaend) {
-  Pair_pathscores(gapp,pathscores,this->pairarray,this->npairs,this->cdna_direction,querylength,cdnaend);
-  return;
-}
-
-
 int
 Stage3_chimeric_goodness (int *matches1, int *matches2, T part1, T part2, int breakpoint) {
   int goodness1, goodness2, querystart, queryend;
@@ -662,11 +704,7 @@ bool
 Stage3_passes_filter (T this, double min_trimmed_coverage, double min_identity) {
   int den;
 
-  if (this->chimera_left_p == true) {
-    return true;
-  } else if (this->chimera_right_p == true) {
-    return true;
-  } else if (this->trimmed_coverage < min_trimmed_coverage) {
+  if (this->trimmed_coverage < min_trimmed_coverage) {
     return false;
   } else if ((den = this->matches + this->mismatches + this->qindels + this->tindels) == 0) {
     /* fracidentity is 1.0 */
@@ -678,6 +716,30 @@ Stage3_passes_filter (T this, double min_trimmed_coverage, double min_identity)
   }
 }
 
+bool
+Stage3_passes_filter_chimera (Chimera_T chimera, double min_trimmed_coverage, double min_identity) {
+  int den;
+  Stage3_T from, to;
+
+  from = Chimera_left_part(chimera);
+  to = Chimera_right_part(chimera);
+
+  if (from->trimmed_coverage + to->trimmed_coverage < min_trimmed_coverage) {
+    return false;
+  } else if ((den = from->matches + from->mismatches + from->qindels + from->tindels +
+	      to->matches + to->mismatches + to->qindels + to->tindels) == 0) {
+    /* fracidentity is 1.0 */
+    return true;
+  } else if ((double) (from->matches + to->matches)/(double) den < min_identity) {
+    return false;
+  } else {
+    return true;
+  }
+}
+
+
+
+
 
 int
 Stage3_cmp (const void *a, const void *b) {
@@ -840,6 +902,23 @@ Stage3_overlap (T x, T y) {
  *   Gaps
  ************************************************************************/
 
+/* Note: In going through pairs and path, we have two methods:
+
+   1.  pairptr = path; (to save the pointer)
+       path = Pairpool_pop(path,&pair);
+
+       pairs = List_push_existing(pairs,pairptr);
+
+   2.  pair = (Pair_T) path->first;
+
+       (refer to path->rest, since we haven't popped path yet)
+       pairs = List_transfer_one(pairs,&path);  (combines a push and pop)
+
+    In the code below, we sometimes mix these, using method 2 for speed,
+    and method 1 for clarity.
+*/
+
+
 static List_T
 check_gaps (List_T pairs, Pairpool_T pairpool) {
   List_T path = NULL, pairptr;
@@ -850,6 +929,10 @@ check_gaps (List_T pairs, Pairpool_T pairpool) {
   debug(printf("length = %d\n",List_length(pairs)));
   debug(Pair_dump_list(pairs,true));
 
+  if (pairs == NULL) {
+    return (List_T) NULL;
+  }
+
   pairptr = pairs;
   pairs = Pairpool_pop(pairs,&pair);
   if (pair->gapp == true) {
@@ -877,8 +960,8 @@ check_gaps (List_T pairs, Pairpool_T pairpool) {
 
       queryjump = rightpair->querypos - leftpair->querypos - 1;
       genomejump = rightpair->genomepos - leftpair->genomepos - 1;
-      if (leftpair->cdna == ' ') queryjump++;
-      if (leftpair->genome == ' ') genomejump++;
+      /* if (leftpair->cdna == ' ') queryjump++; -- For old dynamic programming */
+      /* if (leftpair->genome == ' ') genomejump++; -- For old dynamic programming */
 
       if (pair->queryjump != queryjump) {
 	if (rightpair->querypos >= HALFLEN && leftpair->querypos < HALFLEN) {
@@ -932,8 +1015,8 @@ check_gaps (List_T pairs, Pairpool_T pairpool) {
       leftpair = path->first;
       queryjump = pair->querypos - leftpair->querypos - 1;
       genomejump = pair->genomepos - leftpair->genomepos - 1;
-      if (leftpair->cdna == ' ') queryjump++;
-      if (leftpair->genome == ' ') genomejump++;
+      /* if (leftpair->cdna == ' ') queryjump++; -- For old dynamic programming */
+      /* if (leftpair->genome == ' ') genomejump++; -- For old dynamic programming */
 
       if (queryjump <= 0 && genomejump <= 0) {
 #ifdef WASTE
@@ -953,7 +1036,8 @@ check_gaps (List_T pairs, Pairpool_T pairpool) {
 	debug(printf("Gap check error: Pushing a gap at %d..%d because of queryjump = %d, genomejump = %d\n",
 		     leftpair->querypos,pair->querypos,queryjump,genomejump));
 	/* One place we need accurate queryjump and genomejump */
-	path = Pairpool_push_gapholder(path,pairpool,queryjump,genomejump,/*knownp*/false);
+	path = Pairpool_push_gapholder(path,pairpool,queryjump,genomejump,
+				       /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
 #ifdef WASTE
 	path = Pairpool_push_existing(path,pairpool,pair);
 #else
@@ -1124,7 +1208,7 @@ static List_T
 insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
 		   Univcoord_T chroffset, Univcoord_T chrhigh, bool watsonp,
 		   Pairpool_T pairpool) {
-  List_T path = NULL, pairptr;
+  List_T path = NULL;
   Pair_T pair, leftpair, gappair = NULL;
   int queryjump, genomejump;
   bool firstp = true;
@@ -1135,8 +1219,9 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
 
   /* Discard old gap(s) */
   while (pairs != NULL) {
-    pairptr = pairs;
-    pairs = Pairpool_pop(pairs,&pair);
+    /* pairptr = pairs; */
+    /* pairs = Pairpool_pop(pairs,&pair); */
+    pair = (Pair_T) pairs->first;
     if (pair->knowngapp == true) {
       /* Keep known introns */
       debug(printf("Keeping a known intron gap with queryjump = %d, genomejump = %d\n",
@@ -1144,16 +1229,17 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
     } else if (pair->gapp == true) {
       debug(printf("Removing a gap with queryjump = %d, genomejump = %d\n",
 		   pair->queryjump,pair->genomejump));
+      pairs = Pairpool_pop(pairs,&pair);
     } else {
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
     }
   }
@@ -1162,29 +1248,31 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
   path = (List_T) NULL;
 
   if (pairs != NULL) {
-    pairptr = pairs;
-    pairs = Pairpool_pop(pairs,&pair);
+    /* pairptr = pairs; */
+    /* pairs = Pairpool_pop(pairs,&pair); */
+    pair = (Pair_T) pairs->first;
 #ifdef WASTE
     path = Pairpool_push_existing(path,pairpool,pair);
 #else
-    path = List_push_existing(path,pairptr);
+    path = List_transfer_one(path,&pairs);
 #endif
     leftpair = pair;
   }
 
   while (pairs != NULL) {
-    pairptr = pairs;
-    pairs = Pairpool_pop(pairs,&pair);
+    /* pairptr = pairs; */
+    /* pairs = Pairpool_pop(pairs,&pair); */
+    pair = (Pair_T) pairs->first;
     queryjump = pair->querypos - leftpair->querypos - 1;
     genomejump = pair->genomepos - leftpair->genomepos - 1;
-    if (leftpair->cdna == ' ') queryjump++;
-    if (leftpair->genome == ' ') genomejump++;
+    /* if (leftpair->cdna == ' ') queryjump++; -- For old dynamic programming */
+    /* if (leftpair->genome == ' ') genomejump++; -- For old dynamic programming */
 
     if (pair->knowngapp == true) {
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
 
     } else if (leftpair->knowngapp == true) {
@@ -1192,14 +1280,14 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
     
     } else if (queryjump <= 0 && genomejump <= 0) {
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
 
     } else if (queryjump == 1 && genomejump == 1) {
@@ -1208,6 +1296,10 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
       /* It is possible for a gap with c == g to occur in the middle of a repetitive oligo, such as poly-A */
       if ((c = queryuc_ptr[leftpair->querypos+1]) == g || c == g_alt) {
 	comp = MATCH_COMP;
+#ifdef PMAP
+      } else if (Dynprog_consistent_p(c,g,g_alt) == true) {
+	comp = AMBIGUOUS_COMP;
+#endif
       } else {
 	comp = MISMATCH_COMP;
       }
@@ -1218,14 +1310,18 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
 
     } else {
       /* Insert new gap.  Need accurate queryjump and genomejump */
       debug(printf("Inserting a gap at %d..%d because of queryjump = %d, genomejump = %d\n",
 		   leftpair->querypos,pair->querypos,queryjump,genomejump));
-      path = Pairpool_push_gapholder(path,pairpool,queryjump,genomejump,/*knownp*/false);
+      debug(printf("queryjump %d = pair->querypos %d - leftpair->querypos %d - 1\n",queryjump,pair->querypos,leftpair->querypos));
+      debug(printf("genomejump %d = pair->genomepos %u - leftpair->genomepos %u - 1\n",genomejump,pair->genomepos,leftpair->genomepos));
+
+      path = Pairpool_push_gapholder(path,pairpool,queryjump,genomejump,
+				     /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
       gappair = (Pair_T) path->first;
       if (firstp == true) {
 	gappair->end_intron_p = true;
@@ -1234,7 +1330,7 @@ insert_gapholders (List_T pairs, char *queryseq_ptr, char *queryuc_ptr,
 #ifdef WASTE
       path = Pairpool_push_existing(path,pairpool,pair);
 #else
-      path = List_push_existing(path,pairptr);
+      path = List_transfer_one(path,&pairs);
 #endif
     }
 
@@ -1267,69 +1363,86 @@ assign_gap_types (List_T path, int cdna_direction, bool watsonp, char *queryseq_
 
   debug(printf("\n** Starting assign_gap_types\n"));
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pairs == NULL) {
       /* Discard initial gap */
+      debug7(printf("Discard initial gap\n"));
+      path = Pairpool_pop(path,&pair);
 
-    } else if (path == NULL) {
+    } else if (path->rest == NULL) {
       /* Discard terminal gap */
+      debug7(printf("Discard terminal gap\n"));
+      path = Pairpool_pop(path,&pair);
 
     } else {
       queryjump = pair->queryjump;
       genomejump = pair->genomejump;
+      debug7(printf("  Gap has queryjump %d, genomejump %d\n",queryjump,genomejump));
 
       if (queryjump == 0 && genomejump == 0) {
 	debug7(printf("  Gap is a non-gap\n"));
 	/* Discard the gap pair */
+	path = Pairpool_pop(path,&pair);
 
       } else if (genomejump == 0) {
-	debug7(printf("  Gap is a cDNA insertion\n"));
+	debug7(printf("  Gap is a cDNA insertion, so replacing it with indels\n"));
 	/* pair->comp = INDEL_COMP; */
 
+	/* Discard the gap pair */
+	path = Pairpool_pop(path,&pair);
+
 	leftpair = path->first;
 	rightpair = pairs->first;
 	leftquerypos = leftpair->querypos;
-	if (leftpair->cdna == ' ') leftquerypos--;
+	/* if (leftpair->cdna == ' ') leftquerypos--; -- For old dynamic programming */
 	rightquerypos = rightpair->querypos;
 	rightgenomepos = rightpair->genomepos;
 
+	debug7(printf("leftquerypos = %d, rightquerypos = %d\n",leftquerypos,rightquerypos));
 	for (curquerypos = rightquerypos - 1; curquerypos > leftquerypos; --curquerypos) {
+	  debug7(printf("  pushing indel at %d\n",curquerypos));
 	  pairs = Pairpool_push(pairs,pairpool,curquerypos,rightgenomepos,
 				queryseq_ptr[curquerypos],INDEL_COMP,/*genome*/' ',/*genomealt*/' ',
 				/*dynprogindex*/0);
 	}
-	/* Discard the gap pair */
 
-      } else if (queryjump > 0) {
+      } else if (queryjump > 0 /* || stage3debug > NO_STAGE3DEBUG */) {
 	debug7(printf("  Gap is a dual break\n"));
 	pair->comp = DUALBREAK_COMP;
 #ifdef WASTE
 	pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-	pairs = List_push_existing(pairs,pairptr);
+	pairs = List_transfer_one(pairs,&path);
 #endif
 
       } else {
 	debug7(printf("Gap is an intron\n"));
 
+	pairptr = path;		/* save */
+	path = Pairpool_pop(path,&pair);
+
 	leftpair = path->first;
 	rightpair = pairs->first;
 
 	leftquerypos = leftpair->querypos;
 	leftgenomepos = leftpair->genomepos;
-	if (leftpair->cdna == ' ') leftquerypos--;
-	if (leftpair->genome == ' ') leftgenomepos--;
+	/* if (leftpair->cdna == ' ') leftquerypos--; -- For old dynamic programming */
+	/* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
 	rightquerypos = rightpair->querypos;
 	rightgenomepos = rightpair->genomepos;
 
+	pair->queryjump = rightquerypos - leftquerypos - 1;
+	pair->genomejump = rightgenomepos - leftgenomepos - 1;
+
 	left1 = get_genomic_nt(&left1_alt,leftgenomepos+1,chroffset,chrhigh,watsonp);
 	left2 = get_genomic_nt(&left2_alt,leftgenomepos+2,chroffset,chrhigh,watsonp);
 	right2 = get_genomic_nt(&right2_alt,rightgenomepos-2,chroffset,chrhigh,watsonp);
@@ -1343,15 +1456,15 @@ assign_gap_types (List_T path, int cdna_direction, bool watsonp, char *queryseq_
 
 	intronlength = rightgenomepos - leftgenomepos - 1;
 	if (intronlength < min_intronlength) {
-	  debug7(printf("  Gap is too short to be an intron (intronlength %d).  Adding pairs from %d downto %d\n",
+	  debug7(printf("  Gap is too short to be an intron (intronlength %d).  Replacing with pairs from %d downto %d\n",
 			intronlength,rightgenomepos-1,leftgenomepos+1));
 	  for (genomicpos = rightgenomepos - 1; genomicpos > leftgenomepos; --genomicpos) {
 	    c2 = get_genomic_nt(&c2_alt,genomicpos,chroffset,chrhigh,watsonp);
 	    pairs = Pairpool_push(pairs,pairpool,rightquerypos,genomicpos,' ',/*comp*/SHORTGAP_COMP,c2,c2_alt,
 				  /*dynprogindex*/0);
 	  }
-	  debug7(printf("  Gap is a short gap, so discarding the gap pair\n"));
-	  /* Discard the gap pair */
+	  debug7(printf("  Gap is a short gap with queryjump %d, genomejump %d, so discarding the gap pair\n",queryjump,genomejump));
+	  /* Discard the gap */
 
 	} else if (cdna_direction > 0) {
 	  pair->introntype = introntype;
@@ -1487,7 +1600,19 @@ assign_gap_types (List_T path, int cdna_direction, bool watsonp, char *queryseq_
 	} else {
 	  /* cdna_direction == 0 */
 	  pair->introntype = introntype;
-	  pair->comp = NONINTRON_COMP;
+	  switch (introntype) {
+	  case GTAG_FWD: pair->comp = FWD_CANONICAL_INTRON_COMP; break;
+	  case GCAG_FWD: pair->comp = FWD_GCAG_INTRON_COMP; break;
+	  case ATAC_FWD: pair->comp = FWD_ATAC_INTRON_COMP; break;
+	  case ATAC_REV: pair->comp = REV_ATAC_INTRON_COMP; break;
+	  case GCAG_REV: pair->comp = REV_GCAG_INTRON_COMP; break;
+	  case GTAG_REV: pair->comp = REV_CANONICAL_INTRON_COMP; break;
+	  case NONINTRON: pair->comp = NONINTRON_COMP; break;
+	  default: 
+	    printf("Unexpected intron type %d\n",introntype);
+	    fprintf(stderr,"Unexpected intron type %d\n",introntype);
+	    abort();
+	  }
 	  pair->donor_prob = 0.0;
 	  pair->acceptor_prob = 0.0;
 
@@ -1507,33 +1632,36 @@ assign_gap_types (List_T path, int cdna_direction, bool watsonp, char *queryseq_
 
 
 
-/* Modeled after assign_gap_types */
 static List_T
-remove_indel_gaps (List_T path
-#ifdef WASTE
-		   , Pairpool_T pairpool
-#endif
-		   ) {
+assign_intron_probs (List_T path, int cdna_direction, bool watsonp, char *queryseq_ptr,
+		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		     Pairpool_T pairpool) {
   List_T pairs = NULL, pairptr;
   Pair_T pair, leftpair, rightpair;
-  int queryjump, genomejump, leftgenomepos, rightgenomepos, intronlength;
+  Univcoord_T splicesitepos;
+  int queryjump, genomejump, leftquerypos, leftgenomepos, rightquerypos, rightgenomepos,
+    introntype, intronlength, genomicpos;
+  char left1, left2, right2, right1, left1_alt, left2_alt, right2_alt, right1_alt, c2, c2_alt;
 
-  debug(printf("\n** Starting assign_gap_types\n"));
+  debug(printf("\n** Starting assign_intron_probs\n"));
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pairs == NULL) {
       /* Discard initial gap */
+      path = Pairpool_pop(path,&pair);
 
-    } else if (path == NULL) {
+    } else if (path->rest == NULL) {
       /* Discard terminal gap */
+      path = Pairpool_pop(path,&pair);
 
     } else {
       queryjump = pair->queryjump;
@@ -1542,11 +1670,14 @@ remove_indel_gaps (List_T path
       if (queryjump == 0 && genomejump == 0) {
 	debug7(printf("  Gap is a non-gap\n"));
 	/* Discard the gap pair */
+	path = Pairpool_pop(path,&pair);
 
       } else if (genomejump == 0) {
-	debug7(printf("  Gap is a cDNA insertion\n"));
-	/* pair->comp = INDEL_COMP; */
-	/* Discard the gap pair */
+#ifdef WASTE
+	pairs = Pairpool_push_existing(pairs,pairpool,pair);
+#else
+	pairs = List_transfer_one(pairs,&path);
+#endif
 
       } else if (queryjump > 0) {
 	debug7(printf("  Gap is a dual break\n"));
@@ -1554,76 +1685,342 @@ remove_indel_gaps (List_T path
 #ifdef WASTE
 	pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-	pairs = List_push_existing(pairs,pairptr);
+	pairs = List_transfer_one(pairs,&path);
 #endif
 
       } else {
-	debug7(printf("  Gap is an intron of type %c\n",pair->comp));
+	debug7(printf("Gap is an intron\n"));
+
+	pairptr = path;		/* save */
+	path = Pairpool_pop(path,&pair);
 
 	leftpair = path->first;
 	rightpair = pairs->first;
 
+	leftquerypos = leftpair->querypos;
 	leftgenomepos = leftpair->genomepos;
-	if (leftpair->genome == ' ') leftgenomepos--;
+	/* if (leftpair->cdna == ' ') leftquerypos--; -- For old dynamic programming */
+	/* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
+	rightquerypos = rightpair->querypos;
 	rightgenomepos = rightpair->genomepos;
 
+	pair->queryjump = rightquerypos - leftquerypos - 1;
+	pair->genomejump = rightgenomepos - leftgenomepos - 1;
+
+	left1 = get_genomic_nt(&left1_alt,leftgenomepos+1,chroffset,chrhigh,watsonp);
+	left2 = get_genomic_nt(&left2_alt,leftgenomepos+2,chroffset,chrhigh,watsonp);
+	right2 = get_genomic_nt(&right2_alt,rightgenomepos-2,chroffset,chrhigh,watsonp);
+	right1 = get_genomic_nt(&right1_alt,rightgenomepos-1,chroffset,chrhigh,watsonp);
+	debug7(printf("  Dinucleotides are %c%c..%c%c\n",left1,left2,right2,right1));
+	introntype = Intron_type(left1,left2,right2,right1,
+				 left1_alt,left2_alt,right2_alt,right1_alt,
+				 cdna_direction);
+	debug7(printf("  Introntype at %u..%u is %s (cdna_direction %d)\n",
+		      leftgenomepos,rightgenomepos,Intron_type_string(introntype),cdna_direction));
+
 	intronlength = rightgenomepos - leftgenomepos - 1;
 	if (intronlength < min_intronlength) {
-	  debug7(printf("  Gap is short (intronlength %d).  Adding pairs from %d downto %d\n",
+	  debug7(printf("  Gap is too short to be an intron (intronlength %d).  Replacing with pairs from %d downto %d\n",
 			intronlength,rightgenomepos-1,leftgenomepos+1));
-	  debug7(printf("  Gap is a short gap, so discarding the gap pair\n"));
-	  /* Discard the gap pair */
-
-	} else {
-	  debug7(printf("  Gap is not short (intronlength %d)\n",intronlength));
-	  /* Push the gap back on */
-#ifdef WASTE
-	  pairs = Pairpool_push_existing(pairs,pairpool,pair);
-#else
-	  pairs = List_push_existing(pairs,pairptr);
-#endif
-	}
-      }
-    }
-  }
+	  for (genomicpos = rightgenomepos - 1; genomicpos > leftgenomepos; --genomicpos) {
+	    c2 = get_genomic_nt(&c2_alt,genomicpos,chroffset,chrhigh,watsonp);
+	    pairs = Pairpool_push(pairs,pairpool,rightquerypos,genomicpos,' ',/*comp*/SHORTGAP_COMP,c2,c2_alt,
+				  /*dynprogindex*/0);
+	  }
+	  debug7(printf("  Gap is a short gap with queryjump %d, genomejump %d, so discarding the gap pair\n",queryjump,genomejump));
+	  /* Discard the gap */
 
-  return pairs;
-}
+	} else if (cdna_direction > 0) {
+	  pair->introntype = introntype;
+	  switch (introntype) {
+	  case GTAG_FWD: pair->comp = FWD_CANONICAL_INTRON_COMP; break;
+	  case GCAG_FWD: pair->comp = FWD_GCAG_INTRON_COMP; break;
+	  case ATAC_FWD: pair->comp = FWD_ATAC_INTRON_COMP; break;
+	  case NONINTRON: pair->comp = NONINTRON_COMP; break;
+	  default: 
+	    printf("Unexpected intron type %d\n",introntype);
+	    fprintf(stderr,"Unexpected intron type %d\n",introntype);
+	    abort();
+	  }
+	  debug7(printf("  Gap is a fwd intron (intronlength %d), now of type %c\n",intronlength,pair->comp));
 
+	  if (watsonp == true) {
+	    splicesitepos = leftgenomepos + 1;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1)) {
+	      debug12(printf("1. donor at splicesitepos %u is known\n",splicesitepos));
+	      pair->donor_prob = 1.0;
+	    } else {
+	      pair->donor_prob = Maxent_hr_donor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("1. donor at splicesitepos %u has prob %f\n",splicesitepos,pair->donor_prob));
+	    }
 
+	    splicesitepos = rightgenomepos;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1)) {
+	      debug12(printf("2. acceptor at splicesitepos %u is known\n",splicesitepos));
+	      pair->acceptor_prob = 1.0;
+	    } else {
+	      pair->acceptor_prob = Maxent_hr_acceptor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("2. acceptor at splicesitepos %u has prob %f\n",splicesitepos,pair->acceptor_prob));
+	    }
 
-#ifdef PMAP
-static List_T
-undefine_nucleotides (char *queryseq_ptr, int querylength, List_T path, Pairpool_T pairpool, int width) {
-  List_T pairs = NULL, pairptr;
-  Pair_T pair, leftpair, rightpair;
-  int leftquerypos, leftgenomepos, rightquerypos, rightgenomepos, pos;
+	  } else {
+	    splicesitepos = (chrhigh - chroffset) - leftgenomepos;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1)) {
+	      debug12(printf("3. antidonor at splicesitepos %u is known\n",splicesitepos));
+	      pair->donor_prob = 1.0;
+	    } else {
+	      pair->donor_prob = Maxent_hr_antidonor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("3. antidonor at splicesitepos %u has prob %f\n",splicesitepos,pair->donor_prob));
+	    }
 
-  debug(printf("\n** Starting undefine_nucleotides\n"));
+	    splicesitepos = (chrhigh - chroffset) - rightgenomepos + 1;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1)) {
+	      debug12(printf("4. antiacceptor at splicesitepos %u is known\n",splicesitepos));
+	      pair->acceptor_prob = 1.0;
+	    } else {
+	      pair->acceptor_prob = Maxent_hr_antiacceptor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("4. antiacceptor at splicesitepos %u has prob %f\n",splicesitepos,pair->acceptor_prob));
+	    }
+	  }
 
-  if (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+	  /* Push the gap back on */
 #ifdef WASTE
-    pairs = Pairpool_push_existing(NULL,pairpool,pair);
+	  pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-    pairs = List_push_existing(NULL,pairptr);
+	  pairs = List_push_existing(pairs,pairptr);
 #endif
-    rightquerypos = pair->querypos;
-    rightgenomepos = pair->genomepos;
-  }
-
-  while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
-    if (pair->gapp == true) {
-      leftpair = path->first;
-      rightpair = pairs->first;
-
+	  
+#ifndef PMAP
+	} else if (cdna_direction < 0) {
+	  pair->introntype = introntype;
+	  switch (introntype) {
+	  case ATAC_REV: pair->comp = REV_ATAC_INTRON_COMP; break;
+	  case GCAG_REV: pair->comp = REV_GCAG_INTRON_COMP; break;
+	  case GTAG_REV: pair->comp = REV_CANONICAL_INTRON_COMP; break;
+	  case NONINTRON: pair->comp = NONINTRON_COMP; break;
+	  default: 
+	    printf("Unexpected intron type %d\n",introntype);
+	    fprintf(stderr,"Unexpected intron type %d\n",introntype);
+	    abort();
+	  }
+	  debug7(printf("  Gap is a rev intron (intronlength %d), now of type %c\n",intronlength,pair->comp));
+
+	  if (watsonp == true) {
+	    splicesitepos = leftgenomepos + 1;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1)) {
+	      debug12(printf("5. antiacceptor at splicesitepos %u is known\n",splicesitepos));
+	      pair->acceptor_prob = 1.0;
+	    } else {
+	      pair->acceptor_prob = Maxent_hr_antiacceptor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("5. antiacceptor at splicesitepos %u has prob %f\n",splicesitepos,pair->acceptor_prob));
+	    }
+
+	    splicesitepos = rightgenomepos;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1)) {
+	      debug12(printf("6. antidonor at splicesitepos %u is known\n",splicesitepos));
+	      pair->donor_prob = 1.0;
+	    } else {
+	      pair->donor_prob = Maxent_hr_antidonor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("6. antidonor at splicesitepos %u has prob %f\n",splicesitepos,pair->donor_prob));
+	    }
+
+	  } else {
+	    splicesitepos = (chrhigh - chroffset) - leftgenomepos;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1)) {
+	      debug12(printf("7. acceptor at splicesitepos %u is known\n",splicesitepos));
+	      pair->acceptor_prob = 1.0;
+	    } else {
+	      pair->acceptor_prob = Maxent_hr_acceptor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("7. acceptor at splicesitepos %u has prob %f\n",splicesitepos,pair->acceptor_prob));
+	    }
+
+	    splicesitepos = (chrhigh - chroffset) - rightgenomepos + 1;
+	    if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+								      splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1)) {
+	      debug12(printf("8. donor at splicesitepos %u is known\n",splicesitepos));
+	      pair->donor_prob = 1.0;
+	    } else {
+	      pair->donor_prob = Maxent_hr_donor_prob(chroffset + splicesitepos,chroffset);
+	      debug12(printf("8. donor at splicesitepos %u has prob %f\n",splicesitepos,pair->donor_prob));
+	    }
+	  }
+
+	  /* Push the gap back on */
+#ifdef WASTE
+	  pairs = Pairpool_push_existing(pairs,pairpool,pair);
+#else
+	  pairs = List_push_existing(pairs,pairptr);
+#endif
+
+#endif	/* ifndef PMAP */
+
+	} else {
+	  /* cdna_direction == 0 */
+	  pair->introntype = introntype;
+	  switch (introntype) {
+	  case GTAG_FWD: pair->comp = FWD_CANONICAL_INTRON_COMP; break;
+	  case GCAG_FWD: pair->comp = FWD_GCAG_INTRON_COMP; break;
+	  case ATAC_FWD: pair->comp = FWD_ATAC_INTRON_COMP; break;
+	  case ATAC_REV: pair->comp = REV_ATAC_INTRON_COMP; break;
+	  case GCAG_REV: pair->comp = REV_GCAG_INTRON_COMP; break;
+	  case GTAG_REV: pair->comp = REV_CANONICAL_INTRON_COMP; break;
+	  case NONINTRON: pair->comp = NONINTRON_COMP; break;
+	  default: 
+	    printf("Unexpected intron type %d\n",introntype);
+	    fprintf(stderr,"Unexpected intron type %d\n",introntype);
+	    abort();
+	  }
+	  pair->donor_prob = 0.0;
+	  pair->acceptor_prob = 0.0;
+
+	  /* Push the gap back on */
+#ifdef WASTE
+	  pairs = Pairpool_push_existing(pairs,pairpool,pair);
+#else
+	  pairs = List_push_existing(pairs,pairptr);
+#endif
+	}
+      }
+    }
+  }
+
+  return pairs;
+}
+
+
+/* Modeled after assign_gap_types */
+static List_T
+remove_indel_gaps (List_T path
+#ifdef WASTE
+		   , Pairpool_T pairpool
+#endif
+		   ) {
+  List_T pairs = NULL, pairptr;
+  Pair_T pair, leftpair, rightpair;
+  int queryjump, genomejump, leftgenomepos, rightgenomepos, intronlength;
+
+  debug(printf("\n** Starting remove_indel_gaps\n"));
+  while (path != NULL) {
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
+
+    if (pair->gapp == false) {
+#ifdef WASTE
+      pairs = Pairpool_push_existing(pairs,pairpool,pair);
+#else
+      pairs = List_transfer_one(pairs,&path);
+#endif
+
+    } else if (pairs == NULL) {
+      /* Discard initial gap */
+      path = Pairpool_pop(path,&pair);
+
+    } else if (path->rest == NULL) {
+      /* Discard terminal gap */
+      path = Pairpool_pop(path,&pair);
+
+    } else {
+      queryjump = pair->queryjump;
+      genomejump = pair->genomejump;
+
+      if (queryjump == 0 && genomejump == 0) {
+	debug7(printf("  Gap is a non-gap\n"));
+	/* Discard the gap pair */
+	path = Pairpool_pop(path,&pair);
+
+      } else if (genomejump == 0) {
+	debug7(printf("  Gap is a cDNA insertion\n"));
+	/* pair->comp = INDEL_COMP; */
+	/* Discard the gap pair */
+	path = Pairpool_pop(path,&pair);
+
+      } else if (queryjump > 0) {
+	debug7(printf("  Gap is a dual break\n"));
+	pair->comp = DUALBREAK_COMP;
+#ifdef WASTE
+	pairs = Pairpool_push_existing(pairs,pairpool,pair);
+#else
+	pairs = List_transfer_one(pairs,&path);
+#endif
+
+      } else {
+	debug7(printf("  Gap is an intron of type %c\n",pair->comp));
+
+	pairptr = path;		/* save */
+	path = Pairpool_pop(path,&pair);
+
+	leftpair = path->first;
+	rightpair = pairs->first;
+
+	leftgenomepos = leftpair->genomepos;
+	/* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
+	rightgenomepos = rightpair->genomepos;
+
+	intronlength = rightgenomepos - leftgenomepos - 1;
+	if (intronlength < min_intronlength) {
+	  debug7(printf("  Gap is short (intronlength %d).  Adding pairs from %d downto %d\n",
+			intronlength,rightgenomepos-1,leftgenomepos+1));
+	  debug7(printf("  Gap is a short gap, so discarding the gap pair\n"));
+	  /* Discard the gap pair */
+
+	} else {
+	  debug7(printf("  Gap is not short (intronlength %d)\n",intronlength));
+	  /* Push the gap back on */
+#ifdef WASTE
+	  pairs = Pairpool_push_existing(pairs,pairpool,pair);
+#else
+	  pairs = List_push_existing(pairs,pairptr);
+#endif
+	}
+      }
+    }
+  }
+
+  return pairs;
+}
+
+
+
+#ifdef PMAP
+static List_T
+undefine_nucleotides (char *queryseq_ptr, int querylength, List_T path, Pairpool_T pairpool, int width) {
+  List_T pairs = NULL, pairptr;
+  Pair_T pair, leftpair, rightpair;
+  int leftquerypos, leftgenomepos, rightquerypos, rightgenomepos, pos;
+
+  debug(printf("\n** Starting undefine_nucleotides\n"));
+
+  if (path != NULL) {
+    pairptr = path;
+    path = Pairpool_pop(path,&pair);
+#ifdef WASTE
+    pairs = Pairpool_push_existing(NULL,pairpool,pair);
+#else
+    pairs = List_push_existing(NULL,pairptr);
+#endif
+    rightquerypos = pair->querypos;
+    rightgenomepos = pair->genomepos;
+  }
+
+  while (path != NULL) {
+    pairptr = path;
+    path = Pairpool_pop(path,&pair);
+    if (pair->gapp == true) {
+      leftpair = path->first;
+      rightpair = pairs->first;
+
       leftquerypos = leftpair->querypos;
       leftgenomepos = leftpair->genomepos;
-      if (leftpair->cdna == ' ') leftquerypos--;
-      if (leftpair->genome == ' ') leftgenomepos--;
+      /* if (leftpair->cdna == ' ') leftquerypos--; -- For old dynamic programming */
+      /* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
 
       rightquerypos = rightpair->querypos;
       rightgenomepos = rightpair->genomepos;
@@ -1650,9 +2047,6 @@ undefine_nucleotides (char *queryseq_ptr, int querylength, List_T path, Pairpool
 
 static List_T
 add_dualbreak (List_T pairs, char *queryseq_ptr, 
-#ifdef PMAP
-	       char *queryaaseq_ptr,
-#endif
 	       Univcoord_T chroffset, Univcoord_T chrhigh, int cdna_direction,
 	       bool watsonp, Pair_T leftpair, Pair_T rightpair, Pairpool_T pairpool, int ngap,
 	       int diagnosticp) {
@@ -1664,8 +2058,8 @@ add_dualbreak (List_T pairs, char *queryseq_ptr,
 
   leftquerypos = leftpair->querypos;
   leftgenomepos = leftpair->genomepos;
-  if (leftpair->cdna == ' ') leftquerypos--;
-  if (leftpair->genome == ' ') leftgenomepos--;
+  /* if (leftpair->cdna == ' ') leftquerypos--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
   rightquerypos = rightpair->querypos;
   rightgenomepos = rightpair->genomepos;
 
@@ -1703,7 +2097,11 @@ add_dualbreak (List_T pairs, char *queryseq_ptr,
   /* queryjump = rightquerypos - leftquerypos - 1; */
   /* genomejump = rightgenomepos - leftgenomepos - 1; */
 
-  if (diagnosticp == true) {
+  if (diagnosticp == true
+#ifdef DEBUG8
+      || (stage3debug > NO_STAGE3DEBUG /* && stage3debug < POST_INTRONS */)
+#endif
+      ) {
     for (k = 0; k < ngap; k++) {
       pairs = Pairpool_push_gapalign(pairs,pairpool,rightquerypos,rightgenomepos,
 				     /*cdna*/' ',DUALBREAK_COMP,introntype,/*genome*/' ',/*genomealt*/' ',
@@ -1733,8 +2131,8 @@ add_dualbreak (List_T pairs, char *queryseq_ptr,
     /* cDNA sequence */
     gapgenomepos = genomicpos + 1;
     for (k = rightquerypos - 1; k > leftquerypos; --k) {
-#ifdef PMAP
-      c1 = Dynprog_codon_char(queryaaseq_ptr[k/3],k%3);
+#if 0				/* PMAP */
+      c1 = Sequence_codon_char(queryaaseq_ptr[k/3],k%3);
 #else
       c1 = queryseq_ptr[k];
 #endif
@@ -1762,8 +2160,8 @@ add_dualbreak (List_T pairs, char *queryseq_ptr,
     /* cDNA sequence */
     gapgenomepos = genomicpos + 1;
     for (k = rightquerypos - 1; k > leftquerypos; --k) {
-#ifdef PMAP
-      c1 = Dynprog_codon_char(queryaaseq_ptr[k/3],k%3);
+#if 0				/* PMAP */
+      c1 = Sequence_codon_char(queryaaseq_ptr[k/3],k%3);
 #else
       c1 = queryseq_ptr[k];
 #endif
@@ -1795,7 +2193,7 @@ add_intron (List_T pairs, Univcoord_T chroffset, Univcoord_T chrhigh,
   int i;
 
   leftgenomepos = leftpair->genomepos;
-  if (leftpair->genome == ' ') leftgenomepos--;
+  /* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
   rightquerypos = rightpair->querypos;
   rightgenomepos = rightpair->genomepos;
 
@@ -2236,10 +2634,10 @@ clean_path_end3 (List_T path) {
   Pair_T lastpair;
 
   debug(printf("clean_path_end3\n"));
-  /* Remove any remaining nonmatches at 3' end, which can happen rarely */
+  /* Remove any remaining nonmatches, gaps, or indels at 3' end */
   if (path != NULL) {
     lastpair = path->first;
-    while (lastpair->comp != MATCH_COMP && lastpair->comp != DYNPROG_MATCH_COMP && lastpair->comp != AMBIGUOUS_COMP) {
+    while (lastpair->gapp || (lastpair->comp != MATCH_COMP && lastpair->comp != DYNPROG_MATCH_COMP && lastpair->comp != AMBIGUOUS_COMP)) {
       debug(printf("Removing nonmatch at 3' end: "));
       debug(Pair_dump_one(lastpair,/*zerobasedp*/true));
       debug(printf("\n"));
@@ -2273,10 +2671,10 @@ clean_pairs_end5 (List_T pairs) {
   Pair_T firstpair;
 
   debug(printf("clean_pairs_end5\n"));
-  /* Remove any remaining nonmatches at 5' end, which can happen rarely */
+  /* Remove any remaining nonmatches, gaps, or indels at 5' end */
   if (pairs != NULL) {
     firstpair = pairs->first;
-    while (firstpair->comp != MATCH_COMP && firstpair->comp != DYNPROG_MATCH_COMP && firstpair->comp != AMBIGUOUS_COMP) {
+    while (firstpair->gapp || (firstpair->comp != MATCH_COMP && firstpair->comp != DYNPROG_MATCH_COMP && firstpair->comp != AMBIGUOUS_COMP)) {
       debug(printf("Removing nonmatch at 5' end: "));
       debug(Pair_dump_one(firstpair,/*zerobasedp*/true));
       debug(printf("\n"));
@@ -2314,7 +2712,7 @@ clean_path_end3_gap_indels (List_T path) {
   /* Remove any remaining gap/indels at 3' end, which can happen rarely */
   if (path != NULL) {
     lastpair = path->first;
-    while (lastpair->gapp == true || lastpair->comp == INDEL_COMP) {
+    while (lastpair->gapp == true || lastpair->comp == INDEL_COMP || lastpair->comp == SHORTGAP_COMP) {
       debug(printf("Removing gap/indel at 3' end: "));
       debug(Pair_dump_one(lastpair,/*zerobasedp*/true));
       debug(printf("\n"));
@@ -2351,7 +2749,7 @@ clean_pairs_end5_gap_indels (List_T pairs) {
   /* Remove any remaining gap/indels at 5' end, which can happen rarely */
   if (pairs != NULL) {
     firstpair = pairs->first;
-    while (firstpair->gapp == true || firstpair->comp == INDEL_COMP) {
+    while (firstpair->gapp == true || firstpair->comp == INDEL_COMP || firstpair->comp == SHORTGAP_COMP) {
       debug(printf("Removing gap/indel at 5' end: "));
       debug(Pair_dump_one(firstpair,/*zerobasedp*/true));
       debug(printf("\n"));
@@ -2380,6 +2778,37 @@ clean_pairs_end5_gap_indels (List_T pairs) {
 }
 
 
+/* Cleans to any gapp found within 20 bp of the breakpoint */
+static List_T
+clean_end_chimera (List_T end) {
+  Pair_T lastpair;
+  List_T peeled = NULL;
+  int n = 0;
+
+  debug10(printf("clean_path_end_chimera\n"));
+  while (end != NULL && n < 20) {
+    lastpair = end->first;
+    peeled = List_transfer_one(peeled,&end);
+    if (lastpair->gapp == true) {
+      debug10(printf("Cleaning end at a gapp\n"));
+      peeled = (List_T) NULL;
+    } else if (lastpair->comp == INDEL_COMP) {
+      debug10(printf("Cleaning end at an indel\n"));
+      peeled = (List_T) NULL;
+    } else if (lastpair->comp == SHORTGAP_COMP) {
+      debug10(printf("Cleaning end at an indel\n"));
+      peeled = (List_T) NULL;
+    } else {
+      n++;
+    }
+  }
+
+  end = Pairpool_transfer(end,peeled);
+  return end;
+}
+
+
+#if 0
 static List_T
 chop_ends_by_changepoint (List_T pairs
 #ifdef WASTE
@@ -2399,17 +2828,17 @@ chop_ends_by_changepoint (List_T pairs
     return (List_T) NULL;
   } else {
     matchscores = Pair_matchscores_list(&nmatches,&ntotal,&length,pairs);
-    debug8(printf("Overall, %d matches/%d total\n",nmatches,ntotal));
+    debug18(printf("Overall, %d matches/%d total\n",nmatches,ntotal));
   }
 
   left_edge = Changepoint_left(&nmatches_left,&ntotal_left,matchscores,length);
   right_edge = Changepoint_right(&nmatches_right,&ntotal_right,matchscores,length);
 
-  debug8(printf("At left edge %d (in 0..%d), %d matches/%d total\n",left_edge,List_length(pairs),nmatches_left,ntotal_left));
-  debug8(printf("At right edge %d (in 0..%d), %d matches/%d total\n",right_edge,List_length(pairs),nmatches_right,ntotal_right));
+  debug18(printf("At left edge %d (in 0..%d), %d matches/%d total\n",left_edge,List_length(pairs),nmatches_left,ntotal_left));
+  debug18(printf("At right edge %d (in 0..%d), %d matches/%d total\n",right_edge,List_length(pairs),nmatches_right,ntotal_right));
 
   if (right_edge <= left_edge) {
-    debug8(printf("Edges cross.  Need to select one.\n"));
+    debug18(printf("Edges cross.  Need to select one.\n"));
     /* Need to select one side to chop. */
     if (ntotal_left == 0 || ntotal - ntotal_left <= 0) {
       side = +1;		/* chop right side */
@@ -2425,7 +2854,7 @@ chop_ends_by_changepoint (List_T pairs
 	/* Protect against negative values */
 	theta = 0.10;
       }
-      debug8(printf("Testing on left: Pbinom(%d,%d,%f) = %g\n",
+      debug18(printf("Testing on left: Pbinom(%d,%d,%f) = %g\n",
 		    nmatches_left,ntotal_left,theta,Pbinom(nmatches_left,ntotal_left,theta)));
       pbinom_left = Pbinom(nmatches_left,ntotal_left,theta);
 
@@ -2437,7 +2866,7 @@ chop_ends_by_changepoint (List_T pairs
 	theta = 0.10;
       }
       
-      debug8(printf("Testing on right: Pbinom(%d,%d,%f) = %g\n",
+      debug18(printf("Testing on right: Pbinom(%d,%d,%f) = %g\n",
 		    nmatches_right,ntotal_right,theta,Pbinom(nmatches_right,ntotal_right,theta)));
       pbinom_right = Pbinom(nmatches_right,ntotal_right,theta);
       
@@ -2459,10 +2888,10 @@ chop_ends_by_changepoint (List_T pairs
 #else
       /* Pick shortest side */
       if (ntotal_left < ntotal_right) {
-	debug8(printf("left side is shorter\n"));
+	debug18(printf("left side is shorter\n"));
 	side = -1;		/* chop left side */
       } else {
-	debug8(printf("right side is shorter\n"));
+	debug18(printf("right side is shorter\n"));
 	side = +1;		/* chop right side */
       }
 #endif
@@ -2470,13 +2899,13 @@ chop_ends_by_changepoint (List_T pairs
     }
 
     if (side == -1) {
-      debug8(printf("Chopping %d on left.\n",left_edge));
+      debug18(printf("Chopping %d on left.\n",left_edge));
       for (i = 0; i < left_edge; i++) {
 	pairs = Pairpool_pop(pairs,&pair);
       }
       chop_left_p = true;
     } else if (side == +1) {
-      debug8(printf("Chopping %d - %d on right.\n",length,right_edge));
+      debug18(printf("Chopping %d - %d on right.\n",length,right_edge));
       path = List_reverse(pairs);
       for (i = 0; i < length - right_edge; i++) {
 	path = Pairpool_pop(path,&pair);
@@ -2508,12 +2937,12 @@ chop_ends_by_changepoint (List_T pairs
 	theta = 0.10;
       }
 
-      debug8(printf("Testing on left: Pbinom(%d,%d,%f) = %g\n",
+      debug18(printf("Testing on left: Pbinom(%d,%d,%f) = %g\n",
 		    nmatches_left,ntotal_left,theta,Pbinom(nmatches_left,ntotal_left,theta)));
       if (Pbinom(nmatches_left,ntotal_left,theta) > TRIM_END_PVALUE) {
 	path = List_reverse(pairs);
       } else {
-	debug8(printf("Chopping %d on left.\n",left_edge));
+	debug18(printf("Chopping %d on left.\n",left_edge));
 	for (i = 0; i < left_edge; i++) {
 	  pairs = Pairpool_pop(pairs,&pair);
 	}
@@ -2526,7 +2955,7 @@ chop_ends_by_changepoint (List_T pairs
 #else
 	path = Pairpool_transfer(path,pairs);
 #endif
-	debug8(printf("path is now length %d\n",List_length(path)));
+	debug18(printf("path is now length %d\n",List_length(path)));
 	chop_left_p = true;
       }
     }
@@ -2544,12 +2973,12 @@ chop_ends_by_changepoint (List_T pairs
 	theta = 0.10;
       }
 
-      debug8(printf("Testing on right: Pbinom(%d,%d,%f) = %g\n",
+      debug18(printf("Testing on right: Pbinom(%d,%d,%f) = %g\n",
 		    nmatches_right,ntotal_right,theta,Pbinom(nmatches_right,ntotal_right,theta)));
       if (Pbinom(nmatches_right,ntotal_right,theta) > TRIM_END_PVALUE) {
 	pairs = List_reverse(path);
       } else {
-	debug8(printf("Chopping %d - %d on right.\n",length,right_edge));
+	debug18(printf("Chopping %d - %d on right.\n",length,right_edge));
 	for (i = 0; i < length - right_edge; i++) {
 	  path = Pairpool_pop(path,&pair);
 	}
@@ -2569,10 +2998,11 @@ chop_ends_by_changepoint (List_T pairs
   
   FREE(matchscores);
 
-  debug8(printf("Returning alignment of length %d\n",List_length(pairs)));
+  debug18(printf("Returning alignment of length %d\n",List_length(pairs)));
 
   return pairs;
 }
+#endif
 
 
 #if 0
@@ -2583,8 +3013,8 @@ trim_short_end_exons (bool *trim5p, bool *trim3p, List_T pairs, Pairpool_T pairp
   Pair_T pair;
   int exon_nmatches;
 
-  debug8(printf("Starting trim_short_end5_exons\n"));
-  debug8(Pair_dump_list(pairs,true));
+  debug18(printf("Starting trim_short_end5_exons\n"));
+  debug18(Pair_dump_list(pairs,true));
 
   /* Handle first exon */
   if (pairs == NULL) {
@@ -2604,22 +3034,22 @@ trim_short_end_exons (bool *trim5p, bool *trim3p, List_T pairs, Pairpool_T pairp
 #else
     exon = List_push_existing(exon,pairptr);
 #endif
-    if (pair->gapp == false && pair->comp != MISMATCH_COMP && pair->comp != INDEL_COMP) {
+    if (pair->gapp == false && pair->comp != MISMATCH_COMP && pair->comp != INDEL_COMP && pair->comp != SHORTGAP_COMP) {
       exon_nmatches++;
     }
   }
 
   if (exon_nmatches >= minendexon) {
-    debug8(printf("Keeping first exon of length %d\n",exon_nmatches));
+    debug18(printf("Keeping first exon of length %d\n",exon_nmatches));
     path = exon;		/* exon already has the gap */
     *trim5p = false;
   } else if (exon_nmatches == 0) {
-    debug8(printf("Trimming first exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
+    debug18(printf("Trimming first exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
     pairs = Pairpool_pop(pairs,&pair); /* discard gap */
     path = (List_T) NULL;
     *trim5p = false;
   } else {
-    debug8(printf("Trimming first exon of length %d\n",exon_nmatches));
+    debug18(printf("Trimming first exon of length %d\n",exon_nmatches));
     path = (List_T) NULL;
     *trim5p = true;
   }
@@ -2652,22 +3082,22 @@ trim_short_end_exons (bool *trim5p, bool *trim3p, List_T pairs, Pairpool_T pairp
 #else
     exon = List_push_existing(exon,pairptr);
 #endif
-    if (pair->gapp == false && pair->comp != MISMATCH_COMP && pair->comp != INDEL_COMP) {
+    if (pair->gapp == false && pair->comp != MISMATCH_COMP && pair->comp != INDEL_COMP && pair->comp != SHORTGAP_COMP) {
       exon_nmatches++;
     }
   }
 
   if (exon_nmatches >= minendexon) {
-    debug8(printf("Keeping last exon of length %d\n",exon_nmatches));
+    debug18(printf("Keeping last exon of length %d\n",exon_nmatches));
     pairs = exon;		/* exon already has the gap */
     *trim3p = false;
   } else if (exon_nmatches == 0) {
-    debug8(printf("Trimming last exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
+    debug18(printf("Trimming last exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
     path = Pairpool_pop(path,&pair); /* discard gap */
     pairs = (List_T) NULL;
     *trim3p = false;
   } else {
-    debug8(printf("Trimming last exon of length %d\n",exon_nmatches));
+    debug18(printf("Trimming last exon of length %d\n",exon_nmatches));
     pairs = (List_T) NULL;
     *trim3p = true;
   }
@@ -2681,8 +3111,8 @@ trim_short_end_exons (bool *trim5p, bool *trim3p, List_T pairs, Pairpool_T pairp
   pairs = Pairpool_transfer(pairs,path);
 #endif
 
-  debug8(printf("End of trim_short_end_exons: length = %d\n",List_length(pairs)));
-  debug8(Pair_dump_list(pairs,true));
+  debug18(printf("End of trim_short_end_exons: length = %d\n",List_length(pairs)));
+  debug18(Pair_dump_list(pairs,true));
   return pairs;
 }
 #endif
@@ -2700,8 +3130,8 @@ trim_short_end5_exons (bool *trim5p, List_T pairs,
   Pair_T pair;
   int exon_nmatches, exon_nmismatches;
 
-  debug8(printf("Starting trim_short_end5_exons\n"));
-  debug8(Pair_dump_list(pairs,true));
+  debug18(printf("Starting trim_short_end5_exons\n"));
+  debug18(Pair_dump_list(pairs,true));
 
   /* Handle first exon */
   if (pairs == NULL) {
@@ -2723,7 +3153,7 @@ trim_short_end5_exons (bool *trim5p, List_T pairs,
 #endif
     if (pair->gapp == true) {
       /* Skip */
-    } else if (pair->comp == MISMATCH_COMP || pair->comp == INDEL_COMP) {
+    } else if (pair->comp == MISMATCH_COMP || pair->comp == INDEL_COMP || pair->comp == SHORTGAP_COMP) {
       exon_nmismatches++;
     } else {
       exon_nmatches++;
@@ -2731,16 +3161,16 @@ trim_short_end5_exons (bool *trim5p, List_T pairs,
   }
 
   if (exon_nmatches - exon_nmismatches >= minendexon) {
-    debug8(printf("Keeping first exon of length %d\n",exon_nmatches));
+    debug18(printf("Keeping first exon of length %d\n",exon_nmatches));
     path = exon;		/* exon already has the gap */
     *trim5p = false;
   } else if (exon_nmatches == 0) {
-    debug8(printf("Trimming first exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
+    debug18(printf("Trimming first exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
     pairs = Pairpool_pop(pairs,&pair); /* discard gap */
     path = (List_T) NULL;
     *trim5p = false;
   } else {
-    debug8(printf("Trimming first exon of length %d\n",exon_nmatches));
+    debug18(printf("Trimming first exon of length %d\n",exon_nmatches));
     path = (List_T) NULL;
     *trim5p = true;
   }
@@ -2755,8 +3185,8 @@ trim_short_end5_exons (bool *trim5p, List_T pairs,
   path = Pairpool_transfer(path,pairs);
 #endif
 
-  debug8(printf("End of trim_short_end_exons: length = %d\n",List_length(pairs)));
-  debug8(Pair_dump_list(pairs,true));
+  debug18(printf("End of trim_short_end_exons: length = %d\n",List_length(pairs)));
+  debug18(Pair_dump_list(pairs,true));
   return path;
 }
 #endif
@@ -2774,8 +3204,8 @@ trim_short_end3_exons (bool *trim3p, List_T path,
   Pair_T pair;
   int exon_nmatches, exon_nmismatches;
 
-  debug8(printf("Starting trim_short_end3_exons\n"));
-  debug8(Pair_dump_list(path,true));
+  debug18(printf("Starting trim_short_end3_exons\n"));
+  debug18(Pair_dump_list(path,true));
 
   /* Handle last exon */
   if (path == NULL) {
@@ -2797,7 +3227,7 @@ trim_short_end3_exons (bool *trim3p, List_T path,
 #endif
     if (pair->gapp == true) {
       /* Skip */
-    } else if (pair->comp == MISMATCH_COMP || pair->comp == INDEL_COMP) {
+    } else if (pair->comp == MISMATCH_COMP || pair->comp == INDEL_COMP || pair->comp == SHORTGAP_COMP) {
       exon_nmismatches++;
     } else {
       exon_nmatches++;
@@ -2805,16 +3235,16 @@ trim_short_end3_exons (bool *trim3p, List_T path,
   }
 
   if (exon_nmatches - exon_nmismatches >= minendexon) {
-    debug8(printf("Keeping last exon of length %d\n",exon_nmatches));
+    debug18(printf("Keeping last exon of length %d\n",exon_nmatches));
     pairs = exon;		/* exon already has the gap */
     *trim3p = false;
   } else if (exon_nmatches == 0) {
-    debug8(printf("Trimming last exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
+    debug18(printf("Trimming last exon of length %d.  firstpair must be a gap.\n",exon_nmatches));
     path = Pairpool_pop(path,&pair); /* discard gap */
     pairs = (List_T) NULL;
     *trim3p = false;
   } else {
-    debug8(printf("Trimming last exon of length %d\n",exon_nmatches));
+    debug18(printf("Trimming last exon of length %d\n",exon_nmatches));
     pairs = (List_T) NULL;
     *trim3p = true;
   }
@@ -2828,8 +3258,8 @@ trim_short_end3_exons (bool *trim3p, List_T path,
   pairs = Pairpool_transfer(pairs,path);
 #endif
 
-  debug8(printf("End of trim_short_end_exons: length = %d\n",List_length(pairs)));
-  debug8(Pair_dump_list(pairs,true));
+  debug18(printf("End of trim_short_end_exons: length = %d\n",List_length(pairs)));
+  debug18(Pair_dump_list(pairs,true));
   return pairs;
 }
 #endif
@@ -2842,7 +3272,8 @@ dualbreak_p (List_T pairs) {
 
   while (pairs != NULL) {
     pair = (Pair_T) pairs->first;
-    if (pair->gapp ==true && pair->queryjump > 0 && pair->genomejump > 0) {
+    /* This used to fail when we used UNKNOWNJUMP for gaps */
+    if (pair->gapp == true && pair->queryjump > 0 && pair->genomejump > 0) {
       return true;
     }
     pairs = pairs->rest;
@@ -2870,7 +3301,7 @@ dualbreak_distance_from_end (int *npairs, int *totaljump, List_T pairs) {
   while (pairs != NULL && (pair->gapp == false || pair->queryjump == 0 || pair->genomejump == 0)) {
     if (pair->gapp == true) {
       /* Skip */
-    } else if (pair->comp == MISMATCH_COMP || pair->comp == INDEL_COMP) {
+    } else if (pair->comp == MISMATCH_COMP || pair->comp == INDEL_COMP || pair->comp == SHORTGAP_COMP) {
       nmismatches++;
     } else {
       nmatches++;
@@ -2883,6 +3314,7 @@ dualbreak_distance_from_end (int *npairs, int *totaljump, List_T pairs) {
     *npairs += 1;
   }
 
+  /* This used to fail when we used UNKNOWNJUMP for gaps */
   if (pair->gapp == true && pair->queryjump > 0 && pair->genomejump > 0) {
     *npairs += 1;		/* trim gap */
     *totaljump = DUALBREAK_QUERYJUMP_FACTOR * pair->queryjump;
@@ -2947,10 +3379,15 @@ enough_matches (int matches, int genomejump
 
 
 static bool
-canonicalp (bool knowngapp, char comp, int cdna_direction) {
+canonicalp (bool knowngapp, char comp, double donor_prob, double acceptor_prob, int cdna_direction) {
+
+
   if (knowngapp) {
     return true;
 
+  } else if (donor_prob < 0.9 || acceptor_prob < 0.9) {
+    return false;
+    
   } else if (cdna_direction > 0) {
     if (comp == FWD_CANONICAL_INTRON_COMP || comp == FWD_GCAG_INTRON_COMP || comp == FWD_ATAC_INTRON_COMP) {
       return true;
@@ -2976,25 +3413,25 @@ canonicalp (bool knowngapp, char comp, int cdna_direction) {
     return false;
 #endif
   }
+
 }
 
 
 /* Copied from stage1hr.c */
 static int
-sufficient_splice_prob_local (int support, int nmismatches, double distal_spliceprob
-#if 0
-			      , double medial_spliceprob
-#endif
-			      ) {
+sufficient_splice_prob_local (int support, int nmismatches, double distal_spliceprob,
+			      double medial_spliceprob) {
+  debug3(printf("Checking for sufficient splice prob, based on %d mismatches and support %d\n",
+		nmismatches,support));
   support -= 2*nmismatches;
   if (support < 0) {
     return 0;
   } else if (support < 7) {
-    return (distal_spliceprob > 0.95);
+    return (distal_spliceprob > 0.95 && medial_spliceprob > 0.90);
   } else if (support < 11) {
-    return (distal_spliceprob > 0.90);
+    return (distal_spliceprob > 0.90 && medial_spliceprob > 0.85);
   } else if (support < 15) {
-    return (distal_spliceprob > 0.85);
+    return (distal_spliceprob > 0.85 && medial_spliceprob > 0.80);
   } else if (support < 19) {
     return (distal_spliceprob > 0.50);
   } else {
@@ -3047,27 +3484,22 @@ exon_length_3 (List_T path) {
 
 
 /* Also handles case where novelsplicingp == false */
-/* pairs -> path */
+/* pairs -> pairs */
 static List_T
-trim_noncanonical_end5_exons (bool *trim5p, int *ambig_end_length_5, Splicetype_T *ambig_splicetype_5,
-			      List_T pairs, int paired_favor_mode, int zero_offset,
-			      int querylength, int watsonp, int cdna_direction, int maxintronlen
+trim_end5_exon_indels (bool *trim5p, int *ambig_end_length_5, Splicetype_T *ambig_splicetype_5,
+			List_T pairs, int paired_favor_mode, int zero_offset,
+			int querylength, int watsonp, int cdna_direction, int maxintronlen
 #ifdef WASTE
-			      , Pairpool_T pairpool
+			, Pairpool_T pairpool
 #endif
-			      ) {
+			) {
   List_T path, exon, pairptr, p;
-  Pair_T pair, medial, distal;
+  Pair_T pair, medial, indel = NULL, splice = NULL;
   int nmatches = 0, nmismatches = -1 /* because of the gap */, i;
   bool nearindelp = false, nearmismatchp = false, is_canonical;
   double medial_prob;
-#ifdef USE_BINGO
-  int insertlength;
-  bool bingop = false;
-#endif
 
-
-  debug3(printf("Starting trim_noncanonical_end5_exons\n"));
+  debug3(printf("Starting trim_end5_exon_indels\n"));
 
   /* Handle first exon */
   if (pairs == NULL) {
@@ -3075,20 +3507,10 @@ trim_noncanonical_end5_exons (bool *trim5p, int *ambig_end_length_5, Splicetype_
     return (List_T) NULL;
   } else {
     pair = pairs->first;
-#ifdef USE_BINGO
-    if (paired_favor_mode < 0) {
-      insertlength = pair->genomepos + querylength - zero_offset;
-      debug3(printf("*** 5' insertlength %d\n",insertlength));
-      if (insertlength > expected_pairlength - pairlength_deviation &&
-	  insertlength < expected_pairlength + pairlength_deviation) {
-	bingop = true;
-      }
-    }
-#endif
   }
 
   exon = (List_T) NULL;
-  while (pairs != NULL && !pair->gapp) {
+  while (pairs != NULL && !pair->gapp && pair->comp != INDEL_COMP) {
     pairptr = pairs;
     pairs = Pairpool_pop(pairs,&pair);
     if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP || pair->comp == AMBIGUOUS_COMP) {
@@ -3102,64 +3524,72 @@ trim_noncanonical_end5_exons (bool *trim5p, int *ambig_end_length_5, Splicetype_
     exon = List_push_existing(exon,pairptr);
 #endif
   }
+  debug3(printf("End exon:\n"));
   debug3(Pair_dump_list(exon,true));
 
-  /* Do not alter the variable pair, which holds the gap */
-  for (p = pairs, i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
-    medial = (Pair_T) p->first;
-    if (medial->comp == MATCH_COMP || medial->comp == DYNPROG_MATCH_COMP || medial->comp == AMBIGUOUS_COMP) {
-      /* Skip */
-    } else if (medial->comp == INDEL_COMP) {
-      debug3(printf("Saw indel medial to 5' end intron\n"));
-      nearindelp = true;
-    } else {
-      debug3(printf("Saw mismatch %c medial to 5' end intron\n",medial->comp));
-      nearmismatchp = true;
+  if (pair->comp == INDEL_COMP) {
+    /* Handle end indel */
+    /* indel = pair; */
+    
+    p = pairs;
+    while (p != NULL && ((Pair_T) p->first)->comp == INDEL_COMP) {
+      p = List_next(p);
     }
-  }
 
-  /* Do not alter the variable pair, which holds the gap */
-  if (exon != NULL) {
-    /* Skip first pair of exon, which holds the gap */
-    for (p = List_next(exon), i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
-      distal = (Pair_T) p->first;
-      if (distal->comp == MATCH_COMP || distal->comp == DYNPROG_MATCH_COMP || distal->comp == AMBIGUOUS_COMP) {
-	/* Skip */
-      } else if (distal->comp == INDEL_COMP) {
-	debug3(printf("Saw indel distal to 5' end intron\n"));
+    for ( i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
+      medial = (Pair_T) p->first;
+      if (medial->gapp) {
+	debug3(printf("Saw splice medial to 5' end indel\n"));
+	splice = medial;
 	nearindelp = true;
+      } else if (medial->comp == MATCH_COMP || medial->comp == DYNPROG_MATCH_COMP || medial->comp == AMBIGUOUS_COMP) {
+	/* Skip */
       } else {
-	debug3(printf("Saw mismatch %c distal to 5' end intron\n",distal->comp));
+	debug3(printf("Saw mismatch %c medial to 5' end indel\n",medial->comp));
 	nearmismatchp = true;
       }
     }
-  }
 
+  } else {
+    /* Handle end exon */
+    splice = pair;
 
-  if (nearindelp == true) {
-    if (pair->donor_prob >= 0.90) {
-      /* nmismatches += 1; */
-    } else if (pair->donor_prob >= 0.80) {
-      nmismatches += 1;
-    } else {
-      nmismatches += 3;
-    }
-    if (pair->acceptor_prob >= 0.90) {
-      /* nmismatches += 1; */
-    } else if (pair->acceptor_prob >= 0.80) {
-      nmismatches += 1;
-    } else {
-      nmismatches += 3;
+    for (p = pairs, i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
+      medial = (Pair_T) p->first;
+      if (medial->comp == MATCH_COMP || medial->comp == DYNPROG_MATCH_COMP || medial->comp == AMBIGUOUS_COMP) {
+	/* Skip */
+      } else if (medial->comp == INDEL_COMP || medial->comp == SHORTGAP_COMP) {
+	debug3(printf("Saw indel medial to 5' end intron\n"));
+	nearindelp = true;
+      } else {
+	debug3(printf("Saw mismatch %c medial to 5' end intron\n",medial->comp));
+	nearmismatchp = true;
+      }
     }
-  }
 
-  if ((is_canonical = canonicalp(pair->knowngapp,pair->comp,cdna_direction)) == false) {
-    nmismatches += 2;
+#if 0
+    /* No longer possible, since we stop at first indel */
+    if (exon != NULL) {
+      /* Skip first pair of exon, which holds the gap */
+      for (p = List_next(exon), i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
+	distal = (Pair_T) p->first;
+	if (distal->comp == MATCH_COMP || distal->comp == DYNPROG_MATCH_COMP || distal->comp == AMBIGUOUS_COMP) {
+	  /* Skip */
+	} else if (distal->comp == INDEL_COMP || distal->comp == SHORTGAP_COMP) {
+	  debug3(printf("Saw indel distal to 5' end intron\n"));
+	  nearindelp = true;
+	} else {
+	  debug3(printf("Saw mismatch %c distal to 5' end intron\n",distal->comp));
+	  nearmismatchp = true;
+	}
+      }
+    }
+#endif
   }
 
-  debug3(printf("nmatches %d, nmismatches %d, genomejump %d\n",nmatches,nmismatches,pair->genomejump));
+  debug3(printf("Before indel/gap, nmatches %d, nmismatches %d\n",nmatches,nmismatches));
   if (pairs == NULL) {
-    debug3(printf("No 5' exon\n"));
+    debug3(printf("No indel/gap\n"));
     path = exon;
     *trim5p = false;
 
@@ -3168,15 +3598,12 @@ trim_noncanonical_end5_exons (bool *trim5p, int *ambig_end_length_5, Splicetype_
     path = exon;
     *trim5p = false;
 
-  } else if (pair->knowngapp == true && nmismatches == 0) {
-    debug3(printf("Intron is known and no mismatches, so keeping it\n"));
-    path = exon;		/* exon already has the gap */
-    *trim5p = false;
-
+#if 0
   } else if (exon->rest != NULL && ((Pair_T) exon->rest->first)->disallowedp == true) {
-    debug3(printf("Intron is disallowed, so trimming it\n"));
-    path = (List_T) NULL;
-    *trim5p = true;
+      debug3(printf("Intron is disallowed, so trimming it\n"));
+      path = (List_T) NULL;
+      *trim5p = true;
+#endif
 
   } else if (List_length(exon) - 1 > List_length(pairs)) {
     /* Subtract 1 because gap is included in exon */
@@ -3184,119 +3611,65 @@ trim_noncanonical_end5_exons (bool *trim5p, int *ambig_end_length_5, Splicetype_
     path = exon;		/* exon already has the gap */
     *trim5p = false;
 
-  } else if (pair->genomejump > maxintronlen) {
-    debug3(printf("Intron length %d is too long, so trimming it\n",pair->genomejump));
-    path = (List_T) NULL;
-    *trim5p = true;
-
-#ifdef USE_BINGO
-  } else if (bingop == true && is_canonical == true && nmismatches <= 1) {
-    debug3(printf("bingo is true and canonical and nmismatches %d <= 1, so keeping it\n",nmismatches));
-    path = exon;
-    *trim5p = false;
-#endif
-
   } else if (nearindelp == true && nmatches < INDEL_SPLICE_ENDLENGTH) {
     debug3(printf("near indel with nmatches %d too low, so trimming it\n",nmatches));
     path = (List_T) NULL;
     *trim5p = true;
 
-  } else if (enough_matches(nmatches-nmismatches,pair->genomejump/*,pair->donor_prob,pair->acceptor_prob*/) == false) {
-    debug3(printf("nmatches %d - nmismatches %d not enough for genomejump %d, so trimming it\n",
-		 nmatches,nmismatches,pair->genomejump));
-    path = (List_T) NULL;
-    *trim5p = true;
-
-#if 0
-  } else if (nmatches - nmismatches >= NONCANONICAL_ACCEPT && (pair->donor_prob >= 0.90 || pair->acceptor_prob >= 0.90)) {
-    debug3(printf("Exon has nmatches %d - nmismatches %d >= %d and probs %f and %f, so keeping it\n",
-		   nmatches,nmismatches,NONCANONICAL_ACCEPT,pair->donor_prob,pair->acceptor_prob));
-    path = exon;		/* exon already has the gap */
-    *trim5p = false;
+  } else if (splice == NULL) {
+    if (nmatches < min_indel_end_matches) {
+      debug3(printf("Not enough matches %d < %d, so trimming it\n",nmatches,min_indel_end_matches));
+      path = (List_T) NULL;
+      *trim5p = true;
 
-  } else if (nmatches >= NONCANONICAL_PERFECT_MATCHES && nmismatches == 0) {
-    debug3(printf("Exon has perfect nmatches %d > %d, so keeping it\n",
-		 nmatches,NONCANONICAL_PERFECT_MATCHES));
-    path = exon;		/* exon already has the gap */
-    *trim5p = false;
-#endif
+    } else if (nmatches - nmismatches > 2) {
+      debug3(printf("More matches than mismatches, so keeping it\n"));
+      path = exon;		/* exon already has the indel */
+      *trim5p = false;
 
-#if 0
-  } else if (splicesites_iit != NULL && List_length(exon) < 20) {
-    debug3(printf("Known splicesites and exon length %d < 20, so trimming 5' exon\n",
-		 List_length(exon)));
-#if 0
-    pairs = Pairpool_pop(pairs,&pair); /* discard gap */
-#endif
-    path = (List_T) NULL;
-    *trim5p = true;
-#endif
+    } else {
+      debug3(printf("Trimming it\n"));
+      path = (List_T) NULL;
+      *trim5p = true;
+    }
 
-  } else if (sufficient_splice_prob_local(List_length(exon),nmismatches,
-					  /*distal_spliceprob*/cdna_direction >= 0 ? pair->donor_prob : pair->acceptor_prob
-#if 0
-					  ,/*medial_spliceprob*/cdna_direction >= 0 ? pair->acceptor_prob : pair->donor_prob
-#endif
-					  )) {
-#ifdef GSNAP
-    /* Want to keep for comparison of fwd and rev, even if probabilities are poor */
-    debug3(printf("Keeping first 5' exon with %d matches and %d mismatches\n",nmatches,nmismatches));
-    path = exon;		/* exon already has the gap */
-    *trim5p = false;
-#else
-    if (pair->donor_prob >= 0.9 || pair->acceptor_prob >= 0.9) {
-      debug3(printf("Keeping first 5' exon with probs %f and %f\n",pair->donor_prob,pair->acceptor_prob));
+  } else {
+    if (splice->knowngapp == true && nmismatches == 0) {
+      debug3(printf("Intron is known and no mismatches, so keeping it\n"));
       path = exon;		/* exon already has the gap */
       *trim5p = false;
-    } else {
-      debug3(printf("Trimming bad canonical 5' exon: prob %f and %f\n",pair->donor_prob,pair->acceptor_prob));
+
+    } else if (splice->genomejump > maxintronlen) {
+      debug3(printf("Intron length %d is too long, so trimming it\n",splice->genomejump));
       path = (List_T) NULL;
       *trim5p = true;
-    }
-#endif
 
-#if 0
-  } else if (canonicalp(pair->knowngapp,pair->comp,cdna_direction) == true) {
-    debug3(printf("Keeping first 5' exon with %d matches and %d mismatches\n",nmatches,nmismatches));
-    path = exon;		/* exon already has the gap */
-    *trim5p = false;
-#endif
+    } else if (enough_matches(nmatches-nmismatches,splice->genomejump/*,splice->donor_prob,splice->acceptor_prob*/) == false) {
+      debug3(printf("nmatches %d - nmismatches %d not enough for genomejump %d, so trimming it\n",
+		    nmatches,nmismatches,splice->genomejump));
+      path = (List_T) NULL;
+      *trim5p = true;
 
-  } else {
-    debug3(printf("Trimming noncanonical 5' exon\n"));
-#if 0
-    pairs = Pairpool_pop(pairs,&pair); /* discard gap */
-#endif
+    } else if (sufficient_splice_prob_local(List_length(exon),nmismatches,
+					    /*distal_spliceprob*/cdna_direction >= 0 ? splice->donor_prob : splice->acceptor_prob,
+					    /*medial_spliceprob*/cdna_direction >= 0 ? splice->acceptor_prob : splice->donor_prob)) {
+      /* Want to keep for comparison of fwd and rev, even if probabilities are poor */
+      debug3(printf("Keeping first 5' exon with %d matches and %d mismatches\n",nmatches,nmismatches));
+      path = exon;		/* exon already has the gap */
+      *trim5p = false;
 
-    medial_prob = (cdna_direction >= 0) ? pair->acceptor_prob : pair->donor_prob;
-    if (canonicalp(pair->knowngapp,pair->comp,cdna_direction) == true &&
-	medial_prob > 0.95) {
+    } else {
+      debug3(printf("Fall through: trimming noncanonical 5' exon\n"));
 
-#if 0
-      /* Let trim_novel_spliceends take care of this */
-      /* *ambig_end_length_5 += List_length(exon); */
-      *ambig_end_length_5 = ((Pair_T) pairs->first)->querypos;
-      debug3(printf("Setting ambig_end_length_5 to be %d\n",*ambig_end_length_5));
-      if (watsonp == true) {
-	if (cdna_direction > 0) {
-	  *ambig_splicetype_5 = ACCEPTOR;
-	} else {
-	  *ambig_splicetype_5 = ANTIDONOR;
-	}
+      medial_prob = (cdna_direction >= 0) ? splice->acceptor_prob : splice->donor_prob;
+      if (canonicalp(splice->knowngapp,splice->comp,splice->donor_prob,splice->acceptor_prob,cdna_direction) == true &&
+	  medial_prob > 0.95) {
+	*trim5p = false;		/* Not really, since we are trimming, but this stops further work */
       } else {
-	if (cdna_direction > 0) {
-	  *ambig_splicetype_5 = ANTIACCEPTOR;
-	} else {
-	  *ambig_splicetype_5 = DONOR;
-	}
+	*trim5p = true;
       }
-#endif
-
-      *trim5p = false;		/* Not really, since we are trimming, but this stops further work */
-    } else {
-      *trim5p = true;
+      path = (List_T) NULL;
     }
-    path = (List_T) NULL;
   }
 
 #ifdef WASTE
@@ -3309,57 +3682,46 @@ trim_noncanonical_end5_exons (bool *trim5p, int *ambig_end_length_5, Splicetype_
   path = Pairpool_transfer(path,pairs);
 #endif
 
-  debug3(printf("End of trim_noncanonical_end5_exons: length = %d\n",List_length(path)));
-  debug3(Pair_dump_list(path,true));
-  return path;
+  pairs = List_reverse(path);
+  pairs = clean_pairs_end5(pairs);
+
+  debug3(printf("End of trim_end5_exon_indels: length = %d\n",List_length(pairs)));
+  debug3(Pair_dump_list(pairs,true));
+  return pairs;
 }
 
 
 
 /* Also handles case where novelsplicingp == false */
-/* path -> pairs */
+/* path -> path */
 static List_T
-trim_noncanonical_end3_exons (bool *trim3p, int *ambig_end_length_3, Splicetype_T *ambig_splicetype_3,
-			      List_T path, int paired_favor_mode, int zero_offset,
-			      int querylength, bool watsonp, int cdna_direction,
-			      int maxintronlen
+trim_end3_exon_indels (bool *trim3p, int *ambig_end_length_3, Splicetype_T *ambig_splicetype_3,
+		       List_T path, int paired_favor_mode, int zero_offset,
+		       int querylength, bool watsonp, int cdna_direction,
+		       int maxintronlen
 #ifdef WASTE
-			      , Pairpool_T pairpool
+		       , Pairpool_T pairpool
 #endif
-			      ) {
+		       ) {
   List_T pairs, exon, pairptr, p;
-  Pair_T pair, medial, distal;
+  Pair_T pair, medial, indel = NULL, splice = NULL;
   int nmatches = 0, nmismatches = -1 /* because of the gap */, i;
   bool nearindelp = false, nearmismatchp = false, is_canonical;
   double medial_prob;
-#ifdef USE_BINGO
-  int insertlength;
-  bool bingop = false;
-#endif
 
 
-  debug3(printf("Starting trim_noncanonical_end3_exons\n"));
+  debug3(printf("Starting trim_end3_exon_indels\n"));
 
   /* Handle last exon */
   if (path == NULL) {
-    *trim3p = false;
+    /* *trim3p = false; */
     return (List_T) NULL;
   } else {
     pair = path->first;
-#ifdef USE_BINGO
-    if (paired_favor_mode > 0) {
-      insertlength = (genomiclength - pair->genomepos) + querylength - zero_offset;
-      debug3(printf("*** 3' insertlength %d\n",insertlength));
-      if (insertlength > expected_pairlength - pairlength_deviation &&
-	  insertlength < expected_pairlength + pairlength_deviation) {
-	bingop = true;
-      }
-    }
-#endif
   }
 
   exon = (List_T) NULL;
-  while (path != NULL && !pair->gapp) {
+  while (path != NULL && !pair->gapp && pair->comp != INDEL_COMP) {
     pairptr = path;
     path = Pairpool_pop(path,&pair);
     if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP || pair->comp == AMBIGUOUS_COMP) {
@@ -3373,65 +3735,72 @@ trim_noncanonical_end3_exons (bool *trim3p, int *ambig_end_length_3, Splicetype_
     exon = List_push_existing(exon,pairptr);
 #endif
   }
+  debug3(printf("End exon:\n"));
   debug3(Pair_dump_list(exon,true));
 
+  if (pair->comp == INDEL_COMP) {
+    /* Handle end indel */
+    /* indel = pair; */
 
-  /* Do not alter the variable pair, which holds the gap */
-  for (p = path, i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
-    medial = (Pair_T) p->first;
-    if (medial->comp == MATCH_COMP || medial->comp == DYNPROG_MATCH_COMP || medial->comp == AMBIGUOUS_COMP) {
-      /* Skip */
-    } else if (medial->comp == INDEL_COMP) {
-      debug3(printf("Saw indel medial to 3' end intron\n"));
-      nearindelp = true;
-    } else {
-      debug3(printf("Saw mismatch medial %c to 3' end intron\n",medial->comp));
-      nearmismatchp = true;
+    p = path;
+    while (p != NULL && ((Pair_T) p->first)->comp == INDEL_COMP) {
+      p = List_next(p);
     }
-  }
 
-  /* Do not alter the variable pair, which holds the gap */
-  if (exon != NULL) {
-    /* Skip first pair of exon, which holds the gap */
-    for (p = List_next(exon), i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
-      distal = (Pair_T) p->first;
-      if (distal->comp == MATCH_COMP || distal->comp == DYNPROG_MATCH_COMP || distal->comp == AMBIGUOUS_COMP) {
-	/* Skip */
-      } else if (distal->comp == INDEL_COMP) {
-	debug3(printf("Saw indel distal to 3' end intron\n"));
+    for ( i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
+      medial = (Pair_T) p->first;
+      if (medial->gapp) {
+	debug3(printf("Saw splice medial to 3' end indeln"));
+	splice = medial;
 	nearindelp = true;
+      } else if (medial->comp == MATCH_COMP || medial->comp == DYNPROG_MATCH_COMP || medial->comp == AMBIGUOUS_COMP) {
+	/* Skip */
       } else {
-	debug3(printf("Saw mismatch %c distal to 3' end intron\n",distal->comp));
+	debug3(printf("Saw mismatch medial %c to 3' end indel\n",medial->comp));
 	nearmismatchp = true;
       }
     }
-  }
 
-  if (nearindelp == true) {
-    if (pair->donor_prob >= 0.90) {
-      /* nmismatches += 1; */
-    } else if (pair->donor_prob >= 0.80) {
-      nmismatches += 1;
-    } else {
-      nmismatches += 3;
-    }
-    if (pair->acceptor_prob >= 0.90) {
-      /* nmismatches += 1; */
-    } else if (pair->acceptor_prob >= 0.80) {
-      nmismatches += 1;
-    } else {
-      nmismatches += 3;
+  } else {
+    /* Handle end exon */
+    splice = pair;
+
+    for (p = path, i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
+      medial = (Pair_T) p->first;
+      if (medial->comp == MATCH_COMP || medial->comp == DYNPROG_MATCH_COMP || medial->comp == AMBIGUOUS_COMP) {
+	/* Skip */
+      } else if (medial->comp == INDEL_COMP || medial->comp == SHORTGAP_COMP) {
+	debug3(printf("Saw indel medial to 3' end intron\n"));
+	nearindelp = true;
+      } else {
+	debug3(printf("Saw mismatch medial %c to 3' end intron\n",medial->comp));
+	nearmismatchp = true;
+      }
     }
-  }
 
-  if ((is_canonical = canonicalp(pair->knowngapp,pair->comp,cdna_direction)) == false) {
-    nmismatches += 2;
+#if 0
+    /* No longer possible, since we stop at first indel */
+    if (exon != NULL) {
+      /* Skip first pair of exon, which holds the gap */
+      for (p = List_next(exon), i = 0; p != NULL && i < NEARBY_INDEL; p = List_next(p), i++) {
+	distal = (Pair_T) p->first;
+	if (distal->comp == MATCH_COMP || distal->comp == DYNPROG_MATCH_COMP || distal->comp == AMBIGUOUS_COMP) {
+	  /* Skip */
+	} else if (distal->comp == INDEL_COMP || distal->comp == SHORTGAP_COMP) {
+	  debug3(printf("Saw indel distal to 3' end intron\n"));
+	  nearindelp = true;
+	} else {
+	  debug3(printf("Saw mismatch %c distal to 3' end intron\n",distal->comp));
+	  nearmismatchp = true;
+	}
+      }
+    }
+#endif
   }
 
-
-  debug3(printf("nmatches %d, nmismatches %d, genomejump %d\n",nmatches,nmismatches,pair->genomejump));
+  debug3(printf("Before indel/gap, nmatches %d, nmismatches %d\n",nmatches,nmismatches));
   if (path == NULL) {
-    debug3(printf("No 3' exon\n"));
+    debug3(printf("No indel/gap\n"));
     pairs = exon;
     *trim3p = false;
 
@@ -3440,15 +3809,12 @@ trim_noncanonical_end3_exons (bool *trim3p, int *ambig_end_length_3, Splicetype_
     pairs = exon;
     *trim3p = false;
 
-  } else if (pair->knowngapp == true && nmismatches == 0) {
-    debug3(printf("Intron is known and no mismatches, so keeping it\n"));
-    pairs = exon;		/* exon already has the gap */
-    *trim3p = false;
-
+#if 0
   } else if (exon->rest != NULL && ((Pair_T) exon->rest->first)->disallowedp == true) {
     debug3(printf("Intron is disallowed, so trimming it\n"));
     pairs = (List_T) NULL;
     *trim3p = true;
+#endif
 
   } else if (List_length(exon) - 1 > List_length(path)) {
     /* Subtract 1 because gap is included in exon */
@@ -3456,119 +3822,65 @@ trim_noncanonical_end3_exons (bool *trim3p, int *ambig_end_length_3, Splicetype_
     pairs = exon;		/* exon already has the gap */
     *trim3p = false;
 
-  } else if (pair->genomejump > maxintronlen) {
-    debug3(printf("Intron length %d is too long, so trimming it\n",pair->genomejump));
-    pairs = (List_T) NULL;
-    *trim3p = true;
-
-#ifdef USE_BINGO
-  } else if (bingop == true && is_canonical == true && nmismatches <= 1) {
-    debug3(printf("bingo is true and canonical and nmismatches %d <= 1, so keeping it\n",nmismatches));
-    pairs = exon;		/* exon already has the gap */
-    *trim3p = false;
-#endif
-
   } else if (nearindelp == true && nmatches < INDEL_SPLICE_ENDLENGTH) {
     debug3(printf("near indel with nmatches %d too low, so trimming it\n",nmatches));
     pairs = (List_T) NULL;
     *trim3p = true;
+    
+  } else if (splice == NULL) {
+    if (nmatches < min_indel_end_matches) {
+      debug3(printf("Not enough matches %d < %d, so trimming it\n",nmatches,min_indel_end_matches));
+      pairs = (List_T) NULL;
+      *trim3p = true;
 
-  } else if (enough_matches(nmatches-nmismatches,pair->genomejump/*,pair->donor_prob,pair->acceptor_prob*/) == false) {
-    debug3(printf("nmatches %d - nmismatches %d not enough for genomejump %d, so trimming it\n",
-		 nmatches,nmismatches,pair->genomejump));
-    pairs = (List_T) NULL;
-    *trim3p = true;
-
-#if 0
-  } else if (nmatches - nmismatches >= NONCANONICAL_ACCEPT) {
-    debug3(printf("Exon has nmatches %d - nmismatches %d > %d and probs %f and %f, so keeping it\n",
-		   nmatches,nmismatches,NONCANONICAL_ACCEPT,pair->donor_prob,pair->acceptor_prob));
-    pairs = exon;		/* exon already has the gap */
-    *trim3p = false;
-
-  } else if (nmatches >= NONCANONICAL_PERFECT_MATCHES && nmismatches == 0) {
-    debug3(printf("Exon has perfect nmatches %d > %d, so keeping it\n",
-		 nmatches,NONCANONICAL_PERFECT_MATCHES));
-    pairs = exon;		/* exon already has the gap */
-    *trim3p = false;
-#endif
+    } else if (nmatches - nmismatches > 2) {
+      debug3(printf("More matches than mismatches, so keeping it\n"));
+      pairs = exon;		/* exon already has the indel */
+      *trim3p = false;
 
-#if 0
-  } else if (splicesites_iit != NULL && List_length(exon) < 20) {
-    debug3(printf("Known splicesites and exon length %d < 20, so trimming 3' exon\n",
-		 List_length(exon)));
-#if 0
-    path = Pairpool_pop(path,&pair); /* discard gap */
-#endif
-    pairs = (List_T) NULL;
-    *trim3p = true;
-#endif
+    } else {
+      debug3(printf("Trimming it\n"));
+      pairs = (List_T) NULL;
+      *trim3p = true;
+    }
 
-  } else if (sufficient_splice_prob_local(List_length(exon),nmismatches,
-					  /*distal_spliceprob*/cdna_direction >= 0 ? pair->acceptor_prob : pair->donor_prob
-#if 0
-					  ,/*medial_spliceprob*/cdna_direction >= 0 ? pair->donor_prob : pair->acceptor_prob
-#endif
-					  )) {
-#ifdef GSNAP
-    /* Want to keep for comparison of fwd and rev, even if probabilities are poor */
-    debug3(printf("Keeping last 3' exon with %d matches and %d mismatches\n",nmatches,nmismatches));
-    pairs = exon;		/* exon already has the gap */
-    *trim3p = false;
-#else
-    if (pair->donor_prob >= 0.9 || pair->acceptor_prob >= 0.9) {
-      debug3(printf("Keeping last 3' exon with probs %f and %f\n",pair->donor_prob,pair->acceptor_prob));
+  } else {
+    if (splice->knowngapp == true && nmismatches == 0) {
+      debug3(printf("Intron is known and no mismatches, so keeping it\n"));
       pairs = exon;		/* exon already has the gap */
       *trim3p = false;
-    } else {
-      debug3(printf("Trimming bad canonical 3' exon: prob %f and %f\n",pair->donor_prob,pair->acceptor_prob));
+
+    } else if (splice->genomejump > maxintronlen) {
+      debug3(printf("Intron length %d is too long, so trimming it\n",pair->genomejump));
       pairs = (List_T) NULL;
       *trim3p = true;
-    }
-#endif
 
-#if 0
-  } else if (canonicalp(pair->knowngapp,pair->comp,cdna_direction) == true) {
-    debug3(printf("Keeping last 3' exon with %d matches and %d mismatches\n",nmatches,nmismatches));
-    pairs = exon;		/* exon already has the gap */
-    *trim3p = false;
-#endif
+    } else if (enough_matches(nmatches-nmismatches,splice->genomejump/*,splice->donor_prob,splice->acceptor_prob*/) == false) {
+      debug3(printf("nmatches %d - nmismatches %d not enough for genomejump %d, so trimming it\n",
+		    nmatches,nmismatches,splice->genomejump));
+      pairs = (List_T) NULL;
+      *trim3p = true;
 
-  } else {
-    debug3(printf("Trimming noncanonical 3' exon\n"));
-#if 0
-    path = Pairpool_pop(path,&pair); /* discard gap */
-#endif
+    } else if (sufficient_splice_prob_local(List_length(exon),nmismatches,
+					    /*distal_spliceprob*/cdna_direction >= 0 ? splice->acceptor_prob : splice->donor_prob,
+					    /*medial_spliceprob*/cdna_direction >= 0 ? splice->donor_prob : splice->acceptor_prob)) {
+      /* Want to keep for comparison of fwd and rev, even if probabilities are poor */
+      debug3(printf("Keeping last 3' exon with %d matches and %d mismatches\n",nmatches,nmismatches));
+      pairs = exon;		/* exon already has the gap */
+      *trim3p = false;
 
-    medial_prob = (cdna_direction >= 0) ? pair->donor_prob : pair->acceptor_prob;
-    if (canonicalp(pair->knowngapp,pair->comp,cdna_direction) == true &&
-	medial_prob > 0.95) {
+    } else {
+      debug3(printf("Fall through: trimming noncanonical 3' exon\n"));
 
-#if 0
-      /* Let trim_novel_spliceends take care of this */
-      /* *ambig_end_length_3 += List_length(exon); */
-      *ambig_end_length_3 = (querylength - 1) - ((Pair_T) path->first)->querypos;
-      debug3(printf("Setting ambig_end_length_3 to be %d\n",*ambig_end_length_3));
-      if (watsonp == true) {
-	if (cdna_direction > 0) {
-	  *ambig_splicetype_3 = DONOR;
-	} else {
-	  *ambig_splicetype_3 = ANTIACCEPTOR;
-	}
+      medial_prob = (cdna_direction >= 0) ? splice->donor_prob : splice->acceptor_prob;
+      if (canonicalp(splice->knowngapp,splice->comp,splice->donor_prob,splice->acceptor_prob,cdna_direction) == true &&
+	  medial_prob > 0.95) {
+	*trim3p = false;		/* Not really, since we are trimming, but this stops further work */
       } else {
-	if (cdna_direction > 0) {
-	  *ambig_splicetype_3 = ANTIDONOR;
-	} else {
-	  *ambig_splicetype_3 = ACCEPTOR;
-	}
+	*trim3p = true;
       }
-#endif
-
-      *trim3p = false;		/* Not really, since we are trimming, but this stops further work */
-    } else {
-      *trim3p = true;
+      pairs = (List_T) NULL;
     }
-    pairs = (List_T) NULL;
   }
 
 #ifdef WASTE
@@ -3580,11 +3892,13 @@ trim_noncanonical_end3_exons (bool *trim3p, int *ambig_end_length_3, Splicetype_
   pairs = Pairpool_transfer(pairs,path);
 #endif
 
-  debug3(printf("End of trim_noncanonical_end3_exons: length = %d\n",List_length(pairs)));
-  debug3(Pair_dump_list(pairs,true));
-  return pairs;
-}
+  path = List_reverse(pairs);
+  path = clean_path_end3(path);
 
+  debug3(printf("End of trim_noncanonical_end3_exons: length = %d\n",List_length(path)));
+  debug3(Pair_dump_list(path,true));
+  return path;
+}
 
 
 
@@ -3593,9 +3907,6 @@ trim_noncanonical_end3_exons (bool *trim3p, int *ambig_end_length_3, Splicetype_
    programming procedures */
 static List_T 
 fill_in_gaps (List_T path, Pairpool_T pairpool, char *queryseq_ptr, 
-#ifdef PMAP
-	      char *queryaaseq_ptr,
-#endif
 	      Univcoord_T chroffset, Univcoord_T chrhigh,
 	      int cdna_direction, int sensedir, bool watsonp, int ngap, bool diagnosticp) {
   List_T pairs = NULL, pairptr;
@@ -3621,8 +3932,9 @@ fill_in_gaps (List_T path, Pairpool_T pairpool, char *queryseq_ptr,
   }
 
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
 
 #ifdef PMAP
     if (pair->cdna == BACKTRANSLATE_CHAR) {
@@ -3633,46 +3945,45 @@ fill_in_gaps (List_T path, Pairpool_T pairpool, char *queryseq_ptr,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
-    } else if (path == NULL) {
+    } else if (path->rest == NULL) {
       /* Gap at end of alignment.  Can occur after smoothing. */
       debug7(printf("Gap at end of alignment\n"));
+      path = Pairpool_pop(path,&pair);
 
     } else if (pairs == NULL) {
       /* Gap at beginning of alignment.  Skip. */
       debug7(printf("Gap at beginning of alignment\n"));
+      path = Pairpool_pop(path,&pair);
 
     } else {
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
 
       /* Discard gap; do not push */
       leftpair = path->first;
       rightpair = pairs->first;
 
-      if (output_sam_p == false && pair->comp == DUALBREAK_COMP) {
-#ifdef PMAP
-	pairs = add_dualbreak(pairs,queryseq_ptr,queryaaseq_ptr,
-			      chroffset,chrhigh,cdna_direction,watsonp,
-			      leftpair,rightpair,pairpool,ngap,diagnosticp);
-#else
+      if (/* (stage3debug > NO_STAGE3DEBUG && stage3debug < POST_INTRONS) || */
+	  (output_sam_p == false && pair->comp == DUALBREAK_COMP)) {
 	pairs = add_dualbreak(pairs,queryseq_ptr,
 			      chroffset,chrhigh,cdna_direction,watsonp,
 			      leftpair,rightpair,pairpool,ngap,diagnosticp);
-#endif
       } else {
 
 	leftquerypos = leftpair->querypos;
 	leftgenomepos = leftpair->genomepos;
-	if (leftpair->cdna == ' ') leftquerypos--;
-	if (leftpair->genome == ' ') leftgenomepos--;
+	/* if (leftpair->cdna == ' ') leftquerypos--; -- For old dynamic programming */
+	/* if (leftpair->genome == ' ') leftgenomepos--; -- For old dynamic programming */
 	rightquerypos = rightpair->querypos;
 	rightgenomepos = rightpair->genomepos;
 	intronlength = rightgenomepos - leftgenomepos - 1;
@@ -3727,8 +4038,8 @@ fill_in_gaps (List_T path, Pairpool_T pairpool, char *queryseq_ptr,
 	  debug7(printf("  Gap is not an intron (intronlength %d).  Adding pairs from %d downto %d\n",
 			intronlength,rightgenomepos-1,leftgenomepos+1));
 	  for (k = rightquerypos - 1; k > leftquerypos; --k) {
-#ifdef PMAP
-	    c1 = Dynprog_codon_char(queryaaseq_ptr[k/3],k%3);
+#if 0				/* PMAP */
+	    c1 = Sequence_codon_char(queryaaseq_ptr[k/3],k%3);
 #else
 	    c1 = queryseq_ptr[k];
 #endif
@@ -3781,21 +4092,23 @@ add_queryseq_offset (List_T path, int queryseq_offset
 		     , Pairpool_T pairpool
 #endif
 		     ) {
-  List_T pairs = NULL, pairptr;
+  List_T pairs = NULL;
   Pair_T pair;
 
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+
     /* Previously excluded cases where pair->gapp was true, but this failed on chimeric paths */
     /* Now excluding again, because we are running this before chimera detection and merging */
+    pair = (Pair_T) path->first;
     if (pair->gapp == false) {
       pair->querypos += queryseq_offset;
     }
 #ifdef WASTE
     pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-    pairs = List_push_existing(pairs,pairptr);
+    pairs = List_transfer_one(pairs,&path);
 #endif
   }
 
@@ -3835,9 +4148,6 @@ Stage3_free_pairarray (T *old) {
 static struct Pair_T *
 make_pairarray (int *npairs, List_T *pairs, int cdna_direction, int sensedir, bool watsonp,
 		Pairpool_T pairpool, char *queryseq_ptr,
-#ifdef PMAP
-		char *queryaaseq_ptr,
-#endif
 		Univcoord_T chroffset, Univcoord_T chrhigh,
 		int ngap, int subseq_offset, int skiplength, bool diagnosticp) {
   struct Pair_T *pairarray;
@@ -3848,15 +4158,9 @@ make_pairarray (int *npairs, List_T *pairs, int cdna_direction, int sensedir, bo
   printpairs = Pairpool_copy(*pairs,pairpool);
 
   printpath = List_reverse(printpairs);
-#ifdef PMAP
-  printpairs = fill_in_gaps(printpath,pairpool,queryseq_ptr,queryaaseq_ptr,
-			    chroffset,chrhigh,
-			    cdna_direction,sensedir,watsonp,ngap,diagnosticp);
-#else
   printpairs = fill_in_gaps(printpath,pairpool,queryseq_ptr,
 			    chroffset,chrhigh,
 			    cdna_direction,sensedir,watsonp,ngap,diagnosticp);
-#endif
 
   if (subseq_offset != 0) {
     path = List_reverse(*pairs);
@@ -3899,23 +4203,19 @@ make_pairarray (int *npairs, List_T *pairs, int cdna_direction, int sensedir, bo
 
 /* Does not alter pairs, except for adding subseq_offset to querypos,
    in case we need to re-compute alignment for chimera */
-static void
-make_pairarray_merge (T this_left, T this_right, int cdna_direction, int sensedir, bool watsonp,
+static bool
+make_pairarray_merge (T this_left, int cdna_direction, int sensedir, bool watsonp,
 		      Pairpool_T pairpool, char *queryseq_ptr,
-#ifdef PMAP
-		      char *queryaaseq_ptr,
-#endif
 		      Univcoord_T chroffset, Univcoord_T chrhigh,
 		      int ngap, int subseq_offset, int skiplength, bool diagnosticp,
 		      bool new_gap_p) {
-  struct Pair_T *pairarray;
+  struct Pair_T *pairarray, *pairarray_save;
   List_T printpairs, printpath, path, p;
   Pair_T oldpair, newpair;
   int ncanonical, nsemicanonical, nnoncanonical;
   double min_splice_prob;
 
-  this_left->pairs = List_append(this_left->pairs,this_right->pairs);
-  this_right->pairs = (List_T) NULL;
+  pairarray_save = this_left->pairarray;
 
   if (new_gap_p == true) {
     path = List_reverse(this_left->pairs);
@@ -3935,42 +4235,40 @@ make_pairarray_merge (T this_left, T this_right, int cdna_direction, int sensedi
   printpairs = Pairpool_copy(this_left->pairs,pairpool);
 
   printpath = List_reverse(printpairs);
-#ifdef PMAP
-  printpairs = fill_in_gaps(printpath,pairpool,queryseq_ptr,queryaaseq_ptr,
-			    chroffset,chrhigh,
-			    cdna_direction,sensedir,watsonp,ngap,diagnosticp);
-#else
   printpairs = fill_in_gaps(printpath,pairpool,queryseq_ptr,
 			    chroffset,chrhigh,
 			    cdna_direction,sensedir,watsonp,ngap,diagnosticp);
-#endif
 
-  if (subseq_offset != 0) {
-    path = List_reverse(this_left->pairs);
+  if (List_length(printpairs) == 0) {
+    this_left->pairarray = pairarray_save;
+    /* this_left->pairarray_freeable_p = false; */
+    return false;
+    
+  } else {
+    if (subseq_offset != 0) {
+      path = List_reverse(this_left->pairs);
 #ifdef WASTE
-    this_left->pairs = add_queryseq_offset(path,subseq_offset,pairpool);
+      this_left->pairs = add_queryseq_offset(path,subseq_offset,pairpool);
 #else
-    this_left->pairs = add_queryseq_offset(path,subseq_offset);
+      this_left->pairs = add_queryseq_offset(path,subseq_offset);
 #endif
     
-    printpath = List_reverse(printpairs);
+      printpath = List_reverse(printpairs);
 #ifdef WASTE
-    printpairs = add_queryseq_offset(printpath,subseq_offset,pairpool);
+      printpairs = add_queryseq_offset(printpath,subseq_offset,pairpool);
 #else
-    printpairs = add_queryseq_offset(printpath,subseq_offset);
+      printpairs = add_queryseq_offset(printpath,subseq_offset);
 #endif
-  }
+    }
 
-  if (skiplength != 0) {
-    add_skiplength(this_left->pairs,skiplength);
-    add_skiplength(printpairs,skiplength);
-  }
+    if (skiplength != 0) {
+      add_skiplength(this_left->pairs,skiplength);
+      add_skiplength(printpairs,skiplength);
+    }
+
+    Stage3_free_pairarray(&this_left);
+    this_left->npairs = List_length(printpairs);
 
-  Stage3_free_pairarray(&this_left);
-  if ((this_left->npairs = List_length(printpairs)) == 0) {
-    this_left->pairarray = (struct Pair_T *) NULL;
-    this_left->pairarray_freeable_p = false;
-  } else {
     /* Used to be Pair_block_copy */
     newpair = pairarray = (struct Pair_T *) MALLOC_OUT(this_left->npairs*sizeof(struct Pair_T));
     for (p = printpairs; p != NULL; p = p->rest) {
@@ -3982,27 +4280,22 @@ make_pairarray_merge (T this_left, T this_right, int cdna_direction, int sensedi
     Pair_set_genomepos(pairarray,this_left->npairs,chroffset,chrhigh,watsonp);
     this_left->pairarray = pairarray;
     this_left->pairarray_freeable_p = true;
+
+    return true;
   }
 
-  return;
 }
 
 
 static void
 make_pairarrays_chimera (T this_left, T this_right,
-#ifdef PMAP
-			 char *queryaaseq_ptr,
-#endif
-			 Sequence_T queryseq, Pairpool_T pairpool, int gaplength, int ngap) {
+			 char *queryseq_ptr, Pairpool_T pairpool, int gaplength, int ngap) {
   List_T printpairs_left, printpath_left, printpairs_right, printpath_right, p;
   Pair_T oldpair, newpair;
-  char *queryseq_ptr;
   int newnpairs;
   int ncanonical, nsemicanonical, nnoncanonical;
   double min_splice_prob;
 
-  queryseq_ptr = Sequence_fullpointer(queryseq);
-
   
   /* Revise statistics */
   Pair_fracidentity(&this_left->matches,&this_left->unknowns,&this_left->mismatches,
@@ -4018,31 +4311,17 @@ make_pairarrays_chimera (T this_left, T this_right,
 
   printpairs_left = Pairpool_copy(this_left->pairs,pairpool);
   printpath_left = List_reverse(printpairs_left);
-#ifdef PMAP
-  printpairs_left = fill_in_gaps(printpath_left,pairpool,queryseq_ptr,queryaaseq_ptr,
-				 this_left->chroffset,this_left->chrhigh,
-				 this_left->cdna_direction,this_left->sensedir,this_left->watsonp,
-				 ngap,/*diagnosticp*/false);
-#else
   printpairs_left = fill_in_gaps(printpath_left,pairpool,queryseq_ptr,
 				 this_left->chroffset,this_left->chrhigh,
 				 this_left->cdna_direction,this_left->sensedir,this_left->watsonp,
 				 ngap,/*diagnosticp*/false);
-#endif
 
   printpairs_right = Pairpool_copy(this_right->pairs,pairpool);
   printpath_right = List_reverse(printpairs_right);
-#ifdef PMAP
-  printpairs_right = fill_in_gaps(printpath_right,pairpool,queryseq_ptr,queryaaseq_ptr,
-				  this_right->chroffset,this_right->chrhigh,
-				  this_right->cdna_direction,this_right->sensedir,this_right->watsonp,
-				  ngap,/*diagnosticp*/false);
-#else
   printpairs_right = fill_in_gaps(printpath_right,pairpool,queryseq_ptr,
 				  this_right->chroffset,this_right->chrhigh,
 				  this_right->cdna_direction,this_right->sensedir,this_right->watsonp,
 				  ngap,/*diagnosticp*/false);
-#endif
 
 
   /* Do not use subseq_offset or skiplength for chimeras, since we are
@@ -4092,7 +4371,7 @@ Stage3_recompute_goodness (List_T stage3list) {
   T this;
   List_T p;
   int best_absmq_score;
-  double total = 0.0, q;
+  float total = 0.0, q;
 
 #ifdef DEPEND_ON_QUALITY
   for (p = stage3list; p != NULL && high_quality_p == false; p = List_next(p)) {
@@ -4137,12 +4416,12 @@ Stage3_recompute_goodness (List_T stage3list) {
   for (p = stage3list; p != NULL; p = List_next(p)) {
     this = (T) List_head(p);
     this->absmq_score -= best_absmq_score;
-    total += exp(this->absmq_score);
+    total += fasterexp(this->absmq_score);
   }
 
   for (p = stage3list; p != NULL; p = List_next(p)) {
     this = (T) List_head(p);
-    if ((q = 1.0 - exp(this->absmq_score) / total) < 1.0e-4 /* 10^-4.0 */) {
+    if ((q = 1.0 - fasterexp(this->absmq_score) / total) < 1.0e-4 /* 10^-4.0 */) {
       this->mapq_score = 40;
     } else {
       this->mapq_score = rint(-10.0 * log10(q));
@@ -4246,30 +4525,6 @@ pick_cdna_direction (int *winning_cdna_direction, int *sensedir,
     return pairs_rev;
 
 #if 0
-  } else if (nnoncanonical_fwd == 0 && nnoncanonical_rev > 0) {
-    debug11(printf("nnoncanonical_fwd 0 && nnoncanonical_rev %d, so fwd wins\n",
-		   nnoncanonical_rev));
-    *winning_cdna_direction = +1;
-
-  } else if (nnoncanonical_fwd > 0 && nnoncanonical_rev == 0) {
-    debug11(printf("nnoncanonical_fwd %d && nnoncanonical_rev 0, so rev wins\n",
-		   nnoncanonical_fwd));
-    *winning_cdna_direction = -1;
-#endif
-
-#if 0
-  } else if (canonical_score_fwd > canonical_score_rev + 1) {
-    debug11(printf("canonical_score_fwd %d > canonical_score_rev %d + 1, so fwd wins\n",
-		   canonical_score_fwd,canonical_score_rev));
-    *winning_cdna_direction = +1;
-
-  } else if (canonical_score_rev > canonical_score_fwd + 1) {
-    debug11(printf("canonical_score_rev %d > canonical_score_fwd %d + 1, so rev wins\n",
-		   canonical_score_rev,canonical_score_fwd));
-    *winning_cdna_direction = -1;
-#endif
-
-#if 0
   } else if (indel_alignment_score_fwd >= 0 && indel_alignment_score_rev < 0 && nbadintrons_rev > 0) {
     debug11(printf("indel_alignment_score_fwd %d positive and indel_alignment_score_rev %d negative for a bad intron, so fwd wins\n",
 		   indel_alignment_score_fwd,indel_alignment_score_rev));
@@ -4308,6 +4563,27 @@ pick_cdna_direction (int *winning_cdna_direction, int *sensedir,
     /* intronscores reveal a clear sensedir */
     *winning_cdna_direction = -1;
 
+  } else if (ncanonical_fwd > ncanonical_rev && nnoncanonical_fwd <= nnoncanonical_rev) {
+    debug11(printf("ncanonical_fwd %d && ncanonical_rev %d, so fwd wins\n",
+		   ncanonical_fwd,ncanonical_rev));
+    *winning_cdna_direction = +1;
+
+  } else if (ncanonical_rev > ncanonical_fwd && nnoncanonical_rev <= nnoncanonical_fwd) {
+    debug11(printf("ncanonical_fwd %d && ncanonical_rev %d, so rev wins\n",
+		   ncanonical_fwd,ncanonical_rev));
+    *winning_cdna_direction = -1;
+
+  } else if (canonical_score_fwd > canonical_score_rev + 1) {
+    debug11(printf("canonical_score_fwd %d > canonical_score_rev %d + 1, so fwd wins\n",
+		   canonical_score_fwd,canonical_score_rev));
+    *winning_cdna_direction = +1;
+
+  } else if (canonical_score_rev > canonical_score_fwd + 1) {
+    debug11(printf("canonical_score_rev %d > canonical_score_fwd %d + 1, so rev wins\n",
+		   canonical_score_rev,canonical_score_fwd));
+    *winning_cdna_direction = -1;
+
+#if 0
   } else if (alignment_score_fwd > alignment_score_rev + SCORE_SIGDIFF) {
     debug11(printf("alignment_score_fwd %d >> alignment_score_rev %d, so fwd wins\n",
 		   alignment_score_fwd,alignment_score_rev));
@@ -4317,6 +4593,7 @@ pick_cdna_direction (int *winning_cdna_direction, int *sensedir,
     debug11(printf("alignment_score_rev %d << alignment_score_fwd %d, so rev wins\n",
 		   alignment_score_rev,alignment_score_fwd));
     *winning_cdna_direction = -1;
+#endif
 
   } else if (nnoncanonical_fwd < nnoncanonical_rev) {
     debug11(printf("nnoncanonical_fwd %d < nnoncanonical_rev %d, so fwd wins\n",
@@ -4340,15 +4617,17 @@ pick_cdna_direction (int *winning_cdna_direction, int *sensedir,
     /* intronscores reveal a preferred sensedir */
     *winning_cdna_direction = -1;
 
-  } else if (alignment_score_fwd > alignment_score_rev) {
+#if 0
+  } else if (alignment_score_fwd > alignment_score_rev && alignment_score_fwd > 0) {
     debug11(printf("alignment_score_fwd %d > alignment_score_rev %d, so fwd wins\n",
 		   alignment_score_fwd,alignment_score_rev));
     *winning_cdna_direction = +1;
 
-  } else if (alignment_score_rev > alignment_score_fwd) {
+  } else if (alignment_score_rev > alignment_score_fwd && alignment_score_rev > 0) {
     debug11(printf("alignment_score_rev %d < alignment_score_fwd %d, so rev wins\n",
 		   alignment_score_rev,alignment_score_fwd));
     *winning_cdna_direction = -1;
+#endif
 
   } else {
     debug11(printf("scores all equal, so fwd wins\n"));
@@ -4399,18 +4678,104 @@ pick_cdna_direction (int *winning_cdna_direction, int *sensedir,
 }
 
 
+#ifdef GSNAP
+static int
+initial_cdna_direction (List_T pairs_fwd, List_T pairs_rev,
+			double avg_donor_score_fwd, double avg_acceptor_score_fwd,
+			double avg_donor_score_rev, double avg_acceptor_score_rev
+#ifdef COMPLEX_DIRECTION
+			, int nmatches_fwd, int nmismatches_fwd, int nmatches_rev, int nmismatches_rev, int nindels_fwd, int nindels_rev,
+			int indel_alignment_score_fwd, int indel_alignment_score_rev
+#endif
+			) {
+
+  if (pairs_fwd == NULL && pairs_rev == NULL) {
+    debug11(printf("pairs_fwd is NULL and pairs_rev is NULL\n"));
+    return 0;
+
+  } else if (pairs_rev == NULL) {
+    debug11(printf("pairs_rev is NULL, so fwd wins\n"));
+    return +1;
+
+  } else if (pairs_fwd == NULL) {
+    debug11(printf("pairs_fwd is NULL, so rev wins\n"));
+    return -1;
+
+  } else if (avg_donor_score_fwd > 0.9 && avg_acceptor_score_fwd > 0.9 &&
+	     (avg_donor_score_rev < 0.5 || avg_acceptor_score_rev < 0.5)) {
+    debug11(printf("intronscores fwd %f,%f > intronscores rev %f,%f, so fwd wins\n",
+		   avg_donor_score_fwd,avg_acceptor_score_fwd,avg_donor_score_rev,avg_acceptor_score_rev));
+    /* intronscores reveal a clear sensedir */
+    return +1;
+
+  } else if (avg_donor_score_rev > 0.9 && avg_acceptor_score_rev > 0.9 &&
+	     (avg_donor_score_fwd < 0.5 || avg_acceptor_score_fwd < 0.5)) {
+    debug11(printf("intronscores rev %f,%f > intronscores fwd %f,%f, so fwd wins\n",
+		   avg_donor_score_rev,avg_acceptor_score_rev,avg_donor_score_fwd,avg_acceptor_score_fwd));
+    /* intronscores reveal a clear sensedir */
+    return -1;
+
+#if 0
+  } else if (alignment_score_fwd > alignment_score_rev + SCORE_SIGDIFF) {
+    /* Cannot use alignment score until we do a full alignment */
+    debug11(printf("alignment_score_fwd %d >> alignment_score_rev %d, so fwd wins\n",
+		   alignment_score_fwd,alignment_score_rev));
+    return +1;
+
+  } else if (alignment_score_rev > alignment_score_fwd + SCORE_SIGDIFF) {
+    debug11(printf("alignment_score_rev %d << alignment_score_fwd %d, so rev wins\n",
+		   alignment_score_rev,alignment_score_fwd));
+    return -1;
+#endif
+
+#if 0
+  } else if (nnoncanonical_fwd < nnoncanonical_rev) {
+    /* Not a good test until we do full dynamic programming */
+    debug11(printf("nnoncanonical_fwd %d < nnoncanonical_rev %d, so fwd wins\n",
+		   nnoncanonical_fwd,nnoncanonical_rev));
+    return +1;
+
+  } else if (nnoncanonical_rev < nnoncanonical_fwd) {
+    debug11(printf("nnoncanonical_rev %d < nnoncanonical_fwd %d, so rev wins\n",
+		   nnoncanonical_rev,nnoncanonical_fwd));
+    return -1;
+#endif
+
+#if 0
+  } else if (avg_donor_score_fwd + avg_acceptor_score_fwd > avg_donor_score_rev + avg_acceptor_score_rev + PROB_SIGDIFF) {
+    /* Not a good test until we do full dynamic programming */
+    debug11(printf("intronscores fwd %f+%f > intronscores rev %f+%f, so fwd wins\n",
+		   avg_donor_score_fwd,avg_acceptor_score_fwd,avg_donor_score_rev,avg_acceptor_score_rev));
+    /* intronscores reveal a preferred sensedir */
+    return +1;
+
+  } else if (avg_donor_score_rev + avg_acceptor_score_rev > avg_donor_score_fwd + avg_acceptor_score_fwd + PROB_SIGDIFF) {
+    debug11(printf("intronscores rev %f+%f > intronscores fwd %f+%f, so fwd wins\n",
+		   avg_donor_score_rev,avg_acceptor_score_rev,avg_donor_score_fwd,avg_acceptor_score_fwd));
+    /* intronscores reveal a preferred sensedir */
+    return -1;
+#endif
+
+  } else {
+    return 0;
+  }
+}
+#endif
+
+
+
 T
 Stage3_new (struct Pair_T *pairarray, List_T pairs, int npairs, int cdna_direction, int sensedir,
 	    int stage2_source, int stage2_indexsize,
 	    int matches, int unknowns, int mismatches, int qopens, int qindels,
-	    int topens, int tindels, int ncanonical, int nsemicanonical,
-	    int nnoncanonical, double defect_rate,
+	    int topens, int tindels, int ncanonical, int nsemicanonical, int nnoncanonical,
 	    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
 	    bool watsonp, int querylength, int skiplength, int trimlength, double stage3_runtime,
 	    int straintype, char *strain, IIT_T altstrain_iit) {
   T new = (T) MALLOC(sizeof(*new));
   Pair_T start, end;
   int *typematches, nmatches;
+  int alias;
 
   new->pairarray = pairarray;
   new->pairarray_freeable_p = true;
@@ -4448,7 +4813,6 @@ Stage3_new (struct Pair_T *pairarray, List_T pairs, int npairs, int cdna_directi
   }
 #endif
 
-
 #if 0
   nexons = Pair_nexons_approx(pairs);
   if (nexons > 2) {
@@ -4476,10 +4840,9 @@ Stage3_new (struct Pair_T *pairarray, List_T pairs, int npairs, int cdna_directi
   new->chroffset = chroffset;
   new->chrhigh = chrhigh;
   new->chrlength = chrlength;
-  new->circularpos = Pair_circularpos(pairarray,npairs,chrlength,watsonp,querylength);
+  new->circularpos = Pair_circularpos(&alias,pairarray,npairs,chrlength,watsonp,querylength);
 
   new->watsonp = watsonp;
-  new->defect_rate = defect_rate;
 
   new->genomicstart = chroffset + Pair_genomepos(start);
   new->genomicend = chroffset + Pair_genomepos(end);
@@ -4539,7 +4902,7 @@ bool
 Stage3_test_bounds (T this, int minpos, int maxpos) {
   int nstart;
 
-  if (Pairpool_count_bounded(&nstart,this->pairs,minpos,maxpos) > 25) {
+  if (Pairpool_count_bounded(&nstart,this->pairs,minpos,maxpos) >= 25) {
     return true;
   } else {
     return false;
@@ -4885,8 +5248,7 @@ Stage3_print_pathsummary (FILE *fp, T this, int pathnum, Univ_IIT_T chromosome_i
 			 this->qopens,this->qindels,this->topens,this->tindels,this->goodness,
 			 this->watsonp,this->cdna_direction,
 			 this->translation_start,this->translation_end,this->translation_length,
-			 0,0,maponlyp,diagnosticp,this->stage2_source,this->stage2_indexsize,
-			 this->defect_rate);
+			 0,0,maponlyp,diagnosticp,this->stage2_source,this->stage2_indexsize);
   if (maponlyp == false) {
     Translation_print_comparison(fp,this->pairarray,this->npairs,NULL,0,this->cdna_direction,
 				 this->relaastart,this->relaaend,maxmutations);
@@ -4961,7 +5323,7 @@ Stage3_print_gff3 (FILE *fp, T this, int pathnum, Univ_IIT_T chromosome_iit, Seq
 		  Sequence_accession(queryseq),start,end,
 		  this->chrnum,chromosome_iit,usersegment,
 		  this->translation_end,querylength,Sequence_skiplength(queryseq),
-		  this->matches,this->mismatches,this->qindels,this->tindels,
+		  this->matches,this->mismatches,this->qindels,this->tindels,this->unknowns,
 		  this->watsonp,this->cdna_direction,gff_gene_format_p,gff_estmatch_format_p,
 		  sourcename);
   return;
@@ -4972,7 +5334,7 @@ Stage3_print_gff3 (FILE *fp, T this, int pathnum, Univ_IIT_T chromosome_iit, Seq
 #ifndef PMAP
 /* Only for GMAP program */
 void
-Stage3_print_sam (FILE *fp, T this, int pathnum, int npaths,
+Stage3_print_sam (FILE *fp, char *abbrev, T this, int pathnum, int npaths,
 		  int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		  Univ_IIT_T chromosome_iit, Sequence_T usersegment,
 		  Sequence_T queryseq, int chimera_part, Chimera_T chimera,
@@ -4991,29 +5353,29 @@ Stage3_print_sam (FILE *fp, T this, int pathnum, int npaths,
   }
 
   if (this->circularpos > 0) {
-    Pair_print_sam(fp,this->pairarray,this->npairs,
+    Pair_print_sam(fp,abbrev,this->pairarray,this->npairs,
 		   Sequence_accession(queryseq),/*acc2*/NULL,this->chrnum,chromosome_iit,usersegment,
 		   Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
-		   /*hardclip5*/0,/*hardclip3*/querylength-this->circularpos,querylength,
+		   /*clipdir*/0,/*hardclip5*/0,/*hardclip3*/querylength-this->circularpos,querylength,
 		   this->watsonp,this->cdna_direction,chimera_part,chimera,
 		   quality_shift,Sequence_firstp(queryseq),
 		   pathnum,npaths,absmq_score,first_absmq,second_absmq,chrpos,
 		   mapq_score,sam_paired_p,sam_read_group_id,/*invertp*/false,
 		   /*circularp*/true);
-    Pair_print_sam(fp,this->pairarray,this->npairs,
+    Pair_print_sam(fp,abbrev,this->pairarray,this->npairs,
 		   Sequence_accession(queryseq),/*acc2*/NULL,this->chrnum,chromosome_iit,usersegment,
 		   Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
-		   /*hardclip5*/this->circularpos,/*hardclip3*/0,querylength,
+		   /*clipdir*/0,/*hardclip5*/this->circularpos,/*hardclip3*/0,querylength,
 		   this->watsonp,this->cdna_direction,chimera_part,chimera,
 		   quality_shift,Sequence_firstp(queryseq),
 		   pathnum,npaths,absmq_score,first_absmq,second_absmq,/*chrpos*/1,
 		   mapq_score,sam_paired_p,sam_read_group_id,/*invertp*/false,
 		   /*circularp*/true);
   } else {
-    Pair_print_sam(fp,this->pairarray,this->npairs,
+    Pair_print_sam(fp,abbrev,this->pairarray,this->npairs,
 		   Sequence_accession(queryseq),/*acc2*/NULL,this->chrnum,chromosome_iit,usersegment,
 		   Sequence_fullpointer(queryseq),Sequence_quality_string(queryseq),
-		   /*hardclip5*/0,/*hardclip3*/0,querylength,
+		   /*clipdir*/0,/*hardclip5*/0,/*hardclip3*/0,querylength,
 		   this->watsonp,this->cdna_direction,chimera_part,chimera,
 		   quality_shift,Sequence_firstp(queryseq),
 		   pathnum,npaths,absmq_score,first_absmq,second_absmq,chrpos,
@@ -5091,8 +5453,7 @@ Stage3_print_mutations (FILE *fp, T this, T reference, Univ_IIT_T chromosome_iit
 			 this->qopens,this->qindels,this->topens,this->tindels,this->goodness,
 			 this->watsonp,this->cdna_direction,
 			 0,0,0,this->relaastart,this->relaaend,/*maponlyp*/false,
-			 diagnosticp,this->stage2_source,this->stage2_indexsize,
-			 this->defect_rate);
+			 diagnosticp,this->stage2_source,this->stage2_indexsize);
   Translation_print_comparison(fp,this->pairarray,this->npairs,reference->pairarray,reference->npairs,
 			       this->cdna_direction,this->relaastart,this->relaaend,maxmutations);
   fprintf(fp,"\n");
@@ -5416,13 +5777,14 @@ compute_introntype (char left1, char left2, char right2, char right1) {
 
 static char uppercaseCode[128] = UPPERCASE_U2T;
 
+#if 0
 static List_T
-peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5, int *genomedp5, 
+peel_leftward_old (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5, int *genomedp5, 
 #ifdef WASTE
-	       Pairpool_T pairpool,
+		   Pairpool_T pairpool,
 #endif
-	       int maxpeelback, bool throughmismatchp, bool quit_on_gap_p,
-	       List_T *endgappairs, Pair_T *gappair, int *querydp5_medialgap, int *genomedp5_medialgap) {
+		   int maxpeelback, bool throughmismatchp, bool quit_on_gap_p,
+		   List_T *endgappairs, Pair_T *gappair, int *querydp5_medialgap, int *genomedp5_medialgap) {
   List_T peeled = NULL, rest = NULL, pairptr;
   Pair_T pair, nextpair, rightpair;
   int npeelback = 0, nconsecutive = 0, init_dynprogindex = DYNPROGINDEX_MINOR;
@@ -5516,7 +5878,7 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
       }
 
 #if 0
-      if (pair->comp == INDEL_COMP || pair->comp == MISMATCH_COMP) {
+      if (pair->comp == INDEL_COMP || pair->comp == SHORTGAP_COMP || pair->comp == MISMATCH_COMP) {
 	nconsecutive = 0;
       } else if (++nconsecutive >= SUFFCONSECUTIVE) {
 	stopp = true;
@@ -5581,8 +5943,9 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
     /* Do not alter querydp5 or genomedp5 */
   } else {
     rightpair = peeled->first;
-    if (rightpair->gapp == true) {
-      debug(printf("Ran into gap; undoing peel, case 1\n"));
+    while (peeled != NULL && (rightpair->gapp == true || rightpair->comp == INDEL_COMP || rightpair->comp == SHORTGAP_COMP)) {
+      debug(printf("Ran into gap; undoing peel, case 1, rightpair gapp %d, comp %c\n",
+		   rightpair->gapp,rightpair->comp));
       if (endgappairs != NULL) {
 	path = Pairpool_transfer(path,*endgappairs);
 	*endgappairs = (List_T) NULL;
@@ -5595,14 +5958,16 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
 
       } else {
 	/* Put back 1 */
-	if ((pairptr = peeled) != NULL) {
-	  peeled = Pairpool_pop(peeled,&pair);
-	  path = List_push_existing(path,pairptr);
-	  debug(printf(" Putback [");
-		Pair_dump_one(pair,/*zerobasedp*/true);
-		printf("]"));
-	}
+	/* if ((pairptr = peeled) != NULL) { */
+	pairptr = peeled;
+	peeled = Pairpool_pop(peeled,&pair);
+	path = List_push_existing(path,pairptr);
+	debug(printf(" Putback [");
+	      Pair_dump_one(pair,/*zerobasedp*/true);
+	      printf("]"));
+	  /* } */
 
+#if 0
 	/* Put back 2 */
 	if ((pairptr = peeled) != NULL) {
 	  peeled = Pairpool_pop(peeled,&pair);
@@ -5611,7 +5976,10 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
 		Pair_dump_one(pair,/*zerobasedp*/true);
 		printf("]"));
 	}
+#endif
       }
+
+      rightpair = path->first;
     }
 
     if (path != NULL) {
@@ -5629,7 +5997,7 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
   }
 
   if (endgappairs != NULL) {
-    if (path == NULL || (pair = path->first) == NULL || pair->gapp == false) {
+    if (path == NULL || (pair = path->first) == NULL || (pair->gapp == false && pair->comp != INDEL_COMP && pair->comp != SHORTGAP_COMP)) {
       *endgappairs = NULL;
       *querydp5_medialgap = *querydp5;
       *genomedp5_medialgap = *genomedp5;
@@ -5665,7 +6033,7 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
       }
 
       rightpair = (*endgappairs)->first;
-      if (rightpair->gapp == true) {
+      if (rightpair->gapp == true || rightpair->comp == INDEL_COMP || rightpair->comp == SHORTGAP_COMP) {
 	debug(printf("Ran into gap; undoing peel, case 2\n"));
 	path = Pairpool_transfer(path,*endgappairs);
 	*endgappairs = (List_T) NULL;
@@ -5711,6 +6079,7 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
     }
   }
 
+  /* assert(peeled == NULL || path == NULL || ((Pair_T) path->first)->comp != INDEL_COMP); */
   debug(
 	if (path == NULL) {
 	  printf(" => Top of path is NULL.");
@@ -5725,15 +6094,166 @@ peel_leftward (bool *mismatchp, List_T *peeled_path, List_T path, int *querydp5,
   *peeled_path = peeled;
   return path;
 }
+#endif
+
+
+static List_T
+peel_leftward (int *n_peeled_indels, bool *protectedp, List_T *peeled_path, List_T path, int *querydp5, int *genomedp5, 
+	       int maxpeelback, bool stop_at_indels_p) {
+  List_T peeled = NULL, rest = NULL, pairptr;
+  Pair_T pair, nextpair, rightpair;
+  int npeelback = 0, nconsecutive = 0, init_dynprogindex = DYNPROGINDEX_MINOR, niter;
+  bool stopp;
+  int nmatches;
+#if 0
+  int nincursion = 0;
+#endif
+
+  *n_peeled_indels = 0;
+  /* *protectedp = false; -- set by calling procedure */
+
+  debug(printf("Peeling leftward with maxpeelback %d and stop_at_indels_p %d:",maxpeelback,stop_at_indels_p));
+
+  /* Remove initial gaps */
+  while (path != NULL &&
+	 ( ((Pair_T) path->first)->gapp == true || 
+	   ((Pair_T) path->first)->comp == INDEL_COMP ||
+	   ((Pair_T) path->first)->comp == SHORTGAP_COMP)) {
+    path = Pairpool_pop(path,&pair);
+  }
+
+  if (path == NULL) {
+    debug(printf(" path is empty\n"));
+
+  } else if (stop_at_indels_p == true) {
+    pair = path->first;
+    if (pair->gapp == true) {
+      /* Peel known gap */
+      debug(printf(" Known_gap"));
+      peeled = List_transfer_one(peeled,&path);
+    }
+
+    /* Peel initial indels anyway */
+    while (path != NULL && ( ((Pair_T) path->first)->comp == INDEL_COMP || ((Pair_T) path->first)->comp == SHORTGAP_COMP )) {
+      debug(printf(" Peel [");
+	    Pair_dump_one(path->first,/*zerobasedp*/true);
+	    printf("]"));
+      peeled = List_transfer_one(peeled,&path);
+    }
+
+    while (npeelback < maxpeelback && path != NULL &&
+	   ((Pair_T) path->first)->gapp == false &&
+	   ((Pair_T) path->first)->comp != INDEL_COMP &&
+	   ((Pair_T) path->first)->comp != SHORTGAP_COMP) {
+      debug(printf(" Peel [");
+	    Pair_dump_one(path->first,/*zerobasedp*/true);
+	    printf("]"));
+      if (((Pair_T) path->first)->protectedp == true) {
+	*protectedp = true;
+      }
+      peeled = List_transfer_one(peeled,&path);
+      npeelback++;
+    }
+	   
+  } else {
+    /* Don't stop at indels, but do stop at gaps */
+    pair = path->first;
+    if (pair->gapp == true) {
+      /* Peel known gap */
+      debug(printf(" Known_gap"));
+      peeled = List_transfer_one(peeled,&path);
+    }
+
+    niter = 0;
+    while (npeelback < maxpeelback && niter < MAXITER && path != NULL &&
+	   ((Pair_T) path->first)->gapp == false) {
+      debug(printf(" Peel [");
+	    Pair_dump_one(path->first,/*zerobasedp*/true);
+	    printf("]"));
+      if (((Pair_T) path->first)->comp == MATCH_COMP || ((Pair_T) path->first)->comp == DYNPROG_MATCH_COMP || ((Pair_T) path->first)->comp == AMBIGUOUS_COMP) {
+	npeelback++;
+      } else if (((Pair_T) path->first)->comp == INDEL_COMP) {
+	*n_peeled_indels += 1;
+	npeelback--;
+      } else if (((Pair_T) path->first)->comp == SHORTGAP_COMP) {
+	*n_peeled_indels += 1;
+	npeelback--;
+      } else {
+	npeelback--;
+      }
+      if (((Pair_T) path->first)->protectedp == true) {
+	*protectedp = true;
+      }
+      niter++;
+      peeled = List_transfer_one(peeled,&path);
+    }
+	   
+    if (path != NULL && ((Pair_T) path->first)->gapp == true) {
+      debug(printf(" Hit gap [");
+	    Pair_dump_one(path->first,/*zerobasedp*/true);
+	    printf("]"));
+    }
+  }
+
+  if (path != NULL &&
+      ( ((Pair_T) path->first)->gapp == true || 
+	((Pair_T) path->first)->comp == INDEL_COMP ||
+	((Pair_T) path->first)->comp == SHORTGAP_COMP)) {
+    /* Don't leave a gap or indel on the top of the path */
+    while (peeled != NULL &&
+	   ( ((Pair_T) peeled->first)->gapp == true ||
+	     ((Pair_T) peeled->first)->comp == INDEL_COMP ||
+	     ((Pair_T) peeled->first)->comp == SHORTGAP_COMP)) {
+      debug(printf(" Putback [");
+	    Pair_dump_one(peeled->first,/*zerobasedp*/true);
+	    printf("]"));
+      path = List_transfer_one(path,&peeled);
+    }
+    if (peeled != NULL) {
+      debug(printf(" Putback [");
+	    Pair_dump_one(peeled->first,/*zerobasedp*/true);
+	    printf("]"));
+      path = List_transfer_one(path,&peeled); /* This should be match or mismatch */
+    }
+  }
+
+  if (path != NULL) {
+    rightpair = path->first;
+    *querydp5 = rightpair->querypos + 1;
+    *genomedp5 = rightpair->genomepos + 1;
+  } else if (peeled != NULL) {
+    rightpair = peeled->first;
+    *querydp5 = rightpair->querypos;
+    *genomedp5 = rightpair->genomepos;
+  } else {
+    /* fprintf(stderr,"In peel_leftward, path and peeled are both NULL\n"); */
+    /* abort(); */
+  }
+
+  debug(
+	if (path == NULL) {
+	  printf(" => Top of path is NULL.");
+	} else {
+	  pair = path->first;
+	  printf(" => Top of path is ");
+	  Pair_dump_one(pair,/*zerobasedp*/true);
+	}
+	printf("\n => querydp5 = %d, genomedp5 = %d\n",*querydp5,*genomedp5);
+	);
 
+  *peeled_path = peeled;
+  return path;
+}
+    
 
+#if 0
 static List_T
-peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *querydp3, int *genomedp3, 
+peel_rightward_old (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *querydp3, int *genomedp3, 
 #ifdef WASTE
-		Pairpool_T pairpool,
+		    Pairpool_T pairpool,
 #endif
-		int maxpeelback, bool throughmismatchp, bool quit_on_gap_p,
-		List_T *endgappairs, Pair_T *gappair, int *querydp3_medialgap, int *genomedp3_medialgap) {
+		    int maxpeelback, bool throughmismatchp, bool quit_on_gap_p,
+		    List_T *endgappairs, Pair_T *gappair, int *querydp3_medialgap, int *genomedp3_medialgap) {
   List_T peeled = NULL, rest = NULL, pairptr;
   Pair_T pair, nextpair, leftpair;
   int npeelback = 0, nconsecutive = 0, init_dynprogindex = DYNPROGINDEX_MINOR;
@@ -5827,7 +6347,7 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
       }
 
 #if 0
-      if (pair->comp == INDEL_COMP || pair->comp == MISMATCH_COMP) {
+      if (pair->comp == INDEL_COMP || pair->comp == SHORTGAP_COMP || pair->comp == MISMATCH_COMP) {
 	nconsecutive = 0;
       } else if (++nconsecutive >= SUFFCONSECUTIVE) {
 	stopp = true;
@@ -5887,8 +6407,9 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
     /* Do not alter querydp3 or genomedp3 */
   } else {
     leftpair = peeled->first;
-    if (leftpair->gapp == true) {
-      debug(printf("Ran into gap; undoing peel, case 3\n"));
+    while (peeled != NULL && (leftpair->gapp == true || leftpair->comp == INDEL_COMP || leftpair->comp == SHORTGAP_COMP)) {
+      debug(printf("Ran into gap; undoing peel, case 3, leftpair gapp %d, comp %c\n",
+		   leftpair->gapp,leftpair->comp));
       if (endgappairs != NULL) {
 	pairs = Pairpool_transfer(pairs,*endgappairs);
 	*endgappairs = (List_T) NULL;
@@ -5901,14 +6422,16 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
 
       } else {
 	/* Put back 1 */
-	if ((pairptr = peeled) != NULL) {
-	  peeled = Pairpool_pop(peeled,&pair);
-	  pairs = List_push_existing(pairs,pairptr);
-	  debug(printf(" Putback [");
-		Pair_dump_one(pair,/*zerobasedp*/true);
-		printf("]"));
-	}
+	/* if ((pairptr = peeled) != NULL) { */
+	pairptr = peeled;
+	peeled = Pairpool_pop(peeled,&pair);
+	pairs = List_push_existing(pairs,pairptr);
+	debug(printf(" Putback [");
+	      Pair_dump_one(pair,/*zerobasedp*/true);
+	      printf("]"));
+	  /* } */
 
+#if 0
 	/* Put back 2 */
 	if ((pairptr = peeled) != NULL) {
 	  peeled = Pairpool_pop(peeled,&pair);
@@ -5917,7 +6440,10 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
 		Pair_dump_one(pair,/*zerobasedp*/true);
 		printf("]"));
 	}
+#endif
       }
+
+      leftpair = pairs->first;
     }
 
     if (pairs != NULL) {
@@ -5935,7 +6461,7 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
   }
 
   if (endgappairs != NULL) {
-    if (pairs == NULL || (pair = pairs->first) == NULL || pair->gapp == false) {
+    if (pairs == NULL || (pair = pairs->first) == NULL || (pair->gapp == false && pair->comp != INDEL_COMP && pair->comp != SHORTGAP_COMP)) {
       *endgappairs = NULL;
       *querydp3_medialgap = *querydp3;
       *genomedp3_medialgap = *genomedp3;
@@ -5971,7 +6497,7 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
       }
 
       leftpair = (*endgappairs)->first;
-      if (leftpair->gapp == true) {
+      if (leftpair->gapp == true || leftpair->comp == INDEL_COMP || leftpair->comp == SHORTGAP_COMP) {
 	debug(printf("Ran into gap; undoing peel, case 4\n"));
 	pairs = Pairpool_transfer(pairs,*endgappairs);
 	*endgappairs = (List_T) NULL;
@@ -6017,6 +6543,7 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
     }
   }
 
+  /* assert(peeled == NULL || pairs == NULL || ((Pair_T) pairs->first)->comp != INDEL_COMP); */
   debug(
 	if (pairs == NULL) {
 	  printf(" => Top of pairs is NULL.");
@@ -6031,10 +6558,160 @@ peel_rightward (bool *mismatchp, List_T *peeled_pairs, List_T pairs, int *queryd
   *peeled_pairs = peeled;
   return pairs;
 }
+#endif
 
 
-/************************************************************************
- *  Traversal functions
+static List_T
+peel_rightward (int *n_peeled_indels, bool *protectedp, List_T *peeled_pairs, List_T pairs, int *querydp3, int *genomedp3, 
+		int maxpeelback, bool stop_at_indels_p) {
+  List_T peeled = NULL, rest = NULL, pairptr;
+  Pair_T pair, nextpair, leftpair;
+  int npeelback = 0, nconsecutive = 0, init_dynprogindex = DYNPROGINDEX_MINOR, niter;
+  bool stopp;
+  int nmatches;
+#if 0
+  int incursion = 0;
+#endif
+
+  *n_peeled_indels = 0;
+  /* *protectedp = false; -- set by calling procedure */
+
+  debug(printf("Peeling rightward with maxpeelback %d and stop_at_indels_p %d:",maxpeelback,stop_at_indels_p));
+
+  /* Remove initial gaps */
+  while (pairs != NULL && 
+	 ( ((Pair_T) pairs->first)->gapp == true ||
+	   ((Pair_T) pairs->first)->comp == INDEL_COMP ||
+	   ((Pair_T) pairs->first)->comp == SHORTGAP_COMP )) {
+    pairs = Pairpool_pop(pairs,&pair);
+  }
+
+  if (pairs == NULL) {
+    debug(printf(" pairs is empty\n"));
+
+  } else if (stop_at_indels_p == true) {
+    pair = pairs->first;
+    if (pair->gapp == true) {
+      /* Peel known gap */
+      debug(printf(" Known_gap"));
+      peeled = List_transfer_one(peeled,&pairs);
+    }
+
+    /* Peel initial indels anyway */
+    while (pairs != NULL && ( ((Pair_T) pairs->first)->comp == INDEL_COMP || ((Pair_T) pairs->first)->comp == INDEL_COMP )) {
+      debug(printf(" Peel [");
+	    Pair_dump_one(pairs->first,/*zerobasedp*/true);
+	    printf("]"));
+      peeled = List_transfer_one(peeled,&pairs);
+    }
+
+    while (npeelback < maxpeelback && pairs != NULL &&
+	   ((Pair_T) pairs->first)->gapp == false &&
+	   ((Pair_T) pairs->first)->comp != INDEL_COMP &&
+	   ((Pair_T) pairs->first)->comp != SHORTGAP_COMP) {
+      debug(printf(" Peel [");
+	    Pair_dump_one(pairs->first,/*zerobasedp*/true);
+	    printf("]"));
+      if (((Pair_T) pairs->first)->protectedp == true) {
+	*protectedp = true;
+      }
+      peeled = List_transfer_one(peeled,&pairs);
+      npeelback++;
+    }
+
+  } else {
+    /* Don't stop at indels, but do stop at gaps */
+    pair = pairs->first;
+    if (pair->gapp == true) {
+      /* Peel known gap */
+      debug(printf(" Known_gap"));
+      peeled = List_transfer_one(peeled,&pairs);
+    }
+
+    niter = 0;
+    while (npeelback < maxpeelback && niter < MAXITER && pairs != NULL &&
+	   ((Pair_T) pairs->first)->gapp == false) {
+      debug(printf(" Peel [");
+	    Pair_dump_one(pairs->first,/*zerobasedp*/true);
+	    printf("]"));
+      if (((Pair_T) pairs->first)->comp == MATCH_COMP || ((Pair_T) pairs->first)->comp == DYNPROG_MATCH_COMP || ((Pair_T) pairs->first)->comp == AMBIGUOUS_COMP) {
+	npeelback++;
+      } else if (((Pair_T) pairs->first)->comp == INDEL_COMP) {
+	*n_peeled_indels += 1;
+	npeelback--;
+      } else if (((Pair_T) pairs->first)->comp == SHORTGAP_COMP) {
+	*n_peeled_indels += 1;
+	npeelback--;
+      } else {
+	npeelback--;
+      }
+      if (((Pair_T) pairs->first)->protectedp == true) {
+	*protectedp = true;
+      }
+      niter++;
+      peeled = List_transfer_one(peeled,&pairs);
+    }
+
+    if (pairs != NULL && ((Pair_T) pairs->first)->gapp == true) {
+      debug(printf(" Hit gap [");
+	    Pair_dump_one(pairs->first,/*zerobasedp*/true);
+	    printf("]"));
+    }
+  }
+	   
+  if (pairs != NULL &&
+      ( ((Pair_T) pairs->first)->gapp == true || 
+	((Pair_T) pairs->first)->comp == INDEL_COMP ||
+	((Pair_T) pairs->first)->comp == SHORTGAP_COMP )) {
+    /* Don't leave a gap or indel on the top of the pairs */
+    while (peeled != NULL &&
+	   ( ((Pair_T) peeled->first)->gapp == true ||
+	     ((Pair_T) peeled->first)->comp == INDEL_COMP ||
+	     ((Pair_T) peeled->first)->comp == SHORTGAP_COMP)) {
+      debug(printf(" Putback [");
+	    Pair_dump_one(peeled->first,/*zerobasedp*/true);
+	    printf("]"));
+      pairs = List_transfer_one(pairs,&peeled);
+    }
+    if (peeled != NULL) {
+      debug(printf(" Putback [");
+	    Pair_dump_one(peeled->first,/*zerobasedp*/true);
+	    printf("]"));
+      pairs = List_transfer_one(pairs,&peeled); /* This should be match or mismatch */
+    }
+  }
+
+  if (pairs != NULL) {
+    leftpair = pairs->first;
+    *querydp3 = leftpair->querypos - 1;
+    *genomedp3 = leftpair->genomepos - 1;
+  } else if (peeled != NULL) {
+    leftpair = peeled->first;
+    *querydp3 = leftpair->querypos;
+    *genomedp3 = leftpair->genomepos;
+  } else {
+    /* fprintf(stderr,"In peel_rightward, pairs and peeled are both NULL\n"); */
+    /* abort(); */
+  }
+
+  debug(
+	if (pairs == NULL) {
+	  printf(" => Top of pairs is NULL.");
+	} else {
+	  pair = pairs->first;
+	  printf(" => Top of pairs is ");
+	  Pair_dump_one(pair,/*zerobasedp*/true);
+	}
+	printf("\n => querydp3 = %d, genomedp3 = %d\n",*querydp3,*genomedp3);
+	);
+
+  *peeled_pairs = peeled;
+  return pairs;
+}
+
+
+/************************************************************************
+ *  Traversal functions
  ************************************************************************/
 
 /* For peel_rightward and peel_leftward, we set quit_on_gap_p = true,
@@ -6044,20 +6721,19 @@ static List_T
 traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *path, 
 		     Pair_T leftpair, Pair_T rightpair,
 		     Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		     char *queryaaseq_ptr,
-#endif
-		     char *queryseq_ptr, char *queryuc_ptr,
-		     int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool, Dynprog_T dynprog,
+		     char *queryseq_ptr, char *queryuc_ptr, int querylength,
+		     bool watsonp, bool jump_late_p, Pairpool_T pairpool, Dynprog_T dynprog,
+		     Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3,
 		     int maxpeelback, int extraband_single, double defect_rate, int close_indels_mode, 
-		     bool forcep) {
+		     bool forcep, bool finalp) {
   List_T gappairs, peeled_pairs, peeled_path;
   int queryjump, genomejump;
   int querydp5, genomedp5, querydp3, genomedp3;
   int nmatches, nmismatches, nopens, nindels;
   int unknowns, qopens, qindels, topens, tindels, ncanonical, nsemicanonical, nnoncanonical;
   int finalscore, origscore;
-  bool mismatchp = false;
+  bool mismatchp = false, protectedp;
+  int n_peeled_indels;
   Pair_T gappair;
   double min_splice_prob;
   /* int origqueryjump, origgenomejump; */
@@ -6065,8 +6741,8 @@ traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *pat
   debug(printf("\nTRAVERSE_SINGLE_GAP\n"));
   querydp5 = leftpair->querypos + 1;
   genomedp5 = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5--;
-  if (leftpair->genome == ' ') genomedp5--;
+  /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
   querydp3 = rightpair->querypos - 1;
   genomedp3 = rightpair->genomepos - 1;
 
@@ -6075,25 +6751,35 @@ traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *pat
 
   /* Used to peelback only half as much as for a paired gap, to save
      on dynamic programming, but not any more. */
-  pairs = peel_rightward(&mismatchp,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			 pairpool,
-#endif
-			 maxpeelback,/*throughmismatchp*/false,/*quit_on_gap_p*/true,
-			 /*endgappairs*/NULL,&gappair,
-			 /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-  *path = peel_leftward(&mismatchp,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			pairpool,
-#endif
-			maxpeelback,/*throughmismatchp*/false,/*quit_on_gap_p*/true,
-			/*endgappairs*/NULL,&gappair,
-			/*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+  protectedp = false;
+  pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			 maxpeelback,/*stop_at_indels_p*/true);
+  *path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			maxpeelback,/*stop_at_indels_p*/true);
+
+  if (last_genomedp5 != NULL) {
+    if (querydp5 < 0) {
+      querydp5 = 0;
+    }
+    if (querydp3 >= querylength) {
+      querydp3 = querylength - 1;
+    }
+    if (finalp == false && genomedp5 == last_genomedp5[querydp5] && genomedp3 == last_genomedp3[querydp3]) {
+      debug(printf("Already solved for %u..%u at %d..%d\n",genomedp5,genomedp3,querydp5,querydp3));
+
+      pairs = Pairpool_transfer(pairs,peeled_pairs);
+      *path = Pairpool_transfer(*path,peeled_path);
+
+      *filledp = false;		/* This replaces the gap */
+      return pairs;
+    }
+  }
 
   queryjump = querydp3 - querydp5 + 1;
   genomejump = genomedp3 - genomedp5 + 1;
   
   if (queryjump <= 0 || genomejump <= 0) {
+    /* This prevents cases like queryjump 0, genomejump 1 from being solved */
     debug(printf("Unable to perform dynamic programming\n"));
     *filledp = false;
 
@@ -6107,13 +6793,12 @@ traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *pat
 				  &nmatches,&nmismatches,&nopens,&nindels,dynprog,
 				  &(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 				  queryjump,genomejump,querydp5,genomedp5,
-				  chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  cdna_direction,watsonp,jump_late_p,pairpool,
-				  extraband_single,defect_rate,
-				  close_indels_mode,/*widebandp*/true);
+				  chroffset,chrhigh,watsonp,jump_late_p,pairpool,
+				  extraband_single,defect_rate,/*widebandp*/true);
+    if (protectedp == true) {
+      debug(printf("Protecting gappairs\n"));
+      Pair_protect_list(gappairs);
+    }
     debug(Pair_dump_list(gappairs,true));
   }
   debug(printf("  Final score: %d\n",finalscore));
@@ -6139,12 +6824,12 @@ traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *pat
   } else {
     Pair_fracidentity(&nmatches,&unknowns,&nmismatches,&qopens,&qindels, 
 		      &topens,&tindels,&ncanonical,&nsemicanonical,&nnoncanonical,
-		      &min_splice_prob,peeled_pairs,cdna_direction);
+		      &min_splice_prob,peeled_pairs,/*cdna_direction*/0);
     origscore = Dynprog_score(nmatches,nmismatches,qopens,qindels,topens,tindels,defect_rate);
 
     Pair_fracidentity(&nmatches,&unknowns,&nmismatches,&qopens,&qindels, 
 		      &topens,&tindels,&ncanonical,&nsemicanonical,&nnoncanonical,
-		      &min_splice_prob,peeled_path,cdna_direction);
+		      &min_splice_prob,peeled_path,/*cdna_direction*/0);
     origscore += Dynprog_score(nmatches,nmismatches,qopens,qindels,topens,tindels,defect_rate);
     debug(printf("  Orig score: %d, ",origscore));
 
@@ -6160,7 +6845,11 @@ traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *pat
     }
     debug(printf("queryjump = %d, genomejump = %d, Orig score: %d\n",queryjump,genomejump,origscore));
 
-    if (finalscore < 0 || finalscore < origscore) {
+    if (abs(queryjump - genomejump) <= 3) {
+      debug(printf("Minor difference in queryjump and genomejump, so accepting this solution\n"));
+      pairs = Pairpool_transfer(pairs,gappairs);
+      *filledp = true;
+    } else if (finalscore < 0 || finalscore < origscore) {
       /* Put back peeled pairs */
       debug(printf("Bad alignment, so undoing this solution\n"));
       pairs = Pairpool_transfer(pairs,peeled_pairs);
@@ -6172,6 +6861,13 @@ traverse_single_gap (bool *filledp, int *dynprogindex, List_T pairs, List_T *pat
       *filledp = true;
     }
   }
+
+  if (last_genomedp5 != NULL && *filledp == true) {
+    /* Save coordinates so we don't recompute this solution */
+    last_genomedp5[querydp5] = genomedp5;
+    last_genomedp3[querydp3] = genomedp3;
+  }
+
 #endif
 
   return pairs;
@@ -6181,30 +6877,26 @@ static List_T
 traverse_cdna_gap (bool *filledp, bool *incompletep, int *dynprogindex_minor, int *dynprogindex_major,
 		   List_T pairs, List_T *path, Pair_T leftpair, Pair_T rightpair,
 		   Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		   char *queryaaseq_ptr,
-#endif
-		   char *queryseq_ptr, char *queryuc_ptr,
-#if 0
-		   char *genomicseg_ptr, char *genomicuc_ptr,
-#endif
+		   char *queryseq_ptr, char *queryuc_ptr, int querylength,
 		   int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		   Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR, 
+		   Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3,
 		   int maxpeelback, int extramaterial_paired, int extraband_paired, int extraband_single,
-		   double defect_rate, int close_indels_mode) {
+		   double defect_rate, int close_indels_mode, bool finalp) {
   List_T gappairs, peeled_pairs = NULL, peeled_path = NULL;
   int queryjump, genomejump;
   int querydp5, genomedp5, querydp3, genomedp3;
   int finalscore;
   int nmatches, nmismatches, nopens, nindels;
-  bool mismatchp = false, throughmismatchp;
+  bool mismatchp = false, throughmismatchp, protectedp;
+  int n_peeled_indels;
   Pair_T gappair;
 
   debug(printf("\nTRAVERSE_CDNA_GAP\n"));
   querydp5 = leftpair->querypos + 1;
   genomedp5 = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5--;
-  if (leftpair->genome == ' ') genomedp5--;
+  /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
   querydp3 = rightpair->querypos - 1;
   genomedp3 = rightpair->genomepos - 1;
 
@@ -6216,20 +6908,33 @@ traverse_cdna_gap (bool *filledp, bool *incompletep, int *dynprogindex_minor, in
     throughmismatchp = true;
   }
 
-  pairs = peel_rightward(&mismatchp,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			 pairpool,
-#endif
-			 maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			 /*endgappairs*/NULL,&gappair,
-			 /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-  *path = peel_leftward(&mismatchp,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			pairpool,
-#endif
-			maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			/*endgappairs*/NULL,&gappair,
-			/*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+  protectedp = false;
+  pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			 maxpeelback,/*stop_at_indels_p*/true);
+  *path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			maxpeelback,/*stop_at_indels_p*/true);
+
+  if (last_genomedp5 != NULL) {
+    if (querydp5 < 0) {
+      querydp5 = 0;
+    }
+    if (querydp3 >= querylength) {
+      querydp3 = querylength - 1;
+    }
+    if (finalp == false && genomedp5 == last_genomedp5[querydp5] && genomedp3 == last_genomedp3[querydp3]) {
+      debug(printf("Already solved for %u..%u at %d..%d\n",genomedp5,genomedp3,querydp5,querydp3));
+
+      pairs = Pairpool_transfer(pairs,peeled_pairs);
+      *path = Pairpool_transfer(*path,peeled_path);
+
+      *filledp = false;		/* This replaces the gap */
+      return pairs;
+    } else {
+      last_genomedp5[querydp5] = genomedp5;
+      last_genomedp3[querydp3] = genomedp3;
+    }
+  }
+
 
 #if 0
   if (peeled_pairs == NULL || peeled_path == NULL) {
@@ -6245,18 +6950,14 @@ traverse_cdna_gap (bool *filledp, bool *incompletep, int *dynprogindex_minor, in
   genomejump = genomedp3 - genomedp5 + 1;
 
   if (queryjump <= genomejump + MININTRONLEN) {
-    debug(printf("Really a single gap, not a cDNA gap\n"));
+    debug(printf("Really a single gap, not a cDNA gap, since queryjump %d <= genomejump %d + minintronlen %d\n",
+		 queryjump,genomejump,MININTRONLEN));
     gappairs = Dynprog_single_gap(&(*dynprogindex_minor),&finalscore,
 				  &nmatches,&nmismatches,&nopens,&nindels,dynprogM,
 				  &(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 				  queryjump,genomejump,querydp5,genomedp5,
-				  chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  cdna_direction,watsonp,jump_late_p,pairpool,
-				  extraband_single,defect_rate,
-				  close_indels_mode,/*widebandp*/true);
+				  chroffset,chrhigh,watsonp,jump_late_p,pairpool,
+				  extraband_single,defect_rate,/*widebandp*/true);
     debug(Pair_dump_list(gappairs,true));
     debug(printf("  Score: %d\n",finalscore));
     pairs = Pairpool_transfer(pairs,gappairs);
@@ -6274,18 +6975,15 @@ traverse_cdna_gap (bool *filledp, bool *incompletep, int *dynprogindex_minor, in
 #endif
 				/*length1L*/queryjump,/*length1R*/queryjump,/*length2*/genomejump,
 				/*offset1L*/querydp5,/*revoffset1R*/querydp3,/*offset2*/genomedp5,
-				chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				cdna_direction,watsonp,jump_late_p,pairpool,
+				chroffset,chrhigh,cdna_direction,watsonp,jump_late_p,pairpool,
 				extraband_paired,defect_rate);
     debug(Pair_dump_list(gappairs,true));
     *filledp = true;
     if (gappairs == NULL) {
       pairs = Pairpool_transfer(pairs,peeled_pairs);
       *path = Pairpool_transfer(*path,peeled_path);
-      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
+      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,
+				      /*leftpair*/(*path)->first,/*rightpair*/pairs->first,/*knownp*/false);
     } else {
       pairs = Pairpool_transfer(pairs,gappairs);
     }
@@ -6301,14 +6999,12 @@ static List_T
 traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *dynprogindex_major,
 		     List_T pairs, List_T *path, Pair_T leftpair, Pair_T rightpair,
 		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		     char *queryaaseq_ptr,
-#endif
-		     char *queryseq_ptr, char *queryuc_ptr,
+		     char *queryseq_ptr, char *queryuc_ptr, int querylength,
 		     int cdna_direction, bool watsonp, bool jump_late_p,
 		     Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		     Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3,
 		     int maxpeelback, int extramaterial_paired, int extraband_paired, int extraband_single,
-		     double defect_rate, int close_indels_mode, bool finalp) {
+		     double defect_rate, int close_indels_mode, bool finalp, bool simplep) {
   List_T gappairs, gappairs_alt, peeled_pairs = NULL, peeled_path = NULL, p;
   Pair_T pair;
   int queryjump, genomejump;
@@ -6319,6 +7015,8 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
   int nmismatches_alt;
   int acceptable_nmismatches;
   bool mismatch_rightward_p = false, mismatch_leftward_p = false, throughmismatchp;
+  bool stop_at_indels_p, protectedp;
+  int n_peeled_indels_rightward, n_peeled_indels_leftward;
   double prob2, prob3;
 #ifndef PMAP
   List_T micropairs;
@@ -6332,10 +7030,12 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 
   debug(printf("\nTRAVERSE_GENOME_GAP\n"));
 
+  stop_at_indels_p = false;	/* ? true when finalp == true */
+
   querydp5 = leftpair->querypos + 1;
   genomedp5 = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5--;
-  if (leftpair->genome == ' ') genomedp5--;
+  /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
   querydp3 = rightpair->querypos - 1;
   genomedp3 = rightpair->genomepos - 1;
 
@@ -6352,20 +7052,11 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
   genomejump = genomedp3 - genomedp5 + 1;
 
   if (querydp5 != querydp3 + 1) {
-    pairs = peel_rightward(&mismatch_rightward_p,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			   pairpool,
-#endif
-			   maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			   /*endgappairs*/NULL,&gappair,
-			   /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-    *path = peel_leftward(&mismatch_leftward_p,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			  pairpool,
-#endif
-			  maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			  /*endgappairs*/NULL,&gappair,
-			  /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+    protectedp = false;
+    pairs = peel_rightward(&n_peeled_indels_rightward,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			   maxpeelback,stop_at_indels_p);
+    *path = peel_leftward(&n_peeled_indels_leftward,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			  maxpeelback,stop_at_indels_p);
 
   } else {
 
@@ -6386,22 +7077,13 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 			     cdna_direction);
     debug(printf("Introntype at %u..%u is %s\n",genomedp5-1,genomedp3+1,Intron_type_string(introntype)));
 
-    pairs = peel_rightward(&mismatch_rightward_p,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			   pairpool,
-#endif
-			   maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			   /*endgappairs*/NULL,&gappair,
-			   /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-    *path = peel_leftward(&mismatch_leftward_p,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			  pairpool,
-#endif
-			  maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			  /*endgappairs*/NULL,&gappair,
-			  /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+    protectedp = false;
+    pairs = peel_rightward(&n_peeled_indels_rightward,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			   maxpeelback,stop_at_indels_p);
+    *path = peel_leftward(&n_peeled_indels_leftward,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			  maxpeelback,stop_at_indels_p);
 
-    if (novelsplicingp == true && mismatch_rightward_p == false && mismatch_leftward_p == false) {
+    if (finalp == false && novelsplicingp == true /* && mismatch_rightward_p == false && mismatch_leftward_p == false */) {
       debug(printf("No mismatches seen\n"));
       if ((cdna_direction > 0 && introntype == GTAG_FWD)
 #ifndef PMAP
@@ -6417,21 +7099,42 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
     }
   }
 
-#else
-  pairs = peel_rightward(&mismatch_rightward_p,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			 pairpool,
-#endif
-			 maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			 /*endgappairs*/NULL,&gappair,
-			 /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-  *path = peel_leftward(&mismatch_leftward_p,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			pairpool,
-#endif
-			maxpeelback,throughmismatchp,/*quit_on_gap_p*/false,
-			/*endgappairs*/NULL,&gappair,
-			/*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+#else  /* SHORTCUT */
+  if (defect_rate < DEFECT_HIGHQ) {
+    maxpeelback = 6;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    maxpeelback = 8;
+  } else {
+    maxpeelback = 10;
+  }
+
+  protectedp = false;
+  pairs = peel_rightward(&n_peeled_indels_rightward,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			 maxpeelback,stop_at_indels_p);
+  *path = peel_leftward(&n_peeled_indels_leftward,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			maxpeelback,stop_at_indels_p);
+
+  if (last_genomedp5 != NULL) {
+    if (querydp5 < 0) {
+      querydp5 = 0;
+    }
+    if (querydp3 >= querylength) {
+      querydp3 = querylength - 1;
+    }
+    if (finalp == false && genomedp5 == last_genomedp5[querydp5] && genomedp3 == last_genomedp3[querydp3]) {
+      debug(printf("Already solved for %u..%u at %d..%d\n",genomedp5,genomedp3,querydp5,querydp3));
+
+      pairs = Pairpool_transfer(pairs,peeled_pairs);
+      *path = Pairpool_transfer(*path,peeled_path);
+
+      *filledp = false;		/* This replaces the gap */
+      return pairs;
+    } else {
+      last_genomedp5[querydp5] = genomedp5;
+      last_genomedp3[querydp3] = genomedp3;
+    }
+  }
+
 #endif
 
 
@@ -6445,13 +7148,12 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 				  &nmatches,&nmismatches,&nopens,&nindels,dynprogM,
 				  &(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 				  queryjump,genomejump,querydp5,genomedp5,
-				  chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  cdna_direction,watsonp,jump_late_p,pairpool,
-				  extraband_single,defect_rate,
-				  close_indels_mode,/*widebandp*/true);
+				  chroffset,chrhigh,watsonp,jump_late_p,pairpool,
+				  extraband_single,defect_rate,/*widebandp*/true);
+    if (protectedp == true) {
+      debug(printf("Protecting gappairs\n"));
+      Pair_protect_list(gappairs);
+    }
     debug(Pair_dump_list(gappairs,true));
     debug(printf("  Score: %d\n",finalscore));
 
@@ -6461,6 +7163,7 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
   } else {
     /* Set genomejump approximately equal to queryjump to have square
        dynamic programming matrices */
+    /* The canonical reward for finalp == true is too high */
     genomejump = queryjump + extramaterial_paired;
     gappairs = Dynprog_genome_gap(&(*dynprogindex_major),&finalscore,&new_leftgenomepos,&new_rightgenomepos,
 				  &left_prob,&right_prob,&nmatches,&nmismatches,&nopens,&nindels,
@@ -6468,17 +7171,22 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 				  &(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 				  queryjump,genomejump,genomejump,querydp5,genomedp5,genomedp3,
 				  chrnum,chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-				  defect_rate,maxpeelback,/*halfp*/false,finalp,
-				  /*use_probabilities_p*/false,/*score_threshold*/0,
-				  splicingp);
+				  cdna_direction,watsonp,jump_late_p,pairpool,
+				  extraband_paired + n_peeled_indels_leftward + n_peeled_indels_rightward,
+				  defect_rate,maxpeelback,/*halfp*/false,/*finalp*/false,splicingp);
+    if (protectedp == true) {
+      debug(printf("Protecting gappairs\n"));
+      Pair_protect_list(gappairs);
+    }
 
     if (gappairs == NULL) {
-      /* *shiftp = false; */
-      debug(printf("No shift, since gappairs is NULL: intron is disallowed?\n"));
+      if (simplep == true) {
+	*shiftp = true;
+	debug(printf("Shift, since gappairs is NULL and simplep is true\n"));
+      } else {
+	/* *shiftp = false; */
+	debug(printf("No shift, since gappairs is NULL: intron is disallowed?\n"));
+      }
 
     } else if (new_leftgenomepos != (int) leftpair->genomepos || new_rightgenomepos != (int) rightpair->genomepos) {
       *shiftp = true;
@@ -6489,9 +7197,12 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
       debug(printf("No shift in intron location\n"));
     }
     debug(Pair_dump_list(gappairs,true));
-    debug(printf("  gappairs score: %d\n",finalscore));
-    debug(fprintf(stderr,"  gappairs score: %d\n",finalscore));
+    debug(printf("  gappairs score (%d..%d, %u..%u, dir %d): %d\n",
+		 querydp5,querydp3,genomedp5,genomedp3,cdna_direction,finalscore));
+    debug(fprintf(stderr,"  gappairs score (%d..%d, %u..%u, dir %d): %d\n",
+		  querydp5,querydp3,genomedp5,genomedp3,cdna_direction,finalscore));
 
+#if 0
     /* prob = 1.0 - (1.0 - left_prob)*(1.0 - right_prob); */
     if (finalp == true && novelsplicingp == true && (left_prob < 0.90 || right_prob < 0.90)) {
       /* Bad intron.  See if alternative with indel is better.  Check
@@ -6503,14 +7214,13 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 					&exonhead,&introntype,dynprogL,dynprogR,
 					&(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 					queryjump,genomejump,genomejump,querydp5,genomedp5,genomedp3,
-					chrnum,chroffset,chrhigh,
-#ifdef PMAP
-					queryaaseq_ptr,
-#endif
-					cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-					defect_rate,maxpeelback,/*halfp*/false,/*finalp*/true,
-					/*use_probabilities_p*/true,/*score_threshold*/finalscore + QOPEN + 3*QINDEL,
-					splicingp);
+					chrnum,chroffset,chrhigh,cdna_direction,watsonp,jump_late_p,pairpool,
+					extraband_paired + n_peeled_indels_leftward + n_peeled_indels_rightward,
+					defect_rate,maxpeelback,/*halfp*/false,/*finalp*/true,splicingp);
+      if (protectedp == true) {
+	debug(printf("Protecting gappairs_alt\n"));
+	Pair_protect_list(gappairs_alt);
+      }
 
       debug(Pair_dump_list(gappairs_alt,true));
       debug(printf("  gappairs_alt score: %d, left prob %f, right prob %f\n",finalscore_alt,left_prob_alt,right_prob_alt));
@@ -6522,6 +7232,7 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 	debug(printf(" keeping original\n"));
       }
     }
+#endif
 
     if (defect_rate < DEFECT_HIGHQ) {
       acceptable_nmismatches = 2;
@@ -6536,21 +7247,33 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
     
     if (gappairs == NULL) {
       *filledp = false;
-      /* Put back peeled pairs, but mark pairs as disallowed */
-      debug(printf("gappairs is false, so disallowed\n"));
-      for (p = peeled_pairs; p != NULL; p = p->rest) {
-	pair = (Pair_T) p->first;
-	pair->disallowedp = true;
-      }
-      for (p = peeled_path; p != NULL; p = p->rest) {
-	pair = (Pair_T) p->first;
-	pair->disallowedp = true;
+      if (simplep == true) {
+	/* Put back peeled pairs */
+	debug(printf("gappairs is false, but simple, so allowed\n"));
+	for (p = peeled_pairs; p != NULL; p = p->rest) {
+	  pair = (Pair_T) p->first;
+	}
+	for (p = peeled_path; p != NULL; p = p->rest) {
+	  pair = (Pair_T) p->first;
+	}
+      } else {
+	/* Put back peeled pairs, but mark pairs as disallowed */
+	debug(printf("gappairs is false, so disallowed\n"));
+	for (p = peeled_pairs; p != NULL; p = p->rest) {
+	  pair = (Pair_T) p->first;
+	  pair->disallowedp = true;
+	}
+	for (p = peeled_path; p != NULL; p = p->rest) {
+	  pair = (Pair_T) p->first;
+	  pair->disallowedp = true;
+	}
       }
 
       pairs = Pairpool_transfer(pairs,peeled_pairs);
       *path = Pairpool_transfer(*path,peeled_path);
       introntype = NONINTRON;
 
+#if 0
     } else if (!finalp && finalscore < 0) {
       *filledp = false;
       /* Put back peeled pairs */
@@ -6558,9 +7281,11 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
       pairs = Pairpool_transfer(pairs,peeled_pairs);
       *path = Pairpool_transfer(*path,peeled_path);
       introntype = NONINTRON;
+#endif
 
 #if 0
-    } else if (false && defect_rate > DEFECT_MEDQ) {
+    } else if (defect_rate > DEFECT_MEDQ) {
+      /* Should look for them, especially for GSNAP short reads */
       /* Don't look for microexons in low-quality sequences */
       debug(printf("Don't look for microexon in low-quality sequence\n"));
       *filledp = true;
@@ -6585,11 +7310,7 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 					 /*sequenceuc1*/&(queryuc_ptr[querydp5]),
 					 /*length1*/queryjump,/*length2L*/genomejump,/*length2R*/genomejump,
 					 /*offset1*/querydp5,/*offset2L*/genomedp5,/*revoffset2R*/genomedp3,
-					 cdna_direction,
-#ifdef PMAP
-					 queryaaseq_ptr,genomicuc_ptr,
-#endif
-					 queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,
+					 cdna_direction,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,
 					 pairpool,defect_rate);
       
       if (micropairs == NULL) {
@@ -6601,7 +7322,7 @@ traverse_genome_gap (bool *filledp, bool *shiftp, int *dynprogindex_minor, int *
 	debug(Pair_dump_list(micropairs,/*zerobasedp*/true));
 	debug(printf("\n"));
 
-	if (nindels == 0 && nmismatches < 4) {
+	if (1 || (nindels == 0 && nmismatches < 4)) {
 	  /* Have a higher standard */
 	  if (prob2 >= 0.95 && prob3 >= 0.95) {
 	    debug(printf("Transferring microexon pairs\n"));
@@ -6636,19 +7357,17 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 			  Pair_T leftpair, Pair_T rightpair, bool left_end_intron_p, bool right_end_intron_p,
 			  Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
 			  int midquerypos, int midgenomepos, 
-#ifdef PMAP
-			  char *queryaaseq_ptr,
-#endif
-			  char *queryseq_ptr, char *queryuc_ptr, int cdna_direction, bool watsonp,
+			  char *queryseq_ptr, char *queryuc_ptr, int querylength, int cdna_direction, bool watsonp,
 			  bool jump_late_p, Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogR, 
+			  Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3,
 			  int maxpeelback, int nullgap, int extramaterial_paired, int extraband_paired,
-			  double defect_rate) {
+			  double defect_rate, bool simplep, bool finalp) {
   List_T single_gappairs, dual_gappairs_1 = NULL, dual_gappairs_2 = NULL,
     right_gappairs = NULL, left_gappairs = NULL, peeled_pairs, peeled_path;
   int queryjump, genomejump;
   int querydp5, genomedp5, querydp3, genomedp3;
   int new_leftgenomepos, new_rightgenomepos;
-  double left_prob, right_prob;
+  double single_left_prob, single_right_prob, dual_left_prob_1, dual_right_prob_1, dual_left_prob_2, dual_right_prob_2;
   int querydp5_dual, querydp3_dual, genomedp5_dual, genomedp3_dual;
   int querydp5_left, querydp3_left, genomedp5_left, genomedp3_left;
   int querydp5_right, querydp3_right, genomedp5_right, genomedp3_right;
@@ -6660,7 +7379,8 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
   int single_introntype, dual_introntype_1, dual_introntype_2, left_introntype, right_introntype,
     canonical_introntype, semicanonical_introntype_1, semicanonical_introntype_2;
   double middle_exonprob;
-  bool singlep = false, mismatchp = false, single_canonical_p, dual_canonical_p;
+  bool singlep = false, mismatchp = false, single_canonical_p, dual_canonical_p, protectedp;
+  int n_peeled_indels;
   Pair_T gappair;
 
   debug(printf("\nTRAVERSE_DUAL_GENOME_GAP: left_end_intron_p %d, right_end_intron_p %d\n",
@@ -6679,25 +7399,45 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 
   querydp5 = leftpair->querypos + 1;
   genomedp5 = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5--;
-  if (leftpair->genome == ' ') genomedp5--;
+  /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
   querydp3 = rightpair->querypos - 1;
   genomedp3 = rightpair->genomepos - 1;
 
-  pairs = peel_rightward(&mismatchp,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			 pairpool,
-#endif
-			 maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			 /*endgappairs*/NULL,&gappair,
-			 /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-  *path = peel_leftward(&mismatchp,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			pairpool,
-#endif
-			maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			/*endgappairs*/NULL,&gappair,
-			/*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+  if (defect_rate < DEFECT_HIGHQ) {
+    maxpeelback = 6;
+  } else if (defect_rate < DEFECT_MEDQ) {
+    maxpeelback = 8;
+  } else {
+    maxpeelback = 10;
+  }
+
+  protectedp = false;
+  pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			 maxpeelback,/*stop_at_indels_p*/false);
+  *path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			maxpeelback,/*stop_at_indels_p*/false);
+
+  if (last_genomedp5 != NULL) {
+    if (querydp5 < 0) {
+      querydp5 = 0;
+    }
+    if (querydp3 >= querylength) {
+      querydp3 = querylength - 1;
+    }
+    if (0 && finalp == false && genomedp5 == last_genomedp5[querydp5] && genomedp3 == last_genomedp3[querydp3]) {
+      /* Don't want to abort this procedure early */
+      debug(printf("Already solved for %u..%u at %d..%d\n",genomedp5,genomedp3,querydp5,querydp3));
+
+      pairs = Pairpool_transfer(pairs,peeled_pairs);
+      *path = Pairpool_transfer(*path,peeled_path);
+
+      return pairs;
+    } else {
+      last_genomedp5[querydp5] = genomedp5;
+      last_genomedp3[querydp3] = genomedp3;
+    }
+  }
 
   queryjump = querydp3 - querydp5 + 1;
   genomejump = queryjump + extramaterial_paired;
@@ -6705,18 +7445,8 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
   if (queryjump > nullgap) {
     pairs = Pairpool_transfer(pairs,peeled_pairs);
     *path = Pairpool_transfer(*path,peeled_path);
-
-    /* No need to compute queryjump and genomejump */
-    /*
-      leftpair = (*path)->first;
-      rightpair = pairs->first;
-      queryjump = rightpair->querypos - leftpair->querypos - 1;
-      genomejump = rightpair->genomepos - leftpair->genomepos - 1;
-      if (leftpair->cdna == ' ') queryjump++;
-      if (leftpair->genome == ' ') genomejump++;
-    */
-
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,
+				    /*leftpair*/(*path)->first,/*rightpair*/pairs->first,/*knownp*/false);
 
     return pairs;
   }
@@ -6726,34 +7456,21 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 		 genomedp5,genomejump,genomedp3,genomejump));
     pairs = Pairpool_transfer(pairs,peeled_pairs);
     *path = Pairpool_transfer(*path,peeled_path);
-
-    /* No need to compute queryjump and genomejump */
-    /*
-      leftpair = (*path)->first;
-      rightpair = pairs->first;
-      queryjump = rightpair->querypos - leftpair->querypos - 1;
-      genomejump = rightpair->genomepos - leftpair->genomepos - 1;
-      if (leftpair->cdna == ' ') queryjump++;
-      if (leftpair->genome == ' ') genomejump++;
-    */
-
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
+    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,
+				    /*leftpair*/(*path)->first,/*rightpair*/pairs->first,/*knownp*/false);
 
     return pairs;
   }
   
+  /* Want finalp == true to get best chance for canonical splice site */
   single_gappairs = Dynprog_genome_gap(&(*dynprogindex),&single_score,&new_leftgenomepos,&new_rightgenomepos,
-				       &left_prob,&right_prob,&single_nmatches,&nmismatches,&nopens,&nindels,
+				       &single_left_prob,&single_right_prob,&single_nmatches,&nmismatches,&nopens,&nindels,
 				       &exonhead,&single_introntype,dynprogL,dynprogR,
 				       &(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 				       queryjump,genomejump,genomejump,querydp5,genomedp5,genomedp3,
 				       chrnum,chroffset,chrhigh,
-#ifdef PMAP
-				       queryaaseq_ptr,
-#endif
 				       cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-				       defect_rate,maxpeelback,/*halfp*/false,/*finalp*/false,
-				       /*use_probabilities_p*/false,/*score_threshold*/0,splicingp);
+				       defect_rate,maxpeelback,/*halfp*/false,/*finalp*/true,splicingp);
 
   debug(Pair_check_list(single_gappairs));
 
@@ -6764,7 +7481,10 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
     single_goodness = single_nmatches + MISMATCH*nmismatches + QOPEN*(nopens-1) + QINDEL*nindels;
   }
 
-  if (single_introntype == canonical_introntype) {
+#if 0
+  if (single_gappairs == NULL) {
+    single_canonical_p = false;
+  } else if (single_introntype == canonical_introntype) {
     single_canonical_p = true;
   } else if (single_introntype == semicanonical_introntype_1 ||
 	     single_introntype == semicanonical_introntype_2) {
@@ -6772,6 +7492,13 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
   } else {
     single_canonical_p = false;
   }
+#else
+  if (single_left_prob > 0.9 && single_right_prob > 0.9) {
+    single_canonical_p = true;
+  } else {
+    single_canonical_p = false;
+  }
+#endif
 
 
   /* Right of short exon */
@@ -6790,19 +7517,16 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
     dual_gappairs_2 = NULL;
 
   } else {
+    /* Want finalp == true to get best chance for canonical splice site */
     dual_gappairs_2 = Dynprog_genome_gap(&(*dynprogindex),&dual_score_2,&new_leftgenomepos,&new_rightgenomepos,
-					 &left_prob,&right_prob,&dual_nmatches_2,&nmismatches,&nopens,&nindels,
+					 &dual_left_prob_2,&dual_right_prob_2,&dual_nmatches_2,&nmismatches,&nopens,&nindels,
 					 &right_exonhead,&dual_introntype_2,dynprogL,dynprogR,
 					 &(queryseq_ptr[querydp5_dual]),&(queryuc_ptr[querydp5_dual]),
 					 queryjump,genomejump,genomejump,
 					 querydp5_dual,genomedp5_dual,genomedp3_dual,
 					 chrnum,chroffset,chrhigh,
-#ifdef PMAP
-					 queryaaseq_ptr,
-#endif
 					 cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-					 defect_rate,maxpeelback,/*halfp*/true,/*finalp*/false,
-					 /*use_probabilities_p*/false,/*score_threshold*/0,splicingp);
+					 defect_rate,maxpeelback,/*halfp*/true,/*finalp*/true,splicingp);
 
     dual_goodness = dual_nmatches_2 + MISMATCH*nmismatches + QOPEN*nopens + QINDEL*nindels;
 
@@ -6822,23 +7546,32 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
       dual_gappairs_1 = NULL;
 
     } else {
+      /* Want finalp == true to get best chance for canonical splice site */
       dual_gappairs_1 = Dynprog_genome_gap(&(*dynprogindex),&dual_score_1,&new_leftgenomepos,&new_rightgenomepos,
-					   &left_prob,&right_prob,&dual_nmatches_1,&nmismatches,&nopens,&nindels,
+					   &dual_left_prob_1,&dual_right_prob_1,&dual_nmatches_1,&nmismatches,&nopens,&nindels,
 					   &left_exonhead,&dual_introntype_1,dynprogL,dynprogR,
 					   &(queryseq_ptr[querydp5_dual]),&(queryuc_ptr[querydp5_dual]),
 					   queryjump,genomejump,genomejump,
 					   querydp5_dual,genomedp5_dual,genomedp3_dual,
 					   chrnum,chroffset,chrhigh,
-#ifdef PMAP
-					   queryaaseq_ptr,
-#endif
 					   cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-					   defect_rate,maxpeelback,/*halfp*/true,/*finalp*/false,
-					   /*use_probabilities_p*/false,/*score_threshold*/0,splicingp);
-      
+					   defect_rate,maxpeelback,/*halfp*/true,/*finalp*/true,splicingp);
+
       dual_goodness += dual_nmatches_1 + MISMATCH*nmismatches + QOPEN*nopens + QINDEL*nindels;
 
-      if (dual_introntype_1 == canonical_introntype && dual_introntype_2 == canonical_introntype) {
+      if (dual_gappairs_1 == NULL || dual_gappairs_2 == NULL) {
+	dual_canonical_p = false;
+#if 0
+      } else if (dual_introntype_1 == canonical_introntype && dual_introntype_2 == canonical_introntype) {
+	dual_canonical_p = true;
+#endif
+#if 0
+      } else if (dual_left_prob_1 > 0.9 && dual_right_prob_1 > 0.9 &&
+		 dual_left_prob_2 > 0.9 && dual_right_prob_2 > 0.9) {
+	dual_canonical_p = true;
+#endif
+      } else if (dual_left_prob_1 > 0.9 || dual_right_prob_1 > 0.9 ||
+		 dual_left_prob_2 > 0.9 || dual_right_prob_2 > 0.9) {
 	dual_canonical_p = true;
       } else {
 	dual_canonical_p = false;
@@ -6847,7 +7580,7 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
   }
 
   if (dual_gappairs_2 == NULL || dual_gappairs_1 == NULL) {
-    debug(printf("Single score wins\n"));
+    debug(printf("Single score wins becausel dual_guappairs_2 is NULL or dual_gappairs_1 is NULL\n"));
     debug(printf("Loser: dual_gappairs\n"));
     debug(Pair_dump_list(dual_gappairs_2,true));
     debug(Pair_dump_list(dual_gappairs_1,true));
@@ -6865,6 +7598,7 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
     } else {
       interexon_region = new_rightgenomepos - new_leftgenomepos;
       
+#if 0
       if (dual_introntype_2 == canonical_introntype) {
 	middle_exonlength += DUAL_HALFCANONICAL_POINTS;
 	debug(printf("Add canonical credit of %d for right intron\n",DUAL_HALFCANONICAL_POINTS));
@@ -6873,14 +7607,23 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 	middle_exonlength += DUAL_HALFCANONICAL_POINTS;
 	debug(printf("Add canonical credit of %d for left intron\n",DUAL_HALFCANONICAL_POINTS));
       }
+#else
+      if (dual_left_prob_2 > 0.9 && dual_right_prob_2 > 0.9) {
+	middle_exonlength += DUAL_HALFCANONICAL_POINTS;
+	debug(printf("Add canonical credit of %d for right intron\n",DUAL_HALFCANONICAL_POINTS));
+      }
+      if (dual_left_prob_1 > 0.9 && dual_right_prob_1 > 0.9) {
+	middle_exonlength += DUAL_HALFCANONICAL_POINTS;
+	debug(printf("Add canonical credit of %d for left intron\n",DUAL_HALFCANONICAL_POINTS));
+      }
+#endif
 
       middle_exonprob = 1.0-pow(1.0-pow(4.0,-(double) middle_exonlength),(double) interexon_region);
       
-      debug(printf("Single score = %d (%d matches).  Single canonical: %d.  Dual score = %d & %d (%d & %d matches).  Dual canonical: %d/%d.  ",
+      debug(printf("Single score = %d (%d matches).  Single canonical: %d.  Dual score = %d & %d (%d & %d matches).  Dual canonical: %d.  ",
 		   single_score,single_nmatches,single_canonical_p,
 		   dual_score_1,dual_score_2,dual_nmatches_1,dual_nmatches_2,
-		   dual_introntype_1 == canonical_introntype,
-		   dual_introntype_2 == canonical_introntype));
+		   dual_canonical_p));
       debug(printf("Single goodness = %d.  Dual goodness = %d.  ",
 		   single_goodness,dual_goodness));
       debug(printf("Probability is %g.  ",middle_exonprob));
@@ -6888,14 +7631,16 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 
     /* Want high threshold for accepting dual intron */
     if (dual_canonical_p == true && middle_exonprob < 0.001 &&
-	(single_canonical_p == false || single_goodness <= dual_goodness)) {
+	single_canonical_p == false && single_goodness <= dual_goodness) {
       debug(printf("Dual scores win\n"));
       debug(printf("Loser: single_gappairs\n"));
       debug(Pair_dump_list(single_gappairs,true));
       debug(printf("Winner: Transferring dual_gappairs_2 onto pairs\n"));
+      Pair_protect_list(dual_gappairs_2);
       debug(Pair_dump_list(dual_gappairs_2,true));
       pairs = Pairpool_transfer(pairs,dual_gappairs_2);
       debug(printf("Winner: Transferring dual_gappairs_1 onto pairs\n"));
+      Pair_protect_list(dual_gappairs_1);
       debug(Pair_dump_list(dual_gappairs_1,true));
       pairs = Pairpool_transfer(pairs,dual_gappairs_1);
     } else {
@@ -6929,18 +7674,14 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 
       } else {
 	right_gappairs = Dynprog_genome_gap(&(*dynprogindex),&right_score,&new_leftgenomepos,&new_rightgenomepos,
-					    &left_prob,&right_prob,&right_nmatches,&nmismatches,&nopens,&nindels,
+					    &single_left_prob,&single_right_prob,&right_nmatches,&nmismatches,&nopens,&nindels,
 					    &right_exonhead,&right_introntype,dynprogL,dynprogR,
 					    &(queryseq_ptr[querydp5_right]),&(queryuc_ptr[querydp5_right]),
 					    queryjump,genomejump,genomejump,
 					    querydp5_right,genomedp5_right,genomedp3_right,
 					    chrnum,chroffset,chrhigh,
-#ifdef PMAP
-					    queryaaseq_ptr,
-#endif
 					    cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-					    defect_rate,maxpeelback,/*halfp*/false,/*finalp*/false,
-					    /*use_probabilities_p*/false,/*score_threshold*/0,splicingp);
+					    defect_rate,maxpeelback,/*halfp*/false,/*finalp*/false,splicingp);
 
 	right_goodness = right_nmatches + MISMATCH*nmismatches + QOPEN*nopens + QINDEL*nindels;
 	debug(printf("Right goodness (keeping left intron only) = %d\n",right_goodness));
@@ -6972,20 +7713,15 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
 
       } else {
 	left_gappairs = Dynprog_genome_gap(&(*dynprogindex),&left_score,&new_leftgenomepos,&new_rightgenomepos,
-					   &left_prob,&right_prob,&left_nmatches,&nmismatches,&nopens,&nindels,
+					   &single_left_prob,&single_right_prob,&left_nmatches,&nmismatches,&nopens,&nindels,
 					   &left_exonhead,&left_introntype,dynprogL,dynprogR,
 					   &(queryseq_ptr[querydp5_left]),&(queryuc_ptr[querydp5_left]),
 					   queryjump,genomejump,genomejump,
 					   querydp5_left,genomedp5_left,genomedp3_left,
 					   chrnum,chroffset,chrhigh,
-#ifdef PMAP
-					   queryaaseq_ptr,
-#endif
 					   cdna_direction,watsonp,jump_late_p,pairpool,extraband_paired,
-					   defect_rate,maxpeelback,/*halfp*/false,/*finalp*/false,
-					   /*use_probabilities_p*/false,/*score_threshold*/0,splicingp);
+					   defect_rate,maxpeelback,/*halfp*/false,/*finalp*/false,splicingp);
       
-
 	left_goodness = left_nmatches + MISMATCH*nmismatches + QOPEN*nopens + QINDEL*nindels;
 	debug(printf("Left goodness (keeping right intron only) = %d\n",left_goodness));
 
@@ -6999,7 +7735,13 @@ traverse_dual_genome_gap (int *dynprogindex, List_T pairs, List_T *path,
     }
 
     /* Finally transfer best single result */
+    if (single_gappairs == right_gappairs) {
+      pairs = Pairpool_transfer(pairs,peeled_pairs);
+    }
     pairs = Pairpool_transfer(pairs,single_gappairs);
+    if (single_gappairs == left_gappairs) {
+      *path = Pairpool_transfer(*path,peeled_path);
+    }
 
   }
 
@@ -7055,9 +7797,6 @@ distalmedial_ending5 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
 		      int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
-#ifdef PMAP
-		      char *queryaaseq_ptr,
-#endif
 		      char *queryseq_ptr, char *queryuc_ptr,
 		      int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		      Dynprog_T dynprog, int maxpeelback, int extramaterial_end,
@@ -7067,7 +7806,8 @@ distalmedial_ending5 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
   int querydp5, genomedp5, querydp3_distalgap, genomedp3_distalgap, querydp3_medialgap, genomedp3_medialgap;
   int continuous_goodness_distalgap = 0, continuous_goodness_medialgap = 0,
     nmatches, nmismatches, nopens, nindels;
-  bool mismatchp = false;
+  bool mismatchp = false, protectedp;
+  int n_peeled_indels;
   Pair_T gappair;
   bool knownsplice_medial_p = false;
   Endalign_T endalign;
@@ -7081,14 +7821,10 @@ distalmedial_ending5 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
 
   /* Used to peelback only half as much as for a paired gap, to save
      on dynamic programming, but not any more. */
-  *pairs = peel_rightward(&mismatchp,&peeled_pairs,*pairs,&querydp3_distalgap,&genomedp3_distalgap,
-#ifdef WASTE
-			  pairpool,
-#endif
-			  maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			  &endgappairs,&gappair,
-			  &querydp3_medialgap,&genomedp3_medialgap);
-  if (endgappairs == NULL) {
+  protectedp = false;
+  *pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,*pairs,&querydp3_distalgap,&genomedp3_distalgap,
+			  maxpeelback,/*stop_at_indels_p*/true);
+  if (0 && endgappairs == NULL) {
     *chop_exon_p = false;
     return peeled_pairs;
 
@@ -7143,17 +7879,6 @@ distalmedial_ending5 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
       debug(Pair_dump_list(*pairs,true));
       debug(printf("\n"));
 
-#ifdef PMAP
-      continuous_gappairs_medialgap = Dynprog_end5_gap(&(*dynprogindex_minor),&(*finalscore),
-						       &nmatches,&nmismatches,&nopens,&nindels,dynprog,
-						       &(queryseq_ptr[querydp3_medialgap]),&(queryuc_ptr[querydp3_medialgap]),
-						       queryjump,genomejump,querydp3_medialgap,genomedp3_medialgap,
-						       chroffset,chrhigh,queryaaseq_ptr,cdna_direction,watsonp,jump_late_p,pairpool,
-						       extraband_end,defect_rate,/*endalign*/QUERYEND_INDELS);
-      *ambig_end_length = 0;
-
-
-#else
       if (0 && splicesites != NULL) {
 	/* Use only for extend_ending5 */
 	continuous_gappairs_medialgap = Dynprog_end5_known(&knownsplice_medial_p,&(*dynprogindex_minor),&(*finalscore),
@@ -7178,7 +7903,6 @@ distalmedial_ending5 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
 							 extraband_end,defect_rate,/*endalign*/QUERYEND_INDELS);
 	*ambig_end_length = 0;
       }
-#endif
 
       continuous_goodness_medialgap = nmatches + MISMATCH*nmismatches + QOPEN*nopens + QINDEL*nindels;
       debug(printf("Continuous_goodness_medialgap %d = %d + %d*%d + %d*%d + %d*%d\n",
@@ -7229,9 +7953,6 @@ extend_ending5 (bool *knownsplicep, int *dynprogindex_minor,
 		int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
-#ifdef PMAP
-		char *queryaaseq_ptr,
-#endif
 		char *queryseq_ptr, char *queryuc_ptr,
 		int cdna_direction, bool watsonp, bool jump_late_p, Pairpool_T pairpool,
 		Dynprog_T dynprog, int maxpeelback, int extramaterial_end,
@@ -7240,7 +7961,8 @@ extend_ending5 (bool *knownsplicep, int *dynprogindex_minor,
   int queryjump, genomejump;
   int querydp5, genomedp5, querydp3_distalgap, genomedp3_distalgap;
   int nmatches, nmismatches, nopens, nindels;
-  bool mismatchp = false;
+  bool mismatchp = false, protectedp = false;
+  int n_peeled_indels = 0;
   Pair_T gappair, firstpair;
 
 
@@ -7258,15 +7980,12 @@ extend_ending5 (bool *knownsplicep, int *dynprogindex_minor,
   if (endalign == QUERYEND_NOGAPS) {
     /* Don't peelback on extension */
   } else if (maxpeelback == 0) {
+    /* Actually, we should peelback after trim_ends, because indel placement could be wrong */
     /* Don't peelback on BEST_LOCAL after trim_ends */
   } else {
-    *pairs = peel_rightward(&mismatchp,&peeled_pairs,*pairs,&querydp3_distalgap,&genomedp3_distalgap,
-#ifdef WASTE
-			    pairpool,
-#endif
-			    maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/true,
-			    /*endgappairs*/NULL,&gappair,
-			    /*querydp3_medialgap*/NULL,/*genomedp3_medialgap*/NULL);
+    protectedp = false;
+    *pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,*pairs,&querydp3_distalgap,&genomedp3_distalgap,
+			    maxpeelback,/*stop_at_indels_p*/true);
   }
   
   queryjump = querydp3_distalgap - querydp5 + 1;
@@ -7286,15 +8005,6 @@ extend_ending5 (bool *knownsplicep, int *dynprogindex_minor,
 	       cdna_direction,querydp5,querydp3_distalgap,genomedp5,genomedp3_distalgap));
 
 
-#ifdef PMAP
-  continuous_gappairs_distalgap = Dynprog_end5_gap(&(*dynprogindex_minor),&(*finalscore),
-						   &nmatches,&nmismatches,&nopens,&nindels,dynprog,
-						   &(queryseq_ptr[querydp3_distalgap]),&(queryuc_ptr[querydp3_distalgap]),
-						   queryjump,genomejump,querydp3_distalgap,genomedp3_distalgap,
-						   chroffset,chrhigh,queryaaseq_ptr,cdna_direction,watsonp,jump_late_p,pairpool,
-						   extraband_end,defect_rate,endalign);
-  *ambig_end_length = 0;
-#else
   if (endalign == QUERYEND_GAP && splicesites != NULL) {
     continuous_gappairs_distalgap = Dynprog_end5_known(&(*knownsplicep),&(*dynprogindex_minor),&(*finalscore),
 						       &(*ambig_end_length),&(*ambig_splicetype),
@@ -7319,7 +8029,6 @@ extend_ending5 (bool *knownsplicep, int *dynprogindex_minor,
     *ambig_end_length = 0;
     *knownsplicep = false;
   }
-#endif
 
   debug(printf("  finalscore: %d\n",*finalscore));
   if (continuous_gappairs_distalgap == NULL) {
@@ -7357,9 +8066,6 @@ distalmedial_ending3 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
 		      int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
-#ifdef PMAP
-		      char *queryaaseq_ptr,
-#endif
 		      char *queryseq_ptr, char *queryuc_ptr,
 		      int cdna_direction, bool watsonp, bool jump_late_p,
 		      Pairpool_T pairpool, Dynprog_T dynprog, int maxpeelback, int extramaterial_end,
@@ -7369,7 +8075,8 @@ distalmedial_ending3 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
   int querydp5_distalgap, genomedp5_distalgap, querydp3, querydp5_medialgap, genomedp5_medialgap;
   int continuous_goodness_distalgap = 0, continuous_goodness_medialgap = 0,
     nmatches, nmismatches, nopens, nindels;
-  bool mismatchp = false;
+  bool mismatchp = false, protectedp;
+  int n_peeled_indels;
   bool knownsplice_medial_p = false;
   Pair_T gappair;
   Endalign_T endalign;
@@ -7379,8 +8086,8 @@ distalmedial_ending3 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
   
   querydp5_distalgap = leftpair->querypos + 1;
   genomedp5_distalgap = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5_distalgap--;
-  if (leftpair->genome == ' ') genomedp5_distalgap--;
+  /* if (leftpair->cdna == ' ') querydp5_distalgap--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5_distalgap--; -- For old dynamic programming */
   querydp5_medialgap = querydp5_distalgap;
   genomedp5_medialgap = genomedp5_distalgap;
   querydp3 = rightquerypos - 1;
@@ -7388,15 +8095,11 @@ distalmedial_ending3 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
 
   /* Used to peelback only half as much as for a paired gap, to save
      on dynamic programming, but not any more. */
-  *path = peel_leftward(&mismatchp,&peeled_path,*path,&querydp5_distalgap,&genomedp5_distalgap,
-#ifdef WASTE
-			pairpool,
-#endif
-			maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			&endgappairs,&gappair,
-			&querydp5_medialgap,&genomedp5_medialgap);
+  protectedp = false;
+  *path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,*path,&querydp5_distalgap,&genomedp5_distalgap,
+			maxpeelback,/*stop_at_indels_p*/true);
   
-  if (endgappairs == NULL) {
+  if (0 && endgappairs == NULL) {
     *chop_exon_p = false;
     return peeled_path;
 
@@ -7451,15 +8154,6 @@ distalmedial_ending3 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
       debug(Pair_dump_list(*path,true));
       debug(printf("\n"));
 
-#ifdef PMAP
-      continuous_gappairs_medialgap = Dynprog_end3_gap(&(*dynprogindex_minor),&(*finalscore),
-						       &nmatches,&nmismatches,&nopens,&nindels,dynprog,
-						       &(queryseq_ptr[querydp5_medialgap]),&(queryuc_ptr[querydp5_medialgap]),
-						       queryjump,genomejump,querydp5_medialgap,genomedp5_medialgap,
-						       chroffset,chrhigh,queryaaseq_ptr,cdna_direction,watsonp,jump_late_p,pairpool,
-						       extraband_end,defect_rate,/*endalign*/QUERYEND_INDELS);
-      *ambig_end_length = 0;
-#else
       if (0 && splicesites != NULL) {
 	continuous_gappairs_medialgap = Dynprog_end3_known(&knownsplice_medial_p,&(*dynprogindex_minor),&(*finalscore),
 							   &(*ambig_end_length),&(*ambig_splicetype),
@@ -7483,7 +8177,6 @@ distalmedial_ending3 (bool *knownsplicep, bool *chop_exon_p, int *dynprogindex_m
 							 extraband_end,defect_rate,/*endalign*/QUERYEND_INDELS);
 	*ambig_end_length = 0;
       }
-#endif
 
       continuous_goodness_medialgap = nmatches + MISMATCH*nmismatches + QOPEN*nopens + QINDEL*nindels;
       debug(printf("Continuous_goodness_medialgap %d = %d + %d*%d + %d*%d + %d*%d\n",
@@ -7534,9 +8227,6 @@ extend_ending3 (bool *knownsplicep, int *dynprogindex_minor, int *finalscore,
 		int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
-#ifdef PMAP
-		char *queryaaseq_ptr,
-#endif
 		char *queryseq_ptr, char *queryuc_ptr,
 		int cdna_direction, bool watsonp, bool jump_late_p,
 		Pairpool_T pairpool, Dynprog_T dynprog, int maxpeelback, int extramaterial_end,
@@ -7545,7 +8235,8 @@ extend_ending3 (bool *knownsplicep, int *dynprogindex_minor, int *finalscore,
   int queryjump, genomejump;
   int querydp5_distalgap, genomedp5_distalgap, querydp3;
   int nmatches, nmismatches, nopens, nindels;
-  bool mismatchp = false;
+  bool mismatchp = false, protectedp = false;
+  int n_peeled_indels = 0;
   Pair_T gappair, firstpair;
 
   debug(printf("\nEXTEND_ENDING3 with endalign %s and maxpeelback %d\n",
@@ -7553,8 +8244,8 @@ extend_ending3 (bool *knownsplicep, int *dynprogindex_minor, int *finalscore,
   
   querydp5_distalgap = leftpair->querypos + 1;
   genomedp5_distalgap = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5_distalgap--;
-  if (leftpair->genome == ' ') genomedp5_distalgap--;
+  /* if (leftpair->cdna == ' ') querydp5_distalgap--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5_distalgap--; -- For old dynamic programming */
   querydp3 = rightquerypos - 1;
   /* genomedp3 = rightgenomepos - 1; */
   debug(printf("Set dynprog 3 end to be querydp3 = %d\n",querydp3));
@@ -7564,15 +8255,12 @@ extend_ending3 (bool *knownsplicep, int *dynprogindex_minor, int *finalscore,
   if (endalign == QUERYEND_NOGAPS) {
     /* Don't peelback on extension */
   } else if (maxpeelback == 0) {
+    /* Actually, we should peelback after trim_ends, because indel placement could be wrong */
     /* Don't peelback on BEST_LOCAL after trim_ends */
   } else {
-    *path = peel_leftward(&mismatchp,&peeled_path,*path,&querydp5_distalgap,&genomedp5_distalgap,
-#ifdef WASTE
-			  pairpool,
-#endif
-			  maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/true,
-			  /*endgappairs*/NULL,&gappair,
-			  /*querydp5_medialgap*/NULL,/*genomedp5_medialgap*/NULL);
+    protectedp = false;
+    *path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,*path,&querydp5_distalgap,&genomedp5_distalgap,
+			  maxpeelback,/*stop_at_indels_p*/true);
   }
 
   queryjump = querydp3 - querydp5_distalgap + 1;
@@ -7591,15 +8279,6 @@ extend_ending3 (bool *knownsplicep, int *dynprogindex_minor, int *finalscore,
   debug(printf("Stage 3 (dir %d), extend_ending3: Dynamic programming at 3' end (distal to gap): querydp5 = %d, querydp3 = %d, genomedp5 = %d\n",
 	       cdna_direction,querydp5_distalgap,querydp3,genomedp5_distalgap));
   
-#ifdef PMAP
-  continuous_gappairs_distalgap = Dynprog_end3_gap(&(*dynprogindex_minor),&(*finalscore),
-						   &nmatches,&nmismatches,&nopens,&nindels,dynprog,
-						   &(queryseq_ptr[querydp5_distalgap]),&(queryuc_ptr[querydp5_distalgap]),
-						   queryjump,genomejump,querydp5_distalgap,genomedp5_distalgap,
-						   chroffset,chrhigh,queryaaseq_ptr,cdna_direction,watsonp,jump_late_p,pairpool,
-						   extraband_end,defect_rate,endalign);
-  *ambig_end_length = 0;
-#else
   if (endalign == QUERYEND_GAP && splicesites != NULL) {
     continuous_gappairs_distalgap = Dynprog_end3_known(&(*knownsplicep),&(*dynprogindex_minor),&(*finalscore),
 						       &(*ambig_end_length),&(*ambig_splicetype),
@@ -7624,7 +8303,6 @@ extend_ending3 (bool *knownsplicep, int *dynprogindex_minor, int *finalscore,
     *ambig_end_length = 0;
     *knownsplicep = false;
   }
-#endif
 
   debug(printf("  finalscore: %d\n",*finalscore));
   if (continuous_gappairs_distalgap == NULL) {
@@ -7658,50 +8336,63 @@ static List_T
 traverse_dual_break (List_T pairs, List_T *path, Pair_T leftpair, Pair_T rightpair,
 		     Univcoord_T chroffset, Univcoord_T chrhigh,
 #ifdef PMAP
-		     char *queryaaseq_ptr, char *genomicuc_ptr,
+		     char *queryaaseq_ptr,
 #endif
-		     char *queryseq_ptr, char *queryuc_ptr,
-		     bool watsonp, int genestrand, Pairpool_T pairpool,
-		     Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		     Diagpool_T diagpool, int sufflookback, int nsufflookback, int maxintronlen_bound) {
+		     char *queryseq_ptr, char *queryuc_ptr, int querylength,
+		     bool watsonp, int genestrand, Pairpool_T pairpool, int maxpeelback,
+		     Oligoindex_array_T oligoindices_minor,
+		     Diagpool_T diagpool, Cellpool_T cellpool,
+		     int sufflookback, int nsufflookback, int maxintronlen_bound) {
   List_T gappairs, peeled_pairs = NULL, peeled_path = NULL;
   int querydp5, genomedp5, querydp3, genomedp3, source, indexsize;
-  bool mismatchp;
+  bool mismatchp, protectedp;
+  int n_peeled_indels;
   Pair_T gappair, firstpair, lastpair;
-  int maxpeelback = 1;
   Chrpos_T chrstart, chrend;
 
-
   debug14(printf("\nTRAVERSE_DUAL_BREAK\n"));
-  querydp5 = leftpair->querypos + 1;
-  genomedp5 = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5--;
-  if (leftpair->genome == ' ') genomedp5--;
-  querydp3 = rightpair->querypos - 1;
-  genomedp3 = rightpair->genomepos - 1;
+  if (leftpair != NULL && rightpair != NULL) {
+    querydp5 = leftpair->querypos + 1;
+    genomedp5 = leftpair->genomepos + 1;
+    /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+    /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
+    querydp3 = rightpair->querypos - 1;
+    genomedp3 = rightpair->genomepos - 1;
+  } else if (leftpair == NULL) {
+    querydp5 = 0;
+    genomedp5 = rightpair->genomepos - rightpair->querypos - 100;
+    querydp3 = rightpair->querypos - 1;
+    genomedp3 = rightpair->genomepos - 1;
+  } else if (rightpair == NULL) {
+    querydp5 = leftpair->querypos + 1;
+    genomedp5 = leftpair->genomepos + 1;
+    /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+    /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
+    querydp3 = querylength - 1;
+    genomedp3 = leftpair->genomepos + (querylength - leftpair->querypos) + 100;
+  }
 
   /* Previously skipped this, but need to do at least a little
      peelback to avoid gaps at either end */
-  pairs = peel_rightward(&mismatchp,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			 pairpool,
-#endif
-			 maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			 /*endgappairs*/NULL,&gappair,
-			 /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-  *path = peel_leftward(&mismatchp,&peeled_path,*path,&querydp5,&genomedp5,
-#ifdef WASTE
-			pairpool,
+  protectedp = false;
+  pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			 maxpeelback,/*stop_at_indels_p*/true);
+  *path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,*path,&querydp5,&genomedp5,
+			maxpeelback,/*stop_at_indels_p*/true);
+#ifdef PMAP
+  querydp3 /= 3;
+  querydp5 /= 3;
 #endif
-			maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			/*endgappairs*/NULL,&gappair,
-			/*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
 
   debug14(printf("genome %d..%d, query %d..%d\n",genomedp5,genomedp3,querydp5,querydp3));
 #ifdef EXTRACT_GENOMICSEG
   debug14(printf("genome %.*s\n",genomedp3-genomedp5+1,&(genomicseg_ptr[genomedp5])));
 #endif
+#ifdef PMAP
+  debug14(printf("query %.*s\n",querydp3-querydp5+1,&(queryaaseq_ptr[querydp5])));
+#else
   debug14(printf("query %.*s\n",querydp3-querydp5+1,&(queryseq_ptr[querydp5])));
+#endif
 
   if (watsonp) {
     chrstart = genomedp5;
@@ -7711,22 +8402,24 @@ traverse_dual_break (List_T pairs, List_T *path, Pair_T leftpair, Pair_T rightpa
     chrend = (chrhigh - chroffset) - genomedp5;
   }
 
+  
   debug14(printf("Starting stage2 with chrstart %u, chrend %u, watsonp %d\n",
-	       chrstart,chrend,watsonp));
+		 chrstart,chrend,watsonp));
   gappairs = Stage2_compute_one(&source,&indexsize,
+#ifdef PMAP
+				&(queryaaseq_ptr[querydp5]),&(queryaaseq_ptr[querydp5]),
+				/*querylength*/querydp3-querydp5+1,/*query_offset*/querydp5*3,
+#else
 				&(queryseq_ptr[querydp5]),&(queryuc_ptr[querydp5]),
 				/*querylength*/querydp3-querydp5+1,/*query_offset*/querydp5,
-#ifdef PMAP
-				genomicuc_ptr,
 #endif
-				chrstart,chrend,chroffset,chrhigh,
-				/*plusp*/watsonp,genestrand,
+				chrstart,chrend,chroffset,chrhigh,/*plusp*/watsonp,genestrand,
 
-				oligoindices_minor,noligoindices_minor,/*proceed_pctcoverage*/0.80,
-				pairpool,diagpool,sufflookback,nsufflookback,maxintronlen_bound,
+				oligoindices_minor,/*proceed_pctcoverage*/0.80,
+				pairpool,diagpool,cellpool,sufflookback,nsufflookback,maxintronlen_bound,
 				/*localp should be false*/true,/*skip_repetitive_p*/false,
 				/*use_shifted_canonical_p*/true,/*favor_right_p*/false,
-				/*debug_graphic_p*/false,/*diagnosticp*/false,/*stopwatch*/NULL,/*diag_debug*/false);
+				/*debug_graphic_p*/false,/*diagnosticp*/false);
   
   debug14(printf("Internal stage2 result:\n"));
   debug14(Pair_dump_list(gappairs,true));
@@ -7734,19 +8427,28 @@ traverse_dual_break (List_T pairs, List_T *path, Pair_T leftpair, Pair_T rightpa
   if (gappairs == NULL) {
     pairs = Pairpool_transfer(pairs,peeled_pairs);
     *path = Pairpool_transfer(*path,peeled_path);
-    pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
+    if (*path != NULL && pairs != NULL) {
+      /* Do not put a gap at the end of the alignment */
+      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,
+				      /*leftpair*/(*path)->first,/*rightpair*/pairs->first,/*knownp*/false);
+    }
   } else {
     lastpair = (Pair_T) gappairs->first;
     firstpair = (Pair_T) List_last_value(gappairs);
     debug14(printf("gappairs goes from %d to %d\n",firstpair->querypos,lastpair->querypos));
-    if (firstpair->querypos == querydp5 && lastpair->querypos == querydp3) {
-      debug14(printf("  => entire query sequence bridged\n"));
+    if (1 || (firstpair->querypos == querydp5 && lastpair->querypos == querydp3)) {
+      /* fprintf(stderr,"%d..%d .. %d..%d\n",querydp5,firstpair->querypos,lastpair->querypos,querydp3); */
+      debug14(printf("  => entire query sequence bridged or not, but taking it regardless\n"));
       pairs = Pairpool_transfer(pairs,gappairs);
     } else {
       debug14(printf("  => entire query sequence not bridged, so abort\n"));
       pairs = Pairpool_transfer(pairs,peeled_pairs);
       *path = Pairpool_transfer(*path,peeled_path);
-      pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,/*knownp*/false);
+      if (*path != NULL && pairs != NULL) {
+	/* Do not put a gap at the end of the alignment */
+	pairs = Pairpool_push_gapholder(pairs,pairpool,/*queryjump*/UNKNOWNJUMP,/*genomejump*/UNKNOWNJUMP,
+					/*leftpair*/(*path)->first,/*rightpair*/pairs->first,/*knownp*/false);
+      }
     }
   }
 
@@ -7762,84 +8464,131 @@ static List_T
 build_dual_breaks (bool *dual_break_p, int *dynprogindex_minor, int *dynprogindex_major, List_T path,
 		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
 #ifdef PMAP
-		   char *queryaaseq_ptr, char *genomicuc_ptr,
+		   char *queryaaseq_ptr,
 #endif
-		   char *queryseq_ptr, char *queryuc_ptr,
+		   char *queryseq_ptr, char *queryuc_ptr, int querylength,
 		   int cdna_direction, bool watsonp, int genestrand, bool jump_late_p,
 		   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-		   int maxpeelback, Oligoindex_T *oligoindices_minor, int noligoindices_minor,
-		   Diagpool_T diagpool, int sufflookback, int nsufflookback, int maxintronlen_bound,
+		   Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3,
+		   int maxpeelback, Oligoindex_array_T oligoindices_minor,
+		   Diagpool_T diagpool, Cellpool_T cellpool, int sufflookback, int nsufflookback, int maxintronlen_bound,
 		   int extramaterial_paired, int extraband_paired, int extraband_single,
-		   double defect_rate, int close_indels_mode) {
+		   double defect_rate, int close_indels_mode, bool finalp, bool simplep) {
 
   List_T pairs = NULL, pairptr;
   Pair_T pair, leftpair, rightpair;
   bool filledp, shiftp;
 
-
   *dual_break_p = false;
 
   debug(Pair_dump_list(path,true));
+
+#if 0
+  if (path != NULL && ((Pair_T) path->first)->querypos < querylength - 50) {
+    /* Solve end as a dual break */
+    debug(printf("Observed a dual break at the end of the alignment, querypos %d vs querylength %d\n",
+		   ((Pair_T) path->first)->querypos,querylength));
+    *dual_break_p = true;
+    pairs = traverse_dual_break(/*pairs*/NULL,&path,/*leftpair*/path->first,/*rightpair*/NULL,chroffset,chrhigh,
+#ifdef PMAP
+				queryaaseq_ptr,
+#endif
+				queryseq_ptr,queryuc_ptr,querylength,watsonp,genestrand,
+				pairpool,maxpeelback,oligoindices_minor,diagpool,cellpool,
+				sufflookback,nsufflookback,maxintronlen_bound);
+  }
+#endif
+
+
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
+
     if (pair->gapp == false || pair->comp != DUALBREAK_COMP) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
-    } else if (path == NULL || pairs == NULL) {
-      debug14(printf("Observed a dual break at the end of the alignment, case 1\n"));
+    } else if (path->rest == NULL || pairs == NULL) {
+      debug(printf("Observed a dual break at the end of the alignment, case 1\n"));
+      path = Pairpool_pop(path,&pair);
+
     } else {
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
+
       leftpair = path->first;
       rightpair = pairs->first;
       if (leftpair->querypos < 0 || rightpair->querypos < 0) {
-	debug14(printf("Observed a dual break at the end of the alignment, case 2\n"));
+	debug(printf("Observed a dual break at the end of the alignment, case 2\n"));
       } else {
-	debug14(printf("Observed a dual break at %d..%d with queryjump = %d, genomejump = %d\n",
+	debug(printf("Observed a dual break at %d..%d with queryjump = %d, genomejump = %d\n",
 		     leftpair->querypos,rightpair->querypos,pair->queryjump,pair->genomejump));
 	
-	if (pair->genomejump - pair->queryjump < SINGLESLEN &&
+	if (finalp == true) {
+	  debug(printf("  Final: solve as a single gap\n"));
+	  pairs = traverse_single_gap(&filledp,&(*dynprogindex_minor),pairs,&path,leftpair,rightpair,
+				      chroffset,chrhigh,
+				      queryseq_ptr,queryuc_ptr,querylength,watsonp,
+				      jump_late_p,pairpool,dynprogM,last_genomedp5,last_genomedp3,
+				      maxpeelback,extraband_single,defect_rate,
+				      close_indels_mode,/*forcep*/true,/*finalp*/false);
+
+	} else if (pair->genomejump - pair->queryjump < SINGLESLEN &&
 		   pair->queryjump - pair->genomejump < SINGLESLEN) {
-	  debug14(printf("  Can be solved as a single gap\n"));
+	  debug(printf("  Can be solved as a single gap\n"));
 	  pairs = traverse_single_gap(&filledp,&(*dynprogindex_minor),pairs,&path,leftpair,rightpair,
 				      chroffset,chrhigh,
-#ifdef PMAP
-				      queryaaseq_ptr,
-#endif
-				      queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-				      jump_late_p,pairpool,dynprogM,maxpeelback,extraband_single,defect_rate,
-				      close_indels_mode,/*forcep*/true);
+				      queryseq_ptr,queryuc_ptr,querylength,watsonp,
+				      jump_late_p,pairpool,dynprogM,last_genomedp5,last_genomedp3,
+				      maxpeelback,extraband_single,defect_rate,
+				      close_indels_mode,/*forcep*/true,/*finalp*/false);
 
 	} else if (pair->queryjump < MIN_STAGE2_FOR_DUALBREAK) {
-	  debug14(printf("  Can be solved as a genome gap\n"));
+	  debug(printf("  Can be solved as a genome gap\n"));
 	  pairs = traverse_genome_gap(&filledp,&shiftp,&(*dynprogindex_minor),&(*dynprogindex_major),
 				      pairs,&path,leftpair,rightpair,chrnum,chroffset,chrhigh,
-#ifdef PMAP
-				      queryaaseq_ptr,
-#endif
-				      queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,jump_late_p,
-				      pairpool,dynprogL,dynprogM,dynprogR,maxpeelback,extramaterial_paired,
+				      queryseq_ptr,queryuc_ptr,querylength,
+				      cdna_direction,watsonp,jump_late_p,
+				      pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5,last_genomedp3,
+				      maxpeelback,extramaterial_paired,
 				      extraband_paired,extraband_single,defect_rate,close_indels_mode,
-				      /*finalp*/false);
+				      /*finalp*/false,simplep);
 
 	} else {
-	  debug14(printf("  Solving as a dual break\n"));
+	  debug(printf("  Solving as a dual break\n"));
 	  *dual_break_p = true;
 	  pairs = traverse_dual_break(pairs,&path,leftpair,rightpair,chroffset,chrhigh,
 #ifdef PMAP
-				      queryaaseq_ptr,genomicuc_ptr,
+				      queryaaseq_ptr,
 #endif
-				      queryseq_ptr,queryuc_ptr,watsonp,genestrand,
-				      pairpool,oligoindices_minor,noligoindices_minor,diagpool,
+				      queryseq_ptr,queryuc_ptr,querylength,watsonp,genestrand,
+				      pairpool,maxpeelback,oligoindices_minor,diagpool,cellpool,
 				      sufflookback,nsufflookback,maxintronlen_bound);
 	}
       }
     }
   }
 
-  debug14(printf("After build_dual_breaks:\n"));
+#if 0
+  if (pairs != NULL && ((Pair_T) pairs->first)->querypos > 50) {
+    /* Solve beginning as a dual break */
+    debug(printf("Observed a dual break at the beginning of the alignment, querypos %d\n",
+		   ((Pair_T) pairs->first)->querypos));
+    *dual_break_p = true;
+    pairs = traverse_dual_break(pairs,&path,/*leftpair*/NULL,/*rightpair*/pairs->first,chroffset,chrhigh,
+#ifdef PMAP
+				queryaaseq_ptr,
+#endif
+				queryseq_ptr,queryuc_ptr,querylength,watsonp,genestrand,
+				pairpool,maxpeelback,oligoindices_minor,diagpool,cellpool,
+				sufflookback,nsufflookback,maxintronlen_bound);
+  }
+#endif
+
+  debug(printf("After build_dual_breaks:\n"));
   debug(Pair_dump_list(pairs,true));
 
   return pairs;
@@ -7865,9 +8614,6 @@ build_path_end3 (bool *knownsplicep, int *ambig_end_length_3, Splicetype_T *ambi
 		 int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
-#ifdef PMAP
-		 char *queryaaseq_ptr,
-#endif
 		 char *queryseq_ptr, char *queryuc_ptr,
 		 int cdna_direction, bool watsonp, bool jump_late_p, int maxpeelback,
 		 int maxpeelback_distalmedial, int nullgap,
@@ -7883,6 +8629,8 @@ build_path_end3 (bool *knownsplicep, int *ambig_end_length_3, Splicetype_T *ambi
   if (*ambig_end_length_3 > 0) {
     debug(printf("ambig_end_length_3 is %d, so returning path\n",*ambig_end_length_3));
     return path;
+  } else {
+    path = clean_path_end3_gap_indels(path);
   }
 
   *knownsplicep = false;
@@ -7902,7 +8650,7 @@ build_path_end3 (bool *knownsplicep, int *ambig_end_length_3, Splicetype_T *ambi
 
   queryjump = querylength - leftpair->querypos - 1;
   /* genomejump = genomiclength - leftpair->genomepos - 1; */
-  if (leftpair->cdna == ' ') queryjump++;
+  /* if (leftpair->cdna == ' ') queryjump++; -- For old dynamic programming */
   /* if (leftpair->genome == ' ') genomejump++; */
 
   /* Note difference with 5' case.  We use queryjump+1 here instead of queryjump and genomejump */
@@ -7927,14 +8675,12 @@ build_path_end3 (bool *knownsplicep, int *ambig_end_length_3, Splicetype_T *ambi
 			      cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			      queryaaseq_ptr,
-#endif
 			      queryseq_ptr,queryuc_ptr,
 			      cdna_direction,watsonp,jump_late_p,pairpool,dynprogL,maxpeelback,
 			      extramaterial_end,extraband_end,defect_rate,endalign);
   } else {
     /* Looks like we aren't calling this anymore */
+    abort();
     debug(printf("Running distalmedial_ending3\n"));
     gappairs = distalmedial_ending3(&(*knownsplicep),&(*chop_exon_p),&(*dynprogindex_minor),
 				    &finalscore,&(*ambig_end_length_3),&(*ambig_splicetype_3),
@@ -7945,9 +8691,6 @@ build_path_end3 (bool *knownsplicep, int *ambig_end_length_3, Splicetype_T *ambi
 				    cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-				    queryaaseq_ptr,
-#endif
 				    queryseq_ptr,queryuc_ptr,
 				    cdna_direction,watsonp,jump_late_p,pairpool,dynprogL,maxpeelback_distalmedial,
 				    extramaterial_end,extraband_end,defect_rate);
@@ -7986,9 +8729,6 @@ build_pairs_end5 (bool *knownsplicep, int *ambig_end_length_5, Splicetype_T *amb
 		  int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
-#ifdef PMAP
-		  char *queryaaseq_ptr,
-#endif
 		  char *queryseq_ptr, char *queryuc_ptr,
 		  int cdna_direction, bool watsonp, bool jump_late_p, int maxpeelback,
 		  int maxpeelback_distalmedial, int nullgap,
@@ -8004,6 +8744,8 @@ build_pairs_end5 (bool *knownsplicep, int *ambig_end_length_5, Splicetype_T *amb
   if (*ambig_end_length_5 > 0) {
     debug(printf("ambig_end_length_5 is %d, so returning pairs\n",*ambig_end_length_5));
     return pairs;
+  } else {
+    pairs = clean_pairs_end5_gap_indels(pairs);
   }
 
   *knownsplicep = false;
@@ -8044,14 +8786,12 @@ build_pairs_end5 (bool *knownsplicep, int *ambig_end_length_5, Splicetype_T *amb
 			      cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			      queryaaseq_ptr,
-#endif
 			      queryseq_ptr,queryuc_ptr,
 			      cdna_direction,watsonp,jump_late_p,pairpool,dynprogR,maxpeelback,
 			      extramaterial_end,extraband_end,defect_rate,endalign);
   } else {
     /* Looks like we aren't calling this anymore */
+    abort();
     debug(printf("Running distalmedial_ending5\n"));
     gappairs = distalmedial_ending5(&(*knownsplicep),&(*chop_exon_p),&(*dynprogindex_minor),
 				    &finalscore,&(*ambig_end_length_5),&(*ambig_splicetype_5),
@@ -8062,9 +8802,6 @@ build_pairs_end5 (bool *knownsplicep, int *ambig_end_length_5, Splicetype_T *amb
 				    cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-				    queryaaseq_ptr,
-#endif
 				    queryseq_ptr,queryuc_ptr,
 				    cdna_direction,watsonp,jump_late_p,pairpool,dynprogR,maxpeelback_distalmedial,
 				    extramaterial_end,extraband_end,defect_rate);
@@ -8087,26 +8824,31 @@ build_pairs_end5 (bool *knownsplicep, int *ambig_end_length_5, Splicetype_T *amb
 static List_T
 build_pairs_singles (int *dynprogindex, List_T path,
 		     Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-		     char *queryaaseq_ptr,
-#endif
-		     char *queryseq_ptr, char *queryuc_ptr,
-		     int cdna_direction, bool watsonp, bool jump_late_p, int maxpeelback, int nullgap,
+		     char *queryseq_ptr, char *queryuc_ptr, int querylength,
+		     bool watsonp, bool jump_late_p, int maxpeelback, int nullgap,
 		     int extraband_single, double defect_rate, int close_indels_mode,
-		     Pairpool_T pairpool, Dynprog_T dynprogM) {
+		     Pairpool_T pairpool, Dynprog_T dynprogM, 
+		     Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3, bool forcep, bool finalp) {
   List_T pairs = NULL, pairptr;
   Pair_T pair, leftpair, rightpair;
   bool filledp;
 
   debug(printf("\n** Starting build_pairs_singles\n"));
-  while (path != NULL) {
-    pairptr = path;
+
+  /* Remove gaps at beginning */
+  while (path != NULL && ((Pair_T) path->first)->gapp == true) {
     path = Pairpool_pop(path,&pair);
+  }
+
+  while (path != NULL && path->rest != NULL) {
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > nullgap) {
@@ -8114,7 +8856,7 @@ build_pairs_singles (int *dynprogindex, List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > pair->genomejump + EXTRAQUERYGAP) {
@@ -8122,7 +8864,7 @@ build_pairs_singles (int *dynprogindex, List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->genomejump > pair->queryjump + SINGLESLEN) {
@@ -8130,29 +8872,29 @@ build_pairs_singles (int *dynprogindex, List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
-    } else if (path == NULL || pairs == NULL) {
+    } else if (path->rest == NULL || pairs == NULL) {
       fprintf(stderr,"Single gap at beginning or end of alignment\n");
       abort();
 
     } else {
       /* Guarantees: queryjump <= nullgap && genomejump < queryjump - EXTRAQUERYGAP &&
 	 genomejump <= queryjump + MININTRONLEN, meaning that score matrix is nearly square */
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
+
       leftpair = path->first;
       rightpair = pairs->first;
 	
-      debug(printf("Stage 3 (dir %d): Traversing single gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d\n",
-		   cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos));
+      debug(printf("Stage 3: Traversing single gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d, queryjump %d, genomejump %d\n",
+		   leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos,pair->queryjump,pair->genomejump));
       pairs = traverse_single_gap(&filledp,&(*dynprogindex),pairs,&path,leftpair,rightpair,
-				  chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-				  jump_late_p,pairpool,dynprogM,maxpeelback,extraband_single,defect_rate,
-				  close_indels_mode,/*forcep*/false);
+				  chroffset,chrhigh,queryseq_ptr,queryuc_ptr,querylength,watsonp,
+				  jump_late_p,pairpool,dynprogM,last_genomedp5,last_genomedp3,
+				  maxpeelback,extraband_single,defect_rate,
+				  close_indels_mode,forcep,finalp);
       /* (old comment:) forcep needs to be true here to avoid subsequent anomalies in building dualintrons, e.g., XM_376610.2_mRNA on 7:127885572..127888991 */
       if (filledp == true) {
 	/* Discard the gap */
@@ -8174,6 +8916,12 @@ build_pairs_singles (int *dynprogindex, List_T path,
     }
   }
 
+  /* Handle last entry if not a gap */
+  if (path != NULL && ((Pair_T) path->first)->gapp == false) {
+    pair = (Pair_T) path->first;
+    pairs = List_transfer_one(pairs,&path);
+  }
+
   return pairs;
 }
 
@@ -8181,28 +8929,34 @@ build_pairs_singles (int *dynprogindex, List_T path,
 static List_T
 build_pairs_dualintrons (int *dynprogindex, List_T path,
 			 Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-#ifdef PMAP
-			 char *queryaaseq_ptr,
-#endif
-			 char *queryseq_ptr, char *queryuc_ptr, int cdna_direction, bool watsonp,
+			 char *queryseq_ptr, char *queryuc_ptr, int querylength,
+			 int cdna_direction, bool watsonp,
 			 bool jump_late_p, int maxpeelback, int nullgap,
 			 int extramaterial_paired, int extraband_paired, double defect_rate,
-			 Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogR) {
+			 Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogR,
+			 Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3, bool simplep) {
   List_T pairs = NULL, midexon_pairs = NULL, pairptr;
   Pair_T pair, leftpair, midleftpair, midpair, midrightpair, rightpair;
   int midquerypos, midgenomepos;
-  bool left_end_intron_p, right_end_intron_p, exonp;
+  bool left_end_intron_p = false, right_end_intron_p, exonp;
 
   debug(printf("\n** Starting build_pairs_dualintrons\n"));
-  while (path != NULL) {
-    pairptr = path;
+
+  /* Remove gaps at beginning */
+  while (path != NULL && ((Pair_T) path->first)->gapp == true) {
     path = Pairpool_pop(path,&pair);
+  }
+
+  while (path != NULL && path->rest != NULL) {
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     
     if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > nullgap) {
@@ -8210,7 +8964,7 @@ build_pairs_dualintrons (int *dynprogindex, List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > pair->genomejump + EXTRAQUERYGAP) {
@@ -8218,7 +8972,7 @@ build_pairs_dualintrons (int *dynprogindex, List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->genomejump <= pair->queryjump + MININTRONLEN) {
@@ -8226,10 +8980,13 @@ build_pairs_dualintrons (int *dynprogindex, List_T path,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else {
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
+
       midpair = path->first;
       if (midpair->shortexonp == false) {
 	/* Long exon; do nothing */
@@ -8305,21 +9062,23 @@ build_pairs_dualintrons (int *dynprogindex, List_T path,
 	  
 	    pairs = traverse_dual_genome_gap(&(*dynprogindex),pairs,&path,leftpair,rightpair,
 					     left_end_intron_p,right_end_intron_p,
-					     chrnum,chroffset,chrhigh,
-					     midquerypos,midgenomepos,
-#ifdef PMAP
-					     queryaaseq_ptr,
-#endif
-					     queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-					     jump_late_p,pairpool,dynprogL,dynprogR,
+					     chrnum,chroffset,chrhigh,midquerypos,midgenomepos,
+					     queryseq_ptr,queryuc_ptr,querylength,cdna_direction,watsonp,
+					     jump_late_p,pairpool,dynprogL,dynprogR,last_genomedp5,last_genomedp3,
 					     maxpeelback,nullgap,extramaterial_paired,extraband_paired,
-					     defect_rate);
+					     defect_rate,simplep,/*finalp*/false);
 	  }
 	}
       }
     }
   }
 
+  /* Handle last entry if not a gap */
+  if (path != NULL && ((Pair_T) path->first)->gapp == false) {
+    pair = (Pair_T) path->first;
+    pairs = List_transfer_one(pairs,&path);
+  }
+
   return pairs;
 }  
 
@@ -8331,12 +9090,14 @@ build_pairs_introns (bool *shiftp, bool *incompletep,
 #ifdef PMAP
 		     char *queryaaseq_ptr,
 #endif
-		     char *queryseq_ptr, char *queryuc_ptr,
-		     int cdna_direction, bool watsonp, bool jump_late_p,
+		     char *queryseq_ptr, char *queryuc_ptr, int querylength,
+		     int cdna_direction, bool watsonp, int genestrand, bool jump_late_p,
 		     int maxpeelback, int nullgap, int extramaterial_paired, 
 		     int extraband_single, int extraband_paired, double defect_rate, int close_indels_mode,
 		     Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-		     bool finalp) {
+		     Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+		     int sufflookback, int nsufflookback, int maxintronlen_bound,
+		     Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3, bool finalp, bool simplep) {
   List_T pairs = NULL, pairptr;
   Pair_T pair, leftpair, rightpair;
   bool filledp;
@@ -8351,43 +9112,89 @@ build_pairs_introns (bool *shiftp, bool *incompletep,
     minintronlen = MININTRONLEN;
   }
 
-  *shiftp = *incompletep = false;
-  while (path != NULL) {
-    pairptr = path;
+  /* Remove gaps at beginning */
+  while (path != NULL && ((Pair_T) path->first)->gapp == true) {
     path = Pairpool_pop(path,&pair);
+  }
+
+  *shiftp = *incompletep = false;
+  while (path != NULL && path->rest != NULL) {
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
     if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > nullgap) {
-      debug(leftpair = path->first;
-	    rightpair = pairs->first;
-	    printf("Stage 3 (dir %d): Adding large gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d\n",
-		   cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos)); 
+      if (pair->genomejump < 16) {
+	/* Not enough genome material to run stage 2 */
+	pairptr = path;		/* save */
+	path = Pairpool_pop(path,&pair);
+
+	leftpair = path->first;
+	rightpair = pairs->first;
+	debug(printf("Stage 3 (dir %d): Traversing cDNA gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d, queryjump %d, genomejump %d\n",
+		     cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos,pair->queryjump,pair->genomejump));
+	pairs = traverse_cdna_gap(&filledp,&(*incompletep),&(*dynprogindex_minor),&(*dynprogindex_major),
+				  pairs,&path,leftpair,rightpair,
+				  chroffset,chrhigh,queryseq_ptr,queryuc_ptr,querylength,cdna_direction,watsonp,
+				  jump_late_p,pairpool,dynprogL,dynprogM,dynprogR,
+				  last_genomedp5,last_genomedp3,maxpeelback,
+				  extramaterial_paired,extraband_paired,extraband_single,
+				  defect_rate,close_indels_mode,/*finalp*/true);
+
+	if (filledp == true) {
+	  /* Discard gap */
+	  debug(printf("Discarding gap ");
+		Pair_dump_one(pair,true);
+		printf("\n"));
+	} else {
+	  /* Replace the gap */
+	  debug(printf("Replacing gap ");
+		Pair_dump_one(pair,true);
+		printf("\n"));
 #ifdef WASTE
-      pairs = Pairpool_push_existing(pairs,pairpool,pair);
+	  pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+	  pairs = List_push_existing(pairs,pairptr);
 #endif
+	}
+
+      } else {
+	/* Solve as dual break */
+	/* pairptr = path; */		/* save */
+	/* path = Pairpool_pop(path,&pair); */
+	leftpair = path->first;
+	rightpair = pairs->first;
+	pairs = traverse_dual_break(pairs,&path,leftpair,rightpair,chroffset,chrhigh,
+#ifdef PMAP
+				    queryaaseq_ptr,
+#endif
+				    queryseq_ptr,queryuc_ptr,querylength,watsonp,genestrand,
+				    pairpool,maxpeelback,oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen_bound);
+      }
+
+    } else if (finalp == false && pair->queryjump > pair->genomejump + EXTRAQUERYGAP) {
+      /* If finalp is true, then will need to solve as singles */
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
 
-    } else if (pair->queryjump > pair->genomejump + EXTRAQUERYGAP) {
       leftpair = path->first;
       rightpair = pairs->first;
-      debug(printf("Stage 3 (dir %d): Traversing cDNA gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d\n",
-		   cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos));
+      debug(printf("Stage 3 (dir %d): Traversing cDNA gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d, queryjump %d, genomejump %d\n",
+		   cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos,pair->queryjump,pair->genomejump));
       pairs = traverse_cdna_gap(&filledp,&(*incompletep),&(*dynprogindex_minor),&(*dynprogindex_major),
 				pairs,&path,leftpair,rightpair,
-				chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
+				chroffset,chrhigh,queryseq_ptr,queryuc_ptr,querylength,cdna_direction,watsonp,
 				jump_late_p,pairpool,dynprogL,dynprogM,dynprogR,
-				maxpeelback,extramaterial_paired,extraband_paired,extraband_single,
-				defect_rate,close_indels_mode);
+				last_genomedp5,last_genomedp3,maxpeelback,
+				extramaterial_paired,extraband_paired,extraband_single,
+				defect_rate,close_indels_mode,/*finalp*/true);
 
       if (filledp == true) {
 	/* Discard gap */
@@ -8409,19 +9216,21 @@ build_pairs_introns (bool *shiftp, bool *incompletep,
     } else if (pair->genomejump > pair->queryjump + minintronlen) {
       /* Previously was 2*MININTRONLEN, and comment said needed space for two introns */
       /* We will make the score matrices nearly square */
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
+
       leftpair = path->first;
       rightpair = pairs->first;
-      debug(printf("Stage 3 (dir %d): Traversing paired gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d\n",
-		   cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos));
+      debug(printf("Stage 3 (dir %d): Traversing paired gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d, queryjump %d, genomejump %d\n",
+		   cdna_direction,leftpair->querypos,rightpair->querypos,leftpair->genomepos,rightpair->genomepos,pair->queryjump,pair->genomejump));
+      /* fprintf(stderr,"donor prob %f, acceptor prob %f\n",pair->donor_prob,pair->acceptor_prob); */
       pairs = traverse_genome_gap(&filledp,&(*shiftp),&(*dynprogindex_minor),&(*dynprogindex_major),
 				  pairs,&path,leftpair,rightpair,chrnum,chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,jump_late_p,
-				  pairpool,dynprogL,dynprogM,dynprogR,maxpeelback,extramaterial_paired,
-				  extraband_paired,extraband_single,defect_rate,close_indels_mode,
-				  finalp);
+				  queryseq_ptr,queryuc_ptr,querylength,
+				  cdna_direction,watsonp,jump_late_p,
+				  pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5,last_genomedp3,
+				  maxpeelback,extramaterial_paired,extraband_paired,extraband_single,
+				  defect_rate,close_indels_mode,finalp,simplep);
       /* Previously had forcep == true, because previously thought that adding large gap is not a good solution */
 
       if (filledp == true) {
@@ -8449,11 +9258,14 @@ build_pairs_introns (bool *shiftp, bool *incompletep,
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else {
       /* Single gap; force fill */
+      pairptr = path;		/* save */
+      path = Pairpool_pop(path,&pair);
+
       leftpair = path->first;
       rightpair = pairs->first;
       debug(printf("Stage 3 (dir %d): Traversing single gap: leftquerypos = %d, rightquerypos = %d, leftgenomepos = %d, rightgenomepos = %d.  queryjump = %d, genomejump = %d\n",
@@ -8461,12 +9273,10 @@ build_pairs_introns (bool *shiftp, bool *incompletep,
 		   pair->queryjump,pair->genomejump));
       pairs = traverse_single_gap(&filledp,&(*dynprogindex_minor),pairs,&path,leftpair,rightpair,
 				  chroffset,chrhigh,
-#ifdef PMAP
-				  queryaaseq_ptr,
-#endif
-				  queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-				  jump_late_p,pairpool,dynprogM,maxpeelback,extraband_single,defect_rate,
-				  close_indels_mode,/*forcep*/false);
+				  queryseq_ptr,queryuc_ptr,querylength,watsonp,
+				  jump_late_p,pairpool,dynprogM,last_genomedp5,last_genomedp3,
+				  maxpeelback,extraband_single,defect_rate,
+				  close_indels_mode,/*forcep*/false,finalp);
 
       if (filledp == true) {
 	/* Discard the gap */
@@ -8487,6 +9297,12 @@ build_pairs_introns (bool *shiftp, bool *incompletep,
     }
   }
 
+  /* Handle last entry if not a gap */
+  if (path != NULL && ((Pair_T) path->first)->gapp == false) {
+    pair = (Pair_T) path->first;
+    pairs = List_transfer_one(pairs,&path);
+  }
+
   return pairs;
 }  
 
@@ -8529,184 +9345,256 @@ score_introns (double *max_intron_score, double *avg_donor_score, double *avg_ac
 	       Pairpool_T pairpool,
 #endif
 	       int nullgap) {
-  List_T pairs = NULL, pairptr;
+  List_T pairs = NULL, pairptr, p, q;
   Pair_T pair, leftpair, rightpair;
   Univcoord_T splicesitepos;
   int minintronlen;
   double donor_score, acceptor_score;
   int nintrons = 0;
+  int i;
+  int intron_matches, intron_denominator, total_matches, total_denominator;
+  double theta;
 #if 0
   char gbuffer1[MAXENT_MAXLENGTH];
 #endif
 
-  debug11(printf("\n** Starting score_introns\n"));
+  debug11(printf("\n** Starting score_introns with cdna_direction %d\n",cdna_direction));
+  debug11(Pair_dump_list(path,true));
 
   minintronlen = MININTRONLEN_FINAL;
 
   *max_intron_score = *avg_donor_score = *avg_acceptor_score = 0.0;
   *nbadintrons = 0;
 
+  total_matches = total_denominator = 0;
+  for (p = path; p != NULL; p = p->rest) {
+    pair = (Pair_T) p->first;
+    if (pair->gapp == true) {
+      /* Skip */
+    } else {
+      if (pair->comp == MATCH_COMP || pair->comp == DYNPROG_MATCH_COMP || pair->comp == AMBIGUOUS_COMP) {
+	total_matches++;
+      }
+      total_denominator++;
+    }
+  }
+
+
   while (path != NULL) {
-    pairptr = path;
-    path = Pairpool_pop(path,&pair);
+    /* pairptr = path; */
+    /* path = Pairpool_pop(path,&pair); */
+    pair = (Pair_T) path->first;
+
     if (pair->gapp == false) {
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > nullgap) {
+      debug11(printf("pair->queryjump %d > nullgap %d\n",pair->queryjump,nullgap));
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->queryjump > pair->genomejump + EXTRAQUERYGAP) {
+      debug11(printf("pair->queryjump %d > pair->genomejump %d + EXTRAQUERYGAP %d\n",
+		     pair->queryjump,pair->genomejump,EXTRAQUERYGAP));
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else if (pair->genomejump > pair->queryjump + minintronlen) {
-      leftpair = path->first;
-      rightpair = pairs->first;
+      debug11(printf("pair->genomejump %d > pair->queryjump %d + minintronlen %d\n",
+		     pair->genomejump,pair->queryjump,minintronlen));
+      pairptr = path;	/* save */
+      path = Pairpool_pop(path,&pair);
 
-      debug11(printf("pair->comp = %c\n",pair->comp));
+      /* Look at right neighborhood */
+      intron_matches = intron_denominator = 0;
+      for (p = pairs, i = 0; p != NULL && i < 25 && ((Pair_T) (p->first))->gapp == false; p = p->rest, i++) {
+	rightpair = p->first;
+	if (rightpair->comp == MATCH_COMP || rightpair->comp == DYNPROG_MATCH_COMP || rightpair->comp == AMBIGUOUS_COMP) {
+	  intron_matches++;
+	}
+	intron_denominator++;
+      }
 
-      if (cdna_direction == +1) {
-	if (watsonp) {
-	  splicesitepos = leftpair->genomepos + 1;
-	  debug11(printf("1. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1)) {
-	    debug11(printf(" => known\n"));
-	    donor_score = 1.0;
-	  } else {
-	    donor_score = Maxent_hr_donor_prob(chroffset + splicesitepos,chroffset);
-	  }
+      theta = (double) (total_matches - intron_matches)/(double) (total_denominator - intron_denominator + 1);
+      if (theta > 1.0) {
+	theta = 1.0;
+      }
+      debug11(printf("intron_matches %d, intron_denominator %d, theta %f => pvalue %g\n",
+		     intron_matches,intron_denominator,theta,Pbinom(intron_matches,intron_denominator,theta)));
+      if (Pbinom(intron_matches,intron_denominator,theta) < 1e-3) {
+	/* Not a good intron */
+	/* *nbadintrons += 1; */
 
-	  splicesitepos = rightpair->genomepos;
-	  debug11(printf("2. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1)) {
-	    debug11(printf(" => known\n"));
-	    acceptor_score = 1.0;
-	  } else {
-	    acceptor_score = Maxent_hr_acceptor_prob(chroffset + splicesitepos,chroffset);
+      } else {
+	/* Look at left neighborhood */
+	intron_matches = intron_denominator = 0;
+	for (p = path, i = 0; p != NULL && i < 25 && ((Pair_T) (p->first))->gapp == false; p = p->rest, i++) {
+	  leftpair = p->first;
+	  if (leftpair->comp == MATCH_COMP || leftpair->comp == DYNPROG_MATCH_COMP || leftpair->comp == AMBIGUOUS_COMP) {
+	    intron_matches++;
 	  }
+	  intron_denominator++;
+	}
 
-	} else {
-	  splicesitepos = (chrhigh - chroffset) - leftpair->genomepos;
-	  debug11(printf("3. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1)) {
-	    debug11(printf(" => known\n"));
-	    donor_score = 1.0;
-	  } else {
-	    donor_score = Maxent_hr_antidonor_prob(chroffset + splicesitepos,chroffset);
-	  }
+	theta = (double) (total_matches - intron_matches)/(double) (total_denominator - intron_denominator + 1);
+	if (theta > 1.0) {
+	  theta = 1.0;
+	}
+	debug11(printf("intron_matches %d, intron_denominator %d, theta %f => pvalue %g\n",
+		       intron_matches,intron_denominator,theta,Pbinom(intron_matches,intron_denominator,theta)));
+	if (Pbinom(intron_matches,intron_denominator,theta) < 1e-3) {
+	  /* Not a good intron */
+	  /* *nbadintrons += 1; */
 
-	  splicesitepos = (chrhigh - chroffset) - rightpair->genomepos + 1;
-	  debug11(printf("4. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1)) {
-	    debug11(printf(" => known\n"));
-	    acceptor_score = 1.0;
-	  } else {
-	    acceptor_score = Maxent_hr_antiacceptor_prob(chroffset + splicesitepos,chroffset);
-	  }
-	}
-	debug11(printf("donor score at %u is %f, watson %d, cdna_direction %d\n",
-		       leftpair->genomepos,donor_score,watsonp,cdna_direction));
-	debug11(printf("acceptor score at %u is %f, watson %d, cdna_direction %d\n",
-		       rightpair->genomepos,acceptor_score,watsonp,cdna_direction));
-	nintrons += 1;
-	if (pair->knowngapp == true) {
-	  /* Skip */
-	} else if (pair->comp == FWD_CANONICAL_INTRON_COMP && (donor_score < 0.9 && acceptor_score < 0.9)) {
-	  *nbadintrons = 1;
-	}
-	*avg_donor_score += donor_score;
-	*avg_acceptor_score += acceptor_score;
-	if (donor_score + acceptor_score > *max_intron_score) {
-	  *max_intron_score = donor_score + acceptor_score;
-	}
+	} else {
+	  leftpair = path->first;
+	  rightpair = pairs->first;
+
+	  debug11(printf("pair->comp = %c\n",pair->comp));
+
+	  if (cdna_direction == +1) {
+	    if (watsonp) {
+	      splicesitepos = leftpair->genomepos + 1;
+	      debug11(printf("1. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1)) {
+		debug11(printf(" => known\n"));
+		donor_score = 1.0;
+	      } else {
+		donor_score = Maxent_hr_donor_prob(chroffset + splicesitepos,chroffset);
+	      }
+
+	      splicesitepos = rightpair->genomepos;
+	      debug11(printf("2. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1)) {
+		debug11(printf(" => known\n"));
+		acceptor_score = 1.0;
+	      } else {
+		acceptor_score = Maxent_hr_acceptor_prob(chroffset + splicesitepos,chroffset);
+	      }
+
+	    } else {
+	      splicesitepos = (chrhigh - chroffset) - leftpair->genomepos;
+	      debug11(printf("3. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1)) {
+		debug11(printf(" => known\n"));
+		donor_score = 1.0;
+	      } else {
+		donor_score = Maxent_hr_antidonor_prob(chroffset + splicesitepos,chroffset);
+	      }
+
+	      splicesitepos = (chrhigh - chroffset) - rightpair->genomepos + 1;
+	      debug11(printf("4. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1)) {
+		debug11(printf(" => known\n"));
+		acceptor_score = 1.0;
+	      } else {
+		acceptor_score = Maxent_hr_antiacceptor_prob(chroffset + splicesitepos,chroffset);
+	      }
+	    }
+	    debug11(printf("donor score at %u is %f, watson %d, cdna_direction %d\n",
+			   leftpair->genomepos,donor_score,watsonp,cdna_direction));
+	    debug11(printf("acceptor score at %u is %f, watson %d, cdna_direction %d\n",
+			   rightpair->genomepos,acceptor_score,watsonp,cdna_direction));
+	    nintrons += 1;
+	    if (pair->knowngapp == true) {
+	      /* Skip */
+	    } else if (pair->comp == FWD_CANONICAL_INTRON_COMP && (donor_score < 0.9 && acceptor_score < 0.9)) {
+	      *nbadintrons = 1;
+	    }
+	    *avg_donor_score += donor_score;
+	    *avg_acceptor_score += acceptor_score;
+	    if (donor_score + acceptor_score > *max_intron_score) {
+	      *max_intron_score = donor_score + acceptor_score;
+	    }
 
-      } else if (cdna_direction == -1) {
+	  } else if (cdna_direction == -1) {
 
 #if 0
-	make_complement_buffered(gbuffer1,&(genomicuc_ptr[leftpair->genomepos - ACCEPTOR_MODEL_RIGHT_MARGIN]),
-				 ACCEPTOR_MODEL_LEFT_MARGIN+ACCEPTOR_MODEL_RIGHT_MARGIN+1);
-	acceptor_score = Maxent_acceptor_prob(gbuffer1);
-	make_complement_buffered(gbuffer1,&(genomicuc_ptr[rightpair->genomepos - DONOR_MODEL_RIGHT_MARGIN - 1]),
-				 DONOR_MODEL_LEFT_MARGIN+DONOR_MODEL_RIGHT_MARGIN+1);
-	donor_score = Maxent_donor_prob(gbuffer1);
-#endif
-
-	if (watsonp) {
-	  splicesitepos = leftpair->genomepos + 1;
-	  debug11(printf("5. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1)) {
-	    debug11(printf(" => known\n"));
-	    acceptor_score = 1.0;
-	  } else {
-	    acceptor_score = Maxent_hr_antiacceptor_prob(chroffset + splicesitepos,chroffset);
-	  }
+	    make_complement_buffered(gbuffer1,&(genomicuc_ptr[leftpair->genomepos - ACCEPTOR_MODEL_RIGHT_MARGIN]),
+				     ACCEPTOR_MODEL_LEFT_MARGIN+ACCEPTOR_MODEL_RIGHT_MARGIN+1);
+	    acceptor_score = Maxent_acceptor_prob(gbuffer1);
+	    make_complement_buffered(gbuffer1,&(genomicuc_ptr[rightpair->genomepos - DONOR_MODEL_RIGHT_MARGIN - 1]),
+				     DONOR_MODEL_LEFT_MARGIN+DONOR_MODEL_RIGHT_MARGIN+1);
+	    donor_score = Maxent_donor_prob(gbuffer1);
+#endif
+
+	    if (watsonp) {
+	      splicesitepos = leftpair->genomepos + 1;
+	      debug11(printf("5. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/-1)) {
+		debug11(printf(" => known\n"));
+		acceptor_score = 1.0;
+	      } else {
+		acceptor_score = Maxent_hr_antiacceptor_prob(chroffset + splicesitepos,chroffset);
+	      }
 
 
-	  splicesitepos = rightpair->genomepos;
-	  debug11(printf("6. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1)) {
-	    debug11(printf(" => known\n"));
-	    donor_score = 1.0;
-	  } else {
-	    donor_score = Maxent_hr_antidonor_prob(chroffset + splicesitepos,chroffset);
-	  }
+	      splicesitepos = rightpair->genomepos;
+	      debug11(printf("6. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/-1)) {
+		debug11(printf(" => known\n"));
+		donor_score = 1.0;
+	      } else {
+		donor_score = Maxent_hr_antidonor_prob(chroffset + splicesitepos,chroffset);
+	      }
 
-	} else {
-	  splicesitepos = (chrhigh - chroffset) - leftpair->genomepos;
-	  debug11(printf("7. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1)) {
-	    debug11(printf(" => known\n"));
-	    acceptor_score = 1.0;
-	  } else {
-	    acceptor_score = Maxent_hr_acceptor_prob(chroffset + splicesitepos,chroffset);
-	  }
+	    } else {
+	      splicesitepos = (chrhigh - chroffset) - leftpair->genomepos;
+	      debug11(printf("7. looking up splicesites_iit for acceptor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,acceptor_typeint,/*sign*/+1)) {
+		debug11(printf(" => known\n"));
+		acceptor_score = 1.0;
+	      } else {
+		acceptor_score = Maxent_hr_acceptor_prob(chroffset + splicesitepos,chroffset);
+	      }
+
+	      splicesitepos = (chrhigh - chroffset) - rightpair->genomepos + 1;
+	      debug11(printf("8. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
+	      if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
+									splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1)) {
+		debug11(printf(" => known\n"));
+		donor_score = 1.0;
+	      } else {
+		donor_score = Maxent_hr_donor_prob(chroffset + splicesitepos,chroffset);
+	      }
+	    }
+	    debug11(printf("donor score at %u is %f, watson %d, cdna_direction %d\n",
+			   leftpair->genomepos,donor_score,watsonp,cdna_direction));
+	    debug11(printf("acceptor score at %u is %f, watson %d, cdna_direction %d\n",
+			   rightpair->genomepos,acceptor_score,watsonp,cdna_direction));
+	    nintrons += 1;
+	    if (pair->knowngapp == true) {
+	      /* Skip */
+	    } else if (pair->comp == REV_CANONICAL_INTRON_COMP && (donor_score < 0.9 && acceptor_score < 0.9)) {
+	      *nbadintrons += 1;
+	    }
+	    *avg_donor_score += donor_score;
+	    *avg_acceptor_score += acceptor_score;
+	    if (donor_score + acceptor_score > *max_intron_score) {
+	      *max_intron_score = donor_score + acceptor_score;
+	    }
 
-	  splicesitepos = (chrhigh - chroffset) - rightpair->genomepos + 1;
-	  debug11(printf("8. looking up splicesites_iit for donor at #%d:%u..%u\n",chrnum,splicesitepos,splicesitepos+1));
-	  if (splicesites_iit && IIT_exists_with_divno_typed_signed(splicesites_iit,splicesites_divint_crosstable[chrnum],
-								    splicesitepos,splicesitepos+1U,donor_typeint,/*sign*/+1)) {
-	    debug11(printf(" => known\n"));
-	    donor_score = 1.0;
-	  } else {
-	    donor_score = Maxent_hr_donor_prob(chroffset + splicesitepos,chroffset);
 	  }
+	  debug11(printf("\n"));
 	}
-	debug11(printf("donor score at %u is %f, watson %d, cdna_direction %d\n",
-		       leftpair->genomepos,donor_score,watsonp,cdna_direction));
-	debug11(printf("acceptor score at %u is %f, watson %d, cdna_direction %d\n",
-		       rightpair->genomepos,acceptor_score,watsonp,cdna_direction));
-	nintrons += 1;
-	if (pair->knowngapp == true) {
-	  /* Skip */
-	} else if (pair->comp == REV_CANONICAL_INTRON_COMP && (donor_score < 0.9 && acceptor_score < 0.9)) {
-	  *nbadintrons += 1;
-	}
-	*avg_donor_score += donor_score;
-	*avg_acceptor_score += acceptor_score;
-	if (donor_score + acceptor_score > *max_intron_score) {
-	  *max_intron_score = donor_score + acceptor_score;
-	}
-
       }
-      debug11(printf("\n"));
 
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
@@ -8716,18 +9604,23 @@ score_introns (double *max_intron_score, double *avg_donor_score, double *avg_ac
 
     } else if (pair->genomejump > pair->queryjump + SINGLESLEN) {
       /* Intron length shorter than MININTRONLEN_FINAL.  Just replace the gap */
+      debug11(printf("pair->genomejump %d > pair->queryjump %d + SINGLESLEN %d\n",
+		     pair->genomejump,pair->queryjump,SINGLESLEN));
+
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
 
     } else {
       /* Single gap; force fill */
+      debug11(printf("pair->queryjump %d, pair->genomejump %d => single gap\n",
+		     pair->queryjump,pair->genomejump));
 #ifdef WASTE
       pairs = Pairpool_push_existing(pairs,pairpool,pair);
 #else
-      pairs = List_push_existing(pairs,pairptr);
+      pairs = List_transfer_one(pairs,&path);
 #endif
     }
   }
@@ -8744,13 +9637,147 @@ score_introns (double *max_intron_score, double *avg_donor_score, double *avg_ac
 }  
 
 
+static int
+end_compare (List_T x, List_T y, int cdna_direction, bool watsonp,
+	     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, int nullgap,
+	     bool pairsp) {
+  List_T pairs1, pairs2, path1, path2;
+  double max_intron_score;
+
+  int ncanonical_1, nsemicanonical_1, nnoncanonical_1, nbadintrons_1;
+  int ncanonical_2, nsemicanonical_2, nnoncanonical_2, nbadintrons_2;
+  double avg_donor_score_1, avg_acceptor_score_1;
+  double avg_donor_score_2, avg_acceptor_score_2;
+  int alignment_score_1, alignment_score_2;
+  int nmatches_1, nmismatches_1, nmatches_2, nmismatches_2, nindels_1, nindels_2;
+#ifdef COMPLEX_DIRECTION
+  int indel_alignment_score_1, indel_alignment_score_2;
+#endif
+
+
+  if (pairsp == true) {
+    pairs1 = x;
+    pairs2 = y;
+
+    path1 = List_reverse(pairs1);
+    debug11(printf("Calling score_introns for end_compare on path1\n"));
+    pairs1 = score_introns(&max_intron_score,&avg_donor_score_1,&avg_acceptor_score_1,&nbadintrons_1,
+			   path1,cdna_direction,watsonp,chrnum,chroffset,chrhigh,nullgap);
+    alignment_score_1 = score_alignment(&nmatches_1,&nmismatches_1,&nindels_1,
+#ifdef COMPLEX_DIRECTION
+					&indel_alignment_score_1,
+#endif
+					&ncanonical_1,&nsemicanonical_1,&nnoncanonical_1,
+					pairs1,cdna_direction);
+
+    path2 = List_reverse(pairs2);
+    debug11(printf("Calling score_introns for end_compare on path2\n"));
+    pairs2 = score_introns(&max_intron_score,&avg_donor_score_2,&avg_acceptor_score_2,&nbadintrons_2,
+			   path2,cdna_direction,watsonp,chrnum,chroffset,chrhigh,nullgap);
+    alignment_score_2 = score_alignment(&nmatches_2,&nmismatches_2,&nindels_2,
+#ifdef COMPLEX_DIRECTION
+					&indel_alignment_score_2,
+#endif
+					&ncanonical_2,&nsemicanonical_2,&nnoncanonical_2,
+					pairs2,cdna_direction);
+
+  } else {
+    path1 = x;
+    path2 = y;
+
+    debug11(printf("Calling score_introns for end_compare on path1\n"));
+    pairs1 = score_introns(&max_intron_score,&avg_donor_score_1,&avg_acceptor_score_1,&nbadintrons_1,
+			   path1,cdna_direction,watsonp,chrnum,chroffset,chrhigh,nullgap);
+    alignment_score_1 = score_alignment(&nmatches_1,&nmismatches_1,&nindels_1,
+#ifdef COMPLEX_DIRECTION
+					&indel_alignment_score_1,
+#endif
+					&ncanonical_1,&nsemicanonical_1,&nnoncanonical_1,
+					pairs1,cdna_direction);
+
+    path1 = List_reverse(pairs1);
+    debug11(printf("Calling score_introns for end_compare on path2\n"));
+    pairs2 = score_introns(&max_intron_score,&avg_donor_score_2,&avg_acceptor_score_2,&nbadintrons_2,
+			   path2,cdna_direction,watsonp,chrnum,chroffset,chrhigh,nullgap);
+    alignment_score_2 = score_alignment(&nmatches_2,&nmismatches_2,&nindels_2,
+#ifdef COMPLEX_DIRECTION
+					&indel_alignment_score_2,
+#endif
+					&ncanonical_2,&nsemicanonical_2,&nnoncanonical_2,
+					pairs2,cdna_direction);
+    path2 = List_reverse(pairs2);
+  }
+
+  if (avg_donor_score_1 > 0.9 && avg_acceptor_score_1 > 0.9 &&
+      (avg_donor_score_2 < 0.5 || avg_acceptor_score_2 < 0.5)) {
+    debug21(printf("intronscores orig %f,%f > intronscores new %f,%f, so original wins\n",
+		   avg_donor_score_1,avg_acceptor_score_1,avg_donor_score_2,avg_acceptor_score_2));
+    /* intronscores reveal a clear sensedir */
+    return -1;
+
+  } else if (avg_donor_score_2 > 0.9 && avg_acceptor_score_2 > 0.9 &&
+	     (avg_donor_score_1 < 0.5 || avg_acceptor_score_1 < 0.5)) {
+    debug21(printf("intronscores new %f,%f > intronscores orig %f,%f, so new one wins\n",
+		   avg_donor_score_2,avg_acceptor_score_2,avg_donor_score_1,avg_acceptor_score_1));
+    /* intronscores reveal a clear sensedir */
+    return +1;
+
+  } else if (alignment_score_1 > alignment_score_2 + SCORE_SIGDIFF) {
+    debug21(printf("alignment_score_1 %d >> alignment_score_2 %d, so original wins\n",
+		   alignment_score_1,alignment_score_2));
+    return -1;
+
+  } else if (alignment_score_2 > alignment_score_1 + SCORE_SIGDIFF) {
+    debug21(printf("alignment_score_2 %d << alignment_score_1 %d, so new one wins\n",
+		   alignment_score_2,alignment_score_1));
+    return +1;
+
+  } else if (nnoncanonical_1 < nnoncanonical_2) {
+    debug21(printf("nnoncanonical_1 %d < nnoncanonical_2 %d, so original wins\n",
+		   nnoncanonical_1,nnoncanonical_2));
+    return -1;
+
+  } else if (nnoncanonical_2 < nnoncanonical_1) {
+    debug21(printf("nnoncanonical_2 %d < nnoncanonical_1 %d, so new one wins\n",
+		   nnoncanonical_2,nnoncanonical_1));
+    return +1;
+
+  } else if (avg_donor_score_1 + avg_acceptor_score_1 > avg_donor_score_2 + avg_acceptor_score_2 + PROB_SIGDIFF) {
+    debug21(printf("intronscores orig %f+%f > intronscores new %f+%f, so original wins\n",
+		   avg_donor_score_1,avg_acceptor_score_1,avg_donor_score_2,avg_acceptor_score_2));
+    /* intronscores reveal a preferred sensedir */
+    return -1;
+
+  } else if (avg_donor_score_2 + avg_acceptor_score_2 > avg_donor_score_1 + avg_acceptor_score_1 + PROB_SIGDIFF) {
+    debug21(printf("intronscores new %f+%f > intronscores orig %f+%f, so new one wins\n",
+		   avg_donor_score_2,avg_acceptor_score_2,avg_donor_score_1,avg_acceptor_score_1));
+    /* intronscores reveal a preferred sensedir */
+    return +1;
+
+  } else if (alignment_score_1 > alignment_score_2) {
+    debug21(printf("alignment_score_1 %d > alignment_score_2 %d, so original wins\n",
+		   alignment_score_1,alignment_score_2));
+    return -1;
+
+  } else if (alignment_score_2 > alignment_score_1) {
+    debug21(printf("alignment_score_2 %d < alignment_score_1 %d, so new one wins\n",
+		   alignment_score_2,alignment_score_1));
+    return +1;
+
+  } else {
+    debug21(printf("scores all equal\n"));
+    return 0;
+  }
+}
+
+
 static List_T
 filter_goodness_hmm (bool *filterp, List_T pairs, double defect_rate) {
   Pair_T pair;
   List_T path, p;
-  double prev_vprob_good = 0.0, prev_vprob_bad = 0.0, vprob_good, vprob_bad;
-  double good_incr_prob, bad_incr_prob;
-  double emission_prob;
+  float prev_vprob_good = 0.0, prev_vprob_bad = 0.0, vprob_good, vprob_bad;
+  float good_incr_prob, bad_incr_prob;
+  float emission_prob;
   State_T state;
 
   if (defect_rate == 0.0) {
@@ -8770,8 +9797,13 @@ filter_goodness_hmm (bool *filterp, List_T pairs, double defect_rate) {
       emission_prob = defect_rate;
     }
 
+#ifdef COMPUTE_LOG
     good_incr_prob = log(emission_prob) + log(/*transition_prob*/0.99); /* Prob(prev good state -> good state) */
     bad_incr_prob = log(emission_prob) + log(/*transition_prob*/0.10);  /* Prob(prev bad state -> good state) */
+#else
+    good_incr_prob = fasterlog(emission_prob) + LOG_99; /* Prob(prev good state -> good state) */
+    bad_incr_prob = fasterlog(emission_prob) + LOG_10;  /* Prob(prev bad state -> good state) */
+#endif
 
     debug5(printf("state GOOD: %f+%f %f+%f ",prev_vprob_good,good_incr_prob,prev_vprob_bad,bad_incr_prob));
     if (prev_vprob_good + good_incr_prob > prev_vprob_bad + bad_incr_prob) {
@@ -8791,8 +9823,13 @@ filter_goodness_hmm (bool *filterp, List_T pairs, double defect_rate) {
       emission_prob = 0.75;
     }
 
+#ifdef COMPUTE_LOG
     good_incr_prob = log(emission_prob) + log(/*transition_prob*/0.01);  /* Prob(prev good state -> bad state) */
     bad_incr_prob = log(emission_prob) + log(/*transition_prob*/0.90);  /* Prob(prev bad state -> bad state) */
+#else
+    good_incr_prob = fasterlog(emission_prob) + LOG_01; /* Prob(prev good state -> bad state) */
+    bad_incr_prob = fasterlog(emission_prob) + LOG_90; /* Prob(prev bad state -> bad state) */
+#endif
 
     debug5(printf("state BAD: %f+%f %f+%f ",prev_vprob_good,good_incr_prob,prev_vprob_bad,bad_incr_prob));
     if (prev_vprob_good + good_incr_prob > prev_vprob_bad + bad_incr_prob) {
@@ -8846,9 +9883,9 @@ static List_T
 filter_indels_hmm (bool *filterp, List_T pairs) {
   Pair_T pair;
   List_T path, p;
-  double prev_vprob_good = 0.0, prev_vprob_bad = 0.0, vprob_good, vprob_bad;
-  double good_incr_prob, bad_incr_prob;
-  double emission_prob;
+  float prev_vprob_good = 0.0, prev_vprob_bad = 0.0, vprob_good, vprob_bad;
+  float good_incr_prob, bad_incr_prob;
+  float emission_prob;
   State_T state;
 
   debug5(printf("Beginning filter_indels_hmm\n"));
@@ -8861,13 +9898,20 @@ filter_indels_hmm (bool *filterp, List_T pairs) {
     /* These emission probs should add to 1.0 */
     if (pair->comp != INDEL_COMP) {
       emission_prob = 0.9999;	/* Prob(good state -> match/mismatch) */
+    } else if (pair->comp != SHORTGAP_COMP) {
+      emission_prob = 0.9999;	/* Prob(good state -> match/mismatch) */
     } else {
       emission_prob = 0.0001;	/* Prob(good state -> indel) */
     }
 
     /* These transition probs should complement those for state BAD */
+#ifdef COMPUTE_LOG
     good_incr_prob = log(emission_prob) + log(/*transition_prob*/0.9999);  /* Prob(prev good state -> good state) */
     bad_incr_prob = log(emission_prob) + log(/*transition_prob*/0.25);   /* Prob(prev bad state -> good state) */
+#else
+    good_incr_prob = fasterlog(emission_prob) + LOG_9999;  /* Prob(prev good state -> good state) */
+    bad_incr_prob = fasterlog(emission_prob) + LOG_25;   /* Prob(prev bad state -> good state) */
+#endif
 
     debug5(printf("state GOOD: %f+%f %f+%f ",prev_vprob_good,good_incr_prob,prev_vprob_bad,bad_incr_prob));
     if (prev_vprob_good + good_incr_prob > prev_vprob_bad + bad_incr_prob) {
@@ -8882,14 +9926,19 @@ filter_indels_hmm (bool *filterp, List_T pairs) {
 
     /* state: BAD */
     /* These emission probs should add to 1.0 */
-    if (pair->comp != INDEL_COMP) {
+    if (pair->comp != INDEL_COMP && pair->comp != SHORTGAP_COMP) {
       emission_prob = 0.5; 	/* Prob(bad state -> match/mismatch) */
     } else {
       emission_prob = 0.5;	/* Prob(bad state -> indel) */
     }
 
+#ifdef COMPUTE_LOG
     good_incr_prob = log(emission_prob) + log(/*transition_prob*/0.0001);   /* Prob(prev good state -> bad state) */
     bad_incr_prob = log(emission_prob) + log(/*transition_prob*/0.75);  /* Prob(prev bad state -> bad state) */
+#else
+    good_incr_prob = fasterlog(emission_prob) + LOG_0001;   /* Prob(prev good state -> bad state) */
+    bad_incr_prob = fasterlog(emission_prob) + LOG_75;  /* Prob(prev bad state -> bad state) */
+#endif
 
     debug5(printf("state BAD: %f+%f %f+%f ",prev_vprob_good,good_incr_prob,prev_vprob_bad,bad_incr_prob));
     if (prev_vprob_good + good_incr_prob > prev_vprob_bad + bad_incr_prob) {
@@ -8958,6 +10007,7 @@ Stage3_short_alignment_p (struct Pair_T *pairarray, int npairs, int querylength)
 }
 
 
+#if 0
 /* Uses hmm */
 /* Modified from Substring_bad_stretch_p */
 bool
@@ -9089,6 +10139,69 @@ Stage3_bad_stretch_p (struct Pair_T *pairarray, int npairs, int pos5, int pos3)
 
   return false;
 }
+#else
+
+/* Uses a window */
+bool
+Stage3_bad_stretch_p (struct Pair_T *pairarray, int npairs, int pos5, int pos3) {
+  int *nindels;
+  struct Pair_T *ptr;
+  Pair_T pair;
+  int i;
+
+  nindels = (int *) CALLOC(npairs,sizeof(int));
+
+  i = 0;
+  ptr = pairarray;
+  while (i < npairs) {
+    pair = ptr++;
+    i++;
+
+    if (pair->querypos < pos5) {
+      /* Skip */
+    } else if (pair->querypos >= pos3) {
+      /* Skip */
+    } else if (pair->comp == INDEL_COMP || pair->comp == SHORTGAP_COMP) {
+      if (pair->genome == ' ') {
+	nindels[i] = 1;
+	while (i < npairs && pair->genome == ' ') {
+	  pair = ptr++;
+	  i++;
+	}
+	ptr--;
+	i--;
+
+      } else {
+	nindels[i] = 1;
+	while (i < npairs && pair->cdna == ' ') {
+	  pair = ptr++;
+	  i++;
+	}
+	ptr--;
+	i--;
+
+      }
+    }
+  }
+
+  /* Compute cumulative count of indel openings */
+  for (i = 1; i < npairs; i++) {
+    nindels[i] += nindels[i-1];
+  }
+   
+  /* Look for more than 3 indel openings in a span of 25 pairs */
+  for (i = 0; i < npairs - 25; i++) {
+    if (nindels[i+25] - nindels[i] > 3) {
+      FREE(nindels);
+      return true;
+    }
+  }
+  FREE(nindels);
+  return false;
+}
+
+#endif
+
 
 
 int
@@ -9366,9 +10479,9 @@ score_nconsecutive (List_T pairs) {
   int score = 0, nconsecutive;
   Pair_T pair;
   List_T path, p;
-  double prev_vprob_good = 0.0, prev_vprob_bad = 0.0, vprob_good, vprob_bad;
-  double defect_rate = 0.001, good_incr_prob, bad_incr_prob;
-  double emission_prob;
+  float prev_vprob_good = 0.0, prev_vprob_bad = 0.0, vprob_good, vprob_bad;
+  float defect_rate = 0.001, good_incr_prob, bad_incr_prob;
+  float emission_prob;
   State_T state;
 
 
@@ -9385,8 +10498,13 @@ score_nconsecutive (List_T pairs) {
       emission_prob = defect_rate;
     }
 
+#ifdef COMPUTE_LOG
     good_incr_prob = log(emission_prob) + log(/*transition_prob*/0.99); /* Prob(prev good state -> good state) */
     bad_incr_prob = log(emission_prob) + log(/*transition_prob*/0.10);  /* Prob(prev bad state -> good state) */
+#else
+    good_incr_prob = fasterlog(emission_prob) + LOG_99; /* Prob(prev good state -> good state) */
+    bad_incr_prob = fasterlog(emission_prob) + LOG_10;  /* Prob(prev bad state -> good state) */
+#endif
 
     debug5(printf("state GOOD: %f+%f %f+%f ",prev_vprob_good,good_incr_prob,prev_vprob_bad,bad_incr_prob));
     if (prev_vprob_good + good_incr_prob > prev_vprob_bad + bad_incr_prob) {
@@ -9406,8 +10524,13 @@ score_nconsecutive (List_T pairs) {
       emission_prob = 0.75;
     }
 
+#ifdef COMPUTE_LOG
     good_incr_prob = log(emission_prob) + log(/*transition_prob*/0.01);  /* Prob(prev good state -> bad state) */
     bad_incr_prob = log(emission_prob) + log(/*transition_prob*/0.90);  /* Prob(prev bad state -> bad state) */
+#else
+    good_incr_prob = fasterlog(emission_prob) + LOG_01;  /* Prob(prev good state -> bad state) */
+    bad_incr_prob = fasterlog(emission_prob) + LOG_90;  /* Prob(prev bad state -> bad state) */
+#endif
 
     debug5(printf("state BAD: %f+%f %f+%f ",prev_vprob_good,good_incr_prob,prev_vprob_bad,bad_incr_prob));
     if (prev_vprob_good + good_incr_prob > prev_vprob_bad + bad_incr_prob) {
@@ -9464,137 +10587,94 @@ score_nconsecutive (List_T pairs) {
 
 
 static List_T
-path_compute (double *defect_rate, int *ambig_end_length_5, int *ambig_end_length_3,
-	      Splicetype_T *ambig_splicetype_5, Splicetype_T *ambig_splicetype_3,
-	      List_T path, int cdna_direction, bool watsonp, int genestrand, bool jump_late_p,
-	      int querylength,
+path_compute_dir (double *defect_rate, List_T pairs,
+		  int cdna_direction, bool watsonp, int genestrand, bool jump_late_p,
+
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-	      int cutoff_level, char *queryptr, Compress_T query_compress,
+		  int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
 #ifdef PMAP
-	      char *queryaaseq_ptr, char *genomicuc_ptr,
-#endif
-	      char *queryseq_ptr, char *queryuc_ptr,
-	      Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-	      Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-	      int maxpeelback, int maxpeelback_distalmedial, int nullgap,
-	      int extramaterial_end, int extraband_end,
-	      int extramaterial_paired, int extraband_single, int extraband_paired,
-	      Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-	      Stage3debug_T stage3debug, bool do_final_p,
-	      Oligoindex_T *oligoindices_minor, int noligoindices_minor, Diagpool_T diagpool, int sufflookback, int nsufflookback,
-	      int maxintronlen_bound, int close_indels_mode, int paired_favor_mode, int zero_offset) {
-  List_T pairs = NULL;
-  int iter0, iter1, iter2;
-  bool shiftp, incompletep, shortp, deletep;
+		  char *queryaaseq_ptr,
+#endif
+		  char *queryseq_ptr, char *queryuc_ptr, int querylength,
+		  Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		  int maxpeelback, int nullgap,
+		  int extramaterial_paired, int extraband_single, int extraband_paired,
+		  Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		  Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3,
+		  Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+		  int sufflookback, int nsufflookback, int maxintronlen_bound,
+		  int close_indels_mode, int paired_favor_mode, int zero_offset) {
+  List_T path = NULL;
   int dynprogindex_minor = DYNPROGINDEX_MINOR, dynprogindex_major = DYNPROGINDEX_MAJOR;
+  int iter0, iter1, iter2;
+  bool shiftp, incompletep;
+  bool smoothp, shortp, badp, deletep, filterp, dual_break_p;
   int matches, unknowns, mismatches, qopens, qindels, topens, tindels,
     ncanonical, nsemicanonical, nnoncanonical;
   double min_splice_prob;
-  bool filterp = true, dual_break_p = true;
-  int distance5, distance3, totaljump5, totaljump3, npairs5, npairs3, donep;
-  bool knownsplice5p, knownsplice3p, ignorep, chop_exon_p;
 #ifdef DEBUG
   Pair_T firstpair, lastpair;
 #endif
-  bool trim5p, trim3p, adjacent_indels_p;
-
-
-  *ambig_end_length_5 = *ambig_end_length_3 = 0;
-  if (path == NULL) {
-    return NULL;
-  }
-
-  if (stage3debug == POST_STAGE2) {
-    pairs = List_reverse(path);
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    pairs = List_reverse(path);
-    return pairs;
-  }
-
+  
   iter0 = 0;
-  while ((filterp == true /*|| dual_break_p == true */) && iter0 < MAXITER_CYCLES) {
-    /* Pass 0: Insert gaps.  pairs --> pairs */
-    debug(printf("\n*** Pass 0 (dir %d): Solve single nucleotide gaps.  Iteration0 %d\n",
-		 cdna_direction,iter0));
-
-    pairs = List_reverse(path);
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    pairs = List_reverse(path);
-
-    /* Pass 1: Initial smoothing.  pairs --> path */
-    debug(printf("\n*** Pass 1 (dir %d): Initial smoothing by net gap.  Iteration0 %d\n",
-		 cdna_direction,iter0));
-    pairs = Smooth_pairs_by_netgap(&deletep,pairs,pairpool);
-    if (deletep == true) {
-      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    } else {
-      path = List_reverse(pairs);
-    }
-
-    if (stage3debug == POST_SMOOTHING) {
-      pairs = List_reverse(path);
-      return pairs;
-    }
+  filterp = dual_break_p = true;
+  while ((/* filterp == true || */ dual_break_p == true) && iter0 < MAXITER_CYCLES) {
+    path = List_reverse(pairs);
 
 #ifdef PMAP
+#if 0
     /* Pass 1b: undefine nucleotides around gaps.  path --> path */
     pairs = undefine_nucleotides(queryseq_ptr,querylength,path,pairpool,/*width*/6);
     path = List_reverse(pairs);
 #endif
+#endif
 
     /* Pass 2A: solve straight gaps.  path --> pairs (for defect rate) */
     debug(printf("\n*** Pass 2A (dir %d): Solve straight gaps.  Iteration0 %d\n",
 		 cdna_direction,iter0));
     pairs = build_pairs_singles(&dynprogindex_minor,path,
-				chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
+				chroffset,chrhigh,queryseq_ptr,queryuc_ptr,querylength,watsonp,
 				jump_late_p,maxpeelback,nullgap,extraband_single,
-				/*defect_rate*/0.0,close_indels_mode,pairpool,dynprogM);
-
+				/*defect_rate*/0.0,close_indels_mode,pairpool,dynprogM,
+				last_genomedp5,last_genomedp3,/*forcep*/false,/*finalp*/false);
+#ifdef DEBUG8
+    if (stage3debug == POST_SINGLES) {
+      path = List_reverse(pairs);
+      return path;
+    }
+#endif
 
-#if 1
-    /* Pass 2B: fix adjacent indels */
+    if (homopolymerp == true) {
+      /* Pass 2B: fix adjacent indels */
+      /* >>pairs */
 #if 0
-    /* gapholders shouldn't be necessary before fix_adjacent_indels,
-       but is necessary afterward for build_pairs_singles */
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    pairs = List_reverse(path);
+      /* gapholders shouldn't be necessary before fix_adjacent_indels,
+	 but is necessary afterward for build_pairs_singles */
+      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+      pairs = List_reverse(path);
 #endif
 
-    debug(printf("\n*** Pass 2B (dir %d): Fix adjacent indels.  Iteration0 %d\n",
-		 cdna_direction,iter0));
-    path = fix_adjacent_indels(pairs);
-    pairs = List_reverse(path);
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-
-
-    /* Pass 2C: solve straight gaps again.  path --> pairs (for defect rate) */
-    debug(printf("\n*** Pass 2C (dir %d): Solve straight gaps again.  Iteration0 %d\n",
-		 cdna_direction,iter0));
-    pairs = build_pairs_singles(&dynprogindex_minor,path,
-				chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-				jump_late_p,maxpeelback,nullgap,extraband_single,
-				/*defect_rate*/0.0,close_indels_mode,pairpool,dynprogM);
+      debug(printf("\n*** Pass 2B (dir %d): Fix adjacent indels.  Iteration0 %d\n",
+		   cdna_direction,iter0));
+      path = fix_adjacent_indels(pairs);
+      pairs = List_reverse(path);
+      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
 
-#endif
 
-    if (stage3debug == POST_SINGLES) {
-      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-      pairs = List_reverse(path);
-      return pairs;
+      /* Pass 2C: solve straight gaps again.  path --> pairs (for defect rate) */
+      debug(printf("\n*** Pass 2C (dir %d): Solve straight gaps again.  Iteration0 %d\n",
+		   cdna_direction,iter0));
+      pairs = build_pairs_singles(&dynprogindex_minor,path,
+				  chroffset,chrhigh,queryseq_ptr,queryuc_ptr,querylength,watsonp,
+				  jump_late_p,maxpeelback,nullgap,extraband_single,
+				  /*defect_rate*/0.0,close_indels_mode,pairpool,dynprogM,
+				  last_genomedp5,last_genomedp3,/*forcep*/false,/*finalp*/false);
+      /* <<pairs */
     }
 
-
     /* Compute defect rate here */
     Pair_fracidentity(&matches,&unknowns,&mismatches,&qopens,&qindels,&topens,&tindels,
 		      &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,
@@ -9606,273 +10686,260 @@ path_compute (double *defect_rate, int *ambig_end_length_5, int *ambig_end_lengt
     }
     debug(printf("defect_rate = %f (%d matches, %d mismatches)\n",*defect_rate,matches,mismatches));
     
-
-    /* Pass 3: introns.  pairs --> pairs */
+    /* Pass 3: introns */
+    /* >>pairs */
     debug(printf("\n*** Pass 3: Smooth and solve dual introns iteratively.  Iteration0 %d\n",iter0));
     iter1 = 0;
     shortp = true;
-    while (shortp == true && iter1 < MAXITER_SMOOTH_BY_SIZE) {
-      /* Pass 3a: smoothing.  pairs --> pairs */
-      debug(printf("*** Pass 3a: Smoothing by size.  Iteration0 %d, iteration1 %d\n",iter0,iter1));
-      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-      pairs = List_reverse(path);
-      pairs = Smooth_pairs_by_size(&shortp,&deletep,pairs,pairpool,/*stage2_indexsize*/6);
-      debug(printf("  => Result of Pass 3a (smoothing): shortp is %d, deletep is %d\n",shortp,deletep));
-      debug(Pair_dump_list(pairs,/*zerobasedp*/true));
-      
-      /* Pass 3b: dual introns.  pairs --> pairs */
-      debug(printf("*** Pass 3b: Solve dual introns.  Iteration0 %d, Iteration1 %d\n",iter0,iter1));
-      if (shortp == false && deletep == false) {
-	debug(printf("  no shortp or deletep, so do nothing\n"));
-      } else {
-	debug(printf("  shortp or deletep is true, so running build_pairs_dualintrons\n"));
-	path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-	/* XX */
-	/* pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
-	   chrnum,chroffset,chrhigh,pairpool); */
+    while ((shortp == true || deletep == true || badp == true) && iter1 < MAXITER_SMOOTH_BY_SIZE) {
+      /* Pass 3c: single introns */
+      debug(printf("*** Pass 3c: Solve introns.  Iteration0 %d, iteration1 %d\n",
+		   iter0,iter1));
 
-	pairs = remove_indel_gaps(path);
-	path = List_reverse(pairs);
-#if 0
-	/* Smooth_pairs_by_size should mark shortexons correctly */
-	pairs = Smooth_mark_short_exons(pairs,pairpool,/*stage2_indexsize*/6);
-#endif
-	pairs = build_pairs_dualintrons(&dynprogindex_major,path,chrnum,chroffset,chrhigh,
-#ifdef PMAP
-					queryaaseq_ptr,
-#endif
-					queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,jump_late_p,
-					maxpeelback,nullgap,extramaterial_paired,extraband_paired,
-					*defect_rate,pairpool,dynprogL,dynprogR);
-	debug(printf("  => Result of Pass 3b (dual introns):\n"));
-	debug(Pair_dump_list(pairs,/*zerobasedp*/true));
-      }
-
-      /* Pass 3c: single introns.  pairs --> pairs */
       iter2 = 0;
-      shiftp = incompletep = true;
-      debug(printf("\n*** Pass 3c: Solve introns iteratively\n"));
-      while ((shiftp == true || incompletep == true) && iter2 < MAXITER_INTRONS) {
-	debug(printf("*** Pass 3c: Solve introns.  Iteration0 %d, iteration1 %d, iteration2 %d\n",
-		     iter0,iter1,iter2));
+      shiftp = true;
+      while ((shiftp == true || incompletep == true) && iter2++ < MAXITER_INTRONS) {
 	path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-	/* XX */
-	/* pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
-	   chrnum,chroffset,chrhigh,pairpool); */
-	pairs = remove_indel_gaps(path);
-	path = List_reverse(pairs);
 	pairs = build_pairs_introns(&shiftp,&incompletep,
 				    &dynprogindex_minor,&dynprogindex_major,path,
 				    chrnum,chroffset,chrhigh,
 #ifdef PMAP
 				    queryaaseq_ptr,
 #endif
-				    queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,jump_late_p,
+				    queryseq_ptr,queryuc_ptr,querylength,
+				    cdna_direction,watsonp,genestrand,jump_late_p,
 				    maxpeelback,nullgap,extramaterial_paired,extraband_single,extraband_paired,
-				    *defect_rate,close_indels_mode,pairpool,dynprogL,dynprogM,dynprogR,/*finalp*/false);
+				    *defect_rate,close_indels_mode,pairpool,dynprogL,dynprogM,dynprogR,
+				    oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen_bound,
+				    last_genomedp5,last_genomedp3,/*finalp*/false,/*simplep*/true);
 	debug(printf("  => Result of Pass 3c (introns):\n"));
 	debug(Pair_dump_list(pairs,/*zerobasedp*/true));
+      }
 
-	iter2++;
+#ifdef DEBUG8
+      if (stage3debug == POST_INTRONS) {
+	path = List_reverse(pairs);
+	return path;
       }
+#endif
+
+#if 0
+      /* Pass 4: Remove bad sections */
+      /* >>pairs */
+      debug(printf("\n*** Pass 4: Remove bad sections.  Iteration0 %d\n",iter0));
+      /* pairs = filter_goodness_hmm(&filterp,pairs,*defect_rate); */
+      pairs = filter_indels_hmm(&filterp,pairs);
+      /* <<pairs */
+
+#ifdef DEBUG8
+      if (stage3debug == POST_HMM) {
+	path = List_reverse(pairs);
+	return path;
+      }
+#endif
+
+#endif
+
+      /* Smoothing by probability */
+      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+      pairs = assign_intron_probs(path,cdna_direction,watsonp,queryseq_ptr,
+				  chrnum,chroffset,chrhigh,pairpool);
+      Smooth_reset(pairs);
+      pairs = Smooth_pairs_by_intronprobs(&badp,pairs,pairpool);
+
+#if 0
+      /* Smoothing by netgap.  Can crash or stall, and generally doesn't do anything except for very low-identity alignments. */
+      debug(printf("\n*** Pass 1 (dir %d): Initial smoothing by net gap.  Iteration1 %d\n",
+		   cdna_direction,iter1));
+      pairs = Smooth_pairs_by_netgap(&smoothp,pairs,pairpool);
+#endif
+      
+      /* Smoothing by size: This can undo the short exons found by traverse_dual_genome, so we use protectedp in traverse_dual_genome  */
+      debug(printf("*** Pass 3a: Smoothing by size.  Iteration0 %d, iteration1 %d\n",iter0,iter1));
+      path = List_reverse(pairs);
+      pairs = remove_indel_gaps(path);
+      pairs = Smooth_pairs_by_size(&shortp,&deletep,pairs,pairpool,/*stage2_indexsize*/6);
+      debug(printf("  => Result of Pass 3a (smoothing): shortp is %d, deletep is %d\n",shortp,deletep));
+      debug(Pair_dump_list(pairs,/*zerobasedp*/true));
+      
+#ifdef DEBUG8
+      if (stage3debug == POST_SMOOTHING) {
+	path = List_reverse(pairs);
+	return path;
+      }
+#endif
+
+      debug(printf("*** Pass 3b: Solve dual introns.  Iteration0 %d, Iteration1 %d\n",iter0,iter1));
+      if (badp == false && shortp == false && deletep == false) {
+	debug(printf("  no shortp or deletep, so do nothing\n"));
+      } else {
+	debug(printf("  shortp or deletep is true, so running build_pairs_dualintrons\n"));
+	path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+	/* XX */
+	/* pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
+	   chrnum,chroffset,chrhigh,pairpool); */
+	
+	/* Pass 3b: dual introns.  pairs --> pairs */
+	pairs = build_pairs_dualintrons(&dynprogindex_major,path,chrnum,chroffset,chrhigh,
+					queryseq_ptr,queryuc_ptr,querylength,cdna_direction,watsonp,jump_late_p,
+					maxpeelback,nullgap,extramaterial_paired,extraband_paired,
+					*defect_rate,pairpool,dynprogL,dynprogR,
+					last_genomedp5,last_genomedp3,/*simplep*/true);
+	debug(printf("  => Result of Pass 3b (dual introns):\n"));
+	debug(Pair_dump_list(pairs,/*zerobasedp*/true));
+      }
+
+#ifdef DEBUG8
+      if (stage3debug == POST_DUAL_INTRONS) {
+	path = List_reverse(pairs);
+	return path;
+      }
+#endif
 
       iter1++;
+      debug(printf("At end of inner loop: iter1 %d, shortp %d, deletep %d, badp %d\n",
+		   iter1,shortp,deletep,badp,dual_break_p));
     }
 
-    if (stage3debug == POST_INTRONS) {
-      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-      pairs = List_reverse(path);
-      return pairs;
+#ifdef DEBUG8
+    if (stage3debug == POST_CYCLES) {
+      path = List_reverse(pairs);
+      return path;
     }
+#endif
 
-    /* Pass 3b: trim end exons: pairs -> pairs */
-    debug(printf("\n*** Pass 3b: Trim end exons\n"));
+#if 0
+    if (maximize_coverage_p == true) {
+      /* Don't trim ends */
+    } else {
+      /* Pass 3b: trim end exons: pairs -> pairs */
+      debug(printf("\n*** Pass 3b: Trim end exons\n"));
 #ifdef WASTE
-    pairs = chop_ends_by_changepoint(pairs,pairpool);
+      pairs = chop_ends_by_changepoint(pairs,pairpool);
 #else
-    pairs = chop_ends_by_changepoint(pairs);
+      pairs = chop_ends_by_changepoint(pairs);
 #endif
-    debug(Pair_dump_list(pairs,/*zerobasedp*/true));
-
-
-    /* Pass 4: Remove bad sections */
-    debug(printf("\n*** Pass 4: Remove bad sections.  Iteration0 %d\n",iter0));
-    Pair_fracidentity(&matches,&unknowns,&mismatches,&qopens,&qindels,&topens,&tindels,
-		      &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,
-		      pairs,/*cdna_direction*/0);
-    if (matches + mismatches == 0) {
-      *defect_rate = 0.0;
-    } else {
-      *defect_rate = (double) mismatches/(double) (matches + mismatches);
+      debug(Pair_dump_list(pairs,/*zerobasedp*/true));
     }
-    pairs = filter_goodness_hmm(&filterp,pairs,*defect_rate);
-    pairs = filter_indels_hmm(&filterp,pairs);
-    filterp = false;		/* Do not iterate */
-    debug(Pair_dump_list(pairs,/*zerobasedp*/true));
+#endif
 
-    if (stage3debug == POST_HMM) {
-      path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-      pairs = List_reverse(path);
-      return pairs;
-    }
+    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+    debug(Pair_dump_list(path,/*zerobasedp*/true));
 
     /* Pass 5: Fix dual breaks */
     debug(printf("\n*** Pass 5: Fix dual breaks.  Iteration0 %d\n",iter0));
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-
-#if 0
-    /* Can no longer assign_gap_types here; just remove indel gaps  */
-    pairs = assign_gap_types(&npairs,&ngaps,&ncanonical,path,pairpool,queryseq_ptr,genomicuc_ptr,cdna_direction);
-#elif defined(WASTE)
-    pairs = remove_indel_gaps(path,pairpool);
-#else
     pairs = remove_indel_gaps(path);
-#endif
     path = List_reverse(pairs);
 
     pairs = build_dual_breaks(&dual_break_p,&dynprogindex_minor,&dynprogindex_major,path,
 			      chrnum,chroffset,chrhigh,
 #ifdef PMAP
-			      queryaaseq_ptr,genomicuc_ptr,
+			      queryaaseq_ptr,
 #endif
-			      queryseq_ptr,queryuc_ptr,
+			      queryseq_ptr,queryuc_ptr,querylength,
 			      cdna_direction,watsonp,genestrand,jump_late_p,pairpool,
-			      dynprogL,dynprogM,dynprogR,maxpeelback,
-			      oligoindices_minor,noligoindices_minor,diagpool,sufflookback,nsufflookback,
+			      dynprogL,dynprogM,dynprogR,last_genomedp5,last_genomedp3,maxpeelback,
+			      oligoindices_minor,diagpool,cellpool,sufflookback,nsufflookback,
 			      maxintronlen_bound,extramaterial_paired,extraband_paired,extraband_single,
-			      *defect_rate,close_indels_mode);
+			      *defect_rate,close_indels_mode,/*finalp*/false,/*simplep*/true);
     /* Must end with path to start loop */
     path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-
+    pairs = List_reverse(path);
+    debug14(printf("Result of build_dual_breaks\n"));
+    debug14(Pair_dump_list(pairs,true));
+    debug(printf("Result of build_dual_breaks\n"));
+    debug(Pair_dump_list(pairs,true));
+      
+#ifdef DEBUG8
     if (stage3debug == POST_DUAL_BREAKS) {
-      pairs = List_reverse(path);
-      return pairs;
+      path = List_reverse(pairs);
+      return path;
     }
+#endif
 
+#ifdef GSNAP
+    /* Too expensive to loop */
+    dual_break_p = false;
+    filterp = false;
+#endif
     iter0++;
+    debug(printf("At end of outer loop: filterp %d, dual_break_p %d\n",filterp,dual_break_p));
   }
-  /* End of iter0 on pass 1-5 */
 
-  if (stage3debug == POST_CYCLES) {
-    pairs = List_reverse(path);
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    pairs = List_reverse(path);
-    return pairs;
-  }
+  path = List_reverse(pairs);
+  return path;
+}
 
 
-  /* Pass 6: Final pass to solve for introns with higher rewards for canonical introns: path --> pairs */
-  pairs = List_reverse(path);
-  if (do_final_p == true) {
-    debug(printf("\n*** Pass 6: Final pass to find canonical introns\n"));
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    /* XX */
-    /* pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
-       chrnum,chroffset,chrhigh,pairpool); */
-    pairs = remove_indel_gaps(path);
-    path = List_reverse(pairs);
-    pairs = build_pairs_introns(&shiftp,&incompletep,
-				&dynprogindex_minor,&dynprogindex_major,path,
-				chrnum,chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq_ptr,
+static List_T
+path_compute_end5 (int *ambig_end_length_5, Splicetype_T *ambig_splicetype_5,
+		   double defect_rate, List_T pairs, int cdna_direction,
+		   bool watsonp, int genestrand, bool jump_late_p, int querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+		   int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
-				queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,jump_late_p,
-				maxpeelback,nullgap,extramaterial_paired,extraband_single,extraband_paired,
-				*defect_rate,close_indels_mode,pairpool,dynprogL,dynprogM,dynprogR,/*finalp*/true);
-  }
+#endif
+		   char *queryseq_ptr, char *queryuc_ptr,
+		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		   Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+		   int maxpeelback, int maxpeelback_distalmedial, int nullgap,
+		   int extramaterial_end, int extraband_end,
+		   int extramaterial_paired, int extraband_single, int extraband_paired,
+		   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		   bool do_final_p,
+		   Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, int sufflookback, int nsufflookback,
+		   int maxintronlen_bound, int close_indels_mode, int paired_favor_mode, int zero_offset) {
+  List_T path = NULL;
+  int iter1, iter2;
+  int dynprogindex_minor = DYNPROGINDEX_MINOR, dynprogindex_major = DYNPROGINDEX_MAJOR;
+  int nmatches, nunknowns, nmismatches, qopens, qindels, topens, tindels,
+    ncanonical, nsemicanonical, nnoncanonical;
+  double min_splice_prob;
+  bool filterp = true, dual_break_p = true;
+  int distance5, distance3, totaljump5, totaljump3, npairs5, npairs3, donep;
+  bool knownsplice5p, knownsplice3p, chop_exon_p;
+#ifdef DEBUG
+  Pair_T firstpair, lastpair;
+#endif
+  bool trim5p, trim3p, adjacent_indels_p;
 
-  if (stage3debug == POST_CANONICAL) {
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-    pairs = List_reverse(path);
-    return pairs;
-  }
+  *ambig_end_length_5 = 0;
 
 
-  /* Pass 7: Remove dual breaks at ends: pairs -> pairs */
-  debug(printf("\n*** Pass 7: Remove dual breaks.\n"));
-  path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+#if 0
+  /* Pass 7: Remove dual breaks at 5' end */
+  /* >>pairs */
+  debug(printf("\n*** Pass 7 (dir %d): Remove dual breaks at ends.  Initially alignment length is %d\n",
+	       cdna_direction,List_length(path)));
   donep = false;
   while (donep == false) {
-    if (path == NULL) {
+    if (pairs == NULL) {
       donep = true;
-    } else if (dualbreak_p(path) == false) {
+    } else if (dualbreak_p(pairs) == false) {
       donep = true;
     } else {
-      distance3 = dualbreak_distance_from_end(&npairs3,&totaljump3,path);
-      pairs = List_reverse(path);
       distance5 = dualbreak_distance_from_end(&npairs5,&totaljump5,pairs);
       debug(printf("distance5 = %d, totaljump5 = %d, npairs5 %d\n",distance5,totaljump5,npairs5));
-      debug(printf("distance3 = %d, totaljump3 = %d, npairs3 %d\n",distance3,totaljump3,npairs3));
-      if (totaljump5 < distance5 && totaljump3 < distance3) {
-	/* Keep dual break(s) => already have pairs */
+      if (totaljump5 < distance5) {
 	donep = true;
-      } else if (totaljump5 > distance5 && totaljump3 > distance3) {
-	if (distance5 < distance3) {
-	  debug(printf("trimming shorter dual break on 5' end, %d pairs\n",npairs5));
-	  pairs = trim_npairs(pairs,npairs5);
-	  path = List_reverse(pairs);
-	} else {
-	  debug(printf("trimming shorter dual break on 3' end, %d pairs\n",npairs3));
-	  path = List_reverse(pairs);
-	  path = trim_npairs(path,npairs3);
-	}
-      } else if (totaljump5 > distance5) {
+      } else {
 	debug(printf("trimming only dual break on 5' end, %d pairs\n",npairs5));
 	pairs = trim_npairs(pairs,npairs5);
-	path = List_reverse(pairs);
-      } else {
-	debug(printf("trimming only dual break on 3' end, %d pairs\n",npairs3));
-	path = List_reverse(pairs);
-	path = trim_npairs(path,npairs3);
+	debug(printf("Now alignment length is %d\n",List_length(pairs)));
       }
     }
   }
-  pairs = List_reverse(path);
-
-
-  /* Pass 7b: Fix adjacent insertion/deletion events: pairs -> pairs */
-  debug(printf("\n*** Pass 7b: Fix adjacent indels again\n"));
-  path = remove_adjacent_ins_del(&adjacent_indels_p,pairs);
-  pairs = List_reverse(path);
-
-  if (adjacent_indels_p == true) {
-    path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-
-    /* Pass 7c: solve straight gaps again.  path --> pairs (for defect rate) */
-    debug(printf("\n*** Pass 7C (dir %d): Solve straight gaps again.  Iteration0 %d\n",
-		 cdna_direction,iter0));
-    pairs = build_pairs_singles(&dynprogindex_minor,path,
-				chroffset,chrhigh,
-#ifdef PMAP
-				queryaaseq_ptr,
-#endif
-				queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-				jump_late_p,maxpeelback,nullgap,extraband_single,
-				/*defect_rate*/0.0,close_indels_mode,pairpool,dynprogM);
-  }
-
-
-  path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-#ifdef WASTE
-  /* pairs = remove_indel_gaps(path,pairpool); */
-  pairs = List_reverse(path);
-#else
-  /* Don't want to remove end indels already found.  extend_ending5 and extend_ending3 will peelback and quit at gaps */
-  /* pairs = remove_indel_gaps(path); */
-  pairs = List_reverse(path);
+  debug(printf("Final alignment length is %d\n",List_length(pairs)));
+  /* <<pairs */
 #endif
-    
-
-  /* Testing for GSNAP shows that we want pass 8 with QUERYEND_NOGAPS
-     and pass 9 with QUERYEND_INDELS.  Do not want to extend to ends
-     for GMAP. */
 
-  /* Extend to ends: pairs --> pairs */
-  debug(printf("\n*** Pass 8: Extend to ends and determine distalmedial\n"));
 
   /* Extend to query end, so we get an accurate count of matches and mismatches */
-  pairs = clean_pairs_end5_gap_indels(pairs);
+  /* This is the first extension */
+  /* >>pairs */
+  debug(printf("\n*** Pass 8 (dir %d): Extend to ends and determine distalmedial\n",cdna_direction));
   pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
 			   &chop_exon_p,&dynprogindex_minor,pairs,
 			   chroffset,chrhigh,
@@ -9882,119 +10949,185 @@ path_compute (double *defect_rate, int *ambig_end_length_5, int *ambig_end_lengt
 			   cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			   queryaaseq_ptr,
-#endif
 			   queryseq_ptr,queryuc_ptr,
 			   cdna_direction,watsonp,jump_late_p,
 			   maxpeelback,maxpeelback_distalmedial,
 			   nullgap,extramaterial_end,extraband_end,
-			   *defect_rate,pairpool,dynprogR,
+			   defect_rate,pairpool,dynprogR,
 			   /*extendp*/true,/*endalign*/QUERYEND_GAP);
 
-  /* Extend to query end, so we get an accurate count of matches and mismatches */
-  path = List_reverse(pairs);
-  path = clean_path_end3_gap_indels(path);
 
-  debug(printf("Calling build_path_end3 in pass 8\n"));
-  path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
-			 &chop_exon_p,&dynprogindex_minor,path,
-			 chroffset,chrhigh,querylength,
-			 knownsplice_limit_low,knownsplice_limit_high,
+
+  /* Necessary to insert gaps and assign gap types (fills in cDNA
+     insertions, so they don't get trimmed), in case an insertion was
+     introduced at ends */
+  path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+  pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
+			   chrnum,chroffset,chrhigh,pairpool);
+
+  Pair_fracidentity(&nmatches,&nunknowns,&nmismatches,&qopens,&qindels,&topens,&tindels,
+		    &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,
+		    pairs,cdna_direction);
+  if (ncanonical > 0 && nnoncanonical > 0) {
+    /* Pass 10: Remove noncanonical end exons: pairs -> pairs */
+    debug(printf("\n*** Pass 10 (dir %d): Remove noncanonical end exons\n",cdna_direction));
+
+    if (maximize_coverage_p == true) {
+      trim5p = false;
+    } else if (knownsplice5p == true) {
+      /* Don't trim at known splice sites */
+      trim5p = false;
+    } else {
+      trim5p = true;
+    }
+    debug(printf("trim5p = %d\n",trim5p));
+
+    /* Using iter1 to avoid the possibility of an infinite loop */
+    iter1 = 0;
+    while (iter1 < 5 && trim5p == true) {
+      pairs = trim_end5_exon_indels(&trim5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
+				    pairs,paired_favor_mode,zero_offset,querylength,
+				    watsonp,cdna_direction,maxintronlen_bound);
+      if (trim5p == true) {
+	pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
+				 &chop_exon_p,&dynprogindex_minor,pairs,
+				 chroffset,chrhigh,
+				 knownsplice_limit_low,knownsplice_limit_high,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-			 cutoff_level,queryptr,query_compress,
+				 cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			 queryaaseq_ptr,
-#endif
-			 queryseq_ptr,queryuc_ptr,
-			 cdna_direction,watsonp,jump_late_p,
-			 maxpeelback,maxpeelback_distalmedial,
-			 nullgap,extramaterial_end,extraband_end,
-			 *defect_rate,pairpool,dynprogL,
-			 /*extendp*/true,/*endalign*/QUERYEND_GAP);
+				 queryseq_ptr,queryuc_ptr,
+				 cdna_direction,watsonp,jump_late_p,
+				 maxpeelback,maxpeelback_distalmedial,
+				 nullgap,extramaterial_end,extraband_end,
+				 defect_rate,pairpool,dynprogR,/*extendp*/true,
+				 /*endalign*/BEST_LOCAL);
+	debug3(printf("AFTER 5' REBUILD\n"));
+	debug3(Pair_dump_list(pairs,true));
+      }
 
-#if 0 /* Skip pass 9.  Rely on trimming non-canonical instead. */
+      /* Stop trimming at known splice sites */
+      if (knownsplice5p == true) {
+	trim5p = false;
+      }
+      iter1++;
+    }
 
-  /* Pass 9 was once distalmedial (extendp = false), but then switched
-     to QUERYEND_INDELS, but that appears to cause too many false
-     positive indels at the ends.  Now using QUERYEND_NOGAPS to get
-     accurate mismatch counts for trim_noncanonical_ends. */
-  /* Compare distal exons with medial extensions */
 #if 0
-  debug(printf("\n*** Pass 9: Compare distal exons with medial extensions\n"));
-#else
-  debug(printf("\n*** Pass 9: Extend ends for noncanonical end exon trimming\n"));
+    pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
+			     &chop_exon_p,&dynprogindex_minor,pairs,
+			     chroffset,chrhigh,
+			     knownsplice_limit_low,knownsplice_limit_high,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+			     cutoff_level,queryptr,query_compress,
 #endif
+#endif
+			     queryseq_ptr,queryuc_ptr,
+			     cdna_direction,watsonp,jump_late_p,
+			     maxpeelback,maxpeelback_distalmedial,
+			     nullgap,extramaterial_end,extraband_end,
+			     defect_rate,pairpool,dynprogR,/*extendp*/true,
+			     /*endalign*/QUERYEND_INDELS);
+#endif
+  }
 
-  /* Need to assign gap types because traversal of ends depends on
-     knowing if end introns are canonical.  Need to insert gapholders
-     before assign gap types */
-  pairs = List_reverse(path);
-  path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-
-  /* 9a. solve 5' end trying both distal and medial: pairs --> pairs */
-  debug(printf("\n*** Pass 9a: Solve 5' end\n"));
-  /* Need to assign gap types before distalmedial */
-  pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
-			   chrnum,chroffset,chrhigh,pairpool);
-
-  debug(printf("knownsplice5p = %d\n",knownsplice5p));
-  /* Previously did build_pairs only if knownsplice5p was false */
-  /* Don't wipe out information about knownsplice5p */
-  pairs = build_pairs_end5(/*knownsplice5p*/&ignorep,&(*ambig_end_length_5),&(*ambig_splicetype_5),
+  debug(printf("Pass 11 (dir %d): Final extension, end5\n",cdna_direction));
+  /* This is the second extension */
+  /* Perform final extension without gaps so we can compare fwd and rev properly */
+  pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
 			   &chop_exon_p,&dynprogindex_minor,pairs,
-			   chroffset,chrhigh,knownsplice_limit_low,knownsplice_limit_high,
+			   chroffset,chrhigh,
+			   knownsplice_limit_low,knownsplice_limit_high,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
 			   cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			   queryaaseq_ptr,
-#endif
 			   queryseq_ptr,queryuc_ptr,
 			   cdna_direction,watsonp,jump_late_p,
-			   /*maxpeelback*/0,maxpeelback_distalmedial,
+			   maxpeelback,maxpeelback_distalmedial,
 			   nullgap,extramaterial_end,extraband_end,
-			   *defect_rate,pairpool,dynprogR,
-			   /*extendp*/true,
-#ifdef GSNAP
-			   /*endalign*/QUERYEND_NOGAPS
-#else
-			   /*endalign*/BEST_LOCAL
-#endif
-			   );
-  /* endalign above must be BEST_LOCAL, at least for GMAP, otherwise
-     it will truncate all ends of alignments.  But for GSNAP,
-     QUERYEND_NOGAPS is needed for trimming procedure to work. */
-  /* Previously extendp was false */
+			   defect_rate,pairpool,dynprogR,
+			   /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
 
-  debug(
-	if (pairs) {
-	  firstpair = pairs->first;
-	  printf("5' starts at %d\n",firstpair->querypos);
-	});
+  debug(Pair_dump_list(pairs,true));
+  debug(printf("End of path_compute_end5\n"));
+
+  return pairs;
+}
 
 
-  /* 9b: solve 3' end trying both distal and medial: pairs --> pairs */
-  debug(printf("\n*** Pass 9b: Solve 3' end\n"));
+static List_T
+path_compute_end3 (int *ambig_end_length_3, Splicetype_T *ambig_splicetype_3,
+		   double defect_rate, List_T path, int cdna_direction,
+		   bool watsonp, int genestrand, bool jump_late_p, int querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+		   int cutoff_level, char *queryptr, Compress_T query_compress,
+#endif
+#endif
+		   char *queryseq_ptr, char *queryuc_ptr,
+		   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		   Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+		   int maxpeelback, int maxpeelback_distalmedial, int nullgap,
+		   int extramaterial_end, int extraband_end,
+		   int extramaterial_paired, int extraband_single, int extraband_paired,
+		   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		   bool do_final_p,
+		   Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, int sufflookback, int nsufflookback,
+		   int maxintronlen_bound, int close_indels_mode, int paired_favor_mode, int zero_offset) {
+  List_T pairs = NULL;
+  int iter1, iter2;
+  int dynprogindex_minor = DYNPROGINDEX_MINOR, dynprogindex_major = DYNPROGINDEX_MAJOR;
+  int nmatches, nunknowns, nmismatches, qopens, qindels, topens, tindels,
+    ncanonical, nsemicanonical, nnoncanonical;
+  double min_splice_prob;
+  bool filterp = true, dual_break_p = true;
+  int distance5, distance3, totaljump5, totaljump3, npairs5, npairs3, donep;
+  bool knownsplice5p, knownsplice3p, chop_exon_p;
+#ifdef DEBUG
+  Pair_T firstpair, lastpair;
+#endif
+  bool trim5p, trim3p, adjacent_indels_p;
+
+  *ambig_end_length_3 = 0;
 
 #if 0
-  /* Need to assign gap types before distalmedial.  Already assigned previously for 5' end. */
-  pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
-			   chrnum,chroffset,chrhigh,pairpool);
+  /* Pass 7: Remove dual breaks at 3' end */
+  /* >>path */
+  debug(printf("\n*** Pass 7 (dir %d): Remove dual breaks at ends.  Initially alignment length is %d\n",
+	       cdna_direction,List_length(path)));
+  donep = false;
+  while (donep == false) {
+    if (path == NULL) {
+      donep = true;
+    } else if (dualbreak_p(path) == false) {
+      donep = true;
+    } else {
+      distance3 = dualbreak_distance_from_end(&npairs3,&totaljump3,path);
+      debug(printf("distance5 = %d, totaljump5 = %d, npairs5 %d\n",distance5,totaljump5,npairs5));
+      if (totaljump3 < distance3) {
+	donep = true;
+      } else {
+	debug(printf("trimming only dual break on 3' end, %d pairs\n",npairs3));
+	path = trim_npairs(path,npairs3);
+	debug(printf("Now alignment length is %d\n",List_length(path)));
+      }
+    }
+  }
+  debug(printf("Final alignment length is %d\n",List_length(path)));
+  /* <<path */
 #endif
 
-  debug(printf("Calling build_path_end3 in pass 9b\n"));
-  path = List_reverse(pairs);
 
-  debug(printf("knownsplice3p = %d\n",knownsplice3p));
-  /* Previously did build_path only if knownsplice3p was false */
-  /* Don't wipe out information about knownsplice3p */
-  path = build_path_end3(/*knownsplice3p*/&ignorep,&(*ambig_end_length_3),&(*ambig_splicetype_3),
+  /* Extend to ends */
+  /* This is the first extension */
+  /* >>path */
+  debug(printf("\n*** Pass 8 (dir %d): Extend to ends and determine distalmedial\n",cdna_direction));
+  path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
 			 &chop_exon_p,&dynprogindex_minor,path,
 			 chroffset,chrhigh,querylength,
 			 knownsplice_limit_low,knownsplice_limit_high,
@@ -10003,33 +11136,12 @@ path_compute (double *defect_rate, int *ambig_end_length_5, int *ambig_end_lengt
 			 cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			 queryaaseq_ptr,
-#endif
 			 queryseq_ptr,queryuc_ptr,
 			 cdna_direction,watsonp,jump_late_p,
-			 /*maxpeelback*/0,maxpeelback_distalmedial,
+			 maxpeelback,maxpeelback_distalmedial,
 			 nullgap,extramaterial_end,extraband_end,
-			 *defect_rate,pairpool,dynprogL,
-			 /*extendp*/true,
-#ifdef GSNAP
-			 /*endalign*/QUERYEND_NOGAPS
-#else
-			 /*endalign*/BEST_LOCAL
-#endif
-			 );
-  /* endalign above must be BEST_LOCAL, at least for GMAP, otherwise
-     it will truncate all ends of alignments.  But for GSNAP,
-     QUERYEND_NOGAPS is needed for trimming procedure to work. */
-  /* Previously extendp was false */
-
-  debug(
-	if (path) {
-	  lastpair = path->first;
-	  printf("3' ends at %d\n",lastpair->querypos);
-	});
-
-#endif /* Skip pass 9 */
+			 defect_rate,pairpool,dynprogL,
+			 /*extendp*/true,/*endalign*/QUERYEND_GAP);
 
   /* Necessary to insert gaps and assign gap types (fills in cDNA
      insertions, so they don't get trimmed), in case an insertion was
@@ -10038,170 +11150,186 @@ path_compute (double *defect_rate, int *ambig_end_length_5, int *ambig_end_lengt
   path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
   pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
 			   chrnum,chroffset,chrhigh,pairpool);
+  path = List_reverse(pairs);
 
-  /* Pass 10: Remove noncanonical end exons: pairs -> pairs */
-  debug(printf("\n*** Pass 10: Remove noncanonical end exons\n"));
-
-  /* Don't trim at known splice sites */
-  if (knownsplice5p == true) {
-    trim5p = false;
-  } else {
-    trim5p = true;
-  }
-
-  if (knownsplice3p == true) {
-    trim3p = false;
-  } else {
-    trim3p = true;
-  }
-
-  debug(printf("trim5p = %d, trim3p = %d\n",trim5p,trim3p));
-
-  /* Using iter1 to avoid the possibility of an infinite loop */
-  iter1 = 0;
-  while (iter1 < 5 && (trim5p == true || trim3p == true)) {
-    if (trim5p == false) {
-      path = List_reverse(pairs);
-    } else {
-#ifdef WASTE
-      path = trim_noncanonical_end5_exons(&trim5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
-					  pairs,paired_favor_mode,zero_offset,querylength,
-					  watsonp,cdna_direction,maxintronlen_bound,pairpool);
-#else
-      path = trim_noncanonical_end5_exons(&trim5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
-					  pairs,paired_favor_mode,zero_offset,querylength,
-					  watsonp,cdna_direction,maxintronlen_bound);
-#endif
-    }
+  Pair_fracidentity(&nmatches,&nunknowns,&nmismatches,&qopens,&qindels,&topens,&tindels,
+		    &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob,
+		    pairs,cdna_direction);
+  if (ncanonical > 0 && nnoncanonical > 0) {
+    /* Pass 10: Remove noncanonical end exons: pairs -> pairs */
+    debug(printf("\n*** Pass 10 (dir %d): Remove noncanonical end exons\n",cdna_direction));
 
-    if (trim3p == false) {
-      pairs = List_reverse(path);
+    if (maximize_coverage_p == true) {
+      trim3p = false;
+    } else if (knownsplice3p == true) {
+      trim3p = false;
     } else {
-#ifdef WASTE
-      pairs = trim_noncanonical_end3_exons(&trim3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
-					   path,paired_favor_mode,zero_offset,querylength,
-					   watsonp,cdna_direction,maxintronlen_bound,pairpool);
-#else
-      pairs = trim_noncanonical_end3_exons(&trim3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
-					   path,paired_favor_mode,zero_offset,querylength,
-					   watsonp,cdna_direction,maxintronlen_bound);
-#endif
+      trim3p = true;
     }
+    debug(printf("trim3p = %d\n",trim3p));
 
-    debug(printf("trim5p = %d, trim3p = %d\n",trim5p,trim3p));
-    debug(Pair_dump_list(pairs,true));
-
-    if (trim5p == true) {
-      pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
-			       &chop_exon_p,&dynprogindex_minor,pairs,
-			       chroffset,chrhigh,
+    /* Using iter1 to avoid the possibility of an infinite loop */
+    iter1 = 0;
+    while (iter1 < 5 && trim3p == true) {
+      path = trim_end3_exon_indels(&trim3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
+				   path,paired_favor_mode,zero_offset,querylength,
+				   watsonp,cdna_direction,maxintronlen_bound);
+      if (trim3p == true) {
+	path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
+			       &chop_exon_p,&dynprogindex_minor,path,
+			       chroffset,chrhigh,querylength,
 			       knownsplice_limit_low,knownsplice_limit_high,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
 			       cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			       queryaaseq_ptr,
-#endif
 			       queryseq_ptr,queryuc_ptr,
 			       cdna_direction,watsonp,jump_late_p,
 			       maxpeelback,maxpeelback_distalmedial,
 			       nullgap,extramaterial_end,extraband_end,
-			       *defect_rate,pairpool,dynprogR,
-			       /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
-    }
-
-    if (trim3p == true) {
-      debug(printf("Calling build_path_end3 in pass 10\n"));
-      path = List_reverse(pairs);
-      path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
-			     &chop_exon_p,&dynprogindex_minor,path,
-			     chroffset,chrhigh,querylength,
-			     knownsplice_limit_low,knownsplice_limit_high,
-#ifdef GSNAP
-#ifdef END_KNOWNSPLICING_SHORTCUT
-			     cutoff_level,queryptr,query_compress,
-#endif
-#endif
-#ifdef PMAP
-			     queryaaseq_ptr,
-#endif
-			     queryseq_ptr,queryuc_ptr,
-			     cdna_direction,watsonp,jump_late_p,
-			     maxpeelback,maxpeelback_distalmedial,
-			     nullgap,extramaterial_end,extraband_end,
-			     *defect_rate,pairpool,dynprogL,
-			     /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
-      pairs = List_reverse(path);
-    }
-
-    /* Stop trimming at known splice sites */
-    if (knownsplice5p == true) {
-      trim5p = false;
-    }
+			       defect_rate,pairpool,dynprogL,/*extendp*/true,
+			       /*endalign*/BEST_LOCAL);
+	debug3(printf("AFTER 3' REBUILD\n"));
+	debug3(Pair_dump_list(path,true));
+      }
 
-    if (knownsplice3p == true) {
-      trim3p = false;
+      if (knownsplice3p == true) {
+	trim3p = false;
+      }
+      iter1++;
     }
 
-    iter1++;
-  }
-
-  /* Need this because pass10 can set trim5p or trim3p false based on
-     good medial_prob, while still trimming */
-
-  debug(printf("Pass 11: Final extension, end5\n"));
-  /* Perform final extension so we can compare fwd and rev properly */
-  pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
-			   &chop_exon_p,&dynprogindex_minor,pairs,
-			   chroffset,chrhigh,
+#if 0
+    path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
+			   &chop_exon_p,&dynprogindex_minor,path,
+			   chroffset,chrhigh,querylength,
 			   knownsplice_limit_low,knownsplice_limit_high,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
 			   cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			   queryaaseq_ptr,
-#endif
 			   queryseq_ptr,queryuc_ptr,
 			   cdna_direction,watsonp,jump_late_p,
 			   maxpeelback,maxpeelback_distalmedial,
 			   nullgap,extramaterial_end,extraband_end,
-			   *defect_rate,pairpool,dynprogR,
-			   /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
+			   defect_rate,pairpool,dynprogL,/*extendp*/true,
+			   /*endalign*/QUERYEND_NOGAPS);
+#endif
+  }
 
-  debug(printf("Pass 11: Final extension, end3\n"));
-  path = List_reverse(pairs);
+  debug(printf("Pass 11 (dir %d): Final extension, end3\n",cdna_direction));
+  /* This is the second extension */
+  /* Perform final extension without gaps so we can compare fwd and rev properly */
   path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
 			 &chop_exon_p,&dynprogindex_minor,path,
 			 chroffset,chrhigh,querylength,
 			 knownsplice_limit_low,knownsplice_limit_high,
-#ifdef GSNAP
-#ifdef END_KNOWNSPLICING_SHORTCUT
+ #ifdef GSNAP
+ #ifdef END_KNOWNSPLICING_SHORTCUT
 			 cutoff_level,queryptr,query_compress,
-#endif
-#endif
-#ifdef PMAP
-			 queryaaseq_ptr,
-#endif
+ #endif
+ #endif
 			 queryseq_ptr,queryuc_ptr,
 			 cdna_direction,watsonp,jump_late_p,
 			 maxpeelback,maxpeelback_distalmedial,
 			 nullgap,extramaterial_end,extraband_end,
-			 *defect_rate,pairpool,dynprogL,
+			 defect_rate,pairpool,dynprogL,
 			 /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
-  pairs = List_reverse(path);
 
-  /* *nmatches_pretrim = Pair_nmatches(pairs); */
+  debug(Pair_dump_list(path,true));
+  debug(printf("End of path_compute_end3\n"));
+  return path;
+}
+
+
+static List_T
+path_compute_final (double defect_rate, List_T pairs, int cdna_direction, bool watsonp, int genestrand,
+		    bool jump_late_p, int querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+		    int cutoff_level, char *queryptr, Compress_T query_compress,
+#endif
+#endif
+#ifdef PMAP
+		    char *queryaaseq_ptr,
+#endif
+		    char *queryseq_ptr, char *queryuc_ptr,
+		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		    Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+		    int maxpeelback, int maxpeelback_distalmedial, int nullgap,
+		    int extramaterial_end, int extraband_end,
+		    int extramaterial_paired, int extraband_single, int extraband_paired,
+		    Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		    Chrpos_T *last_genomedp5, Chrpos_T *last_genomedp3, bool do_final_p,
+		    Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+		    int sufflookback, int nsufflookback,
+		    int maxintronlen_bound, int close_indels_mode, int paired_favor_mode, int zero_offset) {
+  List_T path = NULL;
+  int iter1, iter2;
+  int dynprogindex_minor = DYNPROGINDEX_MINOR, dynprogindex_major = DYNPROGINDEX_MAJOR;
+  int matches, unknowns, mismatches, qopens, qindels, topens, tindels,
+    ncanonical, nsemicanonical, nnoncanonical;
+  double min_splice_prob;
+  bool filterp = true, dual_break_p = true;
+  bool shiftp, incompletep, shortp, deletep;
+  bool chop_exon_p;
+#ifdef DEBUG
+  Pair_T firstpair, lastpair;
+#endif
+  bool adjacent_indels_p;
+
+
+  debug(printf("Entering path_compute_final\n"));
+
+  path = List_reverse(pairs);
+  pairs = build_pairs_singles(&dynprogindex_minor,path,
+			      chroffset,chrhigh,queryseq_ptr,queryuc_ptr,querylength,watsonp,
+			      jump_late_p,maxpeelback,nullgap,extraband_single,
+			      defect_rate,close_indels_mode,pairpool,dynprogM,
+			      last_genomedp5,last_genomedp3,/*forcep*/true,/*finalp*/true);
+
+#if 1
+  /* Okay to use finalp == true, as long as Dynprog_genome_gap is called with finalp == false */
+  debug(printf("\n*** Pass 6 (dir %d): Final pass to find canonical introns\n",cdna_direction));
+  path = List_reverse(pairs);	/* ? insert_gapholders() */
+  pairs = build_pairs_introns(&shiftp,&incompletep,
+			      &dynprogindex_minor,&dynprogindex_major,path,
+			      chrnum,chroffset,chrhigh,
+#ifdef PMAP
+			      queryaaseq_ptr,
+#endif
+			      queryseq_ptr,queryuc_ptr,querylength,
+			      cdna_direction,watsonp,genestrand,jump_late_p,
+			      maxpeelback,nullgap,extramaterial_paired,extraband_single,extraband_paired,
+			      defect_rate,close_indels_mode,pairpool,dynprogL,dynprogM,dynprogR,
+			      oligoindices_minor,diagpool,cellpool,sufflookback,nsufflookback,maxintronlen_bound,
+			      last_genomedp5,last_genomedp3,/*finalp*/true,/*simplep*/true);
+#endif
+
+  path = List_reverse(pairs);
+  pairs = build_dual_breaks(&dual_break_p,&dynprogindex_minor,&dynprogindex_major,path,
+			    chrnum,chroffset,chrhigh,
+#ifdef PMAP
+			    queryaaseq_ptr,
+#endif
+			    queryseq_ptr,queryuc_ptr,querylength,
+			    cdna_direction,watsonp,genestrand,jump_late_p,pairpool,
+			    dynprogL,dynprogM,dynprogR,last_genomedp5,last_genomedp3,maxpeelback,
+			    oligoindices_minor,diagpool,cellpool,sufflookback,nsufflookback,
+			    maxintronlen_bound,extramaterial_paired,extraband_paired,extraband_single,
+			    defect_rate,close_indels_mode,/*finalp*/true,/*simplep*/true);
+
+  path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+  pairs = assign_gap_types(path,cdna_direction,watsonp,queryseq_ptr,
+			   chrnum,chroffset,chrhigh,pairpool);
 
-  debug(Pair_dump_list(pairs,true));
-  debug(printf("End of path_compute\n"));
   return pairs;
 }
 
 
+
 static List_T
 trim_novel_spliceends (List_T pairs, 
 		       int *ambig_end_length_5, int *ambig_end_length_3,
@@ -10617,93 +11745,27 @@ path_trim (double defect_rate, int *ambig_end_length_5, int *ambig_end_length_3,
 #ifdef END_KNOWNSPLICING_SHORTCUT
 	   int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
-#endif
-#ifdef PMAP
-	   char *queryaaseq_ptr,
-#endif
-	   char *queryseq_ptr, char *queryuc_ptr,
-	   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-	   Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
-	   int maxpeelback, int maxpeelback_distalmedial, int nullgap,
-	   int extramaterial_end, int extraband_end,
-	   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogR, Stage3debug_T stage3debug) {
-  List_T path = NULL;
-  int dynprogindex_minor = DYNPROGINDEX_MINOR;
-  int maxpeelback5, maxpeelback3;
-  bool chop_exon_p;
-  bool knownsplice5p = false, knownsplice3p = false;
-  bool trim5p, trim3p;
-
-  maxpeelback5 = maxpeelback3 = maxpeelback;
-
-
-  debug3(printf("Entering path_trim with cdna_direction %d and sensedir %d\n",*cdna_direction,*sensedir));
-
-#if 0
-  /* Remove known splices here */
-  path = insert_gapholders(pairs,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
-  pairs = assign_gap_types(path,*cdna_direction,watsonp,queryseq_ptr,
-			   chrnum,chroffset,chrhigh,pairpool);
-#endif
-
-#if 0
-  /* Now doing this at the end of path_compute */
-
-  debug3(printf("Before full extension:\n"));
-  debug3(Pair_dump_list(pairs,true));
-
-  /* Final: Full extension: path -> pairs */
-  pairs = clean_pairs_end5_gap_indels(pairs);
-  pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
-			   &chop_exon_p,&dynprogindex_minor,pairs,
-			   chroffset,chrhigh,knownsplice_limit_low,knownsplice_limit_high,
-#ifdef GSNAP
-#ifdef END_KNOWNSPLICING_SHORTCUT
-			   cutoff_level,queryptr,query_compress,
-#endif
-#endif
-#ifdef PMAP
-			   queryaaseq_ptr,
-#endif
-			   queryseq_ptr,queryuc_ptr,
-			   *cdna_direction,watsonp,jump_late_p,
-			   maxpeelback5,maxpeelback_distalmedial,
-			   nullgap,extramaterial_end,extraband_end,
-			   defect_rate,pairpool,dynprogR,
-			   /*extendp*/true,/*endalign -- was QUERYEND_INDELS*/QUERYEND_NOGAPS);
-
-  path = List_reverse(pairs);
-  path = clean_path_end3_gap_indels(path);
-  
-  debug(printf("Calling build_path_end3 in trim final\n"));
-  path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
-			 &chop_exon_p,&dynprogindex_minor,path,
-			 chroffset,chrhigh,querylength,
-			 knownsplice_limit_low,knownsplice_limit_high,
-#ifdef GSNAP
-#ifdef END_KNOWNSPLICING_SHORTCUT
-			 cutoff_level,queryptr,query_compress,
-#endif
-#endif
-#ifdef PMAP
-			 queryaaseq_ptr,
-#endif
-			 queryseq_ptr,queryuc_ptr,
-			 *cdna_direction,watsonp,jump_late_p,
-			 maxpeelback3,maxpeelback_distalmedial,
-			 nullgap,extramaterial_end,extraband_end,
-			 defect_rate,pairpool,dynprogL,
-			 /*extendp*/true,/*endalign -- was QUERYEND_INDELS*/QUERYEND_NOGAPS);
-
-  pairs = List_reverse(path);
-
-  debug3(printf("After full extension and before trim ends:\n"));
-  debug3(Pair_dump_list(pairs,true));
-#endif
+#endif
+	   char *queryseq_ptr, char *queryuc_ptr,
+	   Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+	   Univcoord_T knownsplice_limit_low, Univcoord_T knownsplice_limit_high,
+	   int maxpeelback, int maxpeelback_distalmedial, int nullgap,
+	   int extramaterial_end, int extraband_end,
+	   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogR,
+	   int maxintronlen_bound, int paired_favor_mode, int zero_offset) {
+  List_T path = NULL;
+  int dynprogindex_minor = DYNPROGINDEX_MINOR;
+  int maxpeelback5, maxpeelback3;
+  bool chop_exon_p;
+  bool knownsplice5p = false, knownsplice3p = false;
+  bool trim5p, trim3p, trim5p_ignore, trim3p_ignore;
+  bool shiftp, incompletep;
+  int iter = 0;
 
+  maxpeelback5 = maxpeelback3 = maxpeelback;
 
-  debug13(printf("Before trim_novel_spliceends\n"));
-  debug13(Pair_dump_list(pairs,true));
+  debug(printf("Entering path_trim with cdna_direction %d and sensedir %d\n",*cdna_direction,*sensedir));
+  debug3(printf("Entering path_trim with cdna_direction %d and sensedir %d\n",*cdna_direction,*sensedir));
 
 #ifdef GSNAP
   if (novelsplicingp == true) {
@@ -10719,58 +11781,76 @@ path_trim (double defect_rate, int *ambig_end_length_5, int *ambig_end_length_3,
 
   if (pairs == NULL) {
     return (List_T) NULL;
+  } else if (maximize_coverage_p == true) {
+    /* Don't trim ends */
   } else {
     knownsplice5p = knownsplice3p = false;
-    pairs = Pair_trim_ends(&trim5p,&trim3p,pairs);
+    debug3(printf("Before Pair_trim_ends\n"));
+    debug3(Pair_dump_list(pairs,true));
+    debug3(printf("\n"));
+
+    /* Done anyway within loop below */
+    /* pairs = Pair_trim_ends(&trim5p,&trim3p,pairs); */
+    trim5p = trim3p = true;
     
     debug3(printf("After Pair_trim_ends: trim5p %d, trim3p %d\n",trim5p,trim3p));
     debug3(Pair_dump_list(pairs,true));
     debug3(printf("\n"));
 
-    /* Extend with BEST_LOCAL to get right local (not global) answer,
-       and with maxpeelback == 0 to ensure we perform no peelback */
-    if (trim5p == true) {
-      debug3(printf("Extending at 5'\n"));
-      pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
-			       &chop_exon_p,&dynprogindex_minor,pairs,
-			       chroffset,chrhigh,knownsplice_limit_low,knownsplice_limit_high,
+    while (iter++ < 3 && (trim5p == true || trim3p == true)) {
+      /* Revised: Using QUERYEND_NOGAPS combined with Pair_trim_ends */
+      /* Old: Extend with BEST_LOCAL to get right local (not global) answer,
+	 and with maxpeelback == 0 to ensure we perform no peelback */
+      if (trim5p == true) {
+	debug3(printf("Extending at 5'\n"));
+	/* This is the third and final extension */
+	pairs = build_pairs_end5(&knownsplice5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
+				 &chop_exon_p,&dynprogindex_minor,pairs,
+				 chroffset,chrhigh,knownsplice_limit_low,knownsplice_limit_high,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-			       cutoff_level,queryptr,query_compress,
+				 cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-			       queryaaseq_ptr,
-#endif
-			       queryseq_ptr,queryuc_ptr,
-			       *cdna_direction,watsonp,jump_late_p,
-			       /*maxpeelback*/0,/*maxpeelback_distalmedial*/0,
-			       nullgap,extramaterial_end,extraband_end,
-			       defect_rate,pairpool,dynprogR,
-			       /*extendp*/true,/*endalign*/BEST_LOCAL);
-    }
-    if (trim3p == true) {
-      debug3(printf("Extending at 3'\n"));
-      path = List_reverse(pairs);
-      path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
-			     &chop_exon_p,&dynprogindex_minor,path,
-			     chroffset,chrhigh,querylength,
-			     knownsplice_limit_low,knownsplice_limit_high,
+				 queryseq_ptr,queryuc_ptr,
+				 *cdna_direction,watsonp,jump_late_p,
+				 maxpeelback,maxpeelback_distalmedial,
+				 nullgap,extramaterial_end,extraband_end,
+				 defect_rate,pairpool,dynprogR,
+				 /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
+	pairs = trim_end5_exon_indels(&trim5p,&(*ambig_end_length_5),&(*ambig_splicetype_5),
+				      pairs,paired_favor_mode,zero_offset,querylength,
+				      watsonp,*cdna_direction,maxintronlen_bound);
+      }
+
+      if (trim3p == true) {
+	debug3(printf("Extending at 3'\n"));
+	/* This is the third and final extension */
+	path = List_reverse(pairs);
+	path = build_path_end3(&knownsplice3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
+			       &chop_exon_p,&dynprogindex_minor,path,
+			       chroffset,chrhigh,querylength,
+			       knownsplice_limit_low,knownsplice_limit_high,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-			     cutoff_level,queryptr,query_compress,
-#endif
+			       cutoff_level,queryptr,query_compress,
 #endif
-#ifdef PMAP
-			     queryaaseq_ptr,
 #endif
-			     queryseq_ptr,queryuc_ptr,
-			     *cdna_direction,watsonp,jump_late_p,
-			     /*maxpeelback*/0,/*maxpeelback_distalmedial*/0,
-			     nullgap,extramaterial_end,extraband_end,
-			     defect_rate,pairpool,dynprogL,
-			     /*extendp*/true,/*endalign*/BEST_LOCAL);
-      pairs = List_reverse(path);
+			       queryseq_ptr,queryuc_ptr,
+			       *cdna_direction,watsonp,jump_late_p,
+			       maxpeelback,maxpeelback_distalmedial,
+			       nullgap,extramaterial_end,extraband_end,
+			       defect_rate,pairpool,dynprogL,
+			       /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
+	path = trim_end3_exon_indels(&trim3p,&(*ambig_end_length_3),&(*ambig_splicetype_3),
+				     path,paired_favor_mode,zero_offset,querylength,
+				     watsonp,*cdna_direction,maxintronlen_bound);
+	pairs = List_reverse(path);
+      }
+
+      /* Important to end the alignment with Pair_trim_ends, or else trimming will be faulty */
+      /* Also, doing trimming within each loop yields better results in a small number of cases */
+      pairs = Pair_trim_ends(&trim5p_ignore,&trim3p_ignore,pairs);
     }
 
     debug3(printf("After trim ends:\n"));
@@ -10788,20 +11868,20 @@ path_trim (double defect_rate, int *ambig_end_length_5, int *ambig_end_length_3,
 
 
 struct Pair_T *
-Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir, int *matches,
-		int *nmatches_posttrim, int *max_match_length,
+Stage3_compute (List_T *finalpairs, int *npairs, int *cdna_direction, int *sensedir, 
+		int *matches, int *nmatches_posttrim, int *max_match_length,
 		int *ambig_end_length_5, int *ambig_end_length_3,
 		Splicetype_T *ambig_splicetype_5, Splicetype_T *ambig_splicetype_3,
 		int *unknowns, int *mismatches, int *qopens, int *qindels, int *topens, int *tindels,
 		int *ncanonical, int *nsemicanonical, int *nnoncanonical, double *min_splice_prob,
-		double *defect_rate, List_T path,
+		Stage2_T stage2,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
 		int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
 #ifdef PMAP
-		char *queryaaseq_ptr, char *genomicuc_ptr,
+		char *queryaaseq_ptr,
 #endif
 		char *queryseq_ptr, char *queryuc_ptr, int querylength,
 		int skiplength, int query_subseq_offset,
@@ -10812,21 +11892,25 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
 		int extramaterial_end, int extramaterial_paired,
 		int extraband_single, int extraband_end, int extraband_paired, int minendexon,
 		Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-		int ngap, Stage3debug_T stage3debug, bool diagnosticp, bool checkp,
+		int ngap, bool diagnosticp, bool checkp,
 		bool do_final_p, int sense_try, int sense_filter,
-		Oligoindex_T *oligoindices_minor, int noligoindices_minor, Diagpool_T diagpool,
+		Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
 		int sufflookback, int nsufflookback, int maxintronlen, int close_indels_mode,
 		int paired_favor_mode, int zero_offset) {
   struct Pair_T *pairarray;
-  double fwd_defect_rate, rev_defect_rate;
-  List_T pairs_pretrim, pairs_fwd, pairs_rev, path_fwd, path_rev;
+  List_T stage2pairs, p;
+  bool shortp, deletep, fwd_shiftp, fwd_incompletep, rev_shiftp, rev_incompletep;
+  Chrpos_T *last_genomedp5_fwd = NULL, *last_genomedp3_fwd = NULL, *last_genomedp5_rev = NULL, *last_genomedp3_rev = NULL;
+  List_T pairs_pretrim, pairs_fwd, pairs_rev, best_pairs, temp_pairs, pairs, path_fwd, path_rev, best_path, temp_path, path;
+  List_T copy;
+  int alignment_score_fwd, alignment_score_rev;
   int ncanonical_fwd, nsemicanonical_fwd, nnoncanonical_fwd,
     ncanonical_rev, nsemicanonical_rev, nnoncanonical_rev;
   int nbadintrons_fwd, nbadintrons_rev;
   double max_intron_score_fwd = 0.0, max_intron_score_rev = 0.0,
     avg_donor_score_fwd = 0.0, avg_acceptor_score_fwd = 0.0,
     avg_donor_score_rev = 0.0, avg_acceptor_score_rev = 0.0;
-  int alignment_score_fwd, alignment_score_rev;
+  double defect_rate_fwd, defect_rate_rev, defect_rate_temp, defect_rate;
   int nmatches_fwd, nmismatches_fwd, nmatches_rev, nmismatches_rev, nindels_fwd, nindels_rev;
   int fwd_ambig_end_length_5, fwd_ambig_end_length_3, rev_ambig_end_length_5, rev_ambig_end_length_3;
   Splicetype_T fwd_ambig_splicetype_5, fwd_ambig_splicetype_3, rev_ambig_splicetype_5, rev_ambig_splicetype_3;
@@ -10836,99 +11920,113 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
 #endif
 
 
-  debug(printf("Stage 3: *** Starting stage 3 at chrnum #%d)\n",chrnum));
+  stage2pairs = Stage2_middle(stage2);
+  debug0(printf("Stage 3: *** Starting stage 3 at chrnum #%d, chrstart %u)\n",
+		chrnum,((Pair_T) stage2pairs->first)->genomepos));
+  debug(printf("Stage 3: *** Starting stage 3 at chrnum #%d, chrstart %u)\n",
+	       chrnum,((Pair_T) stage2pairs->first)->genomepos));
+  debug(fprintf(stderr,"Stage 3: *** Starting stage 3 at chrnum #%d, chrstart %u)\n",
+		chrnum,((Pair_T) stage2pairs->first)->genomepos));
 
 #ifdef PMAP
-  path_fwd = path;
-  path_rev = (List_T) NULL;
+  pairs_fwd = stage2pairs;
   pairs_rev = (List_T) NULL;
   /* do_final_p = true; */
 #else
   if (splicingp == false) {
-    path_fwd = path;
-    path_rev = (List_T) NULL;
+    pairs_fwd = stage2pairs;
+    pairs_rev = (List_T) NULL;
   } else if (sense_try == 0) {
     /* Should try both even if no introns (cf, AA011563) */
-    path_fwd = path;
-    path_rev = Pairpool_copy(path,pairpool);
+    pairs_fwd = stage2pairs;
+    pairs_rev = Pairpool_copy(stage2pairs,pairpool);
   } else if (sense_try > 0) {
-    path_fwd = path;
-    path_rev = (List_T) NULL;
+    pairs_fwd = stage2pairs;
+    pairs_rev = (List_T) NULL;
   } else if (sense_try < 0) {
-    path_fwd = (List_T) NULL;
-    path_rev = path;
+    pairs_fwd = (List_T) NULL;
+    pairs_rev = stage2pairs;
   }
 #endif
 
 
-  if (path_fwd != NULL) {
-    pairs_fwd = path_compute(&fwd_defect_rate,&fwd_ambig_end_length_5,&fwd_ambig_end_length_3,
-			     &fwd_ambig_splicetype_5,&fwd_ambig_splicetype_3,
-			     path_fwd,/*cdna_direction*/+1,watsonp,genestrand,
-			     jump_late_p,querylength,
+  /* 1.  Middle */
+  if (pairs_fwd == NULL) {
+    path_fwd = (List_T) NULL;
+#ifdef DEBUG8
+  } else if (stage3debug == POST_STAGE2) {
+    path_fwd = List_reverse(pairs_fwd);
+#endif
+  } else {
+    last_genomedp5_fwd = (Chrpos_T *) CALLOC(querylength,sizeof(Chrpos_T));
+    last_genomedp3_fwd = (Chrpos_T *) CALLOC(querylength,sizeof(Chrpos_T));
+    path_fwd = path_compute_dir(&defect_rate_fwd,pairs_fwd,/*cdna_direction*/+1,
+				watsonp,genestrand,jump_late_p,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-			     cutoff_level,queryptr,query_compress,
+				cutoff_level,queryptr,query_compress,
 #endif
 #endif
 #ifdef PMAP
-			     queryaaseq_ptr,genomicuc_ptr,
-#endif
-			     queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
-			     knownsplice_limit_low,knownsplice_limit_high,
-			     maxpeelback,maxpeelback_distalmedial,nullgap,
-			     extramaterial_end,extraband_end,
-			     extramaterial_paired,extraband_single,extraband_paired,
-			     pairpool,dynprogL,dynprogM,dynprogR,stage3debug,do_final_p,
-			     oligoindices_minor,noligoindices_minor,diagpool,
-			     sufflookback,nsufflookback,maxintronlen,close_indels_mode,
-			     paired_favor_mode,zero_offset);
-    
-    if (splicingp) {
-      path_fwd = List_reverse(pairs_fwd);
-      pairs_fwd = score_introns(&max_intron_score_fwd,&avg_donor_score_fwd,&avg_acceptor_score_fwd,&nbadintrons_fwd,
-				path_fwd,/*cdna_direction*/+1,watsonp,
-				chrnum,chroffset,chrhigh,
-#ifdef WASTE
-				pairpool,
-#endif
-				nullgap);
-      alignment_score_fwd = score_alignment(&nmatches_fwd,&nmismatches_fwd,&nindels_fwd,
-#ifdef COMPLEX_DIRECTION
-					    &indel_alignment_score_fwd,
+				queryaaseq_ptr,
 #endif
-					    &ncanonical_fwd,&nsemicanonical_fwd,&nnoncanonical_fwd,
-					    pairs_fwd,/*cdna_direction*/+1);
-    }
-
-  } else {
-    pairs_fwd = NULL;
+				queryseq_ptr,queryuc_ptr,querylength,chrnum,chroffset,chrhigh,
+				maxpeelback,nullgap,
+				extramaterial_paired,extraband_single,extraband_paired,
+				pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_fwd,last_genomedp3_fwd,
+				oligoindices_minor,diagpool,cellpool,
+				sufflookback,nsufflookback,maxintronlen,close_indels_mode,
+				paired_favor_mode,zero_offset);
   }
 
-
-#ifndef PMAP
-  if (path_rev != NULL) {
-    pairs_rev = path_compute(&rev_defect_rate,&rev_ambig_end_length_5,&rev_ambig_end_length_3,
-			     &rev_ambig_splicetype_5,&rev_ambig_splicetype_3,
-			     path_rev,/*cdna_direction*/-1,watsonp,genestrand,
-			     jump_late_p,querylength,
+  if (pairs_rev == NULL) {
+    path_rev = (List_T) NULL;
+#ifdef DEBUG8
+  } else if (stage3debug == POST_STAGE2) {
+    path_rev = List_reverse(pairs_rev);
+#endif
+  } else {
+    last_genomedp5_rev = (Chrpos_T *) CALLOC(querylength,sizeof(Chrpos_T));
+    last_genomedp3_rev = (Chrpos_T *) CALLOC(querylength,sizeof(Chrpos_T));
+    path_rev = path_compute_dir(&defect_rate_rev,pairs_rev,/*cdna_direction*/-1,
+				watsonp,genestrand,jump_late_p,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-			     cutoff_level,queryptr,query_compress,
+				cutoff_level,queryptr,query_compress,
 #endif
 #endif
-			     queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
-			     knownsplice_limit_low,knownsplice_limit_high,
-			     maxpeelback,maxpeelback_distalmedial,nullgap,
-			     extramaterial_end,extraband_end,
-			     extramaterial_paired,extraband_single,extraband_paired,
-			     pairpool,dynprogL,dynprogM,dynprogR,stage3debug,do_final_p,
-			     oligoindices_minor,noligoindices_minor,diagpool,
-			     sufflookback,nsufflookback,maxintronlen,close_indels_mode,
-			     paired_favor_mode,zero_offset);
+#ifdef PMAP
+				queryaaseq_ptr,
+#endif
+				queryseq_ptr,queryuc_ptr,querylength,chrnum,chroffset,chrhigh,
+				maxpeelback,nullgap,
+				extramaterial_paired,extraband_single,extraband_paired,
+				pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_rev,last_genomedp3_rev,
+				oligoindices_minor,diagpool,cellpool,
+				sufflookback,nsufflookback,maxintronlen,close_indels_mode,
+				paired_favor_mode,zero_offset);
+  }
 
 
+#ifdef GSNAP
+  if (path_fwd != NULL && path_rev != NULL) {
+    /* Pick cdna_direction based on initial alignment to avoid unnecessary computation */
+    pairs_fwd = assign_gap_types(path_fwd,/*cdna_direction*/+1,watsonp,queryseq_ptr,
+				 chrnum,chroffset,chrhigh,pairpool);
+    path_fwd = List_reverse(pairs_fwd);
+    debug11(printf("Calling score_introns for path_fwd after path_compute_dir\n"));
+    pairs_fwd = score_introns(&max_intron_score_fwd,&avg_donor_score_fwd,&avg_acceptor_score_fwd,&nbadintrons_fwd,
+			      path_fwd,/*cdna_direction*/+1,watsonp,
+			      chrnum,chroffset,chrhigh,
+#ifdef WASTE
+			      pairpool,
+#endif
+			      nullgap);
+
+    pairs_rev = assign_gap_types(path_rev,/*cdna_direction*/-1,watsonp,queryseq_ptr,
+				 chrnum,chroffset,chrhigh,pairpool);
     path_rev = List_reverse(pairs_rev);
+    debug11(printf("Calling score_introns for path_rev after path_compute_dir\n"));
     pairs_rev = score_introns(&max_intron_score_rev,&avg_donor_score_rev,&avg_acceptor_score_rev,&nbadintrons_rev,
 			      path_rev,/*cdna_direction*/-1,watsonp,
 			      chrnum,chroffset,chrhigh,
@@ -10936,19 +12034,398 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
 			      pairpool,
 #endif			      
 			      nullgap);
-    alignment_score_rev = score_alignment(&nmatches_rev,&nmismatches_rev,&nindels_rev,
-#ifdef COMPLEX_DIRECTION
-					  &indel_alignment_score_rev,
+    
+    if ((*cdna_direction = initial_cdna_direction(pairs_fwd,pairs_rev,
+						  avg_donor_score_fwd,avg_acceptor_score_fwd,
+						  avg_donor_score_rev,avg_acceptor_score_rev)) > 0) {
+      debug(printf("Initial cdna direction is %d\n",*cdna_direction));
+      path_fwd = List_reverse(pairs_fwd);
+      path_rev = (List_T) NULL;
+
+    } else if (*cdna_direction < 0) {
+      debug(printf("Initial cdna direction is %d\n",*cdna_direction));
+      path_fwd = (List_T) NULL;
+      path_rev = List_reverse(pairs_rev);
+
+    } else {
+      debug(printf("Initial cdna direction is %d\n",*cdna_direction));
+      path_fwd = List_reverse(pairs_fwd);
+      path_rev = List_reverse(pairs_rev);
+    }
+  }
 #endif
-					  &ncanonical_rev,&nsemicanonical_rev,&nnoncanonical_rev,
-					  pairs_rev,/*cdna_direction*/-1);
+
+
+  /* 2.  3' and 5' ends (possibly multiple) */
+  if (path_fwd == NULL) {
+    pairs_fwd = (List_T) NULL;
+#ifdef DEBUG8
+  } else if (stage3debug > NO_STAGE3DEBUG && stage3debug < POST_ENDS) {
+    pairs_fwd = List_reverse(path_fwd);
+#endif
+  } else {
+    /* 3' end */
+    if ((p = Stage2_all_ends(stage2)) == NULL) {
+      best_path = path_compute_end3(&fwd_ambig_end_length_3,&fwd_ambig_splicetype_3,defect_rate_fwd,path_fwd,
+				    /*cdna_direction*/+1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				    cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				    queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				    knownsplice_limit_low,knownsplice_limit_high,
+				    maxpeelback,maxpeelback_distalmedial,nullgap,
+				    extramaterial_end,extraband_end,
+				    extramaterial_paired,extraband_single,extraband_paired,
+				    pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				    oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				    maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+    } else {
+      best_path = path_fwd;
+      for ( ; p != NULL; p = List_next(p)) {
+#ifdef PMAP      
+	copy = Pairpool_join_end3(/*path*/path_fwd,/*end3_pairs*/(List_T) List_head(p),pairpool,/*copy_end_p*/false);
+#else
+	if (path_rev == NULL) {
+	  /* Won't need ends anymore */
+	  copy = Pairpool_join_end3(/*path*/path_fwd,/*end3_pairs*/(List_T) List_head(p),pairpool,/*copy_end_p*/false);
+	} else {
+	  copy = Pairpool_join_end3(/*path*/path_fwd,/*end3_pairs*/(List_T) List_head(p),pairpool,/*copy_end_p*/true);
+	}
+#endif
+	path_fwd = path_compute_dir(&defect_rate_temp,/*pairs*/List_reverse(copy),/*cdna_direction*/+1,
+				    watsonp,genestrand,jump_late_p,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				    cutoff_level,queryptr,query_compress,
+#endif
+#endif
+#ifdef PMAP
+				    queryaaseq_ptr,
+#endif
+				    queryseq_ptr,queryuc_ptr,querylength,chrnum,chroffset,chrhigh,
+				    maxpeelback,nullgap,
+				    extramaterial_paired,extraband_single,extraband_paired,
+				    pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_fwd,last_genomedp3_fwd,
+				    oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen,close_indels_mode,
+				    paired_favor_mode,zero_offset);
+
+	temp_path = path_compute_end3(&fwd_ambig_end_length_3,&fwd_ambig_splicetype_3,defect_rate_temp,path_fwd,
+				      /*cdna_direction*/+1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				      cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				      queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				      knownsplice_limit_low,knownsplice_limit_high,
+				      maxpeelback,maxpeelback_distalmedial,nullgap,
+				      extramaterial_end,extraband_end,
+				      extramaterial_paired,extraband_single,extraband_paired,
+				      pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				      oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				      maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+
+	if (end_compare(best_path,temp_path,/*cdna_direction*/+1,watsonp,
+			chrnum,chroffset,chrhigh,nullgap,/*pairsp*/false) > 0) {
+	  best_path = temp_path;
+	  defect_rate_fwd = defect_rate_temp;
+	  debug21(printf("New best path:\n"));
+	  debug21(Pair_dump_list(best_path,true));
+	}
+      }
+    }
+
+
+    /* 5' end */
+    pairs_fwd = List_reverse(best_path);
+    if ((p = Stage2_all_starts(stage2)) == NULL) {
+      best_pairs = path_compute_end5(&fwd_ambig_end_length_5,&fwd_ambig_splicetype_5,defect_rate_fwd,pairs_fwd,
+				     /*cdna_direction*/+1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				     cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				     queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				     knownsplice_limit_low,knownsplice_limit_high,
+				     maxpeelback,maxpeelback_distalmedial,nullgap,
+				     extramaterial_end,extraband_end,
+				     extramaterial_paired,extraband_single,extraband_paired,
+				     pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				     oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				     maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+    } else {
+      best_pairs = pairs_fwd;
+      for ( ; p != NULL; p = List_next(p)) {
+#ifdef PMAP
+	copy = Pairpool_join_end5(/*pairs*/pairs_fwd,/*end5_path*/(List_T) List_head(p),pairpool,/*copy_end_p*/false);
+#else
+	if (path_rev == NULL) {
+	  /* Won't need ends anymore */
+	  copy = Pairpool_join_end5(/*pairs*/pairs_fwd,/*end5_path*/(List_T) List_head(p),pairpool,/*copy_end_p*/false);
+	} else {
+	  copy = Pairpool_join_end5(/*pairs*/pairs_fwd,/*end5_path*/(List_T) List_head(p),pairpool,/*copy_end_p*/true);
+	}
+#endif
+	path_fwd = path_compute_dir(&defect_rate_temp,/*pairs*/copy,/*cdna_direction*/+1,
+				    watsonp,genestrand,jump_late_p,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				    cutoff_level,queryptr,query_compress,
+#endif
+#endif
+#ifdef PMAP
+				    queryaaseq_ptr,
+#endif
+				    queryseq_ptr,queryuc_ptr,querylength,chrnum,chroffset,chrhigh,
+				    maxpeelback,nullgap,
+				    extramaterial_paired,extraband_single,extraband_paired,
+				    pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_fwd,last_genomedp3_fwd,
+				    oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen,close_indels_mode,
+				    paired_favor_mode,zero_offset);
+
+	temp_pairs = path_compute_end5(&fwd_ambig_end_length_5,&fwd_ambig_splicetype_5,defect_rate_temp,
+				       /*pairs*/List_reverse(path_fwd),
+				       /*cdna_direction*/+1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				       cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				       queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				       knownsplice_limit_low,knownsplice_limit_high,
+				       maxpeelback,maxpeelback_distalmedial,nullgap,
+				       extramaterial_end,extraband_end,
+				       extramaterial_paired,extraband_single,extraband_paired,
+				       pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				       oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				       maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+	if (end_compare(best_pairs,temp_pairs,/*cdna_direction*/+1,watsonp,
+			chrnum,chroffset,chrhigh,nullgap,/*pairsp*/true) > 0) {
+	  best_pairs = temp_pairs;
+	  defect_rate_fwd = defect_rate_temp;
+	  debug21(printf("New best pairs:\n"));
+	  debug21(Pair_dump_list(best_pairs,true));
+	}
+      }
+    }
+
+    pairs_fwd = best_pairs;
+  }
+
+
+#ifndef PMAP
+  if (path_rev == NULL) {
+    pairs_rev = (List_T) NULL;
+#ifdef DEBUG8
+  } else if (stage3debug > NO_STAGE3DEBUG && stage3debug < POST_ENDS) {
+    pairs_rev = List_reverse(path_rev);
+#endif
+  } else {
+    /* 3' end */
+    if ((p = Stage2_all_ends(stage2)) == NULL) {
+      best_path = path_compute_end3(&rev_ambig_end_length_3,&rev_ambig_splicetype_3,defect_rate_rev,path_rev,
+				    /*cdna_direction*/-1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				    cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				    queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				    knownsplice_limit_low,knownsplice_limit_high,
+				    maxpeelback,maxpeelback_distalmedial,nullgap,
+				    extramaterial_end,extraband_end,
+				    extramaterial_paired,extraband_single,extraband_paired,
+				    pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				    oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				    maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+
+    } else {
+      best_path = path_rev;
+      for ( ; p != NULL; p = List_next(p)) {
+	copy = Pairpool_join_end3(/*path*/path_rev,/*end3_pairs*/(List_T) List_head(p),pairpool,/*copy_end_p*/false);
+	path_rev = path_compute_dir(&defect_rate_temp,/*pairs*/List_reverse(copy),/*cdna_direction*/-1,
+				    watsonp,genestrand,jump_late_p,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				    cutoff_level,queryptr,query_compress,
+#endif
+#endif
+#ifdef PMAP
+				    queryaaseq_ptr,
+#endif
+				    queryseq_ptr,queryuc_ptr,querylength,chrnum,chroffset,chrhigh,
+				    maxpeelback,nullgap,
+				    extramaterial_paired,extraband_single,extraband_paired,
+				    pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_rev,last_genomedp3_rev,
+				    oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen,close_indels_mode,
+				    paired_favor_mode,zero_offset);
+	
+	temp_path = path_compute_end3(&rev_ambig_end_length_3,&rev_ambig_splicetype_3,defect_rate_temp,path_rev,
+				      /*cdna_direction*/-1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				      cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				      queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				      knownsplice_limit_low,knownsplice_limit_high,
+				      maxpeelback,maxpeelback_distalmedial,nullgap,
+				      extramaterial_end,extraband_end,
+				      extramaterial_paired,extraband_single,extraband_paired,
+				      pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				      oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				      maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+	
+	if (end_compare(best_path,temp_path,/*cdna_direction*/-1,watsonp,
+			chrnum,chroffset,chrhigh,nullgap,/*pairsp*/false) > 0) {
+	  best_path = temp_path;
+	  defect_rate_rev = defect_rate_temp;
+	  debug21(printf("New best path:\n"));
+	  debug21(Pair_dump_list(best_path,true));
+	}
+      }
+    }
+
+    /* 5' end */
+    pairs_rev = List_reverse(best_path);
+    if ((p = Stage2_all_starts(stage2)) == NULL) {
+      best_pairs = path_compute_end5(&rev_ambig_end_length_5,&rev_ambig_splicetype_5,defect_rate_rev,pairs_rev,
+				     /*cdna_direction*/-1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				     cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				     queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				     knownsplice_limit_low,knownsplice_limit_high,
+				     maxpeelback,maxpeelback_distalmedial,nullgap,
+				     extramaterial_end,extraband_end,
+				     extramaterial_paired,extraband_single,extraband_paired,
+				     pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				     oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				     maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+
+    } else {
+      best_pairs = pairs_rev;
+      for ( ; p != NULL; p = List_next(p)) {
+	copy = Pairpool_join_end5(/*pairs*/pairs_rev,/*end5_path*/(List_T) List_head(p),pairpool,/*copy_end_p*/false);
+	path_rev = path_compute_dir(&defect_rate_temp,/*pairs*/copy,/*cdna_direction*/-1,
+				    watsonp,genestrand,jump_late_p,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				    cutoff_level,queryptr,query_compress,
+#endif
+#endif
+#ifdef PMAP
+				    queryaaseq_ptr,
+#endif
+				    queryseq_ptr,queryuc_ptr,querylength,chrnum,chroffset,chrhigh,
+				    maxpeelback,nullgap,
+				    extramaterial_paired,extraband_single,extraband_paired,
+				    pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_rev,last_genomedp3_rev,
+				    oligoindices_minor,diagpool,cellpool,
+				    sufflookback,nsufflookback,maxintronlen,close_indels_mode,
+				    paired_favor_mode,zero_offset);
+      
+	temp_pairs = path_compute_end5(&rev_ambig_end_length_5,&rev_ambig_splicetype_5,defect_rate_temp,
+				       /*pairs*/List_reverse(path_rev),
+				       /*cdna_direction*/-1,watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				       cutoff_level,queryptr,query_compress,
+#endif
+#endif
+				       queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				       knownsplice_limit_low,knownsplice_limit_high,
+				       maxpeelback,maxpeelback_distalmedial,nullgap,
+				       extramaterial_end,extraband_end,
+				       extramaterial_paired,extraband_single,extraband_paired,
+				       pairpool,dynprogL,dynprogM,dynprogR,do_final_p,
+				       oligoindices_minor,diagpool,sufflookback,nsufflookback,
+				       maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+	if (end_compare(best_pairs,temp_pairs,/*cdna_direction*/-1,watsonp,
+			chrnum,chroffset,chrhigh,nullgap,/*pairsp*/true) > 0) {
+	  best_pairs = temp_pairs;
+	  defect_rate_rev = defect_rate_temp;
+	  debug21(printf("New best pairs:\n"));
+	  debug21(Pair_dump_list(best_pairs,true));
+	}
+      }
+    }
+
+    pairs_rev = best_pairs;
+  }
+#endif
+
+
+#ifdef DEBUG8
+  if (stage3debug > NO_STAGE3DEBUG && stage3debug < POST_CANONICAL) {
+    path_fwd = insert_gapholders(pairs_fwd,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+    pairs_fwd = assign_gap_types(path_fwd,/*cdna_direction*/+1,watsonp,queryseq_ptr,
+				 chrnum,chroffset,chrhigh,pairpool);
+
+    path_rev = insert_gapholders(pairs_rev,queryseq_ptr,queryuc_ptr,chroffset,chrhigh,watsonp,pairpool);
+    pairs_rev = assign_gap_types(path_rev,/*cdna_direction*/-1,watsonp,queryseq_ptr,
+				 chrnum,chroffset,chrhigh,pairpool);
 
 
   } else {
-    pairs_rev = NULL;
+#endif
+    pairs_fwd = path_compute_final(defect_rate_fwd,pairs_fwd,/*cdna_direction*/+1,
+				   watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				   cutoff_level,queryptr,query_compress,
+#endif
+#endif
+#ifdef PMAP
+				   queryaaseq_ptr,
+#endif
+				   queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				   knownsplice_limit_low,knownsplice_limit_high,
+				   maxpeelback,maxpeelback_distalmedial,nullgap,
+				   extramaterial_end,extraband_end,
+				   extramaterial_paired,extraband_single,extraband_paired,
+				   pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_fwd,last_genomedp3_fwd,
+				   do_final_p,oligoindices_minor,diagpool,cellpool,
+				   sufflookback,nsufflookback,
+				   maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+
+    pairs_rev = path_compute_final(defect_rate_rev,pairs_rev,/*cdna_direction*/-1,
+				   watsonp,genestrand,jump_late_p,querylength,
+#ifdef GSNAP
+#ifdef END_KNOWNSPLICING_SHORTCUT
+				   cutoff_level,queryptr,query_compress,
+#endif
+#endif
+#ifdef PMAP
+				   queryaaseq_ptr,
+#endif
+				   queryseq_ptr,queryuc_ptr,chrnum,chroffset,chrhigh,
+				   knownsplice_limit_low,knownsplice_limit_high,
+				   maxpeelback,maxpeelback_distalmedial,nullgap,
+				   extramaterial_end,extraband_end,
+				   extramaterial_paired,extraband_single,extraband_paired,
+				   pairpool,dynprogL,dynprogM,dynprogR,last_genomedp5_rev,last_genomedp3_rev,
+				   do_final_p,oligoindices_minor,diagpool,cellpool,
+				   sufflookback,nsufflookback,
+				   maxintronlen,close_indels_mode,paired_favor_mode,zero_offset);
+#ifdef DEBUG8
   }
 #endif
 
+  FREE(last_genomedp3_rev);
+  FREE(last_genomedp5_rev);
+  FREE(last_genomedp3_fwd);
+  FREE(last_genomedp5_fwd);
+
+
   debug(printf("Forward:\n"));
   debug(Pair_dump_list(pairs_fwd,true));
   debug(printf("\n"));
@@ -10957,6 +12434,14 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
   debug(Pair_dump_list(pairs_rev,true));
   debug(printf("\n"));
 
+  debug11(printf("Forward:\n"));
+  debug11(Pair_dump_list(pairs_fwd,true));
+  debug11(printf("\n"));
+
+  debug11(printf("Reverse:\n"));
+  debug11(Pair_dump_list(pairs_rev,true));
+  debug11(printf("\n"));
+
   if (diagnosticp == true) {
     if (pairs_fwd != NULL) {
       path_fwd = check_gaps(pairs_fwd,pairpool);
@@ -10969,14 +12454,49 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
   }
 
 
-  debug(printf("Intronscores: %f,%f fwd, %f,%f rev\n",
-	       avg_donor_score_fwd,avg_acceptor_score_fwd,avg_donor_score_rev,avg_acceptor_score_rev));
-  if (splicingp == false) {
-    pairs_pretrim = pairs_fwd;
-    *defect_rate = fwd_defect_rate;
-    *cdna_direction = +1;
-    *sensedir = SENSE_NULL;
-  } else {
+  debug(printf("Intronscores: %f,%f fwd, %f,%f rev\n",
+	       avg_donor_score_fwd,avg_acceptor_score_fwd,avg_donor_score_rev,avg_acceptor_score_rev));
+  if (pairs_rev == NULL) {
+    pairs_pretrim = pairs_fwd;
+    *cdna_direction = +1;
+    *sensedir = SENSE_FORWARD;
+  } else if (pairs_fwd == NULL) {
+    pairs_pretrim = pairs_rev;
+    *cdna_direction = -1;
+    *sensedir = SENSE_ANTI;
+  } else {
+    path_fwd = List_reverse(pairs_fwd);
+    debug11(printf("Calling score_introns for path_fwd before path_trim\n"));
+    pairs_fwd = score_introns(&max_intron_score_fwd,&avg_donor_score_fwd,&avg_acceptor_score_fwd,&nbadintrons_fwd,
+			      path_fwd,/*cdna_direction*/+1,watsonp,
+			      chrnum,chroffset,chrhigh,
+#ifdef WASTE
+			      pairpool,
+#endif
+			      nullgap);
+    alignment_score_fwd = score_alignment(&nmatches_fwd,&nmismatches_fwd,&nindels_fwd,
+#ifdef COMPLEX_DIRECTION
+					  &indel_alignment_score_fwd,
+#endif
+					  &ncanonical_fwd,&nsemicanonical_fwd,&nnoncanonical_fwd,
+					  pairs_fwd,/*cdna_direction*/+1);
+    
+    path_rev = List_reverse(pairs_rev);
+    debug11(printf("Calling score_introns for path_rev before path_trim\n"));
+    pairs_rev = score_introns(&max_intron_score_rev,&avg_donor_score_rev,&avg_acceptor_score_rev,&nbadintrons_rev,
+			      path_rev,/*cdna_direction*/-1,watsonp,
+			      chrnum,chroffset,chrhigh,
+#ifdef WASTE
+			      pairpool,
+#endif			      
+			      nullgap);
+    alignment_score_rev = score_alignment(&nmatches_rev,&nmismatches_rev,&nindels_rev,
+#ifdef COMPLEX_DIRECTION
+					  &indel_alignment_score_rev,
+#endif
+					  &ncanonical_rev,&nsemicanonical_rev,&nnoncanonical_rev,
+					  pairs_rev,/*cdna_direction*/-1);
+
     pairs_pretrim = pick_cdna_direction(&(*cdna_direction),&(*sensedir),pairs_fwd,pairs_rev,
 					ncanonical_fwd,nsemicanonical_fwd,nnoncanonical_fwd,nbadintrons_fwd,
 					ncanonical_rev,nsemicanonical_rev,nnoncanonical_rev,nbadintrons_rev,
@@ -10988,48 +12508,55 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
 #endif
 					alignment_score_fwd,alignment_score_rev,sense_filter);
   }
+  if (splicingp == false) {
+    *sensedir = SENSE_NULL;
+  }
+
 
   if (pairs_pretrim == NULL) {
     *npairs = 0;
-    *defect_rate = 0.0;
     *nmatches_posttrim = 0;
     *ambig_end_length_5 = *ambig_end_length_3 = 0;
     return (struct Pair_T *) NULL;
   } else {
     if (*cdna_direction >= 0) {
-      *defect_rate = fwd_defect_rate;
       *ambig_end_length_5 = fwd_ambig_end_length_5;
       *ambig_end_length_3 = fwd_ambig_end_length_3;
       *ambig_splicetype_5 = fwd_ambig_splicetype_5;
       *ambig_splicetype_3 = fwd_ambig_splicetype_3;
+      defect_rate = defect_rate_fwd;
     } else {
-      *defect_rate = rev_defect_rate;
       *ambig_end_length_5 = rev_ambig_end_length_5;
       *ambig_end_length_3 = rev_ambig_end_length_3;
       *ambig_splicetype_5 = rev_ambig_splicetype_5;
       *ambig_splicetype_3 = rev_ambig_splicetype_3;
+      defect_rate = defect_rate_rev;
     }
 
-
-    *pairs = path_trim(*defect_rate,&(*ambig_end_length_5),&(*ambig_end_length_3),
-		       &(*ambig_splicetype_5),&(*ambig_splicetype_3),
-		       pairs_pretrim,&(*cdna_direction),&(*sensedir),watsonp,
-		       jump_late_p,querylength,
+#ifdef DEBUG8
+    if (stage3debug > NO_STAGE3DEBUG && stage3debug < POST_TRIM) {
+      *finalpairs = pairs_pretrim;
+    } else {
+#endif
+      *finalpairs = path_trim(defect_rate,&(*ambig_end_length_5),&(*ambig_end_length_3),
+			      &(*ambig_splicetype_5),&(*ambig_splicetype_3),
+			      pairs_pretrim,&(*cdna_direction),&(*sensedir),watsonp,
+			      jump_late_p,querylength,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
-		       cutoff_level,queryptr,query_compress,
+			      cutoff_level,queryptr,query_compress,
 #endif
 #endif
-#ifdef PMAP
-		       queryaaseq_ptr,
+			      queryseq_ptr,queryuc_ptr,
+			      chrnum,chroffset,chrhigh,knownsplice_limit_low,knownsplice_limit_high,
+			      maxpeelback,maxpeelback_distalmedial,nullgap,
+			      extramaterial_end,extraband_end,
+			      pairpool,dynprogL,dynprogR,maxintronlen,paired_favor_mode,zero_offset);
+#ifdef DEBUG8
+    }
 #endif
-		       queryseq_ptr,queryuc_ptr,
-		       chrnum,chroffset,chrhigh,knownsplice_limit_low,knownsplice_limit_high,
-		       maxpeelback,maxpeelback_distalmedial,nullgap,
-		       extramaterial_end,extraband_end,
-		       pairpool,dynprogL,dynprogR,stage3debug);
 
-    *nmatches_posttrim = Pair_nmatches_posttrim(&(*max_match_length),*pairs,/*pos5*/*ambig_end_length_5,
+    *nmatches_posttrim = Pair_nmatches_posttrim(&(*max_match_length),*finalpairs,/*pos5*/*ambig_end_length_5,
 						/*pos3*/querylength - (*ambig_end_length_3));
 
     /* printf("ambig_end_length = %d, %d\n",*ambig_end_length_5,*ambig_end_length_3); */
@@ -11037,16 +12564,13 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
     Pair_fracidentity(&(*matches),&(*unknowns),&(*mismatches),
 		      &(*qopens),&(*qindels),&(*topens),&(*tindels),
 		      &(*ncanonical),&(*nsemicanonical),&(*nnoncanonical),
-		      &(*min_splice_prob),*pairs,*cdna_direction);
+		      &(*min_splice_prob),*finalpairs,*cdna_direction);
 
-    pairarray = make_pairarray(&(*npairs),&(*pairs),*cdna_direction,*sensedir,watsonp,
-			       pairpool,queryseq_ptr,
-#ifdef PMAP
-			       queryaaseq_ptr,
-#endif
-			       chroffset,chrhigh,
+    pairarray = make_pairarray(&(*npairs),&(*finalpairs),*cdna_direction,*sensedir,watsonp,
+			       pairpool,queryseq_ptr,chroffset,chrhigh,
 			       ngap,query_subseq_offset,skiplength,diagnosticp);
 
+#if 0
     if (checkp == true && stage3debug == NO_STAGE3DEBUG && 
 	Pair_check_array(pairarray,*npairs) == true) {
       Pair_dump_array(pairarray,*npairs,/*zerobasedp*/true);
@@ -11054,6 +12578,9 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
       Except_raise(&coordinate_error,__FILE__,__LINE__);
 #endif
     }
+#endif
+
+
 #ifdef DEBUG
     Pair_dump_array(pairarray,*npairs,/*zerobasedp*/true);
 #endif
@@ -11068,88 +12595,62 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
  ************************************************************************/
 
 bool
-Stage3_mergeable (bool *singlep, bool *dualbreakp, int *cdna_direction,
-		  int *queryjump, int *genomejump,
-		  Stage3_T firstpart, Stage3_T secondpart,
-		  int breakpoint, int queryntlength,
-		  double donor_prob, double acceptor_prob) {
+Stage3_mergeable (Stage3_T firstpart, Stage3_T secondpart,
+		  int breakpoint, int queryntlength, int maxintronlen_bound) {
   Pair_T end1, start2;
   bool watsonp, connectablep = false;
   Chrpos_T endchrpos1, startchrpos2;
-  int jumpdiff;
+  int npairs_left, npairs_right, nstart;
   int cdna_direction_1, cdna_direction_2;
 
   assert(firstpart->pairs != NULL);
   assert(secondpart->pairs != NULL);
 
-  debug10(printf("Stage3_mergeable called with watsonp %d and %d and cdna_directions %d and %d\n",
-		 firstpart->watsonp,secondpart->watsonp,firstpart->cdna_direction,secondpart->cdna_direction));
+  debug20(printf("Stage3_mergeable called with breakpoint %d, watsonp %d and %d, and cdna_directions %d and %d\n",
+		 breakpoint,firstpart->watsonp,secondpart->watsonp,firstpart->cdna_direction,secondpart->cdna_direction));
   debug10(Stage3_print_ends(firstpart));
   debug10(Stage3_print_ends(secondpart));
 
   if (firstpart->chrnum != secondpart->chrnum) {
-    debug10(printf("not mergeable: chrnum %d != chrnum %d\n",firstpart->chrnum,secondpart->chrnum));
+    debug20(printf("not mergeable: chrnum %d != chrnum %d\n",firstpart->chrnum,secondpart->chrnum));
     return false;
 
   } else if (firstpart->watsonp != secondpart->watsonp) {
-    debug10(printf("not mergeable: watsonp %d != watsonp %d\n",firstpart->watsonp,secondpart->watsonp));
+    debug20(printf("not mergeable: watsonp %d != watsonp %d\n",firstpart->watsonp,secondpart->watsonp));
     return false;
 
 #if 0
   } else if (firstpart->sensedir != secondpart->sensedir &&
 	     firstpart->sensedir != SENSE_NULL && secondpart->sensedir != SENSE_NULL) {
     /* Could be mergeable if an intron is trimmed during the merge */
-    debug10(printf("not mergeable: sensedir %d != sensedir %d\n",
+    debug20(printf("not mergeable: sensedir %d != sensedir %d\n",
 		   firstpart->sensedir,secondpart->sensedir));
     return false;
 #endif
 
   } else {
-    /* Determine cdna directions in the two halves */
+    /* Find end pairs. Ignore cdna directions for now. */
     end1 = Pair_end_bound(&cdna_direction_1,firstpart->pairs,breakpoint);
     start2 = Pair_start_bound(&cdna_direction_2,secondpart->pairs,breakpoint+1);
-    assert(end1 != NULL);
-    assert(start2 != NULL);
-
-    if (cdna_direction_1 != cdna_direction_2 &&
-	cdna_direction_1 != 0 && cdna_direction_2 != 0) {
-      debug10(printf("not mergeable: cdna_direction %d != cdna_direction %d\n",
-		     cdna_direction_1,cdna_direction_2));
-      return false;
-
-    } else {
-      if (cdna_direction_1 == 0) {
-	*cdna_direction = cdna_direction_2;
-      } else if (cdna_direction_2 == 0) {
-	*cdna_direction = cdna_direction_1;
-      } else {
-	*cdna_direction = cdna_direction_1;
-      }
-      debug10(printf("cdna_direction is %d\n",*cdna_direction));
-    }
 
     if ((watsonp = firstpart->watsonp) == true) {
       endchrpos1 = end1->genomepos;
       startchrpos2 = start2->genomepos;
 
-      debug10(printf("? connectable, watson: endchrpos1 %d at querypos %d versus startchrpos2 %d and querypos %d\n",
+      debug20(printf("? connectable, watson: endchrpos1 %d at querypos %d versus startchrpos2 %d at querypos %d\n",
 		     endchrpos1,end1->querypos,startchrpos2,start2->querypos));
       if (endchrpos1 < startchrpos2) {
 	/* Deletion */
-	*genomejump = startchrpos2 - endchrpos1 - 1;
-	debug10(printf("endchrpos1 < startchrpos2, so deletion of length %u\n",*genomejump));
-	debug10(printf("donor_prob %f, acceptor_prob %f\n",donor_prob,acceptor_prob));
-	if (startchrpos2 < endchrpos1 + MERGELENGTH) {
-	  connectablep = true;
-	} else if (/* donor_prob > DONOR_THRESHOLD && acceptor_prob >= ACCEPTOR_THRESHOLD && */
-		   startchrpos2 < endchrpos1 + LONG_MERGELENGTH) {
+	/* *genomejump = startchrpos2 - endchrpos1 - 1; */
+	debug20(printf("endchrpos1 < startchrpos2, so deletion of length %u\n",startchrpos2 - endchrpos1 - 1));
+	if (startchrpos2 < endchrpos1 + maxintronlen_bound) {
 	  connectablep = true;
 	}
 
-      } else if (startchrpos2 + (end1->querypos - start2->querypos) + 20 >= endchrpos1) {
+      } else if (startchrpos2 + (end1->querypos - start2->querypos) + 100 >= endchrpos1) {
 	/* Insertion */
-	debug10(printf("startchrpos2 + (%d - %d) + %d >= endchrpos2, so insertion\n",end1->querypos,start2->querypos,20));
-	*genomejump = 0;
+	debug20(printf("startchrpos2 + (%d - %d) + %d >= endchrpos2, so insertion\n",end1->querypos,start2->querypos,20));
+	/* *genomejump = 0; */
 	connectablep = true;
       }
 
@@ -11159,50 +12660,39 @@ Stage3_mergeable (bool *singlep, bool *dualbreakp, int *cdna_direction,
       endchrpos1 = firstpart->chrhigh - end1->genomepos;
       startchrpos2 = secondpart->chrhigh - start2->genomepos;
 
-      debug10(printf("? connectable, crick: startchrpos2 %u versus endchrpos1 %u\n",startchrpos2,endchrpos1));
+      debug20(printf("? connectable, crick: startchrpos2 %u at querypos %d versus endchrpos1 %u at querypos %d\n",
+		     startchrpos2,start2->querypos,endchrpos1,end1->querypos));
       if (startchrpos2 < endchrpos1) {
 	/* Deletion */
-	*genomejump = endchrpos1 - startchrpos2 - 1;
-	debug10(printf("startchrpos2 < endchrpos1, so deletion of length %u\n",*genomejump));
-	debug10(printf("donor_prob %f, acceptor_prob %f\n",donor_prob,acceptor_prob));
-	if (endchrpos1 < startchrpos2 + MERGELENGTH) {
-	  connectablep = true;
-	} else if (/* donor_prob > DONOR_THRESHOLD && acceptor_prob >= ACCEPTOR_THRESHOLD && */
-		   endchrpos1 < startchrpos2 + LONG_MERGELENGTH) {
+	/* *genomejump = endchrpos1 - startchrpos2 - 1; */
+	debug20(printf("startchrpos2 < endchrpos1, so deletion of length %u\n",endchrpos1 - startchrpos2 - 1));
+	if (endchrpos1 < startchrpos2 + maxintronlen_bound) {
 	  connectablep = true;
 	}
-      } else if (endchrpos1 + (end1->querypos - start2->querypos) + 20 >= startchrpos2) {
+      } else if (endchrpos1 + (end1->querypos - start2->querypos) + 100 >= startchrpos2) {
 	/* Insertion */
-	debug10(printf("endchrpos1 + (%d - %d) + %d >= endchrpos1, so insertion\n",end1->querypos,start2->querypos,20));
-	*genomejump = 0;
+	debug20(printf("endchrpos1 + (%d - %d) + %d >= endchrpos1, so insertion\n",end1->querypos,start2->querypos,20));
+	/* *genomejump = 0; */
 	connectablep = true;
       }
     }
 
     if (connectablep == false) {
-      debug10(printf("result: not mergeable\n\n"));
+      debug20(printf("result: not mergeable\n\n"));
       return false;
     } else {
-      *queryjump = start2->querypos - end1->querypos - 1;
-      debug10(printf("result: mergeable: queryjump = %d - %d - 1 = %d, genomejump = %d\n\n",
-		     start2->querypos,end1->querypos,*queryjump,*genomejump));
-
-      if (*queryjump > *genomejump) {
-	jumpdiff = *queryjump - *genomejump;
+      npairs_left = Pairpool_count_bounded(&nstart,firstpart->pairs,0,breakpoint);
+      npairs_right = Pairpool_count_bounded(&nstart,secondpart->pairs,breakpoint,queryntlength);
+      debug20(printf("Predicted after splicing: npairs_left %d, npairs_right %d\n",npairs_left,npairs_right));
+      if (npairs_left < 25 || npairs_right < 25) {
+	return false;
       } else {
-	jumpdiff = *genomejump - *queryjump;
-      }
-
-      /* Follows logic of assign_gap_types somewhat */
-      *singlep = *dualbreakp = false;
-      if (jumpdiff < MININTRONLEN) {
-	debug10(printf("  Gap is a single gap\n"));
-	*singlep = true;
-      } else if (*queryjump > 9) {
-	*dualbreakp = true;
+	/* *queryjump = start2->querypos - end1->querypos - 1; */
+	debug20(printf("result: mergeable: queryjump = %d - %d - 1 = %d\n\n",
+		       start2->querypos,end1->querypos,start2->querypos - end1->querypos - 1));
+		       
+	return true;
       }
-
-      return true;
     }
   }
 }
@@ -11211,10 +12701,7 @@ Stage3_mergeable (bool *singlep, bool *dualbreakp, int *cdna_direction,
 bool
 Stage3_merge_chimera (T this_left, T this_right,
 		      int minpos1, int maxpos1, int minpos2, int maxpos2,
-#ifdef PMAP
-		      char *queryaaseq_ptr,
-#endif
-		      Sequence_T queryseq, Sequence_T queryuc, Pairpool_T pairpool, 
+		      char *queryseq_ptr, char *queryuc_ptr, Pairpool_T pairpool, 
 		      Dynprog_T dynprogL, Dynprog_T dynprogR,
 		      int maxpeelback, int maxpeelback_distalmedial,
 		      int nullgap, int extramaterial_end, int extraband_end, int ngap) {
@@ -11223,7 +12710,6 @@ Stage3_merge_chimera (T this_left, T this_right,
   int ambig_end_length_5 = 0, ambig_end_length_3 = 0;	/* Need to be set for build_pairs_end5 and build_path_end3 */
   int dynprogindex_minor = 0;
   Splicetype_T ambig_splicetype;
-  char *queryseq_ptr, *queryuc_ptr;
 
 
   this_left->pairs = Pairpool_clip_bounded(this_left->pairs,minpos1,maxpos1);
@@ -11239,60 +12725,46 @@ Stage3_merge_chimera (T this_left, T this_right,
     return false;
 
   } else {
-    queryseq_ptr = Sequence_fullpointer(queryseq);
-    queryuc_ptr = Sequence_fullpointer(queryuc);
-
     path = List_reverse(this_left->pairs);
 
-    /* Chimera might not have a single breakpoint */
-    /* path = clean_path_end3_gap_indels (path); */
+    /* To avoid indels at chimeric join, need to clean ends, extend with nogaps, and then clip*/
+    path = clean_path_end3_gap_indels(path);
 
     path = build_path_end3(&knownsplicep,&ambig_end_length_3,&ambig_splicetype,
 			   &chop_exon_p,&dynprogindex_minor,path,
 			   this_left->chroffset,this_left->chrhigh,/*querylength*/maxpos1+1,
 			   /*knownsplice_limit_low*/-1U,/*knownsplice_limit_high*/0,
-#ifdef PMAP
-			   queryaaseq_ptr,
-#endif
 			   queryseq_ptr,queryuc_ptr,
 			   this_left->cdna_direction,this_left->watsonp,
 			   /*jump_late_p*/this_left->watsonp ? false : true,
 			   maxpeelback,maxpeelback_distalmedial,
 			   nullgap,extramaterial_end,extraband_end,
 			   /*defect_rate*/0.0,pairpool,dynprogL,
-			   /*extendp*/true,/*endalign*/BEST_LOCAL);
+			   /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
 
     this_left->pairs = List_reverse(path);
     this_left->pairs = Pairpool_clip_bounded(this_left->pairs,minpos1,maxpos1);
 
-
-    /* Chimera might not have a single breakpoint */
-    /* this_right->pairs = clean_pairs_end5_gap_indels(this_right->pairs); */
+    /* To avoid indels at chimeric join, need to clean ends, extend with nogaps, and then clip*/
+    this_right->pairs = clean_pairs_end5_gap_indels(this_right->pairs);
 
     this_right->pairs = build_pairs_end5(&knownsplicep,&ambig_end_length_5,&ambig_splicetype,
 					 &chop_exon_p,&dynprogindex_minor,this_right->pairs,
 					 this_right->chroffset,this_right->chrhigh,
 					 /*knownsplice_limit_low*/-1U,/*knownsplice_limit_high*/0,
-#ifdef PMAP
-					 queryaaseq_ptr,
-#endif
 					 queryseq_ptr,queryuc_ptr,
 					 this_right->cdna_direction,this_right->watsonp,
 					 /*jump_late_p*/this_right->watsonp ? false : true,
 					 maxpeelback,maxpeelback_distalmedial,
 					 nullgap,extramaterial_end,extraband_end,
 					 /*defect_rate*/0.0,pairpool,dynprogR,
-					 /*extendp*/true,/*endalign*/BEST_LOCAL);
+					 /*extendp*/true,/*endalign*/QUERYEND_NOGAPS);
     this_right->pairs = Pairpool_clip_bounded(this_right->pairs,minpos2,maxpos2);
 
     if (this_left->pairs == NULL || this_right->pairs == NULL) {
       return false;
     } else {
-      make_pairarrays_chimera(this_left,this_right,
-#ifdef PMAP
-			      queryaaseq_ptr,
-#endif
-			      queryseq,pairpool,/*gaplength*/0,ngap);
+      make_pairarrays_chimera(this_left,this_right,queryseq_ptr,pairpool,/*gaplength*/0,ngap);
 
       this_left->chimera_right_p = true;
       this_right->chimera_left_p = true;
@@ -11305,9 +12777,6 @@ Stage3_merge_chimera (T this_left, T this_right,
 
 void
 Stage3_extend_right (T this, int goal, int querylength,
-#ifdef PMAP
-		     char *queryaaseq_ptr,
-#endif
 		     char *queryseq_ptr, char *queryuc_ptr,
 		     bool max_extend_p, Pairpool_T pairpool,
 		     int ngap, int maxpeelback) {
@@ -11318,7 +12787,8 @@ Stage3_extend_right (T this, int goal, int querylength,
   int querypos, querydp5, genomedp5;
   int genomepos;
   char c, c_upper, g, g_alt, comp;
-  bool mismatchp;
+  bool mismatchp, protectedp;
+  int n_peeled_indels;
 
   debug10(printf("LEFT BEFORE FILL\n"));
   debug10(Pair_dump_list(this->pairs,true));
@@ -11331,21 +12801,21 @@ Stage3_extend_right (T this, int goal, int querylength,
   debug(printf("\nEXTEND_RIGHT\n"));
   querydp5 = leftpair->querypos + 1;
   genomedp5 = leftpair->genomepos + 1;
-  if (leftpair->cdna == ' ') querydp5--;
-  if (leftpair->genome == ' ') genomedp5--;
-
-  path = peel_leftward(&mismatchp,&peeled_path,path,&querydp5,&genomedp5,
-#ifdef WASTE
-		       pairpool,
-#endif
-		       maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-		       /*endgappairs*/NULL,&gappair,
-		       /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
+  /* if (leftpair->cdna == ' ') querydp5--; -- For old dynamic programming */
+  /* if (leftpair->genome == ' ') genomedp5--; -- For old dynamic programming */
 
-  path = clean_path_end3_gap_indels(path);
-  leftpair = (Pair_T) path->first;
-  querypos = leftpair->querypos;
-  genomepos = leftpair->genomepos;
+  protectedp = false;
+  path = peel_leftward(&n_peeled_indels,&protectedp,&peeled_path,path,&querydp5,&genomedp5,
+		       maxpeelback,/*stop_at_indels_p*/true);
+  if (path == NULL) {
+    querypos = querydp5 - 1;
+    genomepos = genomedp5 - 1;
+  } else {
+    path = clean_path_end3_gap_indels(path);
+    leftpair = (Pair_T) path->first;
+    querypos = leftpair->querypos;
+    genomepos = leftpair->genomepos;
+  }
 
   if (this->watsonp == true) {
     /* pos = this->chroffset + genomepos; */
@@ -11360,8 +12830,12 @@ Stage3_extend_right (T this, int goal, int querylength,
       /* g = Genome_get_char(genome,pos); */
       g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/true);
       if (g != '*') {
-	if (c_upper == g) {
+	if (c_upper == g || c_upper == g_alt) {
 	  comp = MATCH_COMP;
+#ifdef PMAP
+	} else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	  comp = AMBIGUOUS_COMP;
+#endif
 	} else {
 	  comp = MISMATCH_COMP;
 	}
@@ -11383,9 +12857,14 @@ Stage3_extend_right (T this, int goal, int querylength,
 	/* g = Genome_get_char(genome,pos); */
 	g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/true);
 	if (g != '*') {
-	  if (c_upper == g) {
+	  if (c_upper == g || c_upper == g_alt) {
 	    comp = MATCH_COMP;
 	    nconsecutive_mismatches = 0;
+#ifdef PMAP
+	  } else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	    comp = AMBIGUOUS_COMP;
+	    /* Don't consider as match or mismatch */
+#endif
 	  } else {
 	    comp = MISMATCH_COMP;
 	    nconsecutive_mismatches += 1;
@@ -11414,8 +12893,12 @@ Stage3_extend_right (T this, int goal, int querylength,
       /* g = complCode[(int) Genome_get_char(genome,pos)]; */
       g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/false);
       if (g != '*') {
-	if (c_upper == g) {
+	if (c_upper == g || c_upper == g_alt) {
 	  comp = MATCH_COMP;
+#ifdef PMAP
+	} else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	  comp = AMBIGUOUS_COMP;
+#endif
 	} else {
 	  comp = MISMATCH_COMP;
 	}
@@ -11437,9 +12920,14 @@ Stage3_extend_right (T this, int goal, int querylength,
 	/* g = complCode[(int) Genome_get_char(genome,pos)]; */
 	g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/false);
 	if (g != '*') {
-	  if (c_upper == g) {
+	  if (c_upper == g || c_upper == g_alt) {
 	    comp = MATCH_COMP;
 	    nconsecutive_mismatches = 0;
+#ifdef PMAP
+	  } else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	    comp = AMBIGUOUS_COMP;
+	    /* Don't count as either match or mismatch */
+#endif
 	  } else {
 	    comp = MISMATCH_COMP;
 	    nconsecutive_mismatches += 1;
@@ -11464,9 +12952,6 @@ Stage3_extend_right (T this, int goal, int querylength,
   Stage3_free_pairarray(&this);
   this->pairarray = make_pairarray(&this->npairs,&this->pairs,this->cdna_direction,this->sensedir,
 				   this->watsonp,pairpool,queryseq_ptr,
-#ifdef PMAP
-				   queryaaseq_ptr,
-#endif
 				   this->chroffset,this->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
 				   /*diagnosticp*/false);
   if (this->pairarray == NULL) {
@@ -11481,9 +12966,6 @@ Stage3_extend_right (T this, int goal, int querylength,
 
 void
 Stage3_extend_left (T this, int goal,
-#ifdef PMAP
-		    char *queryaaseq_ptr,
-#endif
 		    char *queryseq_ptr, char *queryuc_ptr,
 		    bool max_extend_p, Pairpool_T pairpool,
 		    int ngap, int maxpeelback) {
@@ -11494,7 +12976,8 @@ Stage3_extend_left (T this, int goal,
   int querypos, querydp3, genomedp3;
   int genomepos;
   char c, c_upper, g, g_alt, comp;
-  bool mismatchp;
+  bool mismatchp, protectedp;
+  int n_peeled_indels;
 
   debug10(printf("RIGHT BEFORE FILL\n"));
   debug10(Pair_dump_list(this->pairs,true));
@@ -11509,18 +12992,18 @@ Stage3_extend_left (T this, int goal,
   querydp3 = rightpair->querypos - 1;
   genomedp3 = rightpair->genomepos - 1;
 
-  pairs = peel_rightward(&mismatchp,&peeled_pairs,pairs,&querydp3,&genomedp3,
-#ifdef WASTE
-			 pairpool,
-#endif
-			 maxpeelback,/*throughmismatchp*/true,/*quit_on_gap_p*/false,
-			 /*endgappairs*/NULL,&gappair,
-			 /*querydp_medialgap*/NULL,/*genomedp_medialgap*/NULL);
-
-  pairs = clean_pairs_end5_gap_indels(pairs);
-  rightpair = (Pair_T) pairs->first;
-  querypos = rightpair->querypos;
-  genomepos = rightpair->genomepos;
+  protectedp = false;
+  pairs = peel_rightward(&n_peeled_indels,&protectedp,&peeled_pairs,pairs,&querydp3,&genomedp3,
+			 maxpeelback,/*stop_at_indels_p*/true);
+  if (pairs == NULL) {
+    querypos = querydp3 + 1;
+    genomepos = genomedp3 + 1;
+  } else {
+    pairs = clean_pairs_end5_gap_indels(pairs);
+    rightpair = (Pair_T) pairs->first;
+    querypos = rightpair->querypos;
+    genomepos = rightpair->genomepos;
+  }
   
   if (this->watsonp == true) {
     /* pos = this->chroffset + genomepos; */
@@ -11535,8 +13018,12 @@ Stage3_extend_left (T this, int goal,
       /* g = Genome_get_char(genome,pos); */
       g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/true);
       if (g != '*') {
-	if (c_upper == g) {
+	if (c_upper == g || c_upper == g_alt) {
 	  comp = MATCH_COMP;
+#ifdef PMAP
+	} else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	  comp = AMBIGUOUS_COMP;
+#endif
 	} else {
 	  comp = MISMATCH_COMP;
 	}
@@ -11558,9 +13045,14 @@ Stage3_extend_left (T this, int goal,
 	/* g = Genome_get_char(genome,pos); */
 	g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/true);
 	if (g != '*') {
-	  if (c_upper == g) {
+	  if (c_upper == g || c_upper == g_alt) {
 	    comp = MATCH_COMP;
 	    nconsecutive_mismatches = 0;
+#ifdef PMAP
+	  } else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	    comp = AMBIGUOUS_COMP;
+	    /* Don't count as either match or mismatch */
+#endif
 	  } else {
 	    comp = MISMATCH_COMP;
 	    nconsecutive_mismatches += 1;
@@ -11588,8 +13080,12 @@ Stage3_extend_left (T this, int goal,
       /* g = complCode[(int) Genome_get_char(genome,pos)]; */
       g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/false);
       if (g != '*') {
-	if (c_upper == g) {
+	if (c_upper == g || c_upper == g_alt) {
 	  comp = MATCH_COMP;
+#ifdef PMAP
+	} else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	  comp = AMBIGUOUS_COMP;
+#endif
 	} else {
 	  comp = MISMATCH_COMP;
 	}
@@ -11611,9 +13107,14 @@ Stage3_extend_left (T this, int goal,
 	/* g = complCode[(int) Genome_get_char(genome,pos)]; */
 	g = get_genomic_nt(&g_alt,genomepos,this->chroffset,this->chrhigh,/*watsonp*/false);
 	if (g != '*') {
-	  if (c_upper == g) {
+	  if (c_upper == g || c_upper == g_alt) {
 	    comp = MATCH_COMP;
 	    nconsecutive_mismatches = 0;
+#ifdef PMAP
+	  } else if (Dynprog_consistent_p(c_upper,g,g_alt) == true) {
+	    comp = AMBIGUOUS_COMP;
+	    /* Don't count as either match or mismatch */
+#endif
 	  } else {
 	    comp = MISMATCH_COMP;
 	    nconsecutive_mismatches += 1;
@@ -11638,9 +13139,6 @@ Stage3_extend_left (T this, int goal,
   Stage3_free_pairarray(&this);
   this->pairarray = make_pairarray(&this->npairs,&this->pairs,this->cdna_direction,this->sensedir,
 				   this->watsonp,pairpool,queryseq_ptr,
-#ifdef PMAP
-				   queryaaseq_ptr,
-#endif
 				   this->chroffset,this->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
 				   /*diagnosticp*/false);
   if (this->pairarray == NULL) {
@@ -11669,15 +13167,13 @@ adjust_genomepos (T this, int delta) {
 #endif
 
 
-void
-Stage3_merge_local_single (T this_left, T this_right,
-			   int minpos1, int maxpos1, int minpos2, int maxpos2, int cdna_direction,
-#ifdef PMAP
-			   char *queryaaseq_ptr,
-#endif
-			   Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
-			   Pairpool_T pairpool, Dynprog_T dynprogM,
-			   int maxpeelback, int extraband_single, int ngap) {
+static bool
+merge_local_single (T this_left, T this_right,
+		    int minpos1, int maxpos1, int minpos2, int maxpos2,
+		    Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
+		    Pairpool_T pairpool, Dynprog_T dynprogM,
+		    int maxpeelback, int extraband_single, int ngap) {
+  bool successp;
   Pair_T firstpair, lastpair, leftpair, rightpair;
   List_T path;
   bool watsonp, filledp;
@@ -11701,7 +13197,7 @@ Stage3_merge_local_single (T this_left, T this_right,
     this_right->pairarray = (struct Pair_T *) NULL;
     this_left->pairarray_freeable_p = false;
     this_right->pairarray_freeable_p = false;
-    return;
+    return false;
 
   } else if ((watsonp = this_left->watsonp) == true) {
     debug10(printf("watsonp %d\n",watsonp));
@@ -11751,15 +13247,23 @@ Stage3_merge_local_single (T this_left, T this_right,
     leftpair = (Pair_T) path->first;
     rightpair = (Pair_T) this_right->pairs->first;
 
-    this_right->pairs = traverse_single_gap(&filledp,&dynprogindex_minor,this_right->pairs,&path,leftpair,rightpair,
-					    this_right->chroffset,this_right->chrhigh,
-#ifdef PMAP
-					    queryaaseq_ptr,
-#endif
-					    queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-					    /*jump_late_p*/watsonp ? false : true,pairpool,dynprogM,
-					    maxpeelback,extraband_single,/*defect_rate*/0,
-					    /*close_indels_mode*/+1,/*forcep*/true);
+    debug10(printf("Running traverse_single_gap\n"));
+    if ((this_right->pairs = traverse_single_gap(&filledp,&dynprogindex_minor,this_right->pairs,&path,leftpair,rightpair,
+						 this_right->chroffset,this_right->chrhigh,
+						 queryseq_ptr,queryuc_ptr,/*querylength*/0,watsonp,
+						 /*jump_late_p*/watsonp ? false : true,pairpool,dynprogM,
+						 /*last_genomedp5*/NULL,/*last_genomedp3*/NULL,
+						 maxpeelback,extraband_single,/*defect_rate*/0,
+						 /*close_indels_mode*/+1,/*forcep*/false,/*finalp*/true)) == NULL) {
+      debug10(printf(" => failed\n"));
+      successp = false;
+    } else if (filledp == false) {
+      debug10(printf(" => failed\n"));
+      successp = false;
+    } else {
+      debug10(printf(" => succeeded\n"));
+      successp = true;
+    }
     this_left->pairs = List_reverse(path);
 
   } else {
@@ -11810,71 +13314,199 @@ Stage3_merge_local_single (T this_left, T this_right,
     leftpair = (Pair_T) path->first;
     rightpair = (Pair_T) this_right->pairs->first;
 
-    this_right->pairs = traverse_single_gap(&filledp,&dynprogindex_minor,this_right->pairs,&path,leftpair,rightpair,
-					    this_right->chroffset,this_right->chrhigh,
-#ifdef PMAP
-					    queryaaseq_ptr,
-#endif
-					    queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
-					    /*jump_late_p*/watsonp ? false : true,pairpool,dynprogM,
-					    maxpeelback,extraband_single,/*defect_rate*/0,
-					    /*close_indels_mode*/+1,/*forcep*/true);
+    if ((this_right->pairs = traverse_single_gap(&filledp,&dynprogindex_minor,this_right->pairs,&path,leftpair,rightpair,
+						 this_right->chroffset,this_right->chrhigh,
+						 queryseq_ptr,queryuc_ptr,/*querylength*/0,watsonp,
+						 /*jump_late_p*/watsonp ? false : true,pairpool,dynprogM,
+						 /*last_genomedp5*/NULL,/*last_genomedp3*/NULL,
+						 maxpeelback,extraband_single,/*defect_rate*/0,
+						 /*close_indels_mode*/+1,/*forcep*/false,/*finalp*/true)) == NULL) {
+      debug10(printf(" => failed\n"));
+      successp = false;
+    } else if (filledp == false) {
+      debug10(printf(" => failed\n"));
+      successp = false;
+    } else {
+      debug10(printf(" => succeeded\n"));
+      successp = true;
+    }
     this_left->pairs = List_reverse(path);
   }
 
-  make_pairarray_merge(this_left,this_right,this_left->cdna_direction,this_left->sensedir,
-		       this_left->watsonp,pairpool,queryseq_ptr,
+  if (successp == false) {
+    this_left->pairarray = make_pairarray(&this_left->npairs,&this_left->pairs,this_left->cdna_direction,this_left->sensedir,
+					  this_left->watsonp,pairpool,queryseq_ptr,
+					  this_left->chroffset,this_left->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
+					  /*diagnosticp*/false);
+    this_right->pairarray = make_pairarray(&this_right->npairs,&this_right->pairs,this_right->cdna_direction,this_right->sensedir,
+					  this_right->watsonp,pairpool,queryseq_ptr,
+					  this_right->chroffset,this_right->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
+					  /*diagnosticp*/false);
+  } else {
+    this_left->pairs = List_append(this_left->pairs,this_right->pairs);
+    this_right->pairs = (List_T) NULL;
+  }
+
+
+  debug10(printf(" => returning successp %d\n",successp));
+  return successp;
+}
+
+
+static List_T
+recompute_for_cdna_direction (int *cdna_direction, List_T pairs, int genestrand, bool watsonp,
+			      char *queryseq_ptr, char *queryuc_ptr,
+			      Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+			      Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+			      int maxpeelback, int nullgap,
+			      Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+			      int sufflookback, int nsufflookback, int maxintronlen_bound,
+			      int extramaterial_paired, int extraband_paired, int extraband_single,
+			      int paired_favor_mode, int zero_offset) {
+  List_T pairs_fwd, path_fwd, pairs_rev, path_rev, copy;
+  int alignment_score_fwd, alignment_score_rev;
+  double max_intron_score_fwd = 0.0, max_intron_score_rev = 0.0,
+    avg_donor_score_fwd = 0.0, avg_acceptor_score_fwd = 0.0,
+    avg_donor_score_rev = 0.0, avg_acceptor_score_rev = 0.0;
+  int nmatches_fwd, nmismatches_fwd, nindels_fwd, ncanonical_fwd, nsemicanonical_fwd, nnoncanonical_fwd, nbadintrons_fwd,
+    nmatches_rev, nmismatches_rev, nindels_rev, ncanonical_rev, nsemicanonical_rev, nnoncanonical_rev, nbadintrons_rev;
+  int sensedir;
+
+  double defect_rate;
+
+  copy = Pairpool_copy(pairs,pairpool);
+
+  /* Compute fwd */
+  path_fwd = path_compute_dir(&defect_rate,/*pairs*/copy,/*cdna_direction*/+1,watsonp,
+			      genestrand,/*jump_late_p*/watsonp ? false : true,
+#ifdef PMAP
+			      queryaaseq_ptr,
+#endif
+			      queryseq_ptr,queryuc_ptr,/*querylength*/0,chrnum,chroffset,chrhigh,
+			      maxpeelback,nullgap,extramaterial_paired,extraband_single,extraband_paired,
+			      pairpool,dynprogL,dynprogM,dynprogR,/*last_genomedp5*/NULL,/*last_genomedp3*/NULL,
+			      oligoindices_minor,diagpool,cellpool,
+			      sufflookback,nsufflookback,maxintronlen_bound,/*close_indels_mode*/+1,
+			      paired_favor_mode,zero_offset);
+  pairs_fwd = score_introns(&max_intron_score_fwd,&avg_donor_score_fwd,&avg_acceptor_score_fwd,&nbadintrons_fwd,
+			    path_fwd,/*cdna_direction*/+1,watsonp,
+			    chrnum,chroffset,chrhigh,
+#ifdef WASTE
+			    pairpool,
+#endif
+			    nullgap);
+  alignment_score_fwd = score_alignment(&nmatches_fwd,&nmismatches_fwd,&nindels_fwd,
+#ifdef COMPLEX_DIRECTION
+					&indel_alignment_score_fwd,
+#endif
+					&ncanonical_fwd,&nsemicanonical_fwd,&nnoncanonical_fwd,
+					pairs_fwd,/*cdna_direction*/+1);
+    
+
+  /* Compute rev */
+  path_rev = path_compute_dir(&defect_rate,/*pairs*/pairs,/*cdna_direction*/-1,watsonp,
+			      genestrand,/*jump_late_p*/watsonp ? false : true,
 #ifdef PMAP
-		       queryaaseq_ptr,
+			      queryaaseq_ptr,
+#endif
+			      queryseq_ptr,queryuc_ptr,/*querylength*/0,chrnum,chroffset,chrhigh,
+			      maxpeelback,nullgap,extramaterial_paired,extraband_single,extraband_paired,
+			      pairpool,dynprogL,dynprogM,dynprogR,/*last_genomedp5*/NULL,/*last_genomedp3*/NULL,
+			      oligoindices_minor,diagpool,cellpool,
+			      sufflookback,nsufflookback,maxintronlen_bound,/*close_indels_mode*/+1,
+			      paired_favor_mode,zero_offset);
+  pairs_rev = score_introns(&max_intron_score_rev,&avg_donor_score_rev,&avg_acceptor_score_rev,&nbadintrons_rev,
+			    path_rev,/*cdna_direction*/-1,watsonp,
+			    chrnum,chroffset,chrhigh,
+#ifdef WASTE
+			    pairpool,
+#endif			      
+			    nullgap);
+  alignment_score_rev = score_alignment(&nmatches_rev,&nmismatches_rev,&nindels_rev,
+#ifdef COMPLEX_DIRECTION
+					&indel_alignment_score_rev,
 #endif
-		       this_left->chroffset,this_left->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
-		       /*diagnosticp*/false,/*new_gap_p*/false);
+					&ncanonical_rev,&nsemicanonical_rev,&nnoncanonical_rev,
+					pairs_rev,/*cdna_direction*/-1);
 
-  return;
+  pairs = pick_cdna_direction(&(*cdna_direction),&sensedir,pairs_fwd,pairs_rev,
+			      ncanonical_fwd,nsemicanonical_fwd,nnoncanonical_fwd,nbadintrons_fwd,
+			      ncanonical_rev,nsemicanonical_rev,nnoncanonical_rev,nbadintrons_rev,
+			      max_intron_score_fwd,avg_donor_score_fwd,avg_acceptor_score_fwd,
+			      max_intron_score_rev,avg_donor_score_rev,avg_acceptor_score_rev,
+#ifdef COMPLEX_DIRECTION
+			      nmatches_fwd,nmismatches_fwd,nmatches_rev,nmismatches_rev,nindels_fwd,nindels_rev,
+			      indel_alignment_score_fwd,indel_alignment_score_rev,
+#endif
+			      alignment_score_fwd,alignment_score_rev,/*sense_filter*/0);
+
+  /* Don't know if we need to call path_compute_final */
+
+  return pairs;
 }
 
 
-void
-Stage3_merge_local_splice (T this_left, T this_right, char comp,
-			   int minpos1, int maxpos1, int minpos2, int maxpos2,
-			   int queryjump, int genomejump, int cdna_direction,
+bool
+Stage3_merge_local (T this_left, T this_right,
+		    int minpos1, int maxpos1, int minpos2, int maxpos2, int genestrand,
 #ifdef PMAP
-			   char *queryaaseq_ptr,
-#endif
-			   Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
-			   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-			   Genome_T genome, Genome_T genomealt,
-			   int maxpeelback, int extramaterial_paired, int extraband_paired,
-			   int extraband_single, int ngap) {
-  Pair_T end1, start2, newpair = NULL, oldpair, pair, firstpair, lastpair, leftpair, rightpair;
-  List_T pairs = NULL, path;
-  bool watsonp, filledp, shiftp;
-  int genomicpos, querypos, i;
-  int gaplength;
-  char *genomicseg_ptr, *genomicsegalt_ptr;
+		    char *queryaaseq_ptr,
+#endif
+		    Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
+		    Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		    int maxpeelback, int nullgap,
+		    Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+		    int sufflookback, int nsufflookback, int maxintronlen_bound,
+		    int extramaterial_paired, int extraband_paired, int extraband_single, int ngap,
+		    int paired_favor_mode, int zero_offset) {
+  Pair_T end1, start2, firstpair, lastpair, leftpair, rightpair;
+  List_T left_pairs, right_pairs, path;
+  bool watsonp, filledp, shiftp, incompletep;
   Univcoord_T left;
   int firstpos, lastpos;
-  Sequence_T genomicseg, genomicsegalt;
+  int cdna_direction, cdna_direction_1, cdna_direction_2;
+  bool make_dir_consistent_p;
 
-  int intronlength;
-  bool intronp;
+  int intronlength, queryjump, genomejump;
 
   int dynprogindex_minor = 0, dynprogindex_major = 0;
 
 
-  this_left->pairs = Pairpool_clip_bounded(this_left->pairs,minpos1,maxpos1);
-  this_right->pairs = Pairpool_clip_bounded(this_right->pairs,minpos2,maxpos2);
+  debug10(printf("Entered Stage3_merge_local with bounds1 %d..%d and bounds2 %d..%d\n",
+		 minpos1,maxpos1,minpos2,maxpos2));
+
+  debug10(printf("this_left->pairs before clipping\n"));
+  debug10(Pair_dump_list(this_left->pairs,true));
+  debug10(printf("this_right->pairs before clipping\n"));
+  debug10(Pair_dump_list(this_right->pairs,true));
+
+  left_pairs = Pairpool_copy(this_left->pairs,pairpool);
+  right_pairs = Pairpool_copy(this_right->pairs,pairpool);
+
+  left_pairs = Pairpool_clip_bounded(left_pairs,minpos1,maxpos1);
+  right_pairs = Pairpool_clip_bounded(right_pairs,minpos2,maxpos2);
+
+  path = clean_end_chimera(List_reverse(left_pairs));
+  right_pairs = clean_end_chimera(right_pairs);
+
+  Pairpool_clean_join(&path,&right_pairs);
+
+  if (path == NULL || right_pairs == NULL) {
+    /* Do not attach copies of pairs to this_left or this_right */
+    return false;
+  } else {
+    this_left->pairs = List_reverse(path);
+    this_right->pairs = right_pairs;
+  }
+
+  debug10(printf("this_left->pairs after clipping\n"));
+  debug10(Pair_dump_list(this_left->pairs,true));
+  debug10(printf("this_right->pairs after clipping\n"));
+  debug10(Pair_dump_list(this_right->pairs,true));
 
   Stage3_free_pairarray(&this_left);
   Stage3_free_pairarray(&this_right);
 
-  if (this_left->pairs == NULL && this_right->pairs == NULL) {
-    this_left->pairarray = (struct Pair_T *) NULL;
-    this_right->pairarray = (struct Pair_T *) NULL;
-    this_left->pairarray_freeable_p = false;
-    this_right->pairarray_freeable_p = false;
-    return;
-  }
 
   watsonp = this_left->watsonp;
   if (watsonp == true) {
@@ -11896,87 +13528,212 @@ Stage3_merge_local_splice (T this_left, T this_right, char comp,
     lastpos = lastpair->genomepos;
     
     left = this_right->chroffset + lastpos;
+  }
+
+
+  /* Determine if need to make cdna_direction consistent */
+  end1 = Pair_end_bound(&cdna_direction_1,this_left->pairs,/*breakpoint*/maxpos1);
+  start2 = Pair_start_bound(&cdna_direction_2,this_right->pairs,/*breakpoint+1*/minpos2);
+  debug10(printf("cdna_directions up to breakpoint are %d and %d\n",cdna_direction_1,cdna_direction_2));
+  assert(end1 != NULL);
+  assert(start2 != NULL);
 
+  if (cdna_direction_1 > 0 && cdna_direction_2 < 0) {
+    make_dir_consistent_p = true;
+
+  } else if (cdna_direction_1 < 0 && cdna_direction_2 > 0) {
+    make_dir_consistent_p = true;
+
+  } else {
+    make_dir_consistent_p = false;
+    if (cdna_direction_1 == 0) {
+      cdna_direction = cdna_direction_2;
+    } else if (cdna_direction_2 == 0) {
+      cdna_direction = cdna_direction_1;
+    } else {
+      cdna_direction = cdna_direction_1;
+    }
+    debug10(printf("cdna_direction is %d\n",cdna_direction));
   }
 
+
   /* Determine if the gap is an intron or not */
   end1 = (Pair_T) List_last_value(this_left->pairs);
   start2 = (Pair_T) List_head(this_right->pairs);
-  intronlength = start2->genomepos - end1->genomepos - 1;
+  queryjump = start2->querypos - end1->querypos - 1;
+  genomejump = start2->genomepos - end1->genomepos - 1;
+  intronlength = genomejump - queryjump;
 
-  if (splicingp == false) {
-    debug10(printf("splicingp is false, so not an intron\n"));
-    intronp = false;
+  debug10(printf("intronlength %d = (start2->genomepos %d - end1->genomepos %d - 1) - (start2->querypos %d - end1->querypos %d - 1)\n",
+		 intronlength,start2->genomepos,end1->genomepos,start2->querypos,end1->querypos));
 
-  } else if (intronlength < min_intronlength) {
-    debug10(printf("intronlength %d < min_intronlength %d, so not an intron\n",
+  if (intronlength >= min_intronlength && splicingp == true) {
+    debug10(printf("intronlength %d >= min_intronlength %d, so an intron\n",
 		   intronlength,min_intronlength));
-    intronp = false;
-
-  } else {
-    intronp = true;
-  }
+    /* Intron */
+    path = List_reverse(this_left->pairs);
+    leftpair = (Pair_T) path->first;
+    rightpair = (Pair_T) this_right->pairs->first;
 
-  if (intronp == false) {
-    debug10(printf("Before\n"));
-    debug10(Pair_dump_list(this_left->pairs,true));
-    debug10(Pair_dump_list(this_right->pairs,true));
+    if (make_dir_consistent_p == true) {
+      /* Solve intron when re-computing for cdna_direction */
+      debug10(printf("intron, but make dir consistent\n"));
+
+      this_right->pairs = Pairpool_push_gapholder(this_right->pairs,pairpool,queryjump,genomejump,
+						  /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      this_left->pairs = List_reverse(path);
+      this_left->pairs = List_append(this_left->pairs,this_right->pairs);
+      this_right->pairs = (List_T) NULL;
+
+      this_left->pairs =
+	recompute_for_cdna_direction(&cdna_direction,this_left->pairs,genestrand,watsonp,
+				     queryseq_ptr,queryuc_ptr,
+				     this_left->chrnum,this_left->chroffset,this_left->chrhigh,
+				     pairpool,dynprogL,dynprogM,dynprogR,maxpeelback,nullgap,
+				     oligoindices_minor,diagpool,cellpool,
+				     sufflookback,nsufflookback,maxintronlen_bound,
+				     extramaterial_paired,extraband_paired,extraband_single,
+				     paired_favor_mode,zero_offset);
 
-    end1 = (Pair_T) List_last_value(this_left->pairs);
-    start2 = (Pair_T) List_head(this_right->pairs);
+    } else {
+      debug10(printf("traverse_genome_gap with cdna_direction %d...",cdna_direction));
+      this_right->pairs = traverse_genome_gap(&filledp,&shiftp,&dynprogindex_minor,&dynprogindex_major,
+					      this_right->pairs,&path,leftpair,rightpair,
+					      this_left->chrnum,this_left->chroffset,this_left->chrhigh,
+					      queryseq_ptr,queryuc_ptr,/*querylength*/0,cdna_direction,watsonp,
+					      /*jump_late_p*/watsonp ? false : true,pairpool,
+					      dynprogL,dynprogM,dynprogR,/*last_genomedp5*/NULL,/*last_genomedp3*/NULL,
+					      maxpeelback,extramaterial_paired,extraband_paired,extraband_single,
+					      /*defect_rate*/0,/*close_indels_mode*/+1,/*finalp*/true,/*simplep*/false);
+      debug10(printf("done"));
+      
+      if (filledp == false) {
+	this_right->pairs = Pairpool_push_gapholder(this_right->pairs,pairpool,queryjump,genomejump,
+						    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      }
+    
+      this_left->pairs = List_reverse(path);
+      this_left->pairs = List_append(this_left->pairs,this_right->pairs);
+      this_right->pairs = (List_T) NULL;
+    }
 
-    Stage3_merge_local_single(this_left,this_right,
-			      minpos1,/*maxpos1*/end1->querypos,
-			      /*minpos2*/start2->querypos,maxpos2,cdna_direction,
-#ifdef PMAP
-			      queryaaseq_ptr,
-#endif
-			      queryseq,queryseq_ptr,queryuc_ptr,
-			      pairpool,dynprogM,maxpeelback,extraband_single,ngap);
+    if (make_pairarray_merge(this_left,cdna_direction,this_left->sensedir,
+			     this_left->watsonp,pairpool,queryseq_ptr,
+			     this_left->chroffset,this_left->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
+			     /*diagnosticp*/false,/*new_gap_p*/true) == false) {
+      return false;
+    }
 
-    debug10(printf("After\n"));
-    debug10(Pair_dump_list(this_left->pairs,true));
+#if 0
+  } else if (intronlength < 0) { /* Was intronlength < -EXTRAQUERYGAP, but this missed some short insertions */
+    /* If traverse_cdna_gap fails, causes seg faults later on */
+    /* cDNA gap */
+    debug10(printf("cDNA gap, but make dir consistent\n"));
 
-  } else {
-    /* Intron */
     path = List_reverse(this_left->pairs);
     leftpair = (Pair_T) path->first;
     rightpair = (Pair_T) this_right->pairs->first;
 
-    debug10(printf("traverse_genome_gap..."));
-    this_right->pairs = traverse_genome_gap(&filledp,&shiftp,&dynprogindex_minor,&dynprogindex_major,
+    if (make_dir_consistent_p == true) {
+      /* Solve cDNA gap when re-computing for cdna_direction */
+      this_right->pairs = Pairpool_push_gapholder(this_right->pairs,pairpool,queryjump,genomejump,
+						  /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      this_left->pairs = List_reverse(path);
+      this_left->pairs = List_append(this_left->pairs,this_right->pairs);
+      this_right->pairs = (List_T) NULL;
+
+      this_left->pairs =
+	recompute_for_cdna_direction(&cdna_direction,this_left->pairs,genestrand,watsonp,
+				     queryseq_ptr,queryuc_ptr,
+				     this_left->chrnum,this_left->chroffset,this_left->chrhigh,
+				     pairpool,dynprogL,dynprogM,dynprogR,maxpeelback,nullgap,
+				     oligoindices_minor,diagpool,cellpool,
+				     sufflookback,nsufflookback,maxintronlen_bound,
+				     extramaterial_paired,extraband_paired,extraband_single,
+				     paired_favor_mode,zero_offset);
+
+    } else {
+      debug10(printf("traverse_cdna_gap..."));
+      this_right->pairs = traverse_cdna_gap(&filledp,&incompletep,&dynprogindex_minor,&dynprogindex_major,
 					    this_right->pairs,&path,leftpair,rightpair,
-					    this_left->chrnum,this_left->chroffset,this_left->chrhigh,
-#ifdef PMAP
-					    queryaaseq_ptr,
-#endif
-					    queryseq_ptr,queryuc_ptr,cdna_direction,watsonp,
+					    this_left->chroffset,this_left->chrhigh,
+					    queryseq_ptr,queryuc_ptr,/*querylength*/0,cdna_direction,watsonp,
 					    /*jump_late_p*/watsonp ? false : true,pairpool,
-					    dynprogL,dynprogM,dynprogR,
+					    dynprogL,dynprogM,dynprogR,/*last_genomedp5*/NULL,/*last_genomedp3*/NULL,
 					    maxpeelback,extramaterial_paired,extraband_paired,extraband_single,
 					    /*defect_rate*/0,/*close_indels_mode*/+1,/*finalp*/true);
-    debug10(printf("done"));
+      debug10(printf("done"));
 
-    if (filledp == false) {
-      this_right->pairs = Pairpool_push_gapholder(this_right->pairs,pairpool,queryjump,genomejump,/*knownp*/false);
-    }
+      if (filledp == false) {
+	this_right->pairs = Pairpool_push_gapholder(this_right->pairs,pairpool,queryjump,genomejump,
+						    /*leftpair*/NULL,/*rightpair*/NULL,/*knownp*/false);
+      }
 
-    this_left->pairs = List_reverse(path);
+      this_left->pairs = List_reverse(path);
+      this_left->pairs = List_append(this_left->pairs,this_right->pairs);
+      this_right->pairs = (List_T) NULL;
+    }
 
-    make_pairarray_merge(this_left,this_right,cdna_direction,this_left->sensedir,
-			 this_left->watsonp,pairpool,queryseq_ptr,
-#ifdef PMAP
-			 queryaaseq_ptr,
+    if (make_pairarray_merge(this_left,cdna_direction,this_left->sensedir,
+			     this_left->watsonp,pairpool,queryseq_ptr,
+			     this_left->chroffset,this_left->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
+			     /*diagnosticp*/false,/*new_gap_p*/true) == false) {
+      return false;
+    }
 #endif
-			 this_left->chroffset,this_left->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
-			 /*diagnosticp*/false,/*new_gap_p*/true);
+
+  } else {
+    /* Single gap */
+    debug10(printf("intronlength %d, so a single gap\n",intronlength));
+    debug10(printf("Before\n"));
+    debug10(Pair_dump_list(this_left->pairs,true));
+    debug10(Pair_dump_list(this_right->pairs,true));
+
+    end1 = (Pair_T) List_last_value(this_left->pairs);
+    start2 = (Pair_T) List_head(this_right->pairs);
+
+    debug10(printf("Running merge_local_single\n"));
+    if (merge_local_single(this_left,this_right,
+			   minpos1,/*maxpos1*/end1->querypos,
+			   /*minpos2*/start2->querypos,maxpos2,
+			   queryseq,queryseq_ptr,queryuc_ptr,
+			   pairpool,dynprogM,maxpeelback,extraband_single,ngap) == false) {
+      return false;
+
+    } else if (make_dir_consistent_p == true) {
+      debug10(printf("Need to make dir consistent\n"));
+      this_left->pairs =
+	recompute_for_cdna_direction(&cdna_direction,this_left->pairs,genestrand,watsonp,
+				     queryseq_ptr,queryuc_ptr,
+				     this_left->chrnum,this_left->chroffset,this_left->chrhigh,
+				     pairpool,dynprogL,dynprogM,dynprogR,maxpeelback,nullgap,
+				     oligoindices_minor,diagpool,cellpool,
+				     sufflookback,nsufflookback,maxintronlen_bound,
+				     extramaterial_paired,extraband_paired,extraband_single,
+				     paired_favor_mode,zero_offset);
+    }
+
+    if (make_pairarray_merge(this_left,cdna_direction,this_left->sensedir,
+			     this_left->watsonp,pairpool,queryseq_ptr,
+			     this_left->chroffset,this_left->chrhigh,ngap,/*subseq_offset*/0,/*skiplength*/0,
+			     /*diagnosticp*/false,/*new_gap_p*/false) == false) {
+      return false;
+    }
+    
+    debug10(printf("After\n"));
+    debug10(Pair_dump_list(this_left->pairs,true));
   }
       
   this_left->cdna_direction = cdna_direction;
 
-  return;
+  return true;
 }
 
+
+
+
+
+
 #ifndef PMAP
 void
 Stage3_guess_cdna_direction (T this) {
@@ -11986,4 +13743,3 @@ Stage3_guess_cdna_direction (T this) {
   return;
 }
 #endif
-
diff --git a/src/stage3.h b/src/stage3.h
index 5b83545..a2fe52f 100644
--- a/src/stage3.h
+++ b/src/stage3.h
@@ -1,4 +1,4 @@
-/* $Id: stage3.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: stage3.h 135447 2014-05-07 22:25:45Z twu $ */
 #ifndef STAGE3_INCLUDED
 #define STAGE3_INCLUDED
 
@@ -15,6 +15,8 @@ typedef struct Stage3_T *Stage3_T;
 #include "stage2.h"
 #include "pairdef.h"
 #include "pairpool.h"
+#include "diagpool.h"
+#include "cellpool.h"
 #include "splicetrie.h"
 #include "splicetrie_build.h"	/* For Splicetype_T */
 #include "dynprog.h"
@@ -23,21 +25,28 @@ typedef struct Stage3_T *Stage3_T;
 #include "reader.h"		/* For cDNAEnd_T */
 #include "chimera.h"
 #include "stopwatch.h"
+#ifdef PMAP
+#include "oligoindex_pmap.h"
+#else
+#include "oligoindex_hr.h"
+#endif
 
 #ifndef GSNAP
 #include "gregion.h"
 #endif
 
-#define EXTRAQUERYGAP 10
+#define EXTRAQUERYGAP 20
 
 typedef enum {SIMPLE, SUMMARY, ALIGNMENT, COMPRESSED, CONTINUOUS, CONTINUOUS_BY_EXON,
 	      EXONS_CDNA, EXONS_GENOMIC, CDNA, PROTEIN_GENOMIC,
 	      PSL_NT, PSL_PRO, GFF3_GENE, GFF3_MATCH_CDNA, GFF3_MATCH_EST,
 	      SAM, COORDS, SPLICESITES, INTRONS, MAP_RANGES, MAP_EXONS} Printtype_T;
 
-typedef enum {NO_STAGE3DEBUG, POST_STAGE2, POST_SMOOTHING, POST_SINGLES, 
-	      POST_INTRONS, POST_HMM, POST_DUAL_BREAKS, POST_CYCLES,
-	      POST_CANONICAL, POST_CHANGEPOINT, POST_DISTAL_MEDIAL} Stage3debug_T;
+/* POST_CANONICAL is the path_compute_final() step */
+/* POST_TRIM is the path_trim() step */
+typedef enum {NO_STAGE3DEBUG, POST_STAGE2, POST_SINGLES, POST_INTRONS,
+	      POST_HMM, POST_SMOOTHING, POST_DUAL_INTRONS, POST_CYCLES, POST_DUAL_BREAKS,
+	      POST_MIDDLE, POST_ENDS, POST_CANONICAL, POST_TRIM, POST_CHANGEPOINT, POST_DISTAL_MEDIAL} Stage3debug_T;
 
 #define T Stage3_T
 
@@ -46,8 +55,8 @@ Stage3_setup (bool splicingp_in, bool novelsplicingp_in, bool require_splicedir_
 	      IIT_T splicesites_iit_in, int *splicesites_divint_crosstable_in,
 	      int donor_typeint_in, int acceptor_typeint_in,
 	      Univcoord_T *splicesites_in,
-	      int min_intronlength_in, int max_deletionlength_in,
-	      bool output_sam_p_in);
+	      int min_intronlength_in, int max_deletionlength_in, int min_indel_end_matches_in,
+	      bool output_sam_p_in, bool homopolymerp_in, Stage3debug_T stage3debug_in);
 
 extern bool
 Stage3_chimera_left_p (T this);
@@ -126,13 +135,13 @@ extern double
 Stage3_fracidentity (T this);
 extern Univcoord_T
 Stage3_genomicpos (T this, int querypos, bool headp);
-extern void
-Stage3_pathscores (bool *gapp, int *pathscores, T this, int querylength, cDNAEnd_T cdnaend);
 extern int
 Stage3_chimeric_goodness (int *matches1, int *matches2, T part1, T part2, int breakpoint);
 
 extern bool
 Stage3_passes_filter (T this, double min_trimmed_coverage, double min_identity);
+extern bool
+Stage3_passes_filter_chimera (Chimera_T chimera, double min_trimmed_coverage, double min_identity);
 extern int
 Stage3_cmp (const void *a, const void *b);
 extern Chrpos_T
@@ -205,7 +214,7 @@ Stage3_print_gff3 (FILE *fp, T this, int pathnum, Univ_IIT_T chromosome_iit, Seq
 		   Sequence_T queryseq, int querylength, Printtype_T printtype, char *sourcename);
 #ifndef PMAP
 extern void
-Stage3_print_sam (FILE *fp, T this, int pathnum, int npaths,
+Stage3_print_sam (FILE *fp, char *abbrev, T this, int pathnum, int npaths,
 		  int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		  Univ_IIT_T chromosome_iit, Sequence_T usersegment,
 		  Sequence_T queryseq, int chimera_part, Chimera_T chimera,
@@ -251,8 +260,7 @@ extern T
 Stage3_new (struct Pair_T *pairarray, List_T pairs, int npairs, int cdna_direction, int sensedir,
 	    int stage2_source, int stage2_indexsize,
 	    int matches, int unknowns, int mismatches, int qopens, int qindels,
-	    int topens, int tindels, int ncanonical, int nsemicanonical,
-	    int nnoncanonical, double defect_rate,
+	    int topens, int tindels, int ncanonical, int nsemicanonical, int nnoncanonical, 
 	    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
 	    bool watsonp, int querylength, int skiplength, int trimlength, double stage3_runtime,
 	    int straintype, char *strain, IIT_T altstrain_iit);
@@ -267,20 +275,20 @@ extern int
 Stage3_good_part (struct Pair_T *pairarray, int npairs, int pos5, int pos3);
 
 extern struct Pair_T *
-Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir, int *matches,
-		int *nmatches_posttrim, int *max_match_length,
+Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
+		int *matches, int *nmatches_posttrim, int *max_match_length,
 		int *ambig_end_length_5, int *ambig_end_length_3,
 		Splicetype_T *ambig_splicetype_5, Splicetype_T *ambig_splicetype_3,
 		int *unknowns, int *mismatches, int *qopens, int *qindels, int *topens, int *tindels,
 		int *ncanonical, int *nsemicanonical, int *nnoncanonical, double *min_splice_prob,
-		double *defect_rate, List_T path,
+		Stage2_T stage2,
 #ifdef GSNAP
 #ifdef END_KNOWNSPLICING_SHORTCUT
 		int cutoff_level, char *queryptr, Compress_T query_compress,
 #endif
 #endif
 #ifdef PMAP
-		char *queryaaseq_ptr, char *genomicuc_ptr,
+		char *queryaaseq_ptr,
 #endif
 		char *queryseq_ptr, char *queryuc_ptr, int querylength,
 		int skiplength, int query_subseq_offset,
@@ -291,9 +299,9 @@ Stage3_compute (List_T *pairs, int *npairs, int *cdna_direction, int *sensedir,
 		int extramaterial_end, int extramaterial_paired,
 		int extraband_single, int extraband_end, int extraband_paired, int minendexon,
 		Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-		int ngap, Stage3debug_T stage3debug, bool diagnosticp, bool checkp,
+		int ngap, bool diagnosticp, bool checkp,
 		bool do_final_p, int sense_try, int sense_filter,
-		Oligoindex_T *oligoindices_minor, int noligoindices_minor, Diagpool_T diagpool,
+		Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
 		int sufflookback, int nsufflookback, int maxintronlen, int close_indels_mode,
 		int paired_favor_mode, int zero_offset);
 
@@ -310,61 +318,39 @@ Stage3_direct (Gregion_T gregion,
 #endif
 
 extern bool
-Stage3_mergeable (bool *singlep, bool *dualbreakp, int *cdna_direction,
-		  int *queryjump, int *genomejump,
-		  Stage3_T firstpart, Stage3_T secondpart,
-		  int exonexonpos, int queryntlength,
-		  double donor_prob, double acceptor_prob);
+Stage3_mergeable (Stage3_T firstpart, Stage3_T secondpart,
+		  int exonexonpos, int queryntlength, int maxintronlen_bound);
 
 extern bool
 Stage3_merge_chimera (T this_left, T this_right,
 		      int minpos1, int maxpos1, int minpos2, int maxpos2,
-#ifdef PMAP
-		      char *queryaaseq_ptr,
-#endif
-		      Sequence_T queryseq, Sequence_T queryuc, Pairpool_T pairpool, 
-		      Dynprog_T dynprogL, Dynprog_T dynprogR,
-		      int maxpeelback, int maxpeelback_distalmedial,
+		      char *queryseq_ptr, char *queryuc_ptr, Pairpool_T pairpool, 
+		      Dynprog_T dynprogL, Dynprog_T dynprogR, int maxpeelback, int maxpeelback_distalmedial,
 		      int nullgap, int extramaterial_end, int extraband_end, int ngap);
 extern void
 Stage3_extend_right (T this, int goal, int querylength,
-#ifdef PMAP
-		     char *queryaaseq_ptr,
-#endif
 		     char *queryseq_ptr, char *queryuc_ptr,
 		     bool max_extend_p, Pairpool_T pairpool,
 		     int ngap, int maxpeelback);
 extern void
 Stage3_extend_left (T this, int goal,
-#ifdef PMAP
-		    char *queryaaseq_ptr,
-#endif
 		    char *queryseq_ptr, char *queryuc_ptr,
 		    bool max_extend_p, Pairpool_T pairpool,
 		    int ngap, int maxpeelback);
 
-extern void
-Stage3_merge_local_single (T this_left, T this_right,
-			   int minpos1, int maxpos1, int minpos2, int maxpos2, int cdna_direction,
-#ifdef PMAP
-			   char *queryaaseq_ptr,
-#endif
-			   Sequence_T queryseeq, char *queryseq_ptr, char *queryuc_ptr,
-			   Pairpool_T pairpool, Dynprog_T dynprogM,
-			   int maxpeelback, int extraband_single, int ngap);
-
-extern void
-Stage3_merge_local_splice (T this_left, T this_right, char comp,
-			   int minpos1, int maxpos1, int minpos2, int maxpos2,
-			   int queryjump, int genomejump, int cdna_direction,
+extern bool
+Stage3_merge_local (T this_left, T this_right,
+		    int minpos1, int maxpos1, int minpos2, int maxpos2, int genestrand,
 #ifdef PMAP
-			   char *queryaaseq_ptr,
+		    char *queryaaseq_ptr,
 #endif
-			   Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
-			   Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
-			   Genome_T genome, Genome_T genomealt,
-			   int maxpeelback, int extramaterial_paired, int extraband_paired,
-			   int extraband_single, int ngap);
+		    Sequence_T queryseq, char *queryseq_ptr, char *queryuc_ptr,
+		    Pairpool_T pairpool, Dynprog_T dynprogL, Dynprog_T dynprogM, Dynprog_T dynprogR,
+		    int maxpeelback, int nullgap,
+		    Oligoindex_array_T oligoindices_minor, Diagpool_T diagpool, Cellpool_T cellpool,
+		    int sufflookback, int nsufflookback, int maxintronlen_bound,
+		    int extramaterial_paired, int extraband_paired, int extraband_single, int ngap,
+		    int paired_favor_mode, int zero_offset);
 
 #ifndef PMAP
 extern void
diff --git a/src/stage3hr.c b/src/stage3hr.c
index 5e9c408..ead301e 100644
--- a/src/stage3hr.c
+++ b/src/stage3hr.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stage3hr.c 102130 2013-07-19 22:59:15Z twu $";
+static char rcsid[] = "$Id: stage3hr.c 138745 2014-06-11 19:04:25Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -17,10 +17,11 @@ static char rcsid[] = "$Id: stage3hr.c 102130 2013-07-19 22:59:15Z twu $";
 #include "interval.h"
 #include "listdef.h"
 #include "substring.h"
-#include "genome_hr.h"
+#include "genome128_hr.h"
 #include "mapq.h"
 #include "pair.h"		/* For Pair_print_gsnap and Pair_compute_mapq */
 #include "maxent_hr.h"
+#include "fastlog.h"
 
 
 #define MAX_HITS 100000
@@ -37,7 +38,7 @@ static char rcsid[] = "$Id: stage3hr.c 102130 2013-07-19 22:59:15Z twu $";
 #define SUBSUMPTION_SLOP 10	/* Should allow for short insert lengths */
 /* #define TERMINAL_SECOND_CLASS 1 -- enabling this leads to poor results */
 
-#define TERMINAL_MINLENGTH 40
+#define TERMINAL_COMPUTE_MINLENGTH 40
 
 
 #ifdef DEBUG
@@ -154,11 +155,19 @@ static char rcsid[] = "$Id: stage3hr.c 102130 2013-07-19 22:59:15Z twu $";
 #define debug13(x)
 #endif
 
+/* Stage3_determine_pairtype */
+#ifdef DEBUG14
+#define debug14(x) x
+#else
+#define debug14(x)
+#endif
+
 
 
 #define MAPQ_MAXIMUM_SCORE 40
 
 
+static bool want_random_p = true;
 static bool invert_first_p;
 static bool invert_second_p;
 static IIT_T genes_iit;
@@ -168,6 +177,7 @@ static int *tally_divint_crosstable;
 static IIT_T runlength_iit;
 static int *runlength_divint_crosstable;
 
+static int terminal_output_minlength;
 static int pairmax;
 
 #ifdef USE_BINGO
@@ -189,8 +199,13 @@ static int ambig_end_interval;	/* For penalizing large ambiguous ends
 				   in GMAP alignments, since such ends
 				   should have been found */
 static bool novelsplicingp;
+static bool merge_samechr_p;
 static bool *circularp;
 
+static char *failedinput_root;
+static bool fastq_format_p;
+
+
 /* Probably not good to use in certain genomic regions, unless we also
    use known splicesites with distance information. */
 /* But sometimes need to use to get correct mapping */
@@ -202,12 +217,13 @@ Stage3hr_setup (bool invert_first_p_in, bool invert_second_p_in,
 		IIT_T genes_iit_in, int *genes_divint_crosstable_in,
 		IIT_T tally_iit_in, int *tally_divint_crosstable_in,
 		IIT_T runlength_iit_in, int *runlength_divint_crosstable_in,
-		bool distances_observed_p, int pairmax_in,
+		int terminal_output_minlength_in, bool distances_observed_p, int pairmax_in,
 		Chrpos_T expected_pairlength, Chrpos_T pairlength_deviation,
 		int localsplicing_penalty_in, int indel_penalty_middle_in,
 		int antistranded_penalty_in, bool favor_multiexon_p_in,
 		int gmap_min_nconsecutive_in, int index1part,
-		int index1interval, bool novelsplicingp_in, bool *circularp_in) {
+		int index1interval, bool novelsplicingp_in, bool merge_samechr_p_in,
+		bool *circularp_in, char *failedinput_root_in, bool fastq_format_p_in) {
   invert_first_p = invert_first_p_in;
   invert_second_p = invert_second_p_in;
   genes_iit = genes_iit_in;
@@ -222,6 +238,7 @@ Stage3hr_setup (bool invert_first_p_in, bool invert_second_p_in,
   favor_multiexon_p = favor_multiexon_p_in;
   gmap_min_nconsecutive = gmap_min_nconsecutive_in;
 
+  terminal_output_minlength = terminal_output_minlength_in;
   pairmax = pairmax_in;
   if (pairlength_deviation > expected_pairlength) {
     expected_pairlength_low = 0;
@@ -244,8 +261,141 @@ Stage3hr_setup (bool invert_first_p_in, bool invert_second_p_in,
 #endif
 
   novelsplicingp = novelsplicingp_in;
+  merge_samechr_p = merge_samechr_p_in;
   circularp = circularp_in;
 
+  failedinput_root = failedinput_root_in;
+  fastq_format_p = fastq_format_p_in;
+
+  return;
+}
+
+
+static FILE *fp_failedinput_1;
+static FILE *fp_failedinput_2;
+
+static FILE *fp_nomapping;
+static FILE *fp_unpaired_uniq;
+static FILE *fp_unpaired_circular;
+static FILE *fp_unpaired_transloc;
+static FILE *fp_unpaired_mult;
+static FILE *fp_unpaired_mult_xs_1;
+static FILE *fp_unpaired_mult_xs_2;
+static FILE *fp_halfmapping_uniq;
+static FILE *fp_halfmapping_circular;
+static FILE *fp_halfmapping_transloc;
+static FILE *fp_halfmapping_mult;
+static FILE *fp_halfmapping_mult_xs_1;
+static FILE *fp_halfmapping_mult_xs_2;
+static FILE *fp_paired_uniq_circular;
+static FILE *fp_paired_uniq_inv;
+static FILE *fp_paired_uniq_scr;
+static FILE *fp_paired_uniq_long;
+static FILE *fp_paired_mult;
+static FILE *fp_paired_mult_xs_1;
+static FILE *fp_paired_mult_xs_2;
+static FILE *fp_concordant_uniq;
+static FILE *fp_concordant_circular;
+static FILE *fp_concordant_transloc;
+static FILE *fp_concordant_mult;
+static FILE *fp_concordant_mult_xs_1;
+static FILE *fp_concordant_mult_xs_2;
+
+
+void
+Stage3hr_file_setup_single (FILE *fp_failedinput_in, FILE *fp_nomapping_in,
+			    FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+			    FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in) {
+
+  fp_failedinput_1 = fp_failedinput_in;
+
+  fp_nomapping = fp_nomapping_in;
+  fp_unpaired_uniq = fp_unpaired_uniq_in;
+  fp_unpaired_circular = fp_unpaired_circular_in;
+  fp_unpaired_transloc = fp_unpaired_transloc_in;
+  fp_unpaired_mult = fp_unpaired_mult_in;
+  fp_unpaired_mult_xs_1 = fp_unpaired_mult_xs_1_in;
+
+  return;
+}
+
+void
+Stage3hr_file_setup_paired (FILE *fp_failedinput_1_in, FILE *fp_failedinput_2_in, FILE *fp_nomapping_in,
+			    FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+			    FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+			    FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+			    FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+			    FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+			    FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in) {
+
+  fp_failedinput_1 = fp_failedinput_1_in;
+  fp_failedinput_2 = fp_failedinput_2_in;
+
+  fp_nomapping = fp_nomapping_in;
+  fp_halfmapping_uniq = fp_halfmapping_uniq_in;
+  fp_halfmapping_circular = fp_halfmapping_circular_in;
+  fp_halfmapping_transloc = fp_halfmapping_transloc_in;
+  fp_halfmapping_mult = fp_halfmapping_mult_in;
+  fp_halfmapping_mult_xs_1 = fp_halfmapping_mult_xs_1_in;
+  fp_halfmapping_mult_xs_2 = fp_halfmapping_mult_xs_2_in;
+  fp_paired_uniq_circular = fp_paired_uniq_circular_in;
+  fp_paired_uniq_inv = fp_paired_uniq_inv_in;
+  fp_paired_uniq_scr = fp_paired_uniq_scr_in;
+  fp_paired_uniq_long = fp_paired_uniq_long_in;
+  fp_paired_mult = fp_paired_mult_in;
+  fp_paired_mult_xs_1 = fp_paired_mult_xs_1_in;
+  fp_paired_mult_xs_2 = fp_paired_mult_xs_2_in;
+  fp_concordant_uniq = fp_concordant_uniq_in;
+  fp_concordant_circular = fp_concordant_circular_in;
+  fp_concordant_transloc = fp_concordant_transloc_in;
+  fp_concordant_mult = fp_concordant_mult_in;
+  fp_concordant_mult_xs_1 = fp_concordant_mult_xs_1_in;
+  fp_concordant_mult_xs_2 = fp_concordant_mult_xs_2_in;
+
+  return;
+}
+
+void
+Stage3hr_file_setup_all (FILE *fp_failedinput_1_in, FILE *fp_failedinput_2_in, FILE *fp_nomapping_in,
+			 FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+			 FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in, FILE *fp_unpaired_mult_xs_2_in,
+			 FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+			 FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+			 FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+			 FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+			 FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+			 FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in) {
+  
+  fp_failedinput_1 = fp_failedinput_1_in;
+  fp_failedinput_2 = fp_failedinput_2_in;
+
+  fp_nomapping = fp_nomapping_in;
+  fp_unpaired_uniq = fp_unpaired_uniq_in;
+  fp_unpaired_circular = fp_unpaired_circular_in;
+  fp_unpaired_transloc = fp_unpaired_transloc_in;
+  fp_unpaired_mult = fp_unpaired_mult_in;
+  fp_unpaired_mult_xs_1 = fp_unpaired_mult_xs_1_in;
+  fp_unpaired_mult_xs_2 = fp_unpaired_mult_xs_2_in;
+  fp_halfmapping_uniq = fp_halfmapping_uniq_in;
+  fp_halfmapping_circular = fp_halfmapping_circular_in;
+  fp_halfmapping_transloc = fp_halfmapping_transloc_in;
+  fp_halfmapping_mult = fp_halfmapping_mult_in;
+  fp_halfmapping_mult_xs_1 = fp_halfmapping_mult_xs_1_in;
+  fp_halfmapping_mult_xs_2 = fp_halfmapping_mult_xs_2_in;
+  fp_paired_uniq_circular = fp_paired_uniq_circular_in;
+  fp_paired_uniq_inv = fp_paired_uniq_inv_in;
+  fp_paired_uniq_scr = fp_paired_uniq_scr_in;
+  fp_paired_uniq_long = fp_paired_uniq_long_in;
+  fp_paired_mult = fp_paired_mult_in;
+  fp_paired_mult_xs_1 = fp_paired_mult_xs_1_in;
+  fp_paired_mult_xs_2 = fp_paired_mult_xs_2_in;
+  fp_concordant_uniq = fp_concordant_uniq_in;
+  fp_concordant_circular = fp_concordant_circular_in;
+  fp_concordant_transloc = fp_concordant_transloc_in;
+  fp_concordant_mult = fp_concordant_mult_in;
+  fp_concordant_mult_xs_1 = fp_concordant_mult_xs_1_in;
+  fp_concordant_mult_xs_2 = fp_concordant_mult_xs_2_in;
+
   return;
 }
 
@@ -273,6 +423,8 @@ print_sense (int sense) {
 struct T {
   Hittype_T hittype;
   int genestrand;
+  bool sarrayp;			/* true if alignment found by suffix array */
+  bool improved_by_gmap_p;	/* true if GMAP alignment based on this hit is better */
 
   Chrnum_T chrnum; /* Needed for printing paired-end results.  A chrnum of 0 indicates a distant splice. */
   Chrnum_T effective_chrnum;	/* For determining concordance */
@@ -281,6 +433,7 @@ struct T {
   Univcoord_T chrhigh;
   Chrpos_T chrlength;
 
+  int querylength;		/* Needed for overlap calculations */
   int querylength_adj;		/* Adjusted for insertions */
 
   Univcoord_T genomicstart;
@@ -292,7 +445,7 @@ struct T {
   Chrpos_T genomiclength;
   Chrpos_T guided_insertlength; /* Used only by Stage3end_eval_and_sort_guided */
 
-  double mapq_loglik;
+  float mapq_loglik;
   int mapq_score;
   int absmq_score;		/* Absolute MAPQ, for XQ and X2 flags */
 
@@ -303,6 +456,7 @@ struct T {
   int gmap_max_match_length;		/* Used only by GMAP */
   double gmap_min_splice_prob;		/* Used only by GMAP */
 
+  /* trim_left and trim_right should really be named trim_start and trim_end */
   int trim_left; /* Used by Stage3end_optimal_score for comparing terminals and non-terminals */
   int trim_right;
   bool trim_left_splicep;
@@ -345,10 +499,12 @@ struct T {
   Endtype_T gmap_start_endtype;	/* For GMAP, which has no substrings */
   Endtype_T gmap_end_endtype;	/* For GMAP, which has no substrings */
 
-  int *start_ambi;
-  int *end_ambi;
-  int start_nambi;
-  int end_nambi;
+  Univcoord_T *start_ambcoords;
+  Univcoord_T *end_ambcoords;
+  int *start_amb_knowni;
+  int *end_amb_knowni;
+  int start_nambcoords;
+  int end_nambcoords;
   int *start_amb_nmismatches;
   int *end_amb_nmismatches;
 
@@ -404,7 +560,7 @@ struct Stage3pair_T {
 				   
   Chrpos_T outerlength;
 
-  double mapq_loglik;
+  float mapq_loglik;
   int mapq_score;
   int absmq_score;
 
@@ -471,6 +627,21 @@ Stage3end_genestrand (T this) {
   return this->genestrand;
 }
 
+bool
+Stage3end_sarrayp (T this) {
+  return this->sarrayp;
+}
+
+bool
+Stage3end_improved_by_gmap_p (T this) {
+  return this->improved_by_gmap_p;
+}
+
+void
+Stage3end_set_improved_by_gmap (T this) {
+  this->improved_by_gmap_p = true;
+  return;
+}
 
 bool
 Stage3end_anomalous_splice_p (T this) {
@@ -605,6 +776,21 @@ Stage3end_best_score (List_T hits) {
   return best_score;
 }
 
+bool
+Stage3end_equiv_score_unpaired_p (List_T hits, int best_score) {
+  List_T p;
+  T hit;
+
+  for (p = hits; p != NULL; p = p->rest) {
+    hit = (T) p->first;
+    if (hit->paired_usedp == false && hit->score <= best_score) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
 int
 Stage3end_best_score_paired (List_T hits) {
   List_T p;
@@ -625,8 +811,8 @@ Stage3end_best_score_paired (List_T hits) {
 
 
 int
-Stage3end_nmatches (T this) {
-  return this->nmatches;
+Stage3end_nmatches_posttrim (T this) {
+  return this->nmatches_posttrim;
 }
 
 int
@@ -816,6 +1002,156 @@ Stage3end_shortexon_donor_distance (T this) {
   return this->donor_distance;
 }
 
+double
+Stage3end_chimera_prob (T this) {
+  return Substring_chimera_prob(this->substring_donor) + Substring_chimera_prob(this->substring_acceptor);
+}
+
+double
+Stage3end_shortexon_prob (T this) {
+  return Substring_chimera_prob(this->substringD) + 
+    + Substring_chimera_prob(this->substring1) + Substring_chimera_prob_2(this->substring1) +
+    Substring_chimera_prob(this->substringA);
+}
+
+
+Univcoord_T
+Stage3end_chimera_segmenti_left (T this) {
+  Univcoord_T x_segmenti, x_segmentj;
+
+  x_segmenti = Substring_left_genomicseg(this->substring_donor);
+  x_segmentj = Substring_left_genomicseg(this->substring_acceptor);
+  if (x_segmenti < x_segmentj) {
+    return x_segmenti;
+  } else {
+    return x_segmentj;
+  }
+}  
+
+Univcoord_T
+Stage3end_chimera_segmentj_left (T this) {
+  Univcoord_T x_segmenti, x_segmentj;
+
+  x_segmenti = Substring_left_genomicseg(this->substring_donor);
+  x_segmentj = Substring_left_genomicseg(this->substring_acceptor);
+  if (x_segmenti > x_segmentj) {
+    return x_segmenti;
+  } else {
+    return x_segmentj;
+  }
+}  
+
+
+int
+Stage3end_chimera_segmenti_cmp (const void *a, const void *b) {
+  T x = * (T *) a;
+  T y = * (T *) b;
+  Univcoord_T x_segmenti, x_segmentj, y_segmenti, y_segmentj, temp;
+
+  x_segmenti = Substring_left_genomicseg(x->substring_donor);
+  x_segmentj = Substring_left_genomicseg(x->substring_acceptor);
+  if (x_segmentj < x_segmenti) {
+    temp = x_segmentj;
+    x_segmentj = x_segmenti;
+    x_segmenti = temp;
+  }
+
+  y_segmenti = Substring_left_genomicseg(y->substring_donor);
+  y_segmentj = Substring_left_genomicseg(y->substring_acceptor);
+  if (y_segmentj < y_segmenti) {
+    temp = y_segmentj;
+    y_segmentj = y_segmenti;
+    y_segmenti = temp;
+  }
+
+  if (x_segmenti < y_segmenti) {
+    return -1;
+  } else if (y_segmenti < x_segmenti) {
+    return +1;
+  } else if (x_segmentj > y_segmentj) {
+    return -1;
+  } else if (y_segmentj > x_segmentj) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+
+int
+Stage3end_chimera_segmentj_cmp (const void *a, const void *b) {
+  T x = * (T *) a;
+  T y = * (T *) b;
+  Univcoord_T x_segmenti, x_segmentj, y_segmenti, y_segmentj, temp;
+
+  x_segmenti = Substring_left_genomicseg(x->substring_donor);
+  x_segmentj = Substring_left_genomicseg(x->substring_acceptor);
+  if (x_segmentj < x_segmenti) {
+    temp = x_segmentj;
+    x_segmentj = x_segmenti;
+    x_segmenti = temp;
+  }
+
+  y_segmenti = Substring_left_genomicseg(y->substring_donor);
+  y_segmentj = Substring_left_genomicseg(y->substring_acceptor);
+  if (y_segmentj < y_segmenti) {
+    temp = y_segmentj;
+    y_segmentj = y_segmenti;
+    y_segmenti = temp;
+  }
+
+  if (x_segmentj < y_segmentj) {
+    return -1;
+  } else if (y_segmentj < x_segmentj) {
+    return +1;
+  } else if (x_segmenti > y_segmenti) {
+    return -1;
+  } else if (y_segmenti > x_segmenti) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+int
+Stage3end_shortexon_substringD_cmp (const void *a, const void *b) {
+  T x = * (T *) a;
+  T y = * (T *) b;
+  Univcoord_T x_left, y_left;
+
+  x_left = Substring_left_genomicseg(x->substringD);
+  y_left = Substring_left_genomicseg(y->substringD);
+  if (x_left < y_left) {
+    return -1;
+  } else if (y_left < x_left) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+int
+Stage3end_shortexon_substringA_cmp (const void *a, const void *b) {
+  T x = * (T *) a;
+  T y = * (T *) b;
+  Univcoord_T x_left, y_left;
+
+  x_left = Substring_left_genomicseg(x->substringA);
+  y_left = Substring_left_genomicseg(y->substringA);
+  if (x_left < y_left) {
+    return -1;
+  } else if (y_left < x_left) {
+    return +1;
+  } else {
+    return 0;
+  }
+}
+
+
+
+
 int
 Stage3end_sensedir (T this) {
   return this->sensedir;
@@ -853,6 +1189,27 @@ Stage3end_nintrons (T this) {
   return this->gmap_nintrons;
 }
 
+bool
+Stage3end_start_ambiguous_p (T this) {
+  return this->start_ambiguous_p;
+}
+
+bool
+Stage3end_end_ambiguous_p (T this) {
+  return this->end_ambiguous_p;
+}
+
+int
+Stage3end_amb_nmatches_start (T this) {
+  return this->amb_nmatches_start;
+}
+
+int
+Stage3end_amb_nmatches_end (T this) {
+  return this->amb_nmatches_end;
+}
+
+
 int
 Stage3end_gmap_querystart (T this) {
   return this->pairarray[0].querypos;
@@ -873,6 +1230,13 @@ Stage3end_terminal_trim (T this) {
   }
 }
 
+int
+Stage3end_terminal_length (T this) {
+  assert(this->hittype == TERMINAL);
+  return Substring_queryend(this->substring1) - Substring_querystart(this->substring1) + 1;
+}
+
+
 
 static Overlap_T
 Stage3end_gene_overlap (T this) {
@@ -965,6 +1329,7 @@ Stage3end_indel_contains_known_splicesite (bool *leftp, bool *rightp, T this) {
 }
 
 
+#if 0
 bool
 Stage3end_bad_stretch_p (T this, Compress_T query_compress_fwd, Compress_T query_compress_rev) {
   if (this->hittype == GMAP) {
@@ -984,11 +1349,9 @@ Stage3end_bad_stretch_p (T this, Compress_T query_compress_fwd, Compress_T query
       /* Calculation is buggy */
       debug0(printf("Bad GMAP: min splice prob %f < 0.5\n",this->gmap_min_splice_prob));
       return true;
-#endif
     } else {
       return Stage3_bad_stretch_p(this->pairarray,this->npairs,/*pos5*/this->trim_left,
 				  /*pos3*/this->querylength_adj - this->trim_right);
-#if 0
       ngoodpart = Stage3_good_part(this->pairarray,this->npairs,/*pos5*/this->trim_left,
 				   /*pos3*/this->querylength_adj - this->trim_right);
       if (ngoodpart < this->querylength_adj/2) {
@@ -1008,6 +1371,7 @@ Stage3end_bad_stretch_p (T this, Compress_T query_compress_fwd, Compress_T query
     return false;
   }
 }
+#endif
 
 
 
@@ -1185,16 +1549,14 @@ Stage3end_genomicbound_from_end (Univcoord_T *genomicbound, T this, int overlap,
 }
 
 
-
-
-
-
 void
 Stage3end_free (T *old) {
   debug0(printf("Freeing Stage3end %p of type %s\n",*old,hittype_string((*old)->hittype)));
 
-  FREE_OUT((*old)->end_ambi);
-  FREE_OUT((*old)->start_ambi);
+  FREE_OUT((*old)->end_ambcoords);
+  FREE_OUT((*old)->start_ambcoords);
+  FREE_OUT((*old)->end_amb_knowni);
+  FREE_OUT((*old)->start_amb_knowni);
   FREE_OUT((*old)->end_amb_nmismatches);
   FREE_OUT((*old)->start_amb_nmismatches);
 
@@ -1221,6 +1583,24 @@ Stage3end_free (T *old) {
   return;
 }
 
+
+/* Used for freeing gmap_history_values in stage1hr.c */
+void
+Stage3end_list_free (List_T *values) {
+  List_T p;
+  T hit;
+
+  for (p = *values; p != NULL; p = p->rest) {
+    if ((hit = (T) p->first) != NULL) {
+      Stage3end_free(&hit);
+    }
+  }
+  List_free(&(*values));
+  return;
+}
+
+
+
 bool
 Stage3pair_anomalous_splice_p (Stage3pair_T this) {
   if (this->hit5 != NULL && this->hit5->hittype == SAMECHR_SPLICE) {
@@ -1264,17 +1644,841 @@ Stage3pair_pairlength (Stage3pair_T this) {
 }
 
 int
-Stage3pair_nmatches (Stage3pair_T this) {
-  return this->nmatches;
+Stage3pair_nmatches_posttrim (int *nmatches5, int *nmatches3, Stage3pair_T this) {
+  *nmatches5 = this->hit5->nmatches_posttrim;
+  *nmatches3 = this->hit3->nmatches_posttrim;
+  return this->nmatches_posttrim;
+}
+
+
+bool
+Stage3pair_concordantp (List_T hitpairs) {
+  List_T p;
+  Stage3pair_T hitpair;
+
+  for (p = hitpairs; p != NULL; p = List_next(p)) {
+    hitpair = (Stage3pair_T) List_head(p);
+    if (hitpair->pairtype == CONCORDANT) {
+      return true;
+    }
+  }
+  return false;
+}
+
+List_T
+Stage3pair_filter_nonconcordant (List_T hitpairs) {
+  List_T filtered = NULL, p;
+  Stage3pair_T hitpair;
+
+  for (p = hitpairs; p != NULL; p = List_next(p)) {
+    hitpair = (Stage3pair_T) List_head(p);
+    if (hitpair->pairtype != CONCORDANT) {
+      Stage3pair_free(&hitpair);
+    } else {
+      filtered = List_push(filtered,(void *) hitpair);
+    }
+  }
+  List_free(&hitpairs);
+  return filtered;
+}
+
+
+static int
+gmap5_substring3_overlap (Stage3end_T hit5, Stage3end_T hit3, Substring_T substring) {
+  Univcoord_T chroffset;
+  int i;
+
+  i = 0;
+  chroffset = hit3->chroffset;
+  if (1 || hit5->plusp == true) {
+    debug13(printf("plus goal: %u or %u\n",Substring_alignstart_trim(substring) - chroffset,Substring_alignend_trim(substring) - chroffset));
+    while (i < hit5->npairs) {
+      if (hit5->pairarray[i].genomepos == Substring_alignstart_trim(substring) - chroffset) {
+	debug13(printf("case 1\n"));
+	return (hit5->pairarray[i].querypos - hit5->pairarray[0].querypos + 1) +
+	  hit3->querylength - Substring_querystart(substring) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->pairarray[i].genomepos == Substring_alignend_trim(substring) - chroffset) {
+	debug13(printf("case 2\n"));
+	return (hit5->pairarray[i].querypos - hit5->pairarray[0].querypos + 1) +
+	  hit3->querylength - Substring_queryend(substring) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else {
+	i++;
+      }
+    }
+    return 0;
+
+  } else {
+    debug13(printf("minus goal: %u or %u\n",Substring_alignstart_trim(substring) - chroffset,Substring_alignend_trim(substring) - chroffset));
+    while (i < hit5->npairs) {
+      if (hit5->pairarray[i].genomepos == Substring_alignstart_trim(substring) - chroffset) {
+	debug13(printf("case 3: genomepos %u, at GMAP %d.  substring trim %d, **%d..%d trim %d\n",
+		       hit5->pairarray[i].genomepos,hit5->pairarray[i].querypos,
+		       hit3->trim_left,Substring_querystart(substring),Substring_queryend(substring),hit3->trim_right));
+	return (hit5->pairarray[i].querypos - hit5->pairarray[0].querypos + 1) +
+	  (hit3->querylength - Substring_querystart(substring) - hit3->trim_right - hit3->amb_nmatches_end); /* trim2_1&trim2_2 */
+      } else if (hit5->pairarray[i].genomepos == Substring_alignend_trim(substring) - chroffset) {
+	debug13(printf("case 4: genomepos %u, at GMAP %d.  substring trim %d, %d..%d** trim %d\n",
+		       hit5->pairarray[i].genomepos,hit5->pairarray[i].querypos,
+		       hit3->trim_left,Substring_querystart(substring),Substring_queryend(substring),hit3->trim_right));
+	return (hit5->pairarray[i].querypos - hit5->pairarray[0].querypos + 1) +
+	  hit3->querylength - Substring_queryend(substring) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else {
+	i++;
+      }
+    }
+    return 0;
+  }
+}
+
+static int
+substring5_gmap3_overlap (Stage3end_T hit5, Stage3end_T hit3, Substring_T substring) {
+  Univcoord_T chroffset;
+  int j;
+
+  j = 0;
+  chroffset = hit5->chroffset;
+  if (1 || hit5->plusp == true) {
+    debug13(printf("plus goal: %u or %u\n",Substring_alignstart_trim(substring) - chroffset,Substring_alignend_trim(substring) - chroffset));
+    while (j < hit3->npairs) {
+      if (hit3->pairarray[j].genomepos == Substring_alignstart_trim(substring) - chroffset) {
+	debug13(printf("case 4: genomepos %u, at GMAP %d.  substring trim %d, **%d..%d trim %d\n",
+		       hit3->pairarray[j].genomepos,hit3->pairarray[j].querypos,
+		       hit5->trim_left,Substring_querystart(substring),Substring_queryend(substring),hit5->trim_right));
+	return (hit3->pairarray[hit3->npairs-1].querypos - hit3->pairarray[j].querypos + 1) + 
+	  Substring_querystart(substring) - hit5->trim_left - hit5->amb_nmatches_start; /* okay */
+      } else if (hit3->pairarray[j].genomepos == Substring_alignend_trim(substring) - chroffset) {
+	debug13(printf("case 6: genomepos %u, at GMAP %d.  substring trim %d, %d..%d** trim %d\n",
+		       hit3->pairarray[j].genomepos,hit3->pairarray[j].querypos,
+		       hit5->trim_left,Substring_querystart(substring),Substring_queryend(substring),hit5->trim_right));
+	return (hit3->pairarray[hit3->npairs-1].querypos - hit3->pairarray[j].querypos + 1) +
+	  Substring_queryend(substring) - hit5->trim_left - hit5->amb_nmatches_start; /* okay: trim2_2&trim2_1 */
+      } else {
+	j++;
+      }
+    }
+    return 0;
+    
+  } else {
+    debug13(printf("minus goal: %u or %u\n",Substring_alignstart_trim(substring) - chroffset,Substring_alignend_trim(substring) - chroffset));
+    while (j < hit3->npairs) {
+      if (hit3->pairarray[j].genomepos == Substring_alignstart_trim(substring) - chroffset) {
+	debug13(printf("case 7\n"));
+	return (hit3->pairarray[hit3->npairs-1].querypos - hit3->pairarray[j].querypos + 1) +
+	  Substring_querystart(substring) - hit5->trim_left - hit5->amb_nmatches_start;
+      } else if (hit3->pairarray[j].genomepos == Substring_alignend_trim(substring) - chroffset) {
+	debug13(printf("case 8\n"));
+	return (hit3->pairarray[hit3->npairs-1].querypos - hit3->pairarray[j].querypos + 1) +
+	  Substring_queryend(substring) - hit5->trim_left - hit5->amb_nmatches_start; /* okay: trim2_2&trim2_1 */
+      } else {
+	j++;
+      }
+    }
+    return 0;
+  }
 }
 
 
+/* Needed to compute overlap properly.  Based on pair_insert_length below, plus code for handling GMAP. */
+static Chrpos_T
+pair_insert_length_trimmed (Stage3end_T hit5, Stage3end_T hit3, int hit5_trimmed_length, int hit3_trimmed_length) {
+  int i, j;
+  int overlap;
+  Univcoord_T start5, end5, start3, end3;
+
+  if (hit5->hittype == GMAP && hit3->hittype == GMAP) {
+    i = j = 0;
+    if (hit5->plusp == true) {
+      while (i < hit5->npairs && j < hit3->npairs) {
+	if (hit5->pairarray[i].genomepos < hit3->pairarray[j].genomepos) {
+	  i++;
+	} else if (hit5->pairarray[i].genomepos > hit3->pairarray[j].genomepos) {
+	  j++;
+	} else {
+	  debug13(printf("GMAP and GMAP show overlap at position %d, querypos %d and %d\n",
+			 hit5->pairarray[i].genomepos,hit5->pairarray[i].querypos,hit3->pairarray[j].querypos));
+	  return (hit5->pairarray[i].querypos - hit5->pairarray[0].querypos) + (hit3->pairarray[hit3->npairs-1].querypos - hit3->pairarray[j].querypos);
+	}
+      }
+      debug13(printf("GMAP and GMAP show no overlap\n"));
+      return 0;
+
+    } else {
+      while (i < hit5->npairs && j < hit3->npairs) {
+	if (hit5->pairarray[i].genomepos > hit3->pairarray[j].genomepos) {
+	  i++;
+	} else if (hit5->pairarray[i].genomepos < hit3->pairarray[j].genomepos) {
+	  j++;
+	} else {
+	  debug13(printf("GMAP and GMAP show overlap at position %d, querypos %d and %d\n",
+			 hit5->pairarray[i].genomepos,hit5->pairarray[i].querypos,hit3->pairarray[j].querypos));
+	  return (hit5->pairarray[i].querypos - hit5->pairarray[0].querypos) + (hit3->pairarray[hit3->npairs-1].querypos - hit3->pairarray[j].querypos);
+	}
+      }
+      debug13(printf("GMAP and GMAP show no overlap\n"));
+      return 0;
+    }
+    
+  } else if (hit5->hittype == GMAP) {
+    if ((overlap = gmap5_substring3_overlap(hit5,hit3,hit3->substring1)) > 0) {
+      return overlap;
+    } else if (hit3->substring2 != NULL && (overlap = gmap5_substring3_overlap(hit5,hit3,hit3->substring2)) > 0) {
+      return overlap;
+    } else if (hit3->substring0 != NULL && (overlap = gmap5_substring3_overlap(hit5,hit3,hit3->substring0)) > 0) {
+      return overlap;
+    } else {
+      return 0;
+    }
+
+  } else if (hit3->hittype == GMAP) {
+    if ((overlap = substring5_gmap3_overlap(hit5,hit3,hit5->substring1)) > 0) {
+      return overlap;
+    } else if (hit5->substring2 != NULL && (overlap = substring5_gmap3_overlap(hit5,hit3,hit5->substring2)) > 0) {
+      return overlap;
+    } else if (hit5->substring0 != NULL && (overlap = substring5_gmap3_overlap(hit5,hit3,hit5->substring0)) > 0) {
+      return overlap;
+    } else {
+      return 0;
+    }
+
+  } else if (hit5->plusp == true && hit3->plusp == true) {
+    /* plus/plus */
+    start5 = hit5->genomicstart + hit5->trim_left + hit5->amb_nmatches_start;
+    end5 = hit5->genomicend - hit5->trim_right - hit5->amb_nmatches_end;
+    start3 = hit3->genomicstart + hit3->trim_left + hit3->amb_nmatches_start;
+    end3 = hit3->genomicend - hit3->trim_right - hit3->amb_nmatches_end;
+
+    if (end3 < start5) {
+      /* Case 1 */
+      return 0;
+    } else if (end5 < start3) {
+      /* Case 6 */
+      return 0;
+    } else if (start3 < start5) {
+      if (end3 < end5) {
+	/* Case 2: Tails overlap.  Go from start5 to end3 */
+	debug13(printf("plus case 2a: start5 %u\n",start5 - hit5->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit3->substring0,start5)) {
+	  return (Substring_alignend_trim(hit3->substring0) - start5)
+	    + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,start5)) {
+	  return (Substring_alignend_trim(hit3->substring1) - start5)
+	    + hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring2,start5)) {
+	  return (Substring_alignend_trim(hit3->substring2) - start5)
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+	}
+
+	/* Case 2: Tails overlap.  Go from start5 to end3 */
+	debug13(printf("plus case 2b: end3 %u\n",end3 - hit3->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit5->substring2,end3)) {
+	  return Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start +
+	    (end3 - Substring_alignstart_trim(hit5->substring2));
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,end3)) {
+	  return Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start +
+	    (end3 - Substring_alignstart_trim(hit5->substring1));
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring0,end3)) {
+	  return /* Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start + */
+	    (end3 - Substring_alignstart_trim(hit5->substring0));
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 3: hit3 subsumes hit5 */
+	debug13(printf("plus case 3\n"));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return hit5_trimmed_length + (Substring_alignend_trim(hit3->substring2) - end5)
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return hit5_trimmed_length + (Substring_alignend_trim(hit3->substring1) - end5)
+	    + hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return hit5_trimmed_length + (Substring_alignend_trim(hit3->substring0) - end5)
+	    + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+	}
+	/* Fall through to general algorithm */
+      }
+
+    } else {
+      if (end3 < end5) {
+	/* Case 4: hit5 subsumes hit3 */
+	debug13(printf("plus case 4\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	    (start3 - Substring_alignstart_trim(hit5->substring0)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignstart_trim(hit5->substring1)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignstart_trim(hit5->substring2)) + hit3_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 5: Based on hit3_trimmed_length */
+	debug13(printf("plus case 5a\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	    (start3 - Substring_alignstart_trim(hit5->substring0)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignstart_trim(hit5->substring1)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignstart_trim(hit5->substring2)) + hit3_trimmed_length;
+	}
+
+	/* Case 5: Based on hit5_trimmed_length */
+	debug13(printf("plus case 5b\n"));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return /* hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end + */
+	    (Substring_alignend_trim(hit3->substring2) - end5) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end +
+	    (Substring_alignend_trim(hit3->substring1) - end5) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end +
+	    (Substring_alignend_trim(hit3->substring0) - end5) + hit5_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+      }
+    }
+
+    /* General algorithm */
+    debug13(printf("plus general: hit3->substring1\n"));
+    if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	(Substring_alignend_trim(hit3->substring1) - Substring_alignstart_trim(hit5->substring1))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	(Substring_alignend_trim(hit3->substring1) - Substring_alignstart_trim(hit5->substring2))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring1)) {
+      return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	(Substring_alignend_trim(hit3->substring1) - Substring_alignstart_trim(hit5->substring0))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    }
+
+    if (hit3->substring2 != NULL) {
+      debug13(printf("plus general: hit3->substring2\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring2) - Substring_alignstart_trim(hit5->substring1))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring2) - Substring_alignstart_trim(hit5->substring2))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring2)) {
+	return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	  (Substring_alignend_trim(hit3->substring2) - Substring_alignstart_trim(hit5->substring0))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      }
+    }
+
+    if (hit3->substring0 != NULL) {
+      debug13(printf("plus general: hit3->substring0\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring0) - Substring_alignstart_trim(hit5->substring1))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring0) - Substring_alignstart_trim(hit5->substring2))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring0)) {
+	return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	  (Substring_alignend_trim(hit3->substring0) - Substring_alignstart_trim(hit5->substring0))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      }
+    }
+    
+    return 0;
+
+  } else if (hit5->plusp == true && hit3->plusp == false) {
+    /* plus/minus */
+    start5 = hit5->genomicstart + hit5->trim_left + hit5->amb_nmatches_start;
+    end5 = hit5->genomicend - hit5->trim_right - hit5->amb_nmatches_end;
+    start3 = hit3->genomicstart - hit3->trim_left - hit3->amb_nmatches_start;
+    end3 = hit3->genomicend + hit3->trim_right + hit3->amb_nmatches_end;
+
+    if (start3 < start5) {
+      /* Case 1 */
+      return 0;
+    } else if (end5 < end3) {
+      /* Case 6 */
+      return 0;
+    } else if (end3 < start5) {
+      if (start3 < end5) {
+	/* Case 2: Tails overlap.  Go from start5 to start3 */
+	debug13(printf("plus case 2a: start5 %u\n",start5 - hit5->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit3->substring0,start5)) {
+	  return (Substring_alignstart_trim(hit3->substring0) - start5)
+	    + hit3->querylength - Substring_queryend(hit3->substring0) + hit3->trim_right + hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,start5)) {
+	  return (Substring_alignstart_trim(hit3->substring1) - start5)
+	    + hit3->querylength - Substring_queryend(hit3->substring1) + hit3->trim_right + hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring2,start5)) {
+	  return (Substring_alignstart_trim(hit3->substring2) - start5)
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) + hit3->trim_right + hit3->amb_nmatches_end */;
+	}
+
+	/* Case 2: Tails overlap.  Go from start5 to start3 */
+	debug13(printf("plus case 2b: start3 %u\n",start3 - hit3->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start +
+	    (start3 - Substring_alignstart_trim(hit5->substring2));
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start +
+	    (start3 - Substring_alignstart_trim(hit5->substring1));
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start + */
+	    (start3 - Substring_alignstart_trim(hit5->substring0));
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 3: hit3 subsumes hit5 */
+	debug13(printf("plus case 3\n"));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return hit5_trimmed_length + (Substring_alignstart_trim(hit3->substring2) - end5)
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) + hit3->trim_right + hit3->amb_nmatches_end */;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return hit5_trimmed_length + (Substring_alignstart_trim(hit3->substring1) - end5)
+	    + hit3->querylength - Substring_queryend(hit3->substring1) + hit3->trim_right + hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return hit5_trimmed_length + (Substring_alignstart_trim(hit3->substring0) - end5)
+	    + hit3->querylength - Substring_queryend(hit3->substring0) + hit3->trim_right + hit3->amb_nmatches_end;
+	}
+	/* Fall through to general algorithm */
+      }
+
+    } else {
+      if (start3 < end5) {
+	/* Case 4: hit5 subsumes hit3 */
+	debug13(printf("plus case 4\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,end3)) {
+	  return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	    (end3 - Substring_alignstart_trim(hit5->substring0)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,end3)) {
+	  return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (end3 - Substring_alignstart_trim(hit5->substring1)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,end3)) {
+	  return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (end3 - Substring_alignstart_trim(hit5->substring2)) + hit3_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 5: Based on hit3_trimmed_length */
+	debug13(printf("plus case 5a\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,end3)) {
+	  return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	    (end3 - Substring_alignstart_trim(hit5->substring0)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,end3)) {
+	  return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (end3 - Substring_alignstart_trim(hit5->substring1)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,end3)) {
+	  return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (end3 - Substring_alignstart_trim(hit5->substring2)) + hit3_trimmed_length;
+	}
+
+	/* Case 5: Based on hit5_trimmed_length */
+	debug13(printf("plus case 5b\n"));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return /* hit3->querylength - Substring_queryend(hit3->substring2) + hit3->trim_right + hit3->amb_nmatches_end + */
+	    (Substring_alignstart_trim(hit3->substring2) - end5) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring1) + hit3->trim_right + hit3->amb_nmatches_end +
+	    (Substring_alignstart_trim(hit3->substring1) - end5) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring0) + hit3->trim_right + hit3->amb_nmatches_end +
+	    (Substring_alignstart_trim(hit3->substring0) - end5) + hit5_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+      }
+    }
+
+    /* General algorithm */
+    debug13(printf("plus general: hit3->substring1\n"));
+    if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	(Substring_alignstart_trim(hit3->substring1) - Substring_alignstart_trim(hit5->substring1))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) + hit3->trim_right + hit3->amb_nmatches_end;
+    } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	(Substring_alignstart_trim(hit3->substring1) - Substring_alignstart_trim(hit5->substring2))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) + hit3->trim_right + hit3->amb_nmatches_end;
+    } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring1)) {
+      return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	(Substring_alignstart_trim(hit3->substring1) - Substring_alignstart_trim(hit5->substring0))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) + hit3->trim_right + hit3->amb_nmatches_end;
+    }
+
+    if (hit3->substring2 != NULL) {
+      debug13(printf("plus general: hit3->substring2\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit3->substring2) - Substring_alignstart_trim(hit5->substring1))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) + hit3->trim_right + hit3->amb_nmatches_end */;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit3->substring2) - Substring_alignstart_trim(hit5->substring2))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) + hit3->trim_right + hit3->amb_nmatches_end */;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring2)) {
+	return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	  (Substring_alignstart_trim(hit3->substring2) - Substring_alignstart_trim(hit5->substring0))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) + hit3->trim_right + hit3->amb_nmatches_end */;
+      }
+    }
+
+    if (hit3->substring0 != NULL) {
+      debug13(printf("plus general: hit3->substring0\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit3->substring0) - Substring_alignstart_trim(hit5->substring1))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) + hit3->trim_right + hit3->amb_nmatches_end;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit3->substring0) - Substring_alignstart_trim(hit5->substring2))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) + hit3->trim_right + hit3->amb_nmatches_end;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring0)) {
+	return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	  (Substring_alignstart_trim(hit3->substring0) - Substring_alignstart_trim(hit5->substring0))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) + hit3->trim_right + hit3->amb_nmatches_end;
+      }
+    }
+    
+    return 0;
+
+  } else if (hit5->plusp == false && hit3->plusp == true) {
+    /* minus/plus */
+    start5 = hit5->genomicstart - hit5->trim_left - hit5->amb_nmatches_start;
+    end5 = hit5->genomicend + hit5->trim_right + hit5->amb_nmatches_end;
+    start3 = hit3->genomicstart + hit3->trim_left + hit3->amb_nmatches_start;
+    end3 = hit3->genomicend - hit3->trim_right - hit3->amb_nmatches_end;
+
+    if (end3 < end5) {
+      /* Case 1 */
+      return 0;
+    } else if (start5 < start3) {
+      /* Case 6 */
+      return 0;
+    } else if (start3 < end5) {
+      if (end3 < start5) {
+	/* Case 2: Tails overlap.  Go from end5 to end3 */
+	debug13(printf("plus case 2a: end5 %u\n",end5 - hit5->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return (Substring_alignend_trim(hit3->substring0) - end5)
+	    + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return (Substring_alignend_trim(hit3->substring1) - end5)
+	    + hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return (Substring_alignend_trim(hit3->substring2) - end5)
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+	}
+
+	/* Case 2: Tails overlap.  Go from end5 to end3 */
+	debug13(printf("plus case 2b: end3 %u\n",end3 - hit3->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit5->substring2,end3)) {
+	  return Substring_queryend(hit5->substring2) + hit5->trim_left + hit5->amb_nmatches_start +
+	    (end3 - Substring_alignend_trim(hit5->substring2));
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,end3)) {
+	  return Substring_queryend(hit5->substring1) + hit5->trim_left + hit5->amb_nmatches_start +
+	    (end3 - Substring_alignend_trim(hit5->substring1));
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring0,end3)) {
+	  return /* Substring_querystart(hit5->substring0) + hit5->trim_left + hit5->amb_nmatches_start + */
+	    (end3 - Substring_alignend_trim(hit5->substring0));
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 3: hit3 subsumes hit5 */
+	debug13(printf("plus case 3\n"));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,start5)) {
+	  return hit5_trimmed_length + (Substring_alignend_trim(hit3->substring2) - start5)
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,start5)) {
+	  return hit5_trimmed_length + (Substring_alignend_trim(hit3->substring1) - start5)
+	    + hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,start5)) {
+	  return hit5_trimmed_length + (Substring_alignend_trim(hit3->substring0) - start5)
+	    + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+	}
+	/* Fall through to general algorithm */
+      }
+
+    } else {
+      if (end3 < start5) {
+	/* Case 4: hit5 subsumes hit3 */
+	debug13(printf("plus case 4\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* (Substring_querystart(hit5->substring0) + hit5->trim_left + hit5->amb_nmatches_start) + */
+	    (start3 - Substring_alignend_trim(hit5->substring0)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return (Substring_querystart(hit5->substring1) + hit5->trim_left + hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignend_trim(hit5->substring1)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return (Substring_querystart(hit5->substring2) + hit5->trim_left + hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignend_trim(hit5->substring2)) + hit3_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 5: Based on hit3_trimmed_length */
+	debug13(printf("plus case 5a\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* (Substring_querystart(hit5->substring0) + hit5->trim_left + hit5->amb_nmatches_start) + */
+	    (start3 - Substring_alignend_trim(hit5->substring0)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return (Substring_querystart(hit5->substring1) + hit5->trim_left + hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignend_trim(hit5->substring1)) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return (Substring_querystart(hit5->substring2) + hit5->trim_left + hit5->amb_nmatches_start) +
+	    (start3 - Substring_alignend_trim(hit5->substring2)) + hit3_trimmed_length;
+	}
+
+	/* Case 5: Based on hit5_trimmed_length */
+	debug13(printf("plus case 5b\n"));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,start5)) {
+	  return /* hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end + */
+	    (Substring_alignend_trim(hit3->substring2) - start5) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,start5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end +
+	    (Substring_alignend_trim(hit3->substring1) - start5) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,start5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end +
+	    (Substring_alignend_trim(hit3->substring0) - start5) + hit5_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+      }
+    }
+
+    /* General algorithm */
+    debug13(printf("plus general: hit3->substring1\n"));
+    if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring1) + hit5->trim_left + hit5->amb_nmatches_start) +
+	(Substring_alignend_trim(hit3->substring1) - Substring_alignend_trim(hit5->substring1))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring1)) {
+      return (Substring_queryend(hit5->substring2) + hit5->trim_left + hit5->amb_nmatches_start) +
+	(Substring_alignend_trim(hit3->substring1) - Substring_alignend_trim(hit5->substring2))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring1)) {
+      return /* (Substring_querystart(hit5->substring0) + hit5->trim_left + hit5->amb_nmatches_start) + */
+	(Substring_alignend_trim(hit3->substring1) - Substring_alignend_trim(hit5->substring0))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    }
+
+    if (hit3->substring2 != NULL) {
+      debug13(printf("plus general: hit3->substring2\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring1) + hit5->trim_left + hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring2) - Substring_alignend_trim(hit5->substring1))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring2) + hit5->trim_left + hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring2) - Substring_alignend_trim(hit5->substring2))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring2)) {
+	return /* (Substring_querystart(hit5->substring0) + hit5->trim_left + hit5->amb_nmatches_start) + */
+	  (Substring_alignend_trim(hit3->substring2) - Substring_alignend_trim(hit5->substring0))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      }
+    }
+
+    if (hit3->substring0 != NULL) {
+      debug13(printf("plus general: hit3->substring0\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring1) + hit5->trim_left + hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring0) - Substring_alignend_trim(hit5->substring1))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring2) + hit5->trim_left + hit5->amb_nmatches_start) +
+	  (Substring_alignend_trim(hit3->substring0) - Substring_alignend_trim(hit5->substring2))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring0)) {
+	return /* (Substring_querystart(hit5->substring0) + hit5->trim_left + hit5->amb_nmatches_start) + */
+	  (Substring_alignend_trim(hit3->substring0) - Substring_alignend_trim(hit5->substring0))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      }
+    }
+    
+    return 0;
+
+  } else if (hit5->plusp == false && hit3->plusp == false) {
+    /* minus/minus */
+    start5 = hit5->genomicstart - hit5->trim_left - hit5->amb_nmatches_start;
+    end5 = hit5->genomicend + hit5->trim_right + hit5->amb_nmatches_end;
+    start3 = hit3->genomicstart - hit3->trim_left - hit3->amb_nmatches_start;
+    end3 = hit3->genomicend + hit3->trim_right + hit3->amb_nmatches_end;
+
+    if (end3 > start5) {
+      /* Case 1 */
+      return 0;
+    } else if (end5 > start3) {
+      /* Case 6 */
+      return 0;
+    } else if (start3 > start5) {
+      if (end3 > end5) {
+	/* Case 2: Tails overlap.  Go from start5 to end3 */
+	debug13(printf("plus case 2a: start5 %u\n",start5 - hit5->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit3->substring0,start5)) {
+	  return (start5 - Substring_alignend_trim(hit3->substring0))
+	    + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,start5)) {
+	  return (start5 - Substring_alignend_trim(hit3->substring1))
+	    + hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring2,start5)) {
+	  return (start5 - Substring_alignend_trim(hit3->substring2))
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+	}
+
+	/* Case 2: Tails overlap.  Go from start5 to end3 */
+	debug13(printf("plus case 2b: end3 %u\n",end3 - hit3->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit5->substring2,end3)) {
+	  return Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start +
+	    (Substring_alignstart_trim(hit5->substring2) - end3);
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,end3)) {
+	  return Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start +
+	    (Substring_alignstart_trim(hit5->substring1) - end3);
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring0,end3)) {
+	  return /* Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start + */
+	    (Substring_alignstart_trim(hit5->substring0) - end3);
+	}
+	/* Fall through to general algorithm */
+	  
+      } else {
+	/* Case 3: hit3 subsumes hit5 */
+	debug13(printf("minus case 3: end5 %u\n",end5 - hit5->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return hit5_trimmed_length + (end5 - Substring_alignend_trim(hit3->substring2))
+	    /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return hit5_trimmed_length + (end5 - Substring_alignend_trim(hit3->substring1))
+	    + hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return hit5_trimmed_length + (end5 - Substring_alignend_trim(hit3->substring0))
+	    + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+	}
+	/* Fall through to general algorithm */
+      }
+
+    } else {
+      if (end3 > end5) {
+	/* Case 4: hit5 subsumes hit3 */
+	debug13(printf("minus case 4\n"));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	    (Substring_alignstart_trim(hit5->substring0) - start3) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (Substring_alignstart_trim(hit5->substring1) - start3) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (Substring_alignstart_trim(hit5->substring2) - start3) + hit3_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+
+      } else {
+	/* Case 5: Based on hit3_trimmed_length */
+	debug13(printf("minus case 5a: start3 %u\n",start3 - hit3->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit5->substring0,start3)) {
+	  return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	    (Substring_alignstart_trim(hit5->substring0) - start3) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring1,start3)) {
+	  return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (Substring_alignstart_trim(hit5->substring1) - start3) + hit3_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit5->substring2,start3)) {
+	  return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	    (Substring_alignstart_trim(hit5->substring2) - start3) + hit3_trimmed_length;
+	}
+
+	/* Case 5: Based on hit5_trimmed_length */
+	debug13(printf("minus case 5b: end5 %u\n",end5 - hit5->chroffset));
+	if (Substring_overlap_point_trimmed_p(hit3->substring2,end5)) {
+	  return /* hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end + */
+	    (end5 - Substring_alignend_trim(hit3->substring2)) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring1,end5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end +
+	    (end5 - Substring_alignend_trim(hit3->substring1)) + hit5_trimmed_length;
+	} else if (Substring_overlap_point_trimmed_p(hit3->substring0,end5)) {
+	  return hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end +
+	    (end5 - Substring_alignend_trim(hit3->substring0)) + hit5_trimmed_length;
+	}
+	/* Fall through to general algorithm */
+      }
+    }
+
+    /* General algorithm */
+    debug13(printf("minus general: hit3->substring1\n"));
+    if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	(Substring_alignstart_trim(hit5->substring1) - Substring_alignend_trim(hit3->substring1))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring1)) {
+      return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	(Substring_alignstart_trim(hit5->substring2) - Substring_alignend_trim(hit3->substring1))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring1)) {
+      return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	(Substring_alignstart_trim(hit5->substring0) - Substring_alignend_trim(hit3->substring1))
+	+ hit3->querylength - Substring_queryend(hit3->substring1) - hit3->trim_right - hit3->amb_nmatches_end;
+    }
+
+    if (hit3->substring2 != NULL) {
+      debug13(printf("minus general: hit3->substring2\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit5->substring1) - Substring_alignend_trim(hit3->substring2))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring2)) {
+	return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit5->substring2) - Substring_alignend_trim(hit3->substring2))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring2)) {
+	return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	  (Substring_alignstart_trim(hit5->substring0) - Substring_alignend_trim(hit3->substring2))
+	  /* + hit3->querylength - Substring_queryend(hit3->substring2) - hit3->trim_right - hit3->amb_nmatches_end */;
+      }
+    }
+
+    if (hit3->substring0 != NULL) {
+      debug13(printf("minus general: hit3->substring0\n"));
+      if (Substring_overlap_segment_trimmed_p(hit5->substring1,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring1) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit5->substring1) - Substring_alignend_trim(hit3->substring0))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->substring2 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring2,hit3->substring0)) {
+	return (Substring_querystart(hit5->substring2) - hit5->trim_left - hit5->amb_nmatches_start) +
+	  (Substring_alignstart_trim(hit5->substring2) - Substring_alignend_trim(hit3->substring0))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      } else if (hit5->substring0 != NULL && Substring_overlap_segment_trimmed_p(hit5->substring0,hit3->substring0)) {
+	return /* (Substring_querystart(hit5->substring0) - hit5->trim_left - hit5->amb_nmatches_start) + */
+	  (Substring_alignstart_trim(hit5->substring0) - Substring_alignend_trim(hit3->substring0))
+	  + hit3->querylength - Substring_queryend(hit3->substring0) - hit3->trim_right - hit3->amb_nmatches_end;
+      }
+    }
+	
+    return 0;
+
+  } else {
+    abort();
+    return 0;
+  }
+}
+
+
+
 int
 Stage3pair_overlap (int *hardclip5, int *hardclip3, Stage3pair_T this) {
   Stage3end_T hit5, hit3;
-  int totallength;
-  Univcoord_T hit5_alignlow, hit5_alignhigh, hit3_alignlow, hit3_alignhigh;
+  int totallength, insertlength, minlength;
   int overlap;
+  int clipdir;
+  int hit5_trimmed_length, hit3_trimmed_length;
 
   hit5 = this->hit5;
   hit3 = this->hit3;
@@ -1285,73 +2489,198 @@ Stage3pair_overlap (int *hardclip5, int *hardclip3, Stage3pair_T this) {
     return 0;
   } else if (hit3->hittype == SAMECHR_SPLICE || hit3->hittype == TRANSLOC_SPLICE) {
     return 0;
-#if 0
-  } else if (this->insertlength <= hit5->querylength_adj) {
-    /* Tails overlap.  We can now handle this case */
-    return 0;
-  } else if (this->insertlength <= hit3->querylength_adj) {
-    /* Tails overlap.  We can now handle this case */
-    return 0;
-#endif
   } else {
-    totallength = hit5->querylength_adj + hit3->querylength_adj;
-    debug13(printf("insertlength %d, totallength %d\n",this->insertlength,totallength));
-    if (this->insertlength >= totallength) {
-      return 0;
-    } else {
-      if (hit5->genomicstart < hit5->genomicend) {
-	hit5_alignlow = hit5->genomicstart + hit5->trim_left;
-	hit5_alignhigh = hit5->genomicend - hit5->trim_right;
-      } else {
-	hit5_alignlow = hit5->genomicend + hit5->trim_right;
-	hit5_alignhigh = hit5->genomicstart - hit5->trim_left;
-      }
+    debug13(printf("hit5 trim_left %d + amb_start %d, trim_right %d + amb_end %d, hit3 trim_left %d + amb_start %d, trim_right %d + amb_end %d\n",
+		   hit5->trim_left,hit5->amb_nmatches_start,hit5->trim_right,hit5->amb_nmatches_end,
+		   hit3->trim_left,hit3->amb_nmatches_start,hit3->trim_right,hit3->amb_nmatches_end));
+    if (hit5->plusp == true) {
+      hit5_trimmed_length = hit5->querylength - hit5->trim_left - hit5->trim_right - hit5->amb_nmatches_start - hit5->amb_nmatches_end;
+      hit3_trimmed_length = hit3->querylength - hit3->trim_left - hit3->trim_right - hit3->amb_nmatches_start - hit3->amb_nmatches_end;
+      totallength = hit5_trimmed_length + hit3_trimmed_length;
+      debug13(printf("totallength = %d, hit5 trimmed length = %d, hit3 trimmed length = %d\n",
+		     totallength,hit5_trimmed_length,hit3_trimmed_length));
 
-      if (hit3->genomicstart < hit3->genomicend) {
-	hit3_alignlow = hit3->genomicstart + hit3->trim_left;
-	hit3_alignhigh = hit3->genomicend - hit3->trim_right;
+#if 0
+      hit5_inside = (hit5->genomicend - 1) - hit5->trim_right - hit5->amb_nmatches_end;
+      hit3_inside = hit3->genomicstart + hit3->trim_left + hit3->amb_nmatches_start; /* because hit3 is inverted */
+      insertlength = (hit3_inside + hit3_trimmed_length - 1) - (hit5_inside - hit5_trimmed_length + 1) + 1;
+#endif
+      debug13(printf("original insertlength: %d, trim+amb5: %d..%d, trim+amb3: %d..%d\n",
+		     this->insertlength,hit5->trim_left + hit5->amb_nmatches_start,
+		     hit5->trim_right + hit5->amb_nmatches_end,hit3->trim_left + hit3->amb_nmatches_start,
+		     hit3->trim_right + hit3->amb_nmatches_end));
+      if (hit5->hittype == GMAP || hit3->hittype == GMAP) {
+	insertlength = this->insertlength = pair_insert_length_trimmed(hit5,hit3,hit5_trimmed_length,hit3_trimmed_length);
       } else {
-	hit3_alignlow = hit3->genomicend + hit3->trim_right;
-	hit3_alignhigh = hit3->genomicstart - hit3->trim_left;
+	insertlength = pair_insert_length_trimmed(hit5,hit3,hit5_trimmed_length,hit3_trimmed_length);
       }
+      debug13(printf(" => trimmed insertlength: %d\n",insertlength));
 
-      if (hit5_alignlow <= hit3_alignlow && hit5_alignhigh <= hit3_alignhigh) {
-	/* Clip high part of 5 and low part of 3 */
-	overlap = hit5_alignhigh - hit3_alignlow;
-	*hardclip5 = overlap/2;
-	*hardclip3 = overlap - (*hardclip5);
-	if (hit5->genomicstart < hit5->genomicend) {
-	  *hardclip5 += hit5->trim_right;
+      if (insertlength == 0) {
+	debug13(printf("Cannot determine an insert length, so returning 0\n"));
+	return 0;
+      } else if ((overlap = totallength - insertlength) < 0) {
+	debug13(printf("Overlap %d is negative, so returning 0\n",overlap));
+	return 0;
+      } else {
+	debug13(printf("overlap = %d\n",overlap));
+      }
+
+      if (hit5_trimmed_length <= hit3_trimmed_length) {
+	debug13(printf("Overlap is %d and hit5 is shortest\n",overlap));
+	minlength = hit5_trimmed_length;
+	if (insertlength < minlength) {
+	  /* Clip tails equally */
+	  *hardclip5 = insertlength/2;
+	  *hardclip3 = insertlength - (*hardclip5);
+	  *hardclip3 += hit3->trim_right + hit3->amb_nmatches_end;
+	  *hardclip5 += hit5->trim_left + hit5->amb_nmatches_start;
+	  debug13(printf("Clip tails with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = -1;
+	} else if (overlap > minlength) {
+	  /* Clip heads, but limit clipping on hit5 */
+	  *hardclip5 = hit5_trimmed_length/2;
+	  *hardclip3 = overlap - (*hardclip5);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads limited with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	} else {
-	  *hardclip5 += hit5->trim_left;
+	  /* Clip heads equally */
+	  *hardclip5 = overlap/2;
+	  *hardclip3 = overlap - (*hardclip5);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	}
-	if (hit3->genomicstart < hit3->genomicend) {
-	  *hardclip3 += hit3->trim_left;
+
+      } else {
+	debug13(printf("Overlap is %d and hit3 is shortest\n",overlap));
+	minlength = hit3_trimmed_length;
+	if (insertlength < minlength) {
+	  /* Clip tails equally */
+	  *hardclip3 = insertlength/2;
+	  *hardclip5 = insertlength - (*hardclip3);
+	  *hardclip3 += hit3->trim_right + hit3->amb_nmatches_end;
+	  *hardclip5 += hit5->trim_left + hit5->amb_nmatches_start;
+	  debug13(printf("Clip tails with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = -1;
+	} else if (overlap > minlength) {
+	  /* Clip heads, but limit clipping on hit3 */
+	  *hardclip3 = hit3_trimmed_length/2;
+	  *hardclip5 = overlap - (*hardclip3);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads limited with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	} else {
-	  *hardclip3 += hit3->trim_right;
+	  /* Clip heads equally */
+	  *hardclip3 = overlap/2;
+	  *hardclip5 = overlap - (*hardclip3);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	}
-	debug13(printf("returning +1 with hardclip5 %d, hardclip3 %d\n",*hardclip5,*hardclip3));
-	return +1;
-      } else if (hit3_alignlow <= hit5_alignlow && hit3_alignhigh <= hit5_alignhigh) {
-	/* Clip low part of 5 and high part of 3 */
-	overlap = hit3_alignhigh - hit5_alignlow;
-	*hardclip5 = overlap/2;
-	*hardclip3 = overlap - (*hardclip5);
-	if (hit5->genomicstart < hit5->genomicend) {
-	  *hardclip5 += hit5->trim_left;
+      }
+
+      debug13(printf("plus, so returning clipdir %d\n",clipdir));
+      return clipdir;
+
+    } else {
+      hit5_trimmed_length = hit5->querylength - hit5->trim_left - hit5->trim_right - hit5->amb_nmatches_start - hit5->amb_nmatches_end;
+      hit3_trimmed_length = hit3->querylength - hit3->trim_left - hit3->trim_right - hit3->amb_nmatches_start - hit3->amb_nmatches_end;
+      totallength = hit5_trimmed_length + hit3_trimmed_length;
+      debug13(printf("totallength = %d, hit5 trimmed length = %d, hit3 trimmed length = %d\n",
+		     totallength,hit5_trimmed_length,hit3_trimmed_length));
+    
+#if 0
+      hit5_inside = hit5->genomicend + hit5->trim_right + hit5->amb_nmatches_end;
+      hit3_inside = (hit3->genomicstart - 1) - hit3->trim_left - hit3->amb_nmatches_start; /* because hit3 is inverted */
+      insertlength = (hit5_inside + hit5_trimmed_length - 1) - (hit3_inside - hit3_trimmed_length + 1) + 1;
+#endif
+      debug13(printf("original insertlength: %d, trim+amb5: %d..%d, trim+amb3: %d..%d\n",
+		     this->insertlength,hit5->trim_left + hit5->amb_nmatches_start,
+		     hit5->trim_right + hit5->amb_nmatches_end,hit3->trim_left + hit3->amb_nmatches_start,
+		     hit3->trim_right + hit3->amb_nmatches_end));
+      if (hit5->hittype == GMAP || hit3->hittype == GMAP) {
+	insertlength = this->insertlength = pair_insert_length_trimmed(hit5,hit3,hit5_trimmed_length,hit3_trimmed_length);
+      } else {
+	insertlength = pair_insert_length_trimmed(hit5,hit3,hit5_trimmed_length,hit3_trimmed_length);
+      }
+      debug13(printf(" => trimmed insertlength: %d\n",insertlength));
+
+      if (insertlength == 0) {
+	debug13(printf("Cannot determine an insert length, so returning 0\n"));
+	return 0;
+      } else if ((overlap = totallength - insertlength) < 0) {
+	debug13(printf("Overlap %d is negative, so returning 0\n",overlap));
+	return 0;
+      } else {
+	debug13(printf("overlap = %d\n",overlap));
+      }
+
+      if (hit5_trimmed_length <= hit3_trimmed_length) {
+	debug13(printf("Overlap is %d and hit5 is shortest\n",overlap));
+	minlength = hit5_trimmed_length;
+	if (insertlength < minlength) {
+	  /* Clip tails equally */
+	  *hardclip5 = insertlength/2;
+	  *hardclip3 = insertlength - (*hardclip5);
+	  *hardclip3 += hit3->trim_right + hit3->amb_nmatches_end;
+	  *hardclip5 += hit5->trim_left + hit5->amb_nmatches_start;
+	  debug13(printf("Clip tails with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = -1;
+	} else if (overlap > minlength) {
+	  /* Clip heads, but limit clipping on hit5 */
+	  *hardclip5 = hit5_trimmed_length/2;
+	  *hardclip3 = overlap - (*hardclip5);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads limited with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	} else {
-	  *hardclip5 += hit5->trim_right;
+	  /* Clip heads equally */
+	  *hardclip5 = overlap/2;
+	  *hardclip3 = overlap - (*hardclip5);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	}
-	if (hit3->genomicstart < hit3->genomicend) {
-	  *hardclip3 += hit3->trim_right;
+
+      } else {
+	debug13(printf("Overlap is %d and hit3 is shortest\n",overlap));
+	minlength = hit3_trimmed_length;
+	if (insertlength < minlength) {
+	  /* Clip tails equally */
+	  *hardclip3 = insertlength/2;
+	  *hardclip5 = insertlength - (*hardclip3);
+	  *hardclip3 += hit3->trim_right + hit3->amb_nmatches_end;
+	  *hardclip5 += hit5->trim_left + hit5->amb_nmatches_start;
+	  debug13(printf("Clip tails with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = -1;
+	} else if (overlap > minlength) {
+	  /* Clip heads, but limit clipping on hit3 */
+	  *hardclip3 = hit3_trimmed_length/2;
+	  *hardclip5 = overlap - (*hardclip3);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads limited with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	} else {
-	  *hardclip3 += hit3->trim_left;
+	  /* Clip heads equally */
+	  *hardclip3 = overlap/2;
+	  *hardclip5 = overlap - (*hardclip3);
+	  *hardclip3 += hit3->trim_left + hit3->amb_nmatches_start;
+	  *hardclip5 += hit5->trim_right + hit5->amb_nmatches_end;
+	  debug13(printf("Clip heads with hardclip5 %d and hardclip3 %d\n",*hardclip5,*hardclip3));
+	  clipdir = +1;
 	}
-	debug13(printf("return -1 with hardclip5 %d, hardclip3 %d\n",*hardclip5,*hardclip3));
-	return -1;
-      } else {
-	return 0;
       }
+      debug13(printf("minus, so returning -clipdir %d\n",-clipdir));
+      return -clipdir;
     }
   }
 }
@@ -1384,6 +2713,7 @@ Stage3pair_clear_private3p (Stage3pair_T this) {
 
 void
 Stage3pair_free (Stage3pair_T *old) {
+  debug0(printf("Freeing pair %p with hits %p (privatep %d) and %p (privatep %d)\n",*old,(*old)->hit5,(*old)->private5p,(*old)->hit3,(*old)->private3p));
   if ((*old)->private3p == true) {
     assert((*old)->hit3 != NULL);
     debug0(printf("Freeing end3 at %p\n",(*old)->hit3));
@@ -1479,6 +2809,8 @@ Stage3end_copy (T old) {
 
   new->hittype = old->hittype;
   new->genestrand = old->genestrand;
+  new->sarrayp = old->sarrayp;
+  new->improved_by_gmap_p = old->improved_by_gmap_p;
 
   new->chrnum = old->chrnum;
   new->effective_chrnum = old->effective_chrnum;
@@ -1487,6 +2819,7 @@ Stage3end_copy (T old) {
   new->chrhigh = old->chrhigh;
   new->chrlength = old->chrlength;
 
+  new->querylength = old->querylength;
   new->querylength_adj = old->querylength_adj;
 
   new->genomicstart = old->genomicstart;
@@ -1558,24 +2891,30 @@ Stage3end_copy (T old) {
   new->gmap_start_endtype = old->gmap_start_endtype;
   new->gmap_end_endtype = old->gmap_end_endtype;
 
-  if ((new->start_nambi = old->start_nambi) == 0) {
-    new->start_ambi = (int *) NULL;
+  if ((new->start_nambcoords = old->start_nambcoords) == 0) {
+    new->start_ambcoords = (Univcoord_T *) NULL;
+    new->start_amb_knowni = (int *) NULL;
     new->start_amb_nmismatches = (int *) NULL;
   } else {
-    new->start_ambi = (int *) CALLOC_OUT(old->start_nambi,sizeof(int));
-    memcpy(new->start_ambi,old->start_ambi,old->start_nambi*sizeof(int));
-    new->start_amb_nmismatches = (int *) CALLOC_OUT(old->start_nambi,sizeof(int));
-    memcpy(new->start_amb_nmismatches,old->start_amb_nmismatches,old->start_nambi*sizeof(int));
+    new->start_ambcoords = (Univcoord_T *) CALLOC_OUT(old->start_nambcoords,sizeof(Univcoord_T));
+    memcpy(new->start_ambcoords,old->start_ambcoords,old->start_nambcoords*sizeof(Univcoord_T));
+    new->start_amb_knowni = (int *) CALLOC_OUT(old->start_nambcoords,sizeof(int));
+    memcpy(new->start_amb_knowni,old->start_amb_knowni,old->start_nambcoords*sizeof(int));
+    new->start_amb_nmismatches = (int *) CALLOC_OUT(old->start_nambcoords,sizeof(int));
+    memcpy(new->start_amb_nmismatches,old->start_amb_nmismatches,old->start_nambcoords*sizeof(int));
   }
 
-  if ((new->end_nambi = old->end_nambi) == 0) {
-    new->end_ambi = (int *) NULL;
+  if ((new->end_nambcoords = old->end_nambcoords) == 0) {
+    new->end_ambcoords = (Univcoord_T *) NULL;
+    new->end_amb_knowni = (int *) NULL;
     new->end_amb_nmismatches = (int *) NULL;
   } else {
-    new->end_ambi = (int *) CALLOC_OUT(old->end_nambi,sizeof(int));
-    memcpy(new->end_ambi,old->end_ambi,old->end_nambi*sizeof(int));
-    new->end_amb_nmismatches = (int *) CALLOC_OUT(old->end_nambi,sizeof(int));
-    memcpy(new->end_amb_nmismatches,old->end_amb_nmismatches,old->end_nambi*sizeof(int));
+    new->end_ambcoords = (Univcoord_T *) CALLOC_OUT(old->end_nambcoords,sizeof(Univcoord_T));
+    memcpy(new->end_ambcoords,old->end_ambcoords,old->end_nambcoords*sizeof(Univcoord_T));
+    new->end_amb_knowni = (int *) CALLOC_OUT(old->end_nambcoords,sizeof(int));
+    memcpy(new->end_amb_knowni,old->end_amb_knowni,old->end_nambcoords*sizeof(int));
+    new->end_amb_nmismatches = (int *) CALLOC_OUT(old->end_nambcoords,sizeof(int));
+    memcpy(new->end_amb_nmismatches,old->end_amb_nmismatches,old->end_nambcoords*sizeof(int));
   }
 
   new->substring1 = Substring_copy(old->substring1);
@@ -1704,48 +3043,70 @@ static int
 compute_circularpos (int *alias, T hit) {
   int circularpos;
 
+  debug12(printf("Computing circularpos on hit at %u..%u (%u..%u) with trim left %d and trim right %d\n",
+		 hit->genomicstart,hit->genomicend,
+		 hit->genomicstart - hit->chroffset,hit->genomicend - hit->chroffset,hit->trim_left,hit->trim_right));
   if (circularp[hit->chrnum] == false) {
     /* This also handles hit->chrnum == 0, where translocation cannot be circular */
     *alias = 0;
     return -1;
 
-  } else if (hit->low >= hit->chroffset + hit->chrlength) {
-    /* All in circular alias */
-    *alias = +1;
-    return -1;
-
-  } else if (hit->high <= hit->chroffset + hit->chrlength) {
-    /* All in circular proper */
-    *alias = -1;
-    return -1;
-
   } else if (hit->hittype == GMAP) {
-    *alias = 0;
-    return Pair_circularpos(hit->pairarray,hit->npairs,hit->chrlength,
+    return Pair_circularpos(&(*alias),hit->pairarray,hit->npairs,hit->chrlength,
 			    hit->plusp,hit->querylength_adj);
 
   } else if (hit->plusp == true) {
-    *alias = 0;
-    if ((circularpos = Substring_circularpos(hit->substring0)) > 0) {
-      return circularpos;
-    } else if ((circularpos = Substring_circularpos(hit->substring1)) > 0) {
-      return circularpos;
-    } else if ((circularpos = Substring_circularpos(hit->substring2)) > 0) {
-      return circularpos;
-    } else {
+    if (hit->low + hit->trim_left >= hit->chroffset + hit->chrlength) {
+      /* All of read after trimming is in circular alias */
+      *alias = +1;
+      return -1;
+
+    } else if (hit->high - hit->trim_right <= hit->chroffset + hit->chrlength) {
+      /* All of read after trimming is in circular proper */
+      *alias = -1;
       return -1;
+
+    } else {
+      *alias = 0;
+      if ((circularpos = Substring_circularpos(hit->substring0)) > 0) {
+	debug12(printf("Returning circularpos %d from substring0 (plus)\n",circularpos));
+	return circularpos;
+      } else if ((circularpos = Substring_circularpos(hit->substring1)) > 0) {
+	debug12(printf("Returning circularpos %d from substring1 (plus)\n",circularpos));
+	return circularpos;
+      } else if ((circularpos = Substring_circularpos(hit->substring2)) > 0) {
+	debug12(printf("Returning circularpos %d from substring2 (plus)\n",circularpos));
+	return circularpos;
+      } else {
+	return -1;
+      }
     }
 
   } else {
-    *alias = 0;
-    if ((circularpos = Substring_circularpos(hit->substring2)) > 0) {
-      return circularpos;
-    } else if ((circularpos = Substring_circularpos(hit->substring1)) > 0) {
-      return circularpos;
-    } else if ((circularpos = Substring_circularpos(hit->substring0)) > 0) {
-      return circularpos;
-    } else {
+    if (hit->low + hit->trim_right >= hit->chroffset + hit->chrlength) {
+      /* All of read after trimming is in circular alias */
+      *alias = +1;
+      return -1;
+
+    } else if (hit->high - hit->trim_left <= hit->chroffset + hit->chrlength) {
+      /* All of read after trimming is in circular proper */
+      *alias = -1;
       return -1;
+
+    } else {
+      *alias = 0;
+      if ((circularpos = Substring_circularpos(hit->substring2)) > 0) {
+	debug12(printf("Returning circularpos %d from substring0 (minus)\n",circularpos));
+	return circularpos;
+      } else if ((circularpos = Substring_circularpos(hit->substring1)) > 0) {
+	debug12(printf("Returning circularpos %d from substring1 (minus)\n",circularpos));
+	return circularpos;
+      } else if ((circularpos = Substring_circularpos(hit->substring0)) > 0) {
+	debug12(printf("Returning circularpos %d from substring2 (minus)\n",circularpos));
+	return circularpos;
+      } else {
+	return -1;
+      }
     }
   }
 }
@@ -1753,18 +3114,25 @@ compute_circularpos (int *alias, T hit) {
 
 T
 Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Compress_T query_compress,
-		     bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-		     Chrpos_T chrlength) {
+		     bool plusp, int genestrand, bool first_read_p,
+		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+		     Chrpos_T chrlength, bool sarrayp) {
   T new;
   Substring_T substring;
   Univcoord_T genomicstart, genomicend;
 
   if (plusp == true) {
-    genomicstart = left;
-    genomicend = left + genomiclength;
+    if ((genomicend = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicstart = left;
+    }
   } else {
-    genomicstart = left + genomiclength;
-    genomicend = left;
+    if ((genomicstart = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicend = left;
+    }
   }
 
   if ((substring = Substring_new(/*nmismatches*/0,chrnum,chroffset,chrhigh,chrlength,
@@ -1772,8 +3140,9 @@ Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Comp
 				 /*start_endtype*/END,/*end_endtype*/END,
 				 /*querystart*/0,/*queryend*/genomiclength,/*querylength*/genomiclength,
 				 /*alignstart*/genomicstart,/*alignend*/genomicend,
-				 genomiclength,/*extraleft*/0,/*extraright*/0,/*exactp*/true,plusp,genestrand,
-				 /*trim_left_p*/false,/*trim_right_p*/false,/*minlength*/0)) == NULL) {
+				 genomiclength,/*extraleft*/0,/*extraright*/0,/*exactp*/true,
+				 plusp,genestrand,first_read_p,/*trim_left_p*/false,/*trim_right_p*/false,
+				 /*minlength*/0)) == NULL) {
     return (T) NULL;
 
   } else {
@@ -1790,7 +3159,7 @@ Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Comp
     new->pairarray = (struct Pair_T *) NULL;
 
     new->deletion = (char *) NULL;
-    new->querylength_adj = genomiclength;
+    new->querylength_adj = new->querylength = genomiclength;
     new->genomicstart = genomicstart;
     new->genomicend = genomicend;
 
@@ -1808,6 +3177,8 @@ Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Comp
 
     new->hittype = EXACT;
     new->genestrand = genestrand;
+    new->sarrayp = sarrayp;
+    new->improved_by_gmap_p = false;
 
     new->chrnum = new->effective_chrnum = chrnum;
     new->other_chrnum = 0;
@@ -1848,9 +3219,10 @@ Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Comp
     new->amb_nmatches_start = new->amb_nmatches_end = 0;
 
     new->start_ambiguous_p = new->end_ambiguous_p = false;
-    new->start_ambi = new->end_ambi = (int *) NULL;
+    new->start_ambcoords = new->end_ambcoords = (Univcoord_T *) NULL;
+    new->start_amb_knowni = new->end_amb_knowni = (int *) NULL;
     new->start_amb_nmismatches = new->end_amb_nmismatches = (int *) NULL;
-    new->start_nambi = new->end_nambi = 0;
+    new->start_nambcoords = new->end_nambcoords = 0;
     new->nchimera_known = 0;
     new->nchimera_novel = 0;
 
@@ -1871,18 +3243,25 @@ Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Comp
 T
 Stage3end_new_substitution (int *found_score, int nmismatches_whole, Univcoord_T left,
 			    int genomiclength, Compress_T query_compress,
-			    bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-			    Chrpos_T chrlength) {
+			    bool plusp, int genestrand, bool first_read_p,
+			    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
+			    Chrpos_T chrlength, bool sarrayp) {
   T new;
   Substring_T substring;
   Univcoord_T genomicstart, genomicend;
 
   if (plusp == true) {
-    genomicstart = left;
-    genomicend = left + genomiclength;
+    if ((genomicend = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicstart = left;
+    }
   } else {
-    genomicstart = left + genomiclength;
-    genomicend = left;
+    if ((genomicstart = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicend = left;
+    }
   }
 
   if ((substring = Substring_new(nmismatches_whole,chrnum,chroffset,chrhigh,chrlength,
@@ -1890,8 +3269,8 @@ Stage3end_new_substitution (int *found_score, int nmismatches_whole, Univcoord_T
 				 /*start_endtype*/END,/*end_endtype*/END,
 				 /*querystart*/0,/*queryend*/genomiclength,/*querylength*/genomiclength,
 				 /*alignstart*/genomicstart,/*alignend*/genomicend,
-				 genomiclength,/*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,
-				 /*trim_left_p*/true,/*trim_right_p*/true,
+				 genomiclength,/*extraleft*/0,/*extraright*/0,/*exactp*/false,
+				 plusp,genestrand,first_read_p,/*trim_left_p*/true,/*trim_right_p*/true,
 				 /*minlength*/genomiclength/2)) == NULL) {
     return (T) NULL;
 
@@ -1910,7 +3289,7 @@ Stage3end_new_substitution (int *found_score, int nmismatches_whole, Univcoord_T
     new->pairarray = (struct Pair_T *) NULL;
 
     new->deletion = (char *) NULL;
-    new->querylength_adj = genomiclength;
+    new->querylength_adj = new->querylength = genomiclength;
     new->genomicstart = genomicstart;
     new->genomicend = genomicend;
 
@@ -1931,6 +3310,8 @@ Stage3end_new_substitution (int *found_score, int nmismatches_whole, Univcoord_T
       new->hittype = SUB;
     }
     new->genestrand = genestrand;
+    new->sarrayp = sarrayp;
+    new->improved_by_gmap_p = false;
 
     new->chrnum = new->effective_chrnum = chrnum;
     new->other_chrnum = 0;
@@ -1982,9 +3363,10 @@ Stage3end_new_substitution (int *found_score, int nmismatches_whole, Univcoord_T
     new->amb_nmatches_start = new->amb_nmatches_end = 0;
 
     new->start_ambiguous_p = new->end_ambiguous_p = false;
-    new->start_ambi = new->end_ambi = (int *) NULL;
+    new->start_ambcoords = new->end_ambcoords = (Univcoord_T *) NULL;
+    new->start_amb_knowni = new->end_amb_knowni = (int *) NULL;
     new->start_amb_nmismatches = new->end_amb_nmismatches = (int *) NULL;
-    new->start_nambi = new->end_nambi = 0;
+    new->start_nambcoords = new->end_nambcoords = 0;
     new->nchimera_known = 0;
     new->nchimera_novel = 0;
 
@@ -2006,8 +3388,9 @@ Stage3end_new_substitution (int *found_score, int nmismatches_whole, Univcoord_T
 T
 Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmismatches1_whole, int nmismatches2_whole,
 			 Univcoord_T left, int genomiclength, Compress_T query_compress,
-			 int querylength, bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset,
-			 Univcoord_T chrhigh, Chrpos_T chrlength, int indel_penalty) {
+			 int querylength, bool plusp, int genestrand, bool first_read_p,
+			 Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+			 int indel_penalty, bool sarrayp) {
   T new;
   Substring_T substring1, substring2;
   int querystart1, queryend1, querystart2, queryend2;
@@ -2029,28 +3412,33 @@ Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmism
   queryend2 = querylength;
 
   if (plusp == true) {
-    genomicstart = left;
-    genomicend = left + genomiclength;
+    if ((genomicend = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicstart = left;
 
-    alignstart1 = genomicstart;
-    alignend1 = alignstart2 = genomicstart + indel_pos;
-    alignend2 = genomicend/* - nindels*/;
+      alignstart1 = genomicstart;
+      alignend1 = alignstart2 = genomicstart + indel_pos;
+      alignend2 = genomicend/* - nindels*/;
+    }
 
   } else {
-    genomicstart = left + genomiclength;
-    genomicend = left;
-
-    alignstart1 = genomicstart;
-    alignend1 = alignstart2 = genomicstart - indel_pos;
-    alignend2 = genomicend/* + nindels*/;
+    if ((genomicstart = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicend = left;
 
+      alignstart1 = genomicstart;
+      alignend1 = alignstart2 = genomicstart - indel_pos;
+      alignend2 = genomicend/* + nindels*/;
+    }
   }
 
   if ((substring1 = Substring_new(nmismatches1_whole,chrnum,chroffset,chrhigh,chrlength,
 				  left,genomicstart,genomicend,query_compress,
 				  /*start_endtype*/END,/*end_endtype*/INS,
 				  querystart1,queryend1,querylength,alignstart1,alignend1,genomiclength,
-				  /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,
+				  /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,first_read_p,
 				  /*trim_left_p (previously was end1_indel_p ? false : true)*/true,
 				  /*trim_right_p*/false,/*minlength*/0)) == NULL) {
     return (T) NULL;
@@ -2059,7 +3447,7 @@ Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmism
 					 left,genomicstart,genomicend,query_compress,
 					 /*start_endtype*/INS,/*end_endtype*/END,
 					 querystart2,queryend2,querylength,alignstart2,alignend2,genomiclength,
-					 /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,
+					 /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,first_read_p,
 					 /*trim_left_p*/false,
 					 /*trim_right_p (previously was end2_indel_p ? false : true)*/true,
 					 /*minlength*/0)) == NULL) {
@@ -2091,7 +3479,7 @@ Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmism
     new->pairarray = (struct Pair_T *) NULL;
 
     new->deletion = (char *) NULL;
-    new->querylength_adj = querylength /* - nindels */;
+    new->querylength_adj = new->querylength = querylength /* - nindels */;
     new->genomicstart = genomicstart;
     new->genomicend = genomicend;
 
@@ -2107,6 +3495,8 @@ Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmism
 
     new->hittype = INSERTION;
     new->genestrand = genestrand;
+    new->sarrayp = sarrayp;
+    new->improved_by_gmap_p = false;
 
     new->chrnum = new->effective_chrnum = chrnum;
     new->other_chrnum = 0;
@@ -2159,9 +3549,10 @@ Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmism
     new->amb_nmatches_start = new->amb_nmatches_end = 0;
 
     new->start_ambiguous_p = new->end_ambiguous_p = false;
-    new->start_ambi = new->end_ambi = (int *) NULL;
+    new->start_ambcoords = new->end_ambcoords = (Univcoord_T *) NULL;
+    new->start_amb_knowni = new->end_amb_knowni = (int *) NULL;
     new->start_amb_nmismatches = new->end_amb_nmismatches = (int *) NULL;
-    new->start_nambi = new->end_nambi = 0;
+    new->start_nambcoords = new->end_nambcoords = 0;
     new->nchimera_known = 0;
     new->nchimera_novel = 0;
 
@@ -2182,8 +3573,9 @@ Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmism
 T
 Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmismatches1_whole, int nmismatches2_whole,
 			Univcoord_T left, int genomiclength, Compress_T query_compress,
-			int querylength, bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset,
-			Univcoord_T chrhigh, Chrpos_T chrlength, int indel_penalty) {
+			int querylength, bool plusp, int genestrand, bool first_read_p,
+			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+			int indel_penalty, bool sarrayp) {
   T new;
   Substring_T substring1, substring2;
   int querystart1, queryend1, querystart2, queryend2;
@@ -2206,34 +3598,40 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
   queryend2 = querylength;
 
   if (plusp == true) {
-    genomicstart = left;
-    genomicend = left + genomiclength;
-
-    alignstart1 = genomicstart;
-    alignend1 = genomicstart + indel_pos;
-    alignstart2 = alignend1 + nindels;
-    alignend2 = genomicend/* + nindels*/;
+    if ((genomicend = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicstart = left;
 
-    /* left1 = left; */
-    left2 = left + nindels;
+      alignstart1 = genomicstart;
+      alignend1 = genomicstart + indel_pos;
+      alignstart2 = alignend1 + nindels;
+      alignend2 = genomicend/* + nindels*/;
 
-    debug3(printf("plusp is true.  genomicstart %lu, genomicend %lu, alignstart1 %lu, alignend1 %lu, alignstart2 %lu, alignend2 %lu, left1 %lu, left2 %lu\n",
-		  genomicstart,genomicend,alignstart1,alignend1,alignstart2,alignend2,left,left2));
+      /* left1 = left; */
+      left2 = left + nindels;
 
+      debug3(printf("plusp is true.  genomicstart %lu, genomicend %lu, alignstart1 %lu, alignend1 %lu, alignstart2 %lu, alignend2 %lu, left1 %lu, left2 %lu\n",
+		    genomicstart,genomicend,alignstart1,alignend1,alignstart2,alignend2,left,left2));
+    }
+      
   } else {
-    genomicstart = left + genomiclength;
-    genomicend = left;
+    if ((genomicstart = left + genomiclength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicend = left;
 
-    alignstart1 = genomicstart;
-    alignend1 = genomicstart - indel_pos;
-    alignstart2 = alignend1 - nindels;
-    alignend2 = genomicend/* - nindels*/;
+      alignstart1 = genomicstart;
+      alignend1 = genomicstart - indel_pos;
+      alignstart2 = alignend1 - nindels;
+      alignend2 = genomicend/* - nindels*/;
 
-    /* left1 = left; */
-    left2 = left + nindels;
+      /* left1 = left; */
+      left2 = left + nindels;
 
-    debug3(printf("plusp is false.  genomicstart %lu, genomicend %lu, alignstart1 %lu, alignend1 %lu, alignstart2 %lu, alignend2 %lu, left1 %lu, left2 %lu\n",
-		  genomicstart,genomicend,alignstart1,alignend1,alignstart2,alignend2,left,left2));
+      debug3(printf("plusp is false.  genomicstart %lu, genomicend %lu, alignstart1 %lu, alignend1 %lu, alignstart2 %lu, alignend2 %lu, left1 %lu, left2 %lu\n",
+		    genomicstart,genomicend,alignstart1,alignend1,alignstart2,alignend2,left,left2));
+    }
   }
 
 
@@ -2241,7 +3639,7 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
 				  left,genomicstart,genomicend,query_compress,
 				  /*start_endtype*/END,/*end_endtype*/DEL,
 				  querystart1,queryend1,querylength,alignstart1,alignend1,genomiclength,
-				  /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,
+				  /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,first_read_p,
 				  /*trim_left_p (previously was end1_indel_p ? false : true)*/true,
 				  /*trim_right_p*/false,/*minlength*/0)) == NULL) {
     return (T) NULL;
@@ -2250,7 +3648,7 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
 					 left,genomicstart,genomicend,query_compress,
 					 /*start_endtype*/DEL,/*end_endtype*/END,
 					 querystart2,queryend2,querylength,alignstart2,alignend2,genomiclength,
-					 /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,
+					 /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,first_read_p,
 					 /*trim_left_p*/false,
 					 /*trim_right_p (previously was end2_indel_p ? false : true) */true,
 					 /*minlength*/0)) == NULL) {
@@ -2296,7 +3694,7 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
     }
 #endif
 
-
+    new->querylength = querylength;
     new->querylength_adj = querylength + nindels;
     new->genomicstart = genomicstart;
     new->genomicend = genomicend;
@@ -2313,6 +3711,8 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
 
     new->hittype = DELETION;
     new->genestrand = genestrand;
+    new->sarrayp = sarrayp;
+    new->improved_by_gmap_p = false;
 
     new->chrnum = new->effective_chrnum = chrnum;
     new->other_chrnum = 0;
@@ -2363,9 +3763,10 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
     new->amb_nmatches_start = new->amb_nmatches_end = 0;
 
     new->start_ambiguous_p = new->end_ambiguous_p = false;
-    new->start_ambi = new->end_ambi = (int *) NULL;
+    new->start_ambcoords = new->end_ambcoords = (Univcoord_T *) NULL;
+    new->start_amb_knowni = new->end_amb_knowni = (int *) NULL;
     new->start_amb_nmismatches = new->end_amb_nmismatches = (int *) NULL;
-    new->start_nambi = new->end_nambi = 0;
+    new->start_nambcoords = new->end_nambcoords = 0;
     new->nchimera_known = 0;
     new->nchimera_novel = 0;
 
@@ -2387,19 +3788,26 @@ Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmisma
 T
 Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_acceptor,
 		      Substring_T donor, Substring_T acceptor, Chrpos_T distance,
-		      bool shortdistancep, int splicing_penalty, int querylength,
-		      int amb_nmatches, Intlist_T ambi_left, Intlist_T ambi_right,
+		      bool shortdistancep, int splicing_penalty, int querylength, int amb_nmatches,
+#ifdef LARGE_GENOMES
+		      Uint8list_T ambcoords_left, Uint8list_T ambcoords_right,
+#else
+		      Uintlist_T ambcoords_left, Uintlist_T ambcoords_right,
+#endif
+		      Intlist_T amb_knowni_left, Intlist_T amb_knowni_right,
 		      Intlist_T amb_nmismatches_left, Intlist_T amb_nmismatches_right,
-		      bool copy_donor_p, bool copy_acceptor_p, bool first_read_p, int sensedir) {
+		      bool copy_donor_p, bool copy_acceptor_p, bool first_read_p, int sensedir,
+		      bool sarrayp) {
   T new;
   int ignore;
   Substring_T substring_for_concordance; /* always the inner substring */
   
   new = (T) MALLOC_OUT(sizeof(*new));
-  debug0(printf("Stage3end_new_splice %p with sensedir %d\n",new,sensedir));
+  debug0(printf("Stage3end_new_splice %p with sensedir %d, donor substring %p and acceptor substring %p\n",
+		new,sensedir,donor,acceptor));
 
   new->deletion = (char *) NULL;
-  new->querylength_adj = querylength;
+  new->querylength_adj = new->querylength = querylength;
 
   if (donor == NULL) {
 #ifdef DONORIS1
@@ -2457,6 +3865,8 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
 
   new->pairarray = (struct Pair_T *) NULL;
 
+  new->sarrayp = sarrayp;
+  new->improved_by_gmap_p = false;
   if (donor == NULL) {
     new->hittype = HALFSPLICE_ACCEPTOR;
     new->genestrand = Substring_genestrand(acceptor);
@@ -2511,6 +3921,8 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
 #if 0
   } else if (merge_samechr_p == false) {
     new->hittype = DISTANT_SPLICE;
+    new->sarrayp = sarrayp;
+    new->improved_by_gmap_p = false;
     new->chrnum = 0;
     new->chroffset = 0;
     new->chrhigh = 0;
@@ -2518,6 +3930,8 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
 #endif
 
   } else {
+    new->sarrayp = sarrayp;
+    new->improved_by_gmap_p = false;
     if (Substring_chrnum(donor) == Substring_chrnum(acceptor)) {
       new->hittype = SAMECHR_SPLICE;
       new->genestrand = Substring_genestrand(donor);
@@ -2525,6 +3939,8 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
       new->chroffset = Substring_chroffset(donor);
       new->chrhigh = Substring_chrhigh(donor);
       new->chrlength = Substring_chrlength(donor);
+      new->plusp = Substring_plusp(donor); /* default value, used if merge_samechr_p is true */
+
     } else {
       new->hittype = TRANSLOC_SPLICE;
       new->genestrand = 0;
@@ -2572,48 +3988,121 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
   debug0(printf("  hittype is %s, genomicpos %u..%u\n",
 		hittype_string(new->hittype),new->genomicstart,new->genomicend));
 
+
+  new->amb_nmatches_start = new->amb_nmatches_end = 0;
+  new->start_ambiguous_p = new->end_ambiguous_p = false;
+
   if (new->genomicstart < new->genomicend) {
     new->low = new->genomicstart;
     new->high = new->genomicend;
 
-    if (ambi_left != NULL) {
+    if (ambcoords_left != NULL) {
       new->amb_nmatches_start = amb_nmatches;
+      new->start_ambiguous_p = true;
       new->amb_nmatches_end = 0;
-    } else if (ambi_right != NULL) {
+    } else if (ambcoords_right != NULL) {
       new->amb_nmatches_end = amb_nmatches;
+      new->end_ambiguous_p = true;
       new->amb_nmatches_start = 0;
+    } else if (donor == NULL) {
+      if (sensedir == SENSE_FORWARD) {
+	if ((new->amb_nmatches_start = amb_nmatches) > 0) {
+	  new->start_ambiguous_p = true;
+	}
+      } else if (sensedir == SENSE_ANTI) {
+	if ((new->amb_nmatches_end = amb_nmatches) > 0) {
+	  new->end_ambiguous_p = true;
+	}
+      } else {
+	abort();
+      }
+
+    } else if (acceptor == NULL) {
+      if (sensedir == SENSE_FORWARD) {
+	if ((new->amb_nmatches_end = amb_nmatches) > 0) {
+	  new->end_ambiguous_p = true;
+	}
+      } else if (sensedir == SENSE_ANTI) {
+	if ((new->amb_nmatches_start = amb_nmatches) > 0) {
+	  new->start_ambiguous_p = true;
+	}
+      } else {
+	abort();
+      }
+
     } else {
-      new->amb_nmatches_start = new->amb_nmatches_end = 0;
+      /* new->amb_nmatches_start = new->amb_nmatches_end = 0; */
     }
 
-    new->start_ambiguous_p = (ambi_left != NULL) ? true : false;
-    new->end_ambiguous_p = (ambi_right != NULL) ? true : false;
-    new->start_ambi = Intlist_to_array(&new->start_nambi,ambi_left);
-    new->end_ambi = Intlist_to_array(&new->end_nambi,ambi_right);
-    new->start_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_left);
-    new->end_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_right);
+#ifdef LARGE_GENOMES
+    new->start_ambcoords = Uint8list_to_array_out(&new->start_nambcoords,ambcoords_left);
+    new->end_ambcoords = Uint8list_to_array_out(&new->end_nambcoords,ambcoords_right);
+#else
+    new->start_ambcoords = Uintlist_to_array_out(&new->start_nambcoords,ambcoords_left);
+    new->end_ambcoords = Uintlist_to_array_out(&new->end_nambcoords,ambcoords_right);
+#endif
+    new->start_amb_knowni = Intlist_to_array_out(&new->start_nambcoords,amb_knowni_left);
+    new->end_amb_knowni = Intlist_to_array_out(&new->end_nambcoords,amb_knowni_right);
+    new->start_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_left);
+    new->end_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_right);
 
   } else {
     new->low = new->genomicend;
     new->high = new->genomicstart;
 
-    if (ambi_right != NULL) {
+    if (ambcoords_right != NULL) {
       new->amb_nmatches_start = amb_nmatches;
+      new->start_ambiguous_p = true;
       new->amb_nmatches_end = 0;
-    } else if (ambi_left != NULL) {
+    } else if (ambcoords_left != NULL) {
       new->amb_nmatches_end = amb_nmatches;
+      new->end_ambiguous_p = true;
       new->amb_nmatches_start = 0;
+    } else if (donor == NULL) {
+      /* Note: Same as for plus */
+      if (sensedir == SENSE_FORWARD) {
+	if ((new->amb_nmatches_start = amb_nmatches) > 0) {
+	  new->start_ambiguous_p = true;
+	}
+      } else if (sensedir == SENSE_ANTI) {
+	if ((new->amb_nmatches_end = amb_nmatches) > 0) {
+	  new->end_ambiguous_p = true;
+	}
+      } else {
+	abort();
+      }
+
+    } else if (acceptor == NULL) {
+      /* Note: Same as for plus */
+      if (sensedir == SENSE_FORWARD) {
+	if ((new->amb_nmatches_end = amb_nmatches) > 0) {
+	  new->end_ambiguous_p = true;
+	}
+      } else if (sensedir == SENSE_ANTI) {
+	if ((new->amb_nmatches_start = amb_nmatches) > 0) {
+	  new->start_ambiguous_p = true;
+	}
+      } else {
+	abort();
+      }
+
     } else {
-      new->amb_nmatches_start = new->amb_nmatches_end = 0;
+      /* new->amb_nmatches_start = new->amb_nmatches_end = 0; */
     }
 
-    new->start_ambiguous_p = (ambi_right != NULL) ? true : false;
-    new->end_ambiguous_p = (ambi_left != NULL) ? true : false;
-    new->start_ambi = Intlist_to_array(&new->start_nambi,ambi_right);
-    new->end_ambi = Intlist_to_array(&new->end_nambi,ambi_left);
-    new->start_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_right);
-    new->end_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_left);
+#ifdef LARGE_GENOMES
+    new->start_ambcoords = Uint8list_to_array_out(&new->start_nambcoords,ambcoords_right);
+    new->end_ambcoords = Uint8list_to_array_out(&new->end_nambcoords,ambcoords_left);
+#else
+    new->start_ambcoords = Uintlist_to_array_out(&new->start_nambcoords,ambcoords_right);
+    new->end_ambcoords = Uintlist_to_array_out(&new->end_nambcoords,ambcoords_left);
+#endif
+    new->start_amb_knowni = Intlist_to_array_out(&new->start_nambcoords,amb_knowni_right);
+    new->end_amb_knowni = Intlist_to_array_out(&new->end_nambcoords,amb_knowni_left);
+    new->start_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_right);
+    new->end_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_left);
   }
+  debug0(printf("start nambcoords %d, end nambcoords %d\n",new->start_nambcoords,new->end_nambcoords));
   new->genomiclength = new->high - new->low;
   new->guided_insertlength = 0U;
 
@@ -2629,7 +4118,9 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
     /* new->nchimera_novel--; */
   }
 
-  if (new->chrnum == 0 || (donor != NULL && acceptor != NULL && shortdistancep == false)) {
+  if (new->chrnum == 0 || (donor != NULL && acceptor != NULL && shortdistancep == false
+			   /* && merge_samechr_p == false*/)) {
+    /* Checking for merge_samechr_p leads to wrong mappingstart and mappingend for running GMAP */
     /* Always want the original query end */
     if (first_read_p == true) {
       if (invert_first_p == false) {
@@ -2741,6 +4232,7 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
       abort();
     }
   }
+  debug0(printf("plusp is %d\n",new->plusp));
 
   new->nmismatches_whole = nmismatches_donor + nmismatches_acceptor;
   new->score = new->ntscore = splicing_penalty + new->nmismatches_whole;
@@ -2826,7 +4318,12 @@ Stage3end_new_splice (int *found_score, int nmismatches_donor, int nmismatches_a
 
   assert(new->substring1 != NULL);
 
-  debug0(printf("Returning new splice %p at genomic %u..%u\n",new,new->genomicstart,new->genomicend));
+  debug0(printf("Returning new splice %p at genomic %u..%u, donor %p (%u => %u), acceptor %p (%u => %u)\n",
+		new,new->genomicstart,new->genomicend,new->substring_donor,
+		new->substring_donor == NULL ? 0 : Substring_left_genomicseg(new->substring_donor),
+		new->substring_donor == NULL ? 0 : Substring_splicecoord(new->substring_donor),
+		new->substring_acceptor,new->substring_acceptor == NULL ? 0 : Substring_left_genomicseg(new->substring_acceptor),
+		new->substring_acceptor == NULL ? 0 : Substring_splicecoord(new->substring_acceptor)));
   return new;
 }
 
@@ -2837,10 +4334,15 @@ T
 Stage3end_new_shortexon (int *found_score, Substring_T donor, Substring_T acceptor, Substring_T shortexon,
 			 Chrpos_T acceptor_distance, Chrpos_T donor_distance,
 			 int amb_nmatches_donor, int amb_nmatches_acceptor,
-			 Intlist_T ambi_left, Intlist_T ambi_right,
+#ifdef LARGE_GENOMES
+			 Uint8list_T ambcoords_left, Uint8list_T ambcoords_right,
+#else
+			 Uintlist_T ambcoords_left, Uintlist_T ambcoords_right,
+#endif
+			 Intlist_T amb_knowni_left, Intlist_T amb_knowni_right,
 			 Intlist_T amb_nmismatches_left, Intlist_T amb_nmismatches_right,
 			 bool copy_donor_p, bool copy_acceptor_p, bool copy_shortexon_p,
-			 int splicing_penalty, int querylength, int sensedir) {
+			 int splicing_penalty, int querylength, int sensedir, bool sarrayp) {
   T new;
   int ignore;
   
@@ -2848,9 +4350,11 @@ Stage3end_new_shortexon (int *found_score, Substring_T donor, Substring_T accept
   debug0(printf("Stage3end_new_shortexon %p\n",new));
 
   new->deletion = (char *) NULL;
-  new->querylength_adj = querylength;
+  new->querylength_adj = new->querylength = querylength;
 
   new->genestrand = Substring_genestrand(shortexon);
+  new->sarrayp = sarrayp;
+  new->improved_by_gmap_p = false;
   if (donor == NULL && acceptor == NULL) {
     new->hittype = ONE_THIRD_SHORTEXON;
     new->substring1 = copy_shortexon_p ? Substring_copy(shortexon) : shortexon;
@@ -2883,6 +4387,16 @@ Stage3end_new_shortexon (int *found_score, Substring_T donor, Substring_T accept
   }
   new->sensedir = sensedir;
 
+#if 0
+  Substring_assign_shortexon_prob(new->substring1);
+  if (new->substringD != NULL) {
+    Substring_assign_donor_prob(new->substringD);
+  }
+  if (new->substringA != NULL) {
+    Substring_assign_acceptor_prob(new->substringA);
+  }
+#endif
+
   new->pairarray = (struct Pair_T *) NULL;
 
   new->nindels = 0;
@@ -2912,47 +4426,61 @@ Stage3end_new_shortexon (int *found_score, Substring_T donor, Substring_T accept
     new->low = new->genomicstart;
     new->high = new->genomicend;
 
-    if (ambi_left != NULL) {
+    if (ambcoords_left != NULL) {
       new->amb_nmatches_start = (sensedir == SENSE_FORWARD) ? amb_nmatches_donor : amb_nmatches_acceptor;
     } else {
       new->amb_nmatches_start = 0;
     }
 
-    if (ambi_right != NULL) {
+    if (ambcoords_right != NULL) {
       new->amb_nmatches_end = (sensedir == SENSE_FORWARD) ? amb_nmatches_acceptor : amb_nmatches_donor;
     } else {
       new->amb_nmatches_end = 0;
     }
 
-    new->start_ambiguous_p = (ambi_left != NULL) ? true : false;
-    new->end_ambiguous_p = (ambi_right != NULL) ? true : false;
-    new->start_ambi = Intlist_to_array(&new->start_nambi,ambi_left);
-    new->end_ambi = Intlist_to_array(&new->end_nambi,ambi_right);
-    new->start_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_left);
-    new->end_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_right);
+    new->start_ambiguous_p = (ambcoords_left != NULL) ? true : false;
+    new->end_ambiguous_p = (ambcoords_right != NULL) ? true : false;
+#ifdef LARGE_GENOMES
+    new->start_ambcoords = Uint8list_to_array_out(&new->start_nambcoords,ambcoords_left);
+    new->end_ambcoords = Uint8list_to_array_out(&new->end_nambcoords,ambcoords_right);
+#else
+    new->start_ambcoords = Uintlist_to_array_out(&new->start_nambcoords,ambcoords_left);
+    new->end_ambcoords = Uintlist_to_array_out(&new->end_nambcoords,ambcoords_right);
+#endif
+    new->start_amb_knowni = Intlist_to_array_out(&new->start_nambcoords,amb_knowni_left);
+    new->end_amb_knowni = Intlist_to_array_out(&new->end_nambcoords,amb_knowni_right);
+    new->start_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_left);
+    new->end_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_right);
 
   } else {
     new->low = new->genomicend;
     new->high = new->genomicstart;
 
-    if (ambi_right != NULL) {
+    if (ambcoords_right != NULL) {
       new->amb_nmatches_start = (sensedir == SENSE_FORWARD) ? amb_nmatches_donor : amb_nmatches_acceptor;
     } else {
       new->amb_nmatches_start = 0;
     }
 
-    if (ambi_left != NULL) {
+    if (ambcoords_left != NULL) {
       new->amb_nmatches_end = (sensedir == SENSE_FORWARD) ? amb_nmatches_acceptor : amb_nmatches_donor;
     } else {
       new->amb_nmatches_end = 0;
     }
 
-    new->start_ambiguous_p = (ambi_right != NULL) ? true : false;
-    new->end_ambiguous_p = (ambi_left != NULL) ? true : false;
-    new->start_ambi = Intlist_to_array(&new->start_nambi,ambi_right);
-    new->end_ambi = Intlist_to_array(&new->end_nambi,ambi_left);
-    new->start_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_right);
-    new->end_amb_nmismatches = Intlist_to_array(&ignore,amb_nmismatches_left);
+    new->start_ambiguous_p = (ambcoords_right != NULL) ? true : false;
+    new->end_ambiguous_p = (ambcoords_left != NULL) ? true : false;
+#ifdef LARGE_GENOMES
+    new->start_ambcoords = Uint8list_to_array_out(&new->start_nambcoords,ambcoords_right);
+    new->end_ambcoords = Uint8list_to_array_out(&new->end_nambcoords,ambcoords_left);
+#else
+    new->start_ambcoords = Uintlist_to_array_out(&new->start_nambcoords,ambcoords_right);
+    new->end_ambcoords = Uintlist_to_array_out(&new->end_nambcoords,ambcoords_left);
+#endif
+    new->start_amb_knowni = Intlist_to_array_out(&new->start_nambcoords,amb_knowni_right);
+    new->end_amb_knowni = Intlist_to_array_out(&new->end_nambcoords,amb_knowni_left);
+    new->start_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_right);
+    new->end_amb_nmismatches = Intlist_to_array_out(&ignore,amb_nmismatches_left);
   }
   new->genomiclength = new->high - new->low;
   new->guided_insertlength = 0U;
@@ -3101,10 +4629,10 @@ Stage3end_new_shortexon (int *found_score, Substring_T donor, Substring_T accept
 
 T
 Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress_T query_compress,
-			int querylength, bool plusp, int genestrand,
+			int querylength, bool plusp, int genestrand, bool first_read_p,
 			Endtype_T start_endtype, Endtype_T end_endtype,
 			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
-			int max_mismatches_allowed) {
+			int max_mismatches_allowed, bool sarrayp) {
   T new;
   Substring_T substring;
   Univcoord_T genomicstart, genomicend, alignstart, alignend, alignstart_trim, alignend_trim;
@@ -3115,18 +4643,24 @@ Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress
 		Endtype_string(start_endtype),Endtype_string(end_endtype),left,querystart,queryend));
 
   if (plusp == true) {
-    genomicstart = left;
-    genomicend = left + querylength;
+    if ((genomicend = left + querylength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicstart = left;
 
-    alignstart = genomicstart + querystart;
-    alignend = genomicstart + queryend;
+      alignstart = genomicstart + querystart;
+      alignend = genomicstart + queryend;
+    }
 
   } else {
-    genomicstart = left + querylength;
-    genomicend = left;
+    if ((genomicstart = left + querylength) > chrhigh) {
+      return (T) NULL;
+    } else {
+      genomicend = left;
     
-    alignstart = genomicstart - querystart;
-    alignend = genomicstart - queryend;
+      alignstart = genomicstart - querystart;
+      alignend = genomicstart - queryend;
+    }
   }
 
   if (start_endtype == TERM) {
@@ -3143,15 +4677,15 @@ Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress
 
   /* Note: Changing querylength/3 to querylength/2 loses about 1% of concordant reads */
   minlength = querylength/3;
-  if (minlength > TERMINAL_MINLENGTH) {
-    minlength = TERMINAL_MINLENGTH;
+  if (minlength > TERMINAL_COMPUTE_MINLENGTH) {
+    minlength = TERMINAL_COMPUTE_MINLENGTH;
   }
 
   if ((substring = Substring_new(/*nmismatches_whole*/0,chrnum,chroffset,chrhigh,chrlength,
 				 left,genomicstart,genomicend,query_compress,
 				 start_endtype,end_endtype,querystart,queryend,querylength,
 				 alignstart,alignend,/*genomiclength*/querylength,
-				 /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,
+				 /*extraleft*/0,/*extraright*/0,/*exactp*/false,plusp,genestrand,first_read_p,
 				 trim_left_p,trim_right_p,minlength)) == NULL) {
     debug0(printf("returning NULL\n"));
     return (T) NULL;
@@ -3179,20 +4713,20 @@ Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress
 
   debug0(printf("alignstart_trim = %lu, alignend_trim = %lu\n",alignstart_trim,alignend_trim));
   if (plusp == true) {
-    debug0(printf("pos5 = %d, pos3 = %d\n",(int) (alignstart_trim-left),(int) (alignend_trim-left)));
+    debug0(printf("plus: pos5 = %d, pos3 = %d\n",(int) (alignstart_trim-left),(int) (alignend_trim-left)));
     nmismatches_whole =
       Genome_count_mismatches_substring(query_compress,left,/*pos5*/alignstart_trim-left,
-					/*pos3*/alignend_trim-left,/*plusp*/true,genestrand);
+					/*pos3*/alignend_trim-left,/*plusp*/true,genestrand,first_read_p);
   } else {
-    debug0(printf("pos5 = %d, pos3 = %d\n",(int) (alignend_trim-left),(int) (alignstart_trim-left)));
+    debug0(printf("minus: pos5 = %d, pos3 = %d\n",(int) (alignend_trim-left),(int) (alignstart_trim-left)));
     nmismatches_whole =
       Genome_count_mismatches_substring(query_compress,left,/*pos5*/alignend_trim-left,
-					/*pos3*/alignstart_trim-left,/*plusp*/false,genestrand);
+					/*pos3*/alignstart_trim-left,/*plusp*/false,genestrand,first_read_p);
   }
   debug0(printf("Recomputing nmismatches_whole as %d\n",nmismatches_whole));
 
-  if (0 && nmismatches_whole > max_mismatches_allowed) {
-    /* This is too dependent on the trimming algorithm */
+  if (nmismatches_whole > max_mismatches_allowed) {
+    /* This may be dependent on the trimming algorithm, but is needed to avoid bad terminal alignments */
     Substring_free(&substring);
     debug0(printf("returning NULL\n"));
     return (T) NULL;
@@ -3223,7 +4757,7 @@ Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress
   new->pairarray = (struct Pair_T *) NULL;
 
   new->deletion = (char *) NULL;
-  new->querylength_adj = querylength;
+  new->querylength_adj = new->querylength = querylength;
   new->genomicstart = genomicstart;
   new->genomicend = genomicend;
 
@@ -3240,6 +4774,8 @@ Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress
 
   new->hittype = TERMINAL;
   new->genestrand = genestrand;
+  new->sarrayp = sarrayp;
+  new->improved_by_gmap_p = false;
 
   new->chrnum = new->effective_chrnum = chrnum;
   new->other_chrnum = 0;
@@ -3289,9 +4825,10 @@ Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress
   new->amb_nmatches_start = new->amb_nmatches_end = 0;
 
   new->start_ambiguous_p = new->end_ambiguous_p = false;
-  new->start_ambi = new->end_ambi = (int *) NULL;
+  new->start_ambcoords = new->end_ambcoords = (Univcoord_T *) NULL;
+  new->start_amb_knowni = new->end_amb_knowni = (int *) NULL;
   new->start_amb_nmismatches = new->end_amb_nmismatches = (int *) NULL;
-  new->start_nambi = new->end_nambi = 0;
+  new->start_nambcoords = new->end_nambcoords = 0;
   new->nchimera_known = 0;
   new->nchimera_novel = 0;
 
@@ -3315,8 +4852,8 @@ Stage3end_new_gmap (int nmismatches_whole, int nmatches_posttrim, int max_match_
 		    Splicetype_T ambig_splicetype_5, Splicetype_T ambig_splicetype_3,
 		    double min_splice_prob, struct Pair_T *pairarray, int npairs,
 		    int nsegments, int nintrons, int nindelbreaks,
-		    Univcoord_T left, int genomiclength, bool plusp, int genestrand, int querylength,
-		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+		    Univcoord_T left, int genomiclength, bool plusp, int genestrand, bool first_read_p,
+		    int querylength, Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
 		    int cdna_direction, int sensedir) {
   T new;
   Univcoord_T genomicstart, genomicend, genomepos;
@@ -3330,7 +4867,11 @@ ATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAG
   */
   /* However, this leads to fatal bugs later, so restored these statements */
 
-  if (plusp == true) {
+  if (Stage3_bad_stretch_p(pairarray,npairs,/*pos5*/0,/*pos3*/querylength) == true) {
+    debug0(printf("Bad GMAP: bad stretch\n"));
+    return (T) NULL;
+
+  } else if (plusp == true) {
     genomicstart = left;
     if ((genomicend = left + genomiclength) > chrhigh) {
       return (T) NULL;
@@ -3371,7 +4912,7 @@ ATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAG
   new->nsegments = nsegments;
 
   new->deletion = (char *) NULL;
-  new->querylength_adj = querylength /* - nindels */;
+  new->querylength_adj = new->querylength = querylength /* - nindels */;
   new->genomicstart = genomicstart;
   new->genomicend = genomicend;
 
@@ -3388,6 +4929,8 @@ ATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAG
 
   new->hittype = GMAP;
   new->genestrand = genestrand;
+  new->sarrayp = false;
+  new->improved_by_gmap_p = false;
 
   new->chrnum = new->effective_chrnum = chrnum;
   new->other_chrnum = 0;
@@ -3448,20 +4991,16 @@ ATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAG
   new->nmatches_posttrim -= localsplicing_penalty * nintrons; /* for use in goodness_cmp procedures */
   new->nmatches_posttrim -= indel_penalty_middle * nindelbreaks; /* for use in goodness_cmp procedures */
 
-#if 1
-  if (new->nmatches_posttrim< querylength/2) {
+  if (new->nmatches_posttrim < querylength/2) {
     debug0(printf("  nmatches %d < querylength %d/2, so returning NULL\n",
 		  new->nmatches_posttrim,querylength));
     FREE_OUT(new);
     return NULL;
-  }
-#else
-  if (max_match_length < gmap_min_nconsecutive) {
+  } else if (max_match_length < gmap_min_nconsecutive) {
     debug0(printf("  max_match_length %d < %d, so returning NULL\n",max_match_length,gmap_min_nconsecutive));
     FREE_OUT(new);
     return NULL;
   }
-#endif
 
   new->gmap_max_match_length = max_match_length;
   new->gmap_min_splice_prob = min_splice_prob;
@@ -3546,11 +5085,12 @@ ATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAG
   }
 
   new->start_ambiguous_p = new->end_ambiguous_p = false;
-  new->start_ambi = new->end_ambi = (int *) NULL;
+  new->start_ambcoords = new->end_ambcoords = (Univcoord_T *) NULL;
+  new->start_amb_knowni = new->end_amb_knowni = (int *) NULL;
   new->start_amb_nmismatches = new->end_amb_nmismatches = (int *) NULL;
-  new->start_nambi = new->end_nambi = 0;
+  new->start_nambcoords = new->end_nambcoords = 0;
   new->nchimera_known = 0;
-  new->nchimera_novel = 0;
+  new->nchimera_novel = 0;	/* nintrons? */
 
   new->distance = 0U;
   new->acceptor_distance = new->donor_distance = 0U;
@@ -3600,6 +5140,8 @@ Stage3end_output_cmp (const void *a, const void *b) {
   } else if (y->hittype < x->hittype) {
     return +1;
 #endif
+#if 0
+    /* Don't want this if we want to randomize primary alignments */
   } else if (x->genomicstart < y->genomicstart) {
     return -1;
   } else if (y->genomicstart < x->genomicstart) {
@@ -3608,6 +5150,7 @@ Stage3end_output_cmp (const void *a, const void *b) {
     return -1;
   } else if (x->plusp == false && y->plusp == true) {
     return +1;
+#endif
   } else {
     return 0;
   }
@@ -3651,10 +5194,13 @@ Stage3pair_output_cmp (const void *a, const void *b) {
     return -1;
   } else if (y->score < x->score) {
     return +1;
+#if 0
+    /* Don't want this if we want to randomize primary alignments */
   } else if (x->low < y->low) {
     return -1;
   } else if (y->low < x->low) {
     return +1;
+#endif
   } else {
     return 0;
   }
@@ -3662,7 +5208,7 @@ Stage3pair_output_cmp (const void *a, const void *b) {
 
 
 
-static double
+static float
 Stage3end_compute_mapq (Stage3end_T this, Compress_T query_compress_fwd, Compress_T query_compress_rev,
 			char *quality_string, bool trim_terminals_p) {
 
@@ -3835,12 +5381,14 @@ Stage3end_eval_and_sort (int *npaths, int *first_absmq, int *second_absmq,
 			 Compress_T query_compress_fwd, Compress_T query_compress_rev,
 			 Genome_T genome, char *quality_string, bool displayp) {
   char *query;
-  double maxlik, loglik;
-  double total, q;		/* For Bayesian mapq calculation */
+  float maxlik, loglik;
+  float total, q;		/* For Bayesian mapq calculation */
   int compute_npaths;
-  int i;
   bool non_terminal_p;
 
+  int randomi, i;
+  Stage3end_T temp;
+
   if (*npaths == 0) {
     /* Skip */
     *first_absmq = 0;
@@ -3875,8 +5423,26 @@ Stage3end_eval_and_sort (int *npaths, int *first_absmq, int *second_absmq,
 			     quality_string,/*trim_terminals_p*/non_terminal_p ? false : true);
     }
 
-    /* Sort by nmatches, then mapq.  Enforce monotonicity. */
+    /* Sort by nmatches, then mapq */
     qsort(stage3array,*npaths,sizeof(Stage3end_T),Stage3end_output_cmp);
+
+    if (want_random_p) {
+      /* Randomize among best alignments */
+      i = 1;
+      while (i < *npaths && Stage3end_output_cmp(&(stage3array[i]),&(stage3array[0])) == 0) {
+	i++;
+      }
+      if (i > 1) {		/* i is number of ties */
+	/* randomi = (int) ((double) i * rand()/((double) RAND_MAX + 1.0)); */
+	randomi = (int) (rand() / (((double) RAND_MAX + 1.0) / (double) i));
+	/* fprintf(stderr,"%d dups => random %d\n",i,randomi); */
+	temp = stage3array[0];
+	stage3array[0] = stage3array[randomi];
+	stage3array[randomi] = temp;
+      }
+    }
+
+    /* Enforce monotonicity */
     for (i = *npaths - 1; i > 0; i--) {
       if (stage3array[i-1]->mapq_loglik < stage3array[i]->mapq_loglik) {
 	stage3array[i-1]->mapq_loglik = stage3array[i]->mapq_loglik;
@@ -3914,7 +5480,7 @@ Stage3end_eval_and_sort (int *npaths, int *first_absmq, int *second_absmq,
     /* Compute Bayesian mapq */
     total = 0.0;
     for (i = 0; i < *npaths; i++) {
-      total += (stage3array[i]->mapq_loglik = exp(stage3array[i]->mapq_loglik));
+      total += (stage3array[i]->mapq_loglik = fasterexp(stage3array[i]->mapq_loglik));
     }
 
     /* Obtain posterior probabilities of being true */
@@ -3980,31 +5546,33 @@ pair_insert_length (Stage3end_T hit5, Stage3end_T hit3) {
     return 0;
   }
 
-  if (Substring_overlap_p(hit5->substring1,hit3->substring1)) {
-    return Substring_insert_length(hit5->substring1,hit3->substring1);
-  } else if (hit5->substring2 != NULL && Substring_overlap_p(hit5->substring2,hit3->substring1)) {
-    return Substring_insert_length(hit5->substring2,hit3->substring1);
-  } else if (hit5->substring0 != NULL && Substring_overlap_p(hit5->substring0,hit3->substring1)) {
-    return Substring_insert_length(hit5->substring0,hit3->substring1);
-  }
+  if (hit5->chrnum != 0 && hit3->chrnum != 0) {
+    if (Substring_overlap_p(hit5->substring1,hit3->substring1)) {
+      return Substring_insert_length(hit5->substring1,hit3->substring1);
+    } else if (hit5->substring2 != NULL && Substring_overlap_p(hit5->substring2,hit3->substring1)) {
+      return Substring_insert_length(hit5->substring2,hit3->substring1);
+    } else if (hit5->substring0 != NULL && Substring_overlap_p(hit5->substring0,hit3->substring1)) {
+      return Substring_insert_length(hit5->substring0,hit3->substring1);
+    }
   
-  if (hit3->substring2 != NULL) {
-    if (Substring_overlap_p(hit5->substring1,hit3->substring2)) {
-      return Substring_insert_length(hit5->substring1,hit3->substring2);
-    } else if (hit5->substring2 != NULL && Substring_overlap_p(hit5->substring2,hit3->substring2)) {
-      return Substring_insert_length(hit5->substring2,hit3->substring2);
-    } else if (hit5->substring0 != NULL && Substring_overlap_p(hit5->substring0,hit3->substring2)) {
-      return Substring_insert_length(hit5->substring0,hit3->substring2);
+    if (hit3->substring2 != NULL) {
+      if (Substring_overlap_p(hit5->substring1,hit3->substring2)) {
+	return Substring_insert_length(hit5->substring1,hit3->substring2);
+      } else if (hit5->substring2 != NULL && Substring_overlap_p(hit5->substring2,hit3->substring2)) {
+	return Substring_insert_length(hit5->substring2,hit3->substring2);
+      } else if (hit5->substring0 != NULL && Substring_overlap_p(hit5->substring0,hit3->substring2)) {
+	return Substring_insert_length(hit5->substring0,hit3->substring2);
+      }
     }
-  }
 
-  if (hit3->substring0 != NULL) {
-    if (Substring_overlap_p(hit5->substring1,hit3->substring0)) {
-      return Substring_insert_length(hit5->substring1,hit3->substring0);
-    } else if (hit5->substring2 != NULL && Substring_overlap_p(hit5->substring2,hit3->substring0)) {
-      return Substring_insert_length(hit5->substring2,hit3->substring0);
-    } else if (hit5->substring0 != NULL && Substring_overlap_p(hit5->substring0,hit3->substring0)) {
-      return Substring_insert_length(hit5->substring0,hit3->substring0);
+    if (hit3->substring0 != NULL) {
+      if (Substring_overlap_p(hit5->substring1,hit3->substring0)) {
+	return Substring_insert_length(hit5->substring1,hit3->substring0);
+      } else if (hit5->substring2 != NULL && Substring_overlap_p(hit5->substring2,hit3->substring0)) {
+	return Substring_insert_length(hit5->substring2,hit3->substring0);
+      } else if (hit5->substring0 != NULL && Substring_overlap_p(hit5->substring0,hit3->substring0)) {
+	return Substring_insert_length(hit5->substring0,hit3->substring0);
+      }
     }
   }
 
@@ -4033,6 +5601,7 @@ pair_insert_length (Stage3end_T hit5, Stage3end_T hit3) {
 }
 
 
+
 /* For unpaired ends */
 static Chrpos_T
 pair_insert_length_unpaired (Stage3end_T hit5, Stage3end_T hit3) {
@@ -4057,12 +5626,14 @@ Stage3end_eval_and_sort_guided (int *npaths, int *first_absmq, int *second_absmq
 				Compress_T query_compress_fwd, Compress_T query_compress_rev,
 				Genome_T genome, char *quality_string, bool displayp) {
   char *query;
-  double maxlik, loglik;
-  double total, q;		/* For Bayesian mapq calculation */
+  float maxlik, loglik;
+  float total, q;		/* For Bayesian mapq calculation */
   int compute_npaths;
-  int i;
   bool non_terminal_p;
 
+  int randomi, i;
+  Stage3end_T temp;
+
   if (*npaths == 0) {
     /* Skip */
     *first_absmq = 0;
@@ -4097,13 +5668,31 @@ Stage3end_eval_and_sort_guided (int *npaths, int *first_absmq, int *second_absmq
 			     quality_string,/*trim_terminals_p*/non_terminal_p ? false : true);
     }
 
-    /* Compute insert_length relative to guide */
+    /* Compute insert_length relative to guide.  This is the only change from the unguided procedure. */
     for (i = 0; i < *npaths; i++) {
       stage3array[i]->guided_insertlength = pair_insert_length_unpaired(stage3array[i],guide);
     }
 
-    /* Sort by nmatches, then mapq.  Enforce monotonicity. */
+    /* Sort by nmatches, then mapq */
     qsort(stage3array,*npaths,sizeof(Stage3end_T),Stage3end_output_cmp);
+
+    if (want_random_p) {
+      /* Randomize among best alignments */
+      i = 1;
+      while (i < *npaths && Stage3end_output_cmp(&(stage3array[i]),&(stage3array[0])) == 0) {
+	i++;
+      }
+      if (i > 1) {		/* i is number of ties */
+	/* randomi = (int) ((double) i * rand()/((double) RAND_MAX + 1.0)); */
+	randomi = (int) (rand() / (((double) RAND_MAX + 1.0) / (double) i));
+	/* fprintf(stderr,"%d dups => random %d\n",i,randomi); */
+	temp = stage3array[0];
+	stage3array[0] = stage3array[randomi];
+	stage3array[randomi] = temp;
+      }
+    }
+
+    /* Enforce monotonicity */
     for (i = *npaths - 1; i > 0; i--) {
       if (stage3array[i-1]->mapq_loglik < stage3array[i]->mapq_loglik) {
 	stage3array[i-1]->mapq_loglik = stage3array[i]->mapq_loglik;
@@ -4141,7 +5730,7 @@ Stage3end_eval_and_sort_guided (int *npaths, int *first_absmq, int *second_absmq
     /* Compute Bayesian mapq */
     total = 0.0;
     for (i = 0; i < *npaths; i++) {
-      total += (stage3array[i]->mapq_loglik = exp(stage3array[i]->mapq_loglik));
+      total += (stage3array[i]->mapq_loglik = fasterexp(stage3array[i]->mapq_loglik));
     }
 
     /* Obtain posterior probabilities of being true */
@@ -4484,23 +6073,84 @@ Stage3end_optimal_score (List_T hitlist, int cutoff_level, int suboptimal_mismat
 }
 
 
+static void
+unalias_circular (T hit) {
+  Chrpos_T chrlength = hit->chrlength;
+
+  debug12(printf("Calling unalias_circular\n"));
+  assert(hit->alias == +1);
+  if (hit->hittype == GMAP) {
+    Pair_unalias_circular(hit->pairarray,hit->npairs,chrlength);
+
+  } else {
+    Substring_unalias_circular(hit->substring0);
+    Substring_unalias_circular(hit->substring1);
+    Substring_unalias_circular(hit->substring2);
+  }
+
+  /* Doesn't fix hitpair->low and hitpair->high */
+  hit->genomicstart -= chrlength;
+  hit->genomicend -= chrlength;
+  hit->low -= chrlength;
+  hit->high -= chrlength;
+
+  hit->alias = -1;
+
+  return;
+}
+
+
+#if 0
+List_T
+Stage3end_unalias_circular (List_T hitlist) {
+  List_T p;
+  T hit;
+
+  for (p = hitlist; p != NULL; p = p->rest) {
+    hit = (T) p->first;
+    if (hit->alias == +1) {
+      unalias_circular(hit);
+    }
+  }
+
+  return hitlist;
+}
+#endif
+
 List_T
 Stage3end_remove_circular_alias (List_T hitlist) {
   List_T newlist = NULL, p;
   T hit;
+  int trim;
+
+  debug12(printf("Calling Stage3end_remove_circular_alias\n"));
 
   for (p = hitlist; p != NULL; p = p->rest) {
     hit = (T) p->first;
+
+    if (hit->alias == +1) {
+      /* First, try to salvage alias +1 */
+      unalias_circular(hit);
+    }
+
     if (hit->chrnum == 0) {
       /* Distant splice */
       newlist = List_push(newlist,(void *) hit);
 
-    } else if (hit->low >= hit->chroffset + hit->chrlength) {
-      /* All in circular alias */
-      Stage3end_free(&hit);
-
     } else {
-      newlist = List_push(newlist,(void *) hit);
+      if (hit->plusp == true) {
+	trim = hit->trim_left;
+      } else {
+	trim = hit->trim_right;
+      }
+
+      if (hit->low + trim >= hit->chroffset + hit->chrlength) {
+	/* All in circular alias */
+	Stage3end_free(&hit);
+
+      } else {
+	newlist = List_push(newlist,(void *) hit);
+      }
     }
   }
 
@@ -4532,15 +6182,34 @@ Stage3end_noptimal (List_T hitlist) {
 }
 
 
+static Univcoord_T
+normalize_coord (Univcoord_T orig, int alias, Chrpos_T chrlength) {
+  if (alias > 0) {
+    return orig - chrlength;
+  } else {
+    return orig;
+  }
+}
+
+
+
 static int
 duplicate_sort_cmp (const void *a, const void *b) {
   int cmp;
   T x = * (T *) a;
   T y = * (T *) b;
+  Univcoord_T x_genomicstart, x_genomicend, y_genomicstart, y_genomicend;
 
-  if (x->genomicstart < y->genomicstart) {
+  x_genomicstart = normalize_coord(x->genomicstart,x->alias,x->chrlength);
+  x_genomicend = normalize_coord(x->genomicend,x->alias,x->chrlength);
+
+  y_genomicstart = normalize_coord(y->genomicstart,y->alias,y->chrlength);
+  y_genomicend = normalize_coord(y->genomicend,y->alias,y->chrlength);
+
+  
+  if (x_genomicstart < y_genomicstart) {
     return -1;
-  } else if (x->genomicstart > y->genomicstart) {
+  } else if (x_genomicstart > y_genomicstart) {
     return +1;
   } else if (x->hittype < y->hittype) {
     return -1;
@@ -4550,16 +6219,20 @@ duplicate_sort_cmp (const void *a, const void *b) {
     return -1;
   } else if (x->genomicend > y->genomicend) {
     return +1;
-  } else if ((cmp = Substring_compare(x->substring1,y->substring1)) != 0) {
+  } else if ((cmp = Substring_compare(x->substring1,y->substring1,x->alias,y->alias,x->chrlength,y->chrlength)) != 0) {
     return cmp;
-  } else if ((cmp = Substring_compare(x->substring2,y->substring2)) != 0) {
+  } else if ((cmp = Substring_compare(x->substring2,y->substring2,x->alias,y->alias,x->chrlength,y->chrlength)) != 0) {
     return cmp;
-  } else if ((cmp = Substring_compare(x->substring0,y->substring0)) != 0) {
+  } else if ((cmp = Substring_compare(x->substring0,y->substring0,x->alias,y->alias,x->chrlength,y->chrlength)) != 0) {
     return cmp;
   } else if (x->indel_low < y->indel_low) {
     return -1;
   } else if (y->indel_low < x->indel_low) {
     return +1;
+  } else if (x->sarrayp == true && y->sarrayp == false) {
+    return -1;
+  } else if (x->sarrayp == false && y->sarrayp == true) {
+    return +1;
   } else {
     return 0;
   }
@@ -4572,23 +6245,33 @@ duplicate_equiv_cmp (const void *a, const void *b) {
   T x = * (T *) a;
   T y = * (T *) b;
 
-  if (x->genomicstart < y->genomicstart) {
+  Univcoord_T x_genomicstart, x_genomicend, y_genomicstart, y_genomicend;
+
+  x_genomicstart = normalize_coord(x->genomicstart,x->alias,x->chrlength);
+  x_genomicend = normalize_coord(x->genomicend,x->alias,x->chrlength);
+
+  y_genomicstart = normalize_coord(y->genomicstart,y->alias,y->chrlength);
+  y_genomicend = normalize_coord(y->genomicend,y->alias,y->chrlength);
+
+  if (x_genomicstart < y_genomicstart) {
     return -1;
-  } else if (x->genomicstart > y->genomicstart) {
+  } else if (x_genomicstart > y_genomicstart) {
     return +1;
+#if 0
   } else if (x->hittype < y->hittype) {
     return -1;
   } else if (x->hittype > y->hittype) {
     return +1;
-  } else if (x->genomicend < y->genomicend) {
+#endif
+  } else if (x_genomicend < y_genomicend) {
     return -1;
-  } else if (x->genomicend > y->genomicend) {
+  } else if (x_genomicend > y_genomicend) {
     return +1;
-  } else if ((cmp = Substring_compare(x->substring1,y->substring1)) != 0) {
+  } else if ((cmp = Substring_compare(x->substring1,y->substring1,x->alias,y->alias,x->chrlength,y->chrlength)) != 0) {
     return cmp;
-  } else if ((cmp = Substring_compare(x->substring2,y->substring2)) != 0) {
+  } else if ((cmp = Substring_compare(x->substring2,y->substring2,x->alias,y->alias,x->chrlength,y->chrlength)) != 0) {
     return cmp;
-  } else if ((cmp = Substring_compare(x->substring0,y->substring0)) != 0) {
+  } else if ((cmp = Substring_compare(x->substring0,y->substring0,x->alias,y->alias,x->chrlength,y->chrlength)) != 0) {
     return cmp;
 #if 0
   } else if (x->indel_low < y->indel_low) {
@@ -4596,6 +6279,13 @@ duplicate_equiv_cmp (const void *a, const void *b) {
   } else if (y->indel_low < x->indel_low) {
     return +1;
 #endif
+#if 0
+    /* Want to sort by sarrayp, but still consider them equal */
+  } else if (x->sarrayp == true && y->sarrayp == false) {
+    return -1;
+  } else if (x->sarrayp == false && y->sarrayp == true) {
+    return +1;
+#endif
   } else {
     return 0;
   }
@@ -4775,6 +6465,7 @@ Stage3end_mark_ambiguous_splices (bool *ambiguousp, List_T hitlist) {
 
 #endif
 
+#ifdef DEBUG7
 static void
 Stage3end_print_substrings (Stage3end_T hit) {
   Substring_print_ends(hit->substring1,hit->chrnum);
@@ -4782,6 +6473,7 @@ Stage3end_print_substrings (Stage3end_T hit) {
   Substring_print_ends(hit->substring0,hit->chrnum);
   return;
 }
+#endif
 
 
 #if 0
@@ -4807,7 +6499,7 @@ Stage3end_equal_p (Stage3end_T hit5, Stage3end_T hit3) {
 const Except_T Duplicate_Pairing = { "Duplicates both seen in pairing" };
 
 List_T
-Stage3end_remove_duplicates (List_T hitlist, Shortread_T queryseq1, Shortread_T queryseq2) {
+Stage3end_remove_duplicates (List_T hitlist) {
 #ifdef DEBUG7
   List_T p;
 #endif
@@ -4832,9 +6524,9 @@ Stage3end_remove_duplicates (List_T hitlist, Shortread_T queryseq1, Shortread_T
   debug7(
 	 for (i = 0; i < n; i++) {
 	   x = hits[i];
-	   printf("  Initial %d (%s): %p #%d:%lu..%lu, nmatches %d, score %d ",
+	   printf("  Initial %d (%s): %p #%d:%lu..%lu, alias %d, nmatches %d, score %d ",
 		  i,hittype_string(x->hittype),x,x->chrnum,x->genomicstart-x->chroffset,x->genomicend-x->chroffset,
-		  x->nmatches,x->score);
+		  x->alias,x->nmatches,x->score);
 	   Stage3end_print_substrings(x);
 	   printf("\n");
 	 }
@@ -4863,10 +6555,16 @@ Stage3end_remove_duplicates (List_T hitlist, Shortread_T queryseq1, Shortread_T
 	if (y->paired_usedp == true) {
 	  if (usedi >= 0) {
 	    debug7(printf("  #%d equivalent to #%d and both used (%p and %p)\n",k,usedi,hits[k],hits[usedi]));
+#if 0
+	    /* This doesn't matter anymore.  Example from NM_001033853:
+TTGCCCTTGGTCACCCCGATGACGTCGATCATCTCATCCTGCCCAAACACTTGGTTCACAGGTACCTGCTGCTCA
+AGTGATGAATCCAAGAGGCGTTTCTATAAGAATTGGCATAAATCTAAGAAGAAGGCCCACCTGATGGAGATCCAG */
 	    fprintf(stderr,"Duplicates of Stage3end_T both seen\n");
+#if 0
+	    /* No longer providing queryseq1 and queryseq2 */
 	    Shortread_print_query_pairedend_fasta(stderr,queryseq1,queryseq2,
 						  /*invert_first_p*/false,/*invert_second_p*/true);
-#ifdef CHECK_ASSERTIONS
+#endif
 	    Except_raise(&Duplicate_Pairing, __FILE__, __LINE__);
 #endif
 	  } else {
@@ -4946,6 +6644,31 @@ Stage3end_remove_duplicates (List_T hitlist, Shortread_T queryseq1, Shortread_T
 }
 
 
+List_T
+Stage3end_filter_terminals (List_T hits, int querylength) {
+  List_T filtered = NULL, p;
+  T hit;
+  int minlength;
+
+  minlength = 2*querylength/3;
+  if (terminal_output_minlength > minlength) {
+    minlength = terminal_output_minlength;
+  }
+
+  for (p = hits; p != NULL; p = p->rest) {
+    hit = (T) p->first;
+    if (hit->hittype == TERMINAL && Stage3end_terminal_length(hit) < minlength) {
+      Stage3end_free(&hit);
+    } else {
+      filtered = List_push(filtered,(void *) hit);
+    }
+  }
+
+  List_free(&hits);
+  return filtered;
+}
+
+
 /* Used for eliminating exact duplicates.  Also sorts secondarily by hittype. */
 static int
 hit_sort_cmp (const void *a, const void *b) {
@@ -5010,6 +6733,10 @@ hit_sort_cmp (const void *a, const void *b) {
     return -1;
   } else if (y->indel_low < x->indel_low) {
     return +1;
+  } else if (x->sarrayp == true && y->sarrayp == false) {
+    return -1;
+  } else if (x->sarrayp == false && y->sarrayp == true) {
+    return +1;
   } else {
     return 0;
   }
@@ -5053,6 +6780,9 @@ hit_equiv_cmp (Stage3end_T x, Stage3end_T y) {
   } else if (y->nmatches_posttrim > x->nmatches_posttrim) {
     return +1;
 #endif
+
+#if 0
+    /* Causes GMAP and non-GMAP to not be recognized as equivalent */
   } else if (x->nchimera_novel < y->nchimera_novel) {
     return -1;
   } else if (y->nchimera_novel < x->nchimera_novel) {
@@ -5061,6 +6791,7 @@ hit_equiv_cmp (Stage3end_T x, Stage3end_T y) {
     return -1;
   } else if (y->nchimera_known > x->nchimera_known) {
     return +1;
+#endif
 
 #if 0
   } else if (x->indel_low < y->indel_low) {
@@ -5069,6 +6800,13 @@ hit_equiv_cmp (Stage3end_T x, Stage3end_T y) {
     return +1;
 #endif
 
+#if 0
+  } else if (x->sarrayp == true && y->sarrayp == false) {
+    return -1;
+  } else if (x->sarrayp == false && y->sarrayp == true) {
+    return +1;
+#endif
+
   } else {
     return 0;
   }
@@ -5274,15 +7012,16 @@ Stage3end_remove_overlaps (List_T hitlist, bool finalp) {
 
 
   /* Step 1.  Check for exact duplicates */
+  /* Probably don't want to eliminate aliases at this point */
   debug7(printf("Checking for exact duplicates\n"));
   qsort(hits,n,sizeof(Stage3end_T),hit_sort_cmp);
 
   debug7(
 	 for (i = 0; i < n; i++) {
 	   hit = hits[i];
-	   printf("  Initial %d (%s): %p #%d:%lu..%lu, nmatches %d, score %d\n",
+	   printf("  Initial %d (%s): %p #%d:%lu..%lu, alias %d, nmatches %d, score %d\n",
 		  i,hittype_string(hit->hittype),hit,hit->chrnum,hit->genomicstart-hit->chroffset,hit->genomicend-hit->chroffset,
-		  hit->nmatches,hit->score);
+		  hit->alias,hit->nmatches,hit->score);
 	 }
 	 );
 
@@ -5773,32 +7512,44 @@ Stage3end_resolve_multimapping (List_T hits) {
 
 
 static void
-print_alignment_info (FILE *fp, int nblocks, int score, int mapq_score) {
+print_alignment_info (FILE *fp, int nblocks, int score, int mapq_score, bool sarrayp) {
   fprintf(fp,"segs:%d,align_score:%d,mapq:%d",nblocks,score,mapq_score);
+  if (sarrayp == true) {
+    fprintf(fp,",method:sa");
+  }
   return;
 }
 
 
 Pairtype_T
 Stage3_determine_pairtype (T hit5, T hit3) {
+  debug14(printf("Entered Stage3_determine_pairtype\n"));
   if (hit5->effective_chrnum != hit3->effective_chrnum) {
+    debug14(printf("Returning unpaired\n"));
     return UNPAIRED;
   } else if (hit5->plusp != hit3->plusp) {
+    debug14(printf("Returning paired_inversion\n"));
     return PAIRED_INVERSION;
   } else if (hit5->plusp == true) {
     if (hit3->genomicend < hit5->genomicstart) {
+      debug14(printf("Returning paired_scramble\n"));
       return PAIRED_SCRAMBLE;
     } else if (hit3->genomicstart > hit5->genomicend + pairmax) {
+      debug14(printf("Returning paired_toolong\n"));
       return PAIRED_TOOLONG;
     } else {
+      debug14(printf("Returning concordant\n"));
       return CONCORDANT;
     }
   } else {
     if (hit3->genomicend > hit5->genomicstart) {
+      debug14(printf("Returning paired_scramble\n"));
       return PAIRED_SCRAMBLE;
     } else if (hit3->genomicstart + pairmax < hit5->genomicend) {
+      debug14(printf("Returning paired_toolong\n"));
       return PAIRED_TOOLONG;
     } else {
+      debug14(printf("Returning concordant\n"));
       return CONCORDANT;
     }
   }
@@ -5885,7 +7636,7 @@ print_single (FILE *fp, T this, int score, Univ_IIT_T chromosome_iit, Shortread_
 
   /* Alignment info */
   fprintf(fp,"\t");
-  print_alignment_info(fp,/*nblocks*/1,score,mapq_score);
+  print_alignment_info(fp,/*nblocks*/1,score,mapq_score,this->sarrayp);
 
   /* Pairing info */
   if (hit5 != NULL && hit3 != NULL) {
@@ -5917,7 +7668,7 @@ print_insertion (FILE *fp, T this, int score, Univ_IIT_T chromosome_iit, Shortre
 			      queryseq,chr,invertp);
   /* Alignment info */
   fprintf(fp,"\t");
-  print_alignment_info(fp,/*nblocks*/2,score,mapq_score);
+  print_alignment_info(fp,/*nblocks*/2,score,mapq_score,this->sarrayp);
 
   /* Pairing info */
   if (hit5 != NULL && hit3 != NULL) {
@@ -5954,7 +7705,7 @@ print_deletion (FILE *fp, T this, int score, Univ_IIT_T chromosome_iit, Shortrea
 			     queryseq,chr,invertp);
   /* Alignment info */
   fprintf(fp,"\t");
-  print_alignment_info(fp,/*nblocks*/2,score,mapq_score);
+  print_alignment_info(fp,/*nblocks*/2,score,mapq_score,this->sarrayp);
 
   /* Pairing info */
   if (hit5 != NULL && hit3 != NULL) {
@@ -6010,7 +7761,7 @@ print_splice (FILE *fp, T chimera, int score,
 
     /* Alignment info */
     fprintf(fp,"\t");
-    print_alignment_info(fp,/*nblocks*/1,score,mapq_score);
+    print_alignment_info(fp,/*nblocks*/1,score,mapq_score,chimera->sarrayp);
 
     /* Pairing info */
     if (hit5 != NULL && hit3 != NULL) {
@@ -6031,7 +7782,7 @@ print_splice (FILE *fp, T chimera, int score,
 
     /* Alignment info */
     fprintf(fp,"\t");
-    print_alignment_info(fp,/*nblocks*/1,score,mapq_score);
+    print_alignment_info(fp,/*nblocks*/1,score,mapq_score,chimera->sarrayp);
 
     /* Pairing info */
     if (hit5 != NULL && hit3 != NULL) {
@@ -6046,7 +7797,7 @@ print_splice (FILE *fp, T chimera, int score,
 			  queryseq,chromosome_iit,acceptor,chimera->distance);
     /* Alignment info */
     fprintf(fp,"\t");
-    print_alignment_info(fp,/*nblocks*/2,score,mapq_score);
+    print_alignment_info(fp,/*nblocks*/2,score,mapq_score,chimera->sarrayp);
 
     /* Pairing info */
     if (hit5 != NULL && hit3 != NULL) {
@@ -6066,7 +7817,7 @@ print_splice (FILE *fp, T chimera, int score,
 			     chromosome_iit,donor,chimera->distance);
     /* Alignment info */
     fprintf(fp,"\t");
-    print_alignment_info(fp,/*nblocks*/2,score,mapq_score);
+    print_alignment_info(fp,/*nblocks*/2,score,mapq_score,chimera->sarrayp);
 
     /* Pairing info */
     if (hit5 != NULL && hit3 != NULL) {
@@ -6086,7 +7837,7 @@ print_splice (FILE *fp, T chimera, int score,
 			     chromosome_iit,donor,chimera->distance);
     /* Alignment info */
     fprintf(fp,"\t");
-    print_alignment_info(fp,/*nblocks*/2,score,mapq_score);
+    print_alignment_info(fp,/*nblocks*/2,score,mapq_score,chimera->sarrayp);
 
     /* Pairing info */
     if (hit5 != NULL && hit3 != NULL) {
@@ -6106,7 +7857,7 @@ print_splice (FILE *fp, T chimera, int score,
 			  chromosome_iit,acceptor,chimera->distance);
     /* Alignment info */
     fprintf(fp,"\t");
-    print_alignment_info(fp,/*nblocks*/2,score,mapq_score);
+    print_alignment_info(fp,/*nblocks*/2,score,mapq_score,chimera->sarrayp);
 
     /* Pairing info */
     if (hit5 != NULL && hit3 != NULL) {
@@ -6154,7 +7905,7 @@ print_shortexon (FILE *fp, T chimera, int score,
       fprintf(fp," ");
       Substring_print_donor(fp,donor,/*sensep*/true,/*invertp*/false,
 			    queryseq,chromosome_iit,acceptor,distance1);
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6166,7 +7917,7 @@ print_shortexon (FILE *fp, T chimera, int score,
     Substring_print_shortexon(fp,shortexon,/*sensep*/true,/*invertp*/false,queryseq,
 			      chromosome_iit,distance1,distance2);
     if (firstp == true) {
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6188,7 +7939,7 @@ print_shortexon (FILE *fp, T chimera, int score,
       fprintf(fp," ");
       Substring_print_acceptor(fp,acceptor,/*sensep*/true,/*invertp*/true,queryseq,
 			       chromosome_iit,donor,distance1);
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6200,7 +7951,7 @@ print_shortexon (FILE *fp, T chimera, int score,
     Substring_print_shortexon(fp,shortexon,/*sensep*/true,/*invertp*/true,queryseq,
 			      chromosome_iit,distance1,distance2);
     if (firstp == true) {
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6222,7 +7973,7 @@ print_shortexon (FILE *fp, T chimera, int score,
       fprintf(fp," ");
       Substring_print_acceptor(fp,acceptor,/*sensep*/false,/*invertp*/false,queryseq,
 			       chromosome_iit,donor,distance1);
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6234,7 +7985,7 @@ print_shortexon (FILE *fp, T chimera, int score,
     Substring_print_shortexon(fp,shortexon,/*sensep*/false,/*invertp*/false,queryseq,
 			      chromosome_iit,distance1,distance2);
     if (firstp == true) {
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6256,7 +8007,7 @@ print_shortexon (FILE *fp, T chimera, int score,
       fprintf(fp," ");
       Substring_print_donor(fp,donor,/*sensep*/false,/*invertp*/true,queryseq,
 			    chromosome_iit,acceptor,distance1);
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6268,7 +8019,7 @@ print_shortexon (FILE *fp, T chimera, int score,
     Substring_print_shortexon(fp,shortexon,/*sensep*/false,/*invertp*/true,queryseq,
 			      chromosome_iit,distance1,distance2);
     if (firstp == true) {
-      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score);
+      fprintf(fp,"\t"); print_alignment_info(fp,nblocks,score,mapq_score,chimera->sarrayp);
       if (hit5 != NULL && hit3 != NULL) {
 	fprintf(fp,"\t"); print_pair_info(fp,hit5,hit3,insertlength,pairscore,pairtype);
       }
@@ -6377,15 +8128,7 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
 		      char initchar, bool firstp, Univ_IIT_T chromosome_iit,
 		      Shortread_T queryseq, Shortread_T headerseq1, Shortread_T headerseq2,
 		      int maxpaths, bool quiet_if_excessive_p,
-		      bool invertp, int quality_shift,
-		      FILE *fp_nomapping_1, FILE *fp_unpaired_uniq, FILE *fp_unpaired_circular,
-		      FILE *fp_unpaired_transloc, FILE *fp_unpaired_mult,
-		      FILE *fp_halfmapping_uniq, FILE *fp_halfmapping_circular,
-		      FILE *fp_halfmapping_transloc, FILE *fp_halfmapping_mult,
-		      FILE *fp_paired_uniq_circular, FILE *fp_paired_uniq_inv, FILE *fp_paired_uniq_scr,
-		      FILE *fp_paired_uniq_long, FILE *fp_paired_mult,
-		      FILE *fp_concordant_uniq, FILE *fp_concordant_circular,
-		      FILE *fp_concordant_transloc, FILE *fp_concordant_mult) {
+		      bool invertp, int quality_shift) {
   Stage3pair_T *stage3pairarray, stage3pair;
   T *stage3array, *stage3array_mate, this, hit5, hit3;
   int npaths, npaths_mate, pathnum, first_absmq, second_absmq;
@@ -6393,15 +8136,15 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
   FILE *fp;
 
   if (resulttype == PAIREDEND_NOMAPPING) {
-    /* If fails_as_input_p == true, then this case is handled by calling procedure */
-    print_query_header(fp_nomapping_1,initchar,queryseq,invertp);
-    fprintf(fp_nomapping_1,"\t0 %s",UNPAIRED_TEXT);
+    /* If failedinput_root != NULL, then this case is handled by calling procedure */
+    print_query_header(fp_nomapping,initchar,queryseq,invertp);
+    fprintf(fp_nomapping,"\t0 %s",UNPAIRED_TEXT);
 
-    print_barcode_and_quality(fp_nomapping_1,queryseq,invertp,quality_shift);
+    print_barcode_and_quality(fp_nomapping,queryseq,invertp,quality_shift);
     
-    fprintf(fp_nomapping_1,"\t");
-    Shortread_print_header(fp_nomapping_1,headerseq1,headerseq2);
-    fprintf(fp_nomapping_1,"\n");
+    fprintf(fp_nomapping,"\t");
+    Shortread_print_header(fp_nomapping,headerseq1,headerseq2);
+    fprintf(fp_nomapping,"\n");
 
   } else if (resulttype == CONCORDANT_UNIQ) {
     stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
@@ -6442,18 +8185,38 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
   } else if (resulttype == CONCORDANT_TRANSLOC) {
     stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
 
-    print_query_header(fp_concordant_transloc,initchar,queryseq,invertp);
-    fprintf(fp_concordant_transloc,"\t%d %s",npaths,CONCORDANT_TEXT);
-    fprintf(fp_concordant_transloc," (transloc)");
+    if (quiet_if_excessive_p && npaths > maxpaths) {
+      /* No xs category for transloc, so ignore quiet-if-excessive_p */
+      print_query_header(fp_concordant_transloc,initchar,queryseq,invertp);
+      fprintf(fp_concordant_transloc,"\t%d %s",npaths,CONCORDANT_TEXT);
+      fprintf(fp_concordant_transloc," (transloc)");
+	
+      print_barcode_and_quality(fp_concordant_transloc,queryseq,invertp,quality_shift);
+      
+      fprintf(fp_concordant_transloc,"\t");
+      Shortread_print_header(fp_concordant_transloc,headerseq1,headerseq2);
 
-    print_barcode_and_quality(fp_concordant_transloc,queryseq,invertp,quality_shift);
+      /* No further output */
+      fprintf(fp_concordant_transloc,"\n");
 
-    fprintf(fp_concordant_transloc,"\t");
-    Shortread_print_header(fp_concordant_transloc,headerseq1,headerseq2);
+      if (failedinput_root != NULL) {
+	if (fastq_format_p == true) {
+	  Shortread_print_query_singleend_fastq(firstp == true ? fp_failedinput_1 : fp_failedinput_2,queryseq,headerseq1);
+	} else {
+	  Shortread_print_query_singleend_fasta(firstp == true ? fp_failedinput_1 : fp_failedinput_2,queryseq,headerseq1);
+	}
+      }
 
-    if (quiet_if_excessive_p && npaths > maxpaths) {
-      /* No further output */
     } else {
+      print_query_header(fp_concordant_transloc,initchar,queryseq,invertp);
+      fprintf(fp_concordant_transloc,"\t%d %s",npaths,CONCORDANT_TEXT);
+      fprintf(fp_concordant_transloc," (transloc)");
+
+      print_barcode_and_quality(fp_concordant_transloc,queryseq,invertp,quality_shift);
+      
+      fprintf(fp_concordant_transloc,"\t");
+      Shortread_print_header(fp_concordant_transloc,headerseq1,headerseq2);
+
 #if 0
       if (firstp == true) {
 	Stage3pair_eval(stage3pairarray,npaths,maxpaths,queryseq,queryseq_mate);
@@ -6475,24 +8238,43 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
 			  stage3pair->score,stage3pair->pairtype,stage3pair->mapq_score);
 	}
       }
+
+      fprintf(fp_concordant_transloc,"\n");
     }
 
-    fprintf(fp_concordant_transloc,"\n");
 
   } else if (resulttype == CONCORDANT_MULT) {
     stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
 
-    print_query_header(fp_concordant_mult,initchar,queryseq,invertp);
-    fprintf(fp_concordant_mult,"\t%d %s",npaths,CONCORDANT_TEXT);
+    if (quiet_if_excessive_p && npaths > maxpaths) {
+      print_query_header(fp_concordant_mult_xs_1,initchar,queryseq,invertp);
+      fprintf(fp_concordant_mult_xs_1,"\t%d %s",npaths,CONCORDANT_TEXT);
 
-    print_barcode_and_quality(fp_concordant_mult,queryseq,invertp,quality_shift);
+      print_barcode_and_quality(fp_concordant_mult_xs_1,queryseq,invertp,quality_shift);
 
-    fprintf(fp_concordant_mult,"\t");
-    Shortread_print_header(fp_concordant_mult,headerseq1,headerseq2);
+      fprintf(fp_concordant_mult_xs_1,"\t");
+      Shortread_print_header(fp_concordant_mult_xs_1,headerseq1,headerseq2);
 
-    if (quiet_if_excessive_p && npaths > maxpaths) {
       /* No further output */
+      fprintf(fp_concordant_mult_xs_1,"\n");
+
+      if (failedinput_root != NULL) {
+	if (fastq_format_p == true) {
+	  Shortread_print_query_singleend_fastq(firstp == true ? fp_failedinput_1 : fp_failedinput_2,queryseq,headerseq1);
+	} else {
+	  Shortread_print_query_singleend_fasta(firstp == true ? fp_failedinput_1 : fp_failedinput_2,queryseq,headerseq1);
+	}
+      }
+
     } else {
+      print_query_header(fp_concordant_mult,initchar,queryseq,invertp);
+      fprintf(fp_concordant_mult,"\t%d %s",npaths,CONCORDANT_TEXT);
+
+      print_barcode_and_quality(fp_concordant_mult,queryseq,invertp,quality_shift);
+
+      fprintf(fp_concordant_mult,"\t");
+      Shortread_print_header(fp_concordant_mult,headerseq1,headerseq2);
+
 #if 0
       if (firstp == true) {
 	Stage3pair_eval(stage3pairarray,npaths,maxpaths,queryseq,queryseq_mate);
@@ -6514,9 +8296,10 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
 			  stage3pair->score,stage3pair->pairtype,stage3pair->mapq_score);
 	}
       }
+
+      fprintf(fp_concordant_mult,"\n");
     }
 
-    fprintf(fp_concordant_mult,"\n");
 
   } else if (resulttype == PAIRED_UNIQ) {
     stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
@@ -6564,17 +8347,35 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
   } else if (resulttype == PAIRED_MULT) {
     stage3pairarray = (Stage3pair_T *) Result_array(&npaths,&first_absmq,&second_absmq,result);
 
-    print_query_header(fp_paired_mult,initchar,queryseq,invertp);
-    fprintf(fp_paired_mult,"\t%d %s",npaths,PAIRED_TEXT);
-
-    print_barcode_and_quality(fp_paired_mult,queryseq,invertp,quality_shift);
+    if (quiet_if_excessive_p && npaths > maxpaths) {
+      print_query_header(fp_paired_mult_xs_1,initchar,queryseq,invertp);
+      fprintf(fp_paired_mult_xs_1,"\t%d %s",npaths,PAIRED_TEXT);
+	
+      print_barcode_and_quality(fp_paired_mult_xs_1,queryseq,invertp,quality_shift);
 
-    fprintf(fp_paired_mult,"\t");
-    Shortread_print_header(fp_paired_mult,headerseq1,headerseq2);
+      fprintf(fp_paired_mult_xs_1,"\t");
+      Shortread_print_header(fp_paired_mult_xs_1,headerseq1,headerseq2);
 
-    if (quiet_if_excessive_p && npaths > maxpaths) {
       /* No further output */
+      fprintf(fp_paired_mult_xs_1,"\n");
+
+      if (failedinput_root != NULL) {
+	if (fastq_format_p == true) {
+	  Shortread_print_query_singleend_fastq(firstp == true ? fp_failedinput_1 : fp_failedinput_2,queryseq,headerseq1);
+	} else {
+	  Shortread_print_query_singleend_fasta(firstp == true ? fp_failedinput_1 : fp_failedinput_2,queryseq,headerseq1);
+	}
+      }
+
     } else {
+      print_query_header(fp_paired_mult,initchar,queryseq,invertp);
+      fprintf(fp_paired_mult,"\t%d %s",npaths,PAIRED_TEXT);
+
+      print_barcode_and_quality(fp_paired_mult,queryseq,invertp,quality_shift);
+
+      fprintf(fp_paired_mult,"\t");
+      Shortread_print_header(fp_paired_mult,headerseq1,headerseq2);
+
 #if 0
       if (firstp == true) {
 	Stage3pair_eval(stage3pairarray,npaths,maxpaths,queryseq,queryseq_mate);
@@ -6596,9 +8397,10 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
 			  stage3pair->score,stage3pair->pairtype,stage3pair->mapq_score);
 	}
       }
+
+      fprintf(fp_paired_mult,"\n");
     }
 
-    fprintf(fp_paired_mult,"\n");
 
   } else {
     /* Print as singles */
@@ -6702,18 +8504,8 @@ print_one_paired_end (Result_T result, Resulttype_T resulttype,
 void
 Stage3pair_print (Result_T result, Resulttype_T resulttype,
 		  Univ_IIT_T chromosome_iit, Shortread_T queryseq1, Shortread_T queryseq2,
-		  int maxpaths, bool quiet_if_excessive_p,
-		  bool nofailsp, bool failsonlyp, bool fails_as_input_p,
-		  bool fastq_format_p, int quality_shift,
-		  FILE *fp_nomapping_1, FILE *fp_nomapping_2,
-		  FILE *fp_unpaired_uniq, FILE *fp_unpaired_circular,
-		  FILE *fp_unpaired_transloc, FILE *fp_unpaired_mult,
-		  FILE *fp_halfmapping_uniq, FILE *fp_halfmapping_circular,
-		  FILE *fp_halfmapping_transloc, FILE *fp_halfmapping_mult,
-		  FILE *fp_paired_uniq_circular, FILE *fp_paired_uniq_inv, FILE *fp_paired_uniq_scr,
-		  FILE *fp_paired_uniq_long, FILE *fp_paired_mult,
-		  FILE *fp_concordant_uniq, FILE *fp_concordant_circular,
-		  FILE *fp_concordant_transloc, FILE *fp_concordant_mult) {
+		  int maxpaths, bool quiet_if_excessive_p, bool nofailsp, bool failsonlyp,
+		  bool fastq_format_p, int quality_shift) {
 
   debug1(printf("Stage3pair_print: resulttype is %s\n",Resulttype_string(resulttype)));
 
@@ -6721,47 +8513,31 @@ Stage3pair_print (Result_T result, Resulttype_T resulttype,
     if (nofailsp == true) {
       /* No output */
       debug1(printf("  nofailsp is true, so no output\n"));
-      return;
-
-    } else if (fails_as_input_p == true) {
-      debug1(printf("  fails as input is true, so printing\n"));
-      if (fastq_format_p == true) {
-	Shortread_print_query_pairedend_fastq(fp_nomapping_1,fp_nomapping_2,queryseq1,queryseq2,
-					      invert_first_p,invert_second_p);
-      } else {
-	Shortread_print_query_pairedend_fasta(fp_nomapping_1,queryseq1,queryseq2,
-					      invert_first_p,invert_second_p);
-      }
-      return;
 
     } else {
       debug1(printf("  printing failure output\n"));
-
+      
       /* First end */
       print_one_paired_end(result,resulttype,'>',/*firstp*/true,chromosome_iit,
 			   /*queryseq*/queryseq1,/*headerseq1*/queryseq1,/*headerseq2*/queryseq2,
-			   maxpaths,quiet_if_excessive_p,invert_first_p,
-			   quality_shift,fp_nomapping_1,fp_unpaired_uniq,fp_unpaired_circular,
-			   fp_unpaired_transloc,fp_unpaired_mult,
-			   fp_halfmapping_uniq,fp_halfmapping_circular,
-			   fp_halfmapping_transloc,fp_halfmapping_mult,
-			   fp_paired_uniq_circular,fp_paired_uniq_inv,fp_paired_uniq_scr,
-			   fp_paired_uniq_long,fp_paired_mult,
-			   fp_concordant_uniq,fp_concordant_circular,
-			   fp_concordant_transloc,fp_concordant_mult);
+			   maxpaths,quiet_if_excessive_p,invert_first_p,quality_shift);
 
       /* Second end */
       print_one_paired_end(result,resulttype,'<',/*firstp*/false,chromosome_iit,
 			   /*queryseq*/queryseq2,/*headerseq1*/queryseq1,/*headerseq2*/queryseq2,
-			   maxpaths,quiet_if_excessive_p,invert_second_p,
-			   quality_shift,fp_nomapping_1,fp_unpaired_uniq,fp_unpaired_circular,
-			   fp_unpaired_transloc,fp_unpaired_mult,
-			   fp_halfmapping_uniq,fp_halfmapping_circular,
-			   fp_halfmapping_transloc,fp_halfmapping_mult,
-			   fp_paired_uniq_circular,fp_paired_uniq_inv,fp_paired_uniq_scr,
-			   fp_paired_uniq_long,fp_paired_mult,
-			   fp_concordant_uniq,fp_concordant_circular,
-			   fp_concordant_transloc,fp_concordant_mult);
+			   maxpaths,quiet_if_excessive_p,invert_second_p,quality_shift);
+
+      if (failedinput_root != NULL) {
+	if (fastq_format_p == true) {
+	  debug1(printf("  fails as input is true, so printing\n"));
+	  Shortread_print_query_pairedend_fastq(fp_failedinput_1,fp_failedinput_2,queryseq1,queryseq2,
+						invert_first_p,invert_second_p);
+	} else {
+	  debug1(printf("  fails as input is true, so printing\n"));
+	  Shortread_print_query_pairedend_fasta(fp_failedinput_1,queryseq1,queryseq2,
+						invert_first_p,invert_second_p);
+	}
+      }
     }
 
   } else {
@@ -6773,28 +8549,12 @@ Stage3pair_print (Result_T result, Resulttype_T resulttype,
       /* First end */
       print_one_paired_end(result,resulttype,'>',/*firstp*/true,chromosome_iit,
 			   /*queryseq*/queryseq1,/*headerseq1*/queryseq1,/*headerseq2*/queryseq2,
-			   maxpaths,quiet_if_excessive_p,invert_first_p,
-			   quality_shift,fp_nomapping_1,fp_unpaired_uniq,fp_unpaired_circular,
-			   fp_unpaired_transloc,fp_unpaired_mult,
-			   fp_halfmapping_uniq,fp_halfmapping_circular,
-			   fp_halfmapping_transloc,fp_halfmapping_mult,
-			   fp_paired_uniq_circular,fp_paired_uniq_inv,fp_paired_uniq_scr,
-			   fp_paired_uniq_long,fp_paired_mult,
-			   fp_concordant_uniq,fp_concordant_circular,
-			   fp_concordant_transloc,fp_concordant_mult);
+			   maxpaths,quiet_if_excessive_p,invert_first_p,quality_shift);
 
       /* Second end */
       print_one_paired_end(result,resulttype,'<',/*firstp*/false,chromosome_iit,
 			   /*queryseq*/queryseq2,/*headerseq1*/queryseq1,/*headerseq2*/queryseq2,
-			   maxpaths,quiet_if_excessive_p,invert_second_p,
-			   quality_shift,fp_nomapping_1,fp_unpaired_uniq,fp_unpaired_circular,
-			   fp_unpaired_transloc,fp_unpaired_mult,
-			   fp_halfmapping_uniq,fp_halfmapping_circular,
-			   fp_halfmapping_transloc,fp_halfmapping_mult,
-			   fp_paired_uniq_circular,fp_paired_uniq_inv,fp_paired_uniq_scr,
-			   fp_paired_uniq_long,fp_paired_mult,
-			   fp_concordant_uniq,fp_concordant_circular,
-			   fp_concordant_transloc,fp_concordant_mult);
+			   maxpaths,quiet_if_excessive_p,invert_second_p,quality_shift);
     }
   }
     
@@ -6888,10 +8648,12 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
   int nbingo, bingoi5, bingoi3, nbounded, boundedi5, boundedi3, nbest, besti5, besti3, i, j;
   int best_nmismatches, nmismatches;
   bool new5p = false, new3p = false;
+  T old;
 
   Substring_T donor, acceptor, shortexon;
   Univcoord_T segment_left;
   int nmismatches_shortend;
+  Univcoord_T donor_splicecoord, acceptor_splicecoord;
   int donor_knowni, acceptor_knowni;
   int splice_pos;
   int ignore_found_score = 0;
@@ -6906,10 +8668,10 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     debug9(printf("Got ambiguous at 5' and ambiguous at 3':"));
     nbest = nbounded = nbingo = 0;
     best_nmismatches = querylength5 + querylength3;
-    for (i = 0; i < (*hit5)->end_nambi; i++) {
-      genomicend = splicesites[(*hit5)->end_ambi[i]];
-      for (j = 0; j < (*hit3)->start_nambi; j++) {
-	genomicstart = splicesites[(*hit3)->start_ambi[j]];
+    for (i = 0; i < (*hit5)->end_nambcoords; i++) {
+      genomicend = (*hit5)->end_ambcoords[i];  /* splicesites[] */
+      for (j = 0; j < (*hit3)->start_nambcoords; j++) {
+	genomicstart = (*hit3)->start_ambcoords[j]; /* splicesites[] */
 	debug9(printf(" %lu,%lu",genomicend,genomicstart));
 	if (genomicend < genomicstart) {
 	  nbounded++;
@@ -6976,8 +8738,8 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     debug9(printf("Got ambiguous at 5' (%s):",hittype_string((*hit5)->hittype)));
     nbest = nbounded = nbingo = 0;
     best_nmismatches = querylength5;
-    for (i = 0; i < (*hit5)->end_nambi; i++) {
-      genomicend = splicesites[(*hit5)->end_ambi[i]];
+    for (i = 0; i < (*hit5)->end_nambcoords; i++) {
+      genomicend = (*hit5)->end_ambcoords[i]; /* splicesites[] */
       debug9(printf(" %lu",genomicend));
       if (genomicend < (*hit3)->genomicstart /*allow overlap*/+ querylength3) {
 	nbounded++;
@@ -7039,8 +8801,8 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     debug9(printf("Got ambiguous at 3':"));
     nbest = nbounded = nbingo = 0;
     best_nmismatches = querylength3;
-    for (j = 0; j < (*hit3)->start_nambi; j++) {
-      genomicstart = splicesites[(*hit3)->start_ambi[j]];
+    for (j = 0; j < (*hit3)->start_nambcoords; j++) {
+      genomicstart = (*hit3)->start_ambcoords[j]; /* splicesites[] */
       debug9(printf(" %lu",genomicstart));
       if ((*hit5)->genomicend < genomicstart /*allow overlap*/+ querylength5) {
 	nbounded++;
@@ -7107,27 +8869,35 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
       /* End 1 */
       shortexon = (*hit5)->substring1;
 	
-      donor_knowni = Substring_splicesites_i_D(shortexon);
+      donor_splicecoord = Substring_splicecoord_D(shortexon);
+      /* donor_knowni = Substring_splicesites_knowni_D(shortexon); */
       splice_pos = Substring_chimera_pos_D(shortexon);
-      acceptor_knowni = (*hit5)->end_ambi[bingoi5];
+      acceptor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+      acceptor_knowni = (*hit5)->end_amb_knowni[bingoi5];
       nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-      segment_left = splicesites[acceptor_knowni] - splice_pos;
+      segment_left = acceptor_splicecoord - splice_pos;
 	
-      if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+      if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,splice_pos,nmismatches_shortend,
 					     /*prob*/2.0,/*left*/segment_left,query5_compress_fwd,
-					     querylength5,/*plusp*/true,genestrand,/*sensep*/true,
+					     querylength5,/*plusp*/true,genestrand,/*first_read_p*/true,/*sensep*/true,
 					     Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 					     Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
-	debug9(printf("Resolved shortexon, End 1: Splice from donor #%d to acceptor #%d, with nmismatches %d\n",
-		      donor_knowni,acceptor_knowni,nmismatches_shortend));
+	debug9(printf("Resolved shortexon, End 1: Splice from donor %u to acceptor %u, with nmismatches %d\n",
+		      donor_splicecoord,acceptor_splicecoord,nmismatches_shortend));
+	old = *hit5;
 	*hit5 = Stage3end_new_shortexon(&ignore_found_score,/*donor*/(*hit5)->substringD,acceptor,shortexon,
 					/*acceptor_distance*/(*hit5)->acceptor_distance,
-					/*donor_distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+					/*donor_distance*/acceptor_splicecoord - donor_splicecoord,
 					(*hit5)->amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/true,/*copy_acceptor_p*/false,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength5,/*sensedir*/SENSE_FORWARD);
+					localsplicing_penalty,querylength5,/*sensedir*/SENSE_FORWARD,
+					/*sarrayp*/false);
+	if (*private5p == true) {
+	  Stage3end_free(&old);
+	}
 	*private5p = true;
       }
 
@@ -7135,27 +8905,35 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
       /* End 6 */
       shortexon = (*hit5)->substring1;
 
-      acceptor_knowni = Substring_splicesites_i_A(shortexon);
+      acceptor_splicecoord = Substring_splicecoord_A(shortexon);
+      /* acceptor_knowni = Substring_splicesites_knowni_A(shortexon); */
       splice_pos = Substring_chimera_pos_A(shortexon);
-      donor_knowni = (*hit5)->end_ambi[bingoi5];
+      donor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+      donor_knowni = (*hit5)->end_amb_knowni[bingoi5];
       nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-      segment_left = splicesites[donor_knowni] - splice_pos;
+      segment_left = donor_splicecoord - splice_pos;
 
-      if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+      if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,splice_pos,nmismatches_shortend,
 				       /*prob*/2.0,/*left*/segment_left,query5_compress_fwd,
-				       querylength5,/*plusp*/true,genestrand,/*sensep*/false,
+				       querylength5,/*plusp*/true,genestrand,/*first_read_p*/true,/*sensep*/false,
 				       Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 				       Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
-	debug9(printf("Resolved shortexon, End 6: Splice from antiacceptor #%d to antidonor #%d, with nmismatches %d\n",
-		      acceptor_knowni,donor_knowni,nmismatches_shortend));
+	debug9(printf("Resolved shortexon, End 6: Splice from antiacceptor %u to antidonor %u, with nmismatches %d\n",
+		      acceptor_splicecoord,donor_splicecoord,nmismatches_shortend));
+	old = *hit5;
 	*hit5 = Stage3end_new_shortexon(&ignore_found_score,donor,/*acceptor*/(*hit5)->substringA,shortexon,
-					/*acceptor_distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+					/*acceptor_distance*/donor_splicecoord - acceptor_splicecoord,
 					/*donor_distance*/(*hit5)->donor_distance,
 					/*amb_nmatches_donor*/0,(*hit5)->amb_nmatches_acceptor,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/false,/*copy_acceptor_p*/true,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength5,/*sensedir*/SENSE_ANTI);
+					localsplicing_penalty,querylength5,/*sensedir*/SENSE_ANTI,
+					/*sarrayp*/false);
+	if (*private5p == true) {
+	  Stage3end_free(&old);
+	}
 	*private5p = true;
       }
 
@@ -7170,25 +8948,33 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     assert((*hit5)->sensedir == SENSE_FORWARD);
     donor = (*hit5)->substring_donor;
 
-    donor_knowni = Substring_splicesites_i(donor);
+    donor_splicecoord = Substring_splicecoord(donor);
+    /* donor_knowni = Substring_splicesites_knowni(donor); */
     splice_pos = Substring_chimera_pos(donor);
-    acceptor_knowni = (*hit5)->end_ambi[bingoi5];
+    acceptor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+    acceptor_knowni = (*hit5)->end_amb_knowni[bingoi5];
     nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-    segment_left = splicesites[acceptor_knowni] - splice_pos;
+    segment_left = acceptor_splicecoord - splice_pos;
 
-    if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+    if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,splice_pos,nmismatches_shortend,
 					   /*prob*/2.0,/*left*/segment_left,query5_compress_fwd,
-					   querylength5,/*plusp*/true,genestrand,/*sensep*/true,
+					   querylength5,/*plusp*/true,genestrand,/*first_read_p*/true,/*sensep*/true,
 					   Substring_chrnum(donor),Substring_chroffset(donor),
 					   Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
       debug9(printf("Resolved halfsplice_donor, End 1: Splice from donor #%d to acceptor #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(donor),Substring_splicesites_i(acceptor),nmismatches_shortend));
+		    Substring_splicecoord(donor),Substring_splicecoord(acceptor),nmismatches_shortend));
+      old = *hit5;
       *hit5 = Stage3end_new_splice(&ignore_found_score,Substring_nmismatches_whole(donor),/*nmismatches_acceptor*/nmismatches_shortend,
-				   donor,acceptor,/*distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+				   donor,acceptor,/*distance*/acceptor_splicecoord - donor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength5,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-				   /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/true,/*sensedir*/SENSE_FORWARD);
+				   /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/true,/*sensedir*/SENSE_FORWARD,
+				   /*sarrayp*/false);
+      if (*private5p == true) {
+	Stage3end_free(&old);
+      }
       *private5p = true;
     }
 	  
@@ -7197,25 +8983,33 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     assert((*hit5)->sensedir == SENSE_ANTI);
     acceptor = (*hit5)->substring_acceptor;
 
-    acceptor_knowni = Substring_splicesites_i(acceptor);
+    acceptor_splicecoord = Substring_splicecoord(acceptor);
+    /* acceptor_knowni = Substring_splicesites_knowni(acceptor); */
     splice_pos = Substring_chimera_pos(acceptor);
-    donor_knowni = (*hit5)->end_ambi[bingoi5];
+    donor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+    donor_knowni = (*hit5)->end_amb_knowni[bingoi5];
     nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-    segment_left = splicesites[donor_knowni] - splice_pos;
+    segment_left = donor_splicecoord - splice_pos;
 
-    if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+    if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,splice_pos,nmismatches_shortend,
 				     /*prob*/2.0,/*left*/segment_left,query5_compress_fwd,
-				     querylength5,/*plusp*/true,genestrand,/*sensep*/false,
+				     querylength5,/*plusp*/true,genestrand,/*first_read_p*/true,/*sensep*/false,
 				     Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 				     Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
       debug9(printf("Resolved halfsplice_acceptor, End 6: Splice from antiacceptor #%d to antidonor #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(acceptor),Substring_splicesites_i(donor),nmismatches_shortend));
+		    Substring_splicecoord(acceptor),Substring_splicecoord(donor),nmismatches_shortend));
+      old = *hit5;
       *hit5 = Stage3end_new_splice(&ignore_found_score,/*nmismatches_donor*/nmismatches_shortend,Substring_nmismatches_whole(acceptor),
-				   donor,acceptor,/*distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+				   donor,acceptor,/*distance*/donor_splicecoord - acceptor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength5,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
-				   /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/true,/*sensedir*/SENSE_ANTI);
+				   /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/true,/*sensedir*/SENSE_ANTI,
+				   /*sarrayp*/false);
+      if (*private5p == true) {
+	Stage3end_free(&old);
+      }
       *private5p = true;
     }
 
@@ -7233,27 +9027,35 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
       /* End 5 */
       shortexon = (*hit3)->substring1;
 
-      donor_knowni = Substring_splicesites_i_D(shortexon);
+      donor_splicecoord = Substring_splicecoord_D(shortexon);
+      /* donor_knowni = Substring_splicesites_knowni_D(shortexon); */
       splice_pos = Substring_chimera_pos_D(shortexon);
-      acceptor_knowni = (*hit3)->start_ambi[bingoi3];
+      acceptor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+      acceptor_knowni = (*hit3)->start_amb_knowni[bingoi3];
       nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-      segment_left = splicesites[acceptor_knowni] - splice_pos;
+      segment_left = acceptor_splicecoord - splice_pos;
 
-      if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+      if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,splice_pos,nmismatches_shortend,
 					     /*prob*/2.0,segment_left,query3_compress_fwd,
-					     querylength3,/*plusp*/true,genestrand,/*sensep*/false,
+					     querylength3,/*plusp*/true,genestrand,/*first_read_p*/false,/*sensep*/false,
 					     Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 					     Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
 	debug9(printf("Resolved shortexonr, End 5: Splice from antidonor #%d to antiacceptor #%d, with nmismatches %d\n",
-		      donor_knowni,acceptor_knowni,nmismatches_shortend));
+		      donor_splicecoord,acceptor_splicecoord,nmismatches_shortend));
+	old = *hit3;
 	*hit3 = Stage3end_new_shortexon(&ignore_found_score,/*donor*/(*hit3)->substringD,acceptor,shortexon,
 					/*acceptor_distance*/(*hit3)->acceptor_distance,
-					/*donor_distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+					/*donor_distance*/donor_splicecoord - acceptor_splicecoord,
 					(*hit3)->amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/true,/*copy_acceptor_p*/false,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength3,/*sensedir*/SENSE_ANTI);
+					localsplicing_penalty,querylength3,/*sensedir*/SENSE_ANTI,
+					/*sarrayp*/false);
+	if (*private3p == true) {
+	  Stage3end_free(&old);
+	}
 	*private3p = true;
       }
 
@@ -7261,27 +9063,35 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
       /* End 2 */
       shortexon = (*hit3)->substring1;
 
-      acceptor_knowni = Substring_splicesites_i_A(shortexon);
+      acceptor_splicecoord = Substring_splicecoord_A(shortexon);
+      /* acceptor_knowni = Substring_splicesites_knowni_A(shortexon); */
       splice_pos = Substring_chimera_pos_A(shortexon);
-      donor_knowni = (*hit3)->start_ambi[bingoi3];
+      donor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+      donor_knowni = (*hit3)->start_amb_knowni[bingoi3];
       nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-      segment_left = splicesites[donor_knowni] - splice_pos;
+      segment_left = donor_splicecoord - splice_pos;
 
-      if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+      if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,splice_pos,nmismatches_shortend,
 				       /*prob*/2.0,segment_left,query3_compress_fwd,
-				       querylength3,/*plusp*/true,genestrand,/*sensep*/true,
+				       querylength3,/*plusp*/true,genestrand,/*first_read_p*/false,/*sensep*/true,
 				       Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 				       Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
 	debug9(printf("Resolved shortexon, End 2: Splice from acceptor #%d to donor #%d, with nmismatches %d\n",
-		      acceptor_knowni,donor_knowni,nmismatches_shortend));
+		      acceptor_splicecoord,donor_splicecoord,nmismatches_shortend));
+	old = *hit3;
 	*hit3 = Stage3end_new_shortexon(&ignore_found_score,donor,/*acceptor*/(*hit3)->substringA,shortexon,
-					/*acceptor_distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+					/*acceptor_distance*/acceptor_splicecoord - donor_splicecoord,
 					/*donor_distance*/(*hit3)->donor_distance,
 					/*amb_nmatches_donor*/0,(*hit3)->amb_nmatches_acceptor,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/false,/*copy_acceptor_p*/true,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength3,/*sensedir*/SENSE_FORWARD);
+					localsplicing_penalty,querylength3,/*sensedir*/SENSE_FORWARD,
+					/*sarrayp*/false);
+	if (*private3p == true) {
+	  Stage3end_free(&old);
+	}
 	*private3p = true;
       }
 
@@ -7296,26 +9106,33 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     assert((*hit3)->sensedir == SENSE_ANTI);
     donor = (*hit3)->substring_donor;
 
-    donor_knowni = Substring_splicesites_i(donor);
+    donor_splicecoord = Substring_splicecoord(donor);
+    /* donor_knowni = Substring_splicesites_knowni(donor); */
     splice_pos = Substring_chimera_pos(donor);
-    acceptor_knowni = (*hit3)->start_ambi[bingoi3];
+    acceptor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+    acceptor_knowni = (*hit3)->start_amb_knowni[bingoi3];
     nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-    segment_left = splicesites[acceptor_knowni] - splice_pos;
+    segment_left = acceptor_splicecoord - splice_pos;
 
-    if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+    if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,splice_pos,nmismatches_shortend,
 					   /*prob*/2.0,segment_left,query3_compress_fwd,
-					   querylength3,/*plusp*/true,genestrand,/*sensep*/false,
+					   querylength3,/*plusp*/true,genestrand,/*first_read_p*/false,/*sensep*/false,
 					   Substring_chrnum(donor),Substring_chroffset(donor),
 					   Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
       debug9(printf("Resolved halfsplice donor, End 5: Splice from antidonor #%d to antiacceptor #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(donor),Substring_splicesites_i(acceptor),nmismatches_shortend));
+		    Substring_splicecoord(donor),Substring_splicecoord(acceptor),nmismatches_shortend));
+      old = *hit3;
       *hit3 = Stage3end_new_splice(&ignore_found_score,Substring_nmismatches_whole(donor),/*nmismatches_acceptor*/nmismatches_shortend,
-				   donor,acceptor,/*distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+				   donor,acceptor,/*distance*/donor_splicecoord - acceptor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength3,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 				   /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/false,
-				   /*sensedir*/SENSE_ANTI);
+				   /*sensedir*/SENSE_ANTI,/*sarrayp*/false);
+      if (*private3p == true) {
+	Stage3end_free(&old);
+      }
       *private3p = true;
     }
 
@@ -7324,27 +9141,34 @@ resolve_inside_ambiguous_splice_plus (int *unresolved_amb_nmatches, T *hit5, T *
     assert((*hit3)->sensedir == SENSE_FORWARD);
     acceptor = (*hit3)->substring_acceptor;
 
-    acceptor_knowni = Substring_splicesites_i(acceptor);
+    acceptor_splicecoord = Substring_splicecoord(acceptor);
+    /* acceptor_knowni = Substring_splicesites_knowni(acceptor); */
     splice_pos = Substring_chimera_pos(acceptor);
-    donor_knowni = (*hit3)->start_ambi[bingoi3];
+    donor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+    donor_knowni = (*hit3)->start_amb_knowni[bingoi3];
     nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-    segment_left = splicesites[donor_knowni] - splice_pos;
+    segment_left = donor_splicecoord - splice_pos;
 
-    if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,splice_pos,nmismatches_shortend,
+    if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,splice_pos,nmismatches_shortend,
 				     /*prob*/2.0,segment_left,query3_compress_fwd,
-				     querylength3,/*plusp*/true,genestrand,/*sensep*/true,
+				     querylength3,/*plusp*/true,genestrand,/*first_read_p*/false,/*sensep*/true,
 				     Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 				     Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
-      debug9(printf("Resolved halfsplice acceptor, End 2: Splice from acceptor #%d (%lu) to donor #%d (%lu), with nmismatches %d\n",
-		    Substring_splicesites_i(acceptor),splicesites[acceptor_knowni],
-		    Substring_splicesites_i(donor),splicesites[donor_knowni],nmismatches_shortend));
+      debug9(printf("Resolved halfsplice acceptor, End 2: Splice from acceptor %lu (%lu) to donor %lu (%lu), with nmismatches %d\n",
+		    Substring_splicecoord(acceptor),acceptor_splicecoord,
+		    Substring_splicecoord(donor),donor_splicecoord,nmismatches_shortend));
+      old = *hit3;
       *hit3 = Stage3end_new_splice(&ignore_found_score,/*nmismatches_donor*/nmismatches_shortend,Substring_nmismatches_whole(acceptor),
-				   donor,acceptor,/*distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+				   donor,acceptor,/*distance*/acceptor_splicecoord - donor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength3,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 				   /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/false,
-				   /*sensedir*/SENSE_FORWARD);
+				   /*sensedir*/SENSE_FORWARD,/*sarrayp*/false);
+      if (*private3p == true) {
+	Stage3end_free(&old);
+      }
       *private3p = true;
     }
 
@@ -7370,10 +9194,12 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
   int nbingo, bingoi5, bingoi3, nbounded, boundedi5, boundedi3, nbest, besti5, besti3, i, j;
   int best_nmismatches, nmismatches;
   bool new5p = false, new3p = false;
+  T old;
 
   Substring_T donor, acceptor, shortexon;
   Univcoord_T segment_left;
   int nmismatches_shortend;
+  Univcoord_T donor_splicecoord, acceptor_splicecoord;
   int donor_knowni, acceptor_knowni;
   int splice_pos;
   int ignore_found_score = 0;
@@ -7388,10 +9214,10 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     debug9(printf("Got ambiguous at 5' and ambiguous at 3':"));
     nbest = nbounded = nbingo = 0;
     best_nmismatches = querylength5 + querylength3;
-    for (i = 0; i < (*hit5)->end_nambi; i++) {
-      genomicend = splicesites[(*hit5)->end_ambi[i]];
-      for (j = 0; j < (*hit3)->start_nambi; j++) {
-	genomicstart = splicesites[(*hit3)->start_ambi[j]];
+    for (i = 0; i < (*hit5)->end_nambcoords; i++) {
+      genomicend = (*hit5)->end_ambcoords[i]; /* splicesites[] */
+      for (j = 0; j < (*hit3)->start_nambcoords; j++) {
+	genomicstart = (*hit3)->start_ambcoords[j]; /* splicesites[] */
 	debug9(printf(" %lu,%lu",genomicend,genomicstart));
 	if (genomicstart < genomicend) {
 	  nbounded++;
@@ -7458,8 +9284,8 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     debug9(printf("Got ambiguous at 5':"));
     nbest = nbounded = nbingo = 0;
     best_nmismatches = querylength5;
-    for (i = 0; i < (*hit5)->end_nambi; i++) {
-      genomicend = splicesites[(*hit5)->end_ambi[i]];
+    for (i = 0; i < (*hit5)->end_nambcoords; i++) {
+      genomicend = (*hit5)->end_ambcoords[i]; /* splicesites[] */
       debug9(printf(" %lu",genomicend));
       if ((*hit3)->genomicstart < genomicend /*allow overlap*/+ querylength3) {
 	nbounded++;
@@ -7522,8 +9348,8 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     debug9(printf("Got ambiguous at 3':"));
     nbest = nbounded = nbingo = 0;
     best_nmismatches = querylength3;
-    for (j = 0; j < (*hit3)->start_nambi; j++) {
-      genomicstart = splicesites[(*hit3)->start_ambi[j]];
+    for (j = 0; j < (*hit3)->start_nambcoords; j++) {
+      genomicstart = (*hit3)->start_ambcoords[j]; /* splicesites[] */
       debug9(printf(" %lu",genomicstart));
       if (genomicstart < (*hit5)->genomicend /*allow overlap*/+ querylength5) {
 	nbounded++;
@@ -7590,28 +9416,36 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
       /* End 3 */
       shortexon = (*hit5)->substring1;
 
-      donor_knowni = Substring_splicesites_i_D(shortexon);
+      donor_splicecoord = Substring_splicecoord_D(shortexon);
+      /* donor_knowni = Substring_splicesites_knowni_D(shortexon); */
       splice_pos = Substring_chimera_pos_D(shortexon);
-      acceptor_knowni = (*hit5)->end_ambi[bingoi5];
+      acceptor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+      acceptor_knowni = (*hit5)->end_amb_knowni[bingoi5];
       nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-      segment_left = splicesites[acceptor_knowni] - (querylength5 - splice_pos);
+      segment_left = acceptor_splicecoord - (querylength5 - splice_pos);
 
-      if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,querylength5 - splice_pos,
-					     nmismatches_shortend,
+      if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,
+					     querylength5 - splice_pos,nmismatches_shortend,
 					     /*prob*/2.0,segment_left,query5_compress_rev,
-					     querylength5,/*plusp*/false,genestrand,/*sensep*/true,
+					     querylength5,/*plusp*/false,genestrand,/*first_read_p*/true,/*sensep*/true,
 					     Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 					     Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
 	debug9(printf("Resolved shortexon, End 3: Splice from donor #%d to acceptor #%d, with nmismatches %d\n",
-		      donor_knowni,acceptor_knowni,nmismatches_shortend));
+		      donor_splicecoord,acceptor_splicecoord,nmismatches_shortend));
+	old = *hit5;
 	*hit5 = Stage3end_new_shortexon(&ignore_found_score,/*donor*/(*hit5)->substringD,acceptor,shortexon,
 					/*acceptor_distance*/(*hit5)->acceptor_distance,
-					/*donor_distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+					/*donor_distance*/donor_splicecoord - acceptor_splicecoord,
 					(*hit5)->amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/true,/*copy_acceptor_p*/false,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength5,/*sensedir*/SENSE_FORWARD);
+					localsplicing_penalty,querylength5,/*sensedir*/SENSE_FORWARD,
+					/*sarrayp*/false);
+	if (*private5p == true) {
+	  Stage3end_free(&old);
+	}
 	*private5p = true;
       }
 
@@ -7619,28 +9453,35 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
       /* End 8 */
       shortexon = (*hit5)->substring1;
 
-      acceptor_knowni = Substring_splicesites_i_A(shortexon);
+      acceptor_splicecoord = Substring_splicecoord_A(shortexon);
+      /* acceptor_knowni = Substring_splicesites_knowni_A(shortexon); */
       splice_pos = Substring_chimera_pos_A(shortexon);
-      donor_knowni = (*hit5)->end_ambi[bingoi5];
+      donor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+      donor_knowni = (*hit5)->end_amb_knowni[bingoi5];
       nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-      segment_left = splicesites[donor_knowni] - (querylength5 - splice_pos);
+      segment_left = donor_splicecoord - (querylength5 - splice_pos);
 
-      if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,querylength5 - splice_pos,
-				       nmismatches_shortend,
+      if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,querylength5 - splice_pos,nmismatches_shortend,
 				       /*prob*/2.0,segment_left,query5_compress_rev,
-				       querylength5,/*plusp*/false,genestrand,/*sensep*/false,
+				       querylength5,/*plusp*/false,genestrand,/*first_read_p*/true,/*sensep*/false,
 				       Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 				       Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
 	debug9(printf("Resolved shortexon, End 8: Splice from antiacceptor #%d to antidonor #%d, with nmismatches_shortend %d\n",
-		      acceptor_knowni,donor_knowni,nmismatches_shortend));
+		      acceptor_splicecoord,donor_splicecoord,nmismatches_shortend));
+	old = *hit5;
 	*hit5 = Stage3end_new_shortexon(&ignore_found_score,donor,/*acceptor*/(*hit5)->substringA,shortexon,
-					/*acceptor_distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+					/*acceptor_distance*/acceptor_splicecoord - donor_splicecoord,
 					/*donor_distance*/(*hit5)->donor_distance,
 					/*amb_nmatches_donor*/0,(*hit5)->amb_nmatches_acceptor,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/false,/*copy_acceptor_p*/true,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength5,/*sensedir*/SENSE_ANTI);
+					localsplicing_penalty,querylength5,/*sensedir*/SENSE_ANTI,
+					/*sarrayp*/false);
+	if (*private5p == true) {
+	  Stage3end_free(&old);
+	}
 	*private5p = true;
       }
 	
@@ -7654,27 +9495,33 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     assert((*hit5)->sensedir == SENSE_FORWARD);
     donor = (*hit5)->substring_donor;
 
-    donor_knowni = Substring_splicesites_i(donor);
+    donor_splicecoord = Substring_splicecoord(donor);
+    /* donor_knowni = Substring_splicesites_knowni(donor); */
     splice_pos = Substring_chimera_pos(donor);
-    acceptor_knowni = (*hit5)->end_ambi[bingoi5];
+    acceptor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+    acceptor_knowni = (*hit5)->end_amb_knowni[bingoi5];
     nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-    segment_left = splicesites[acceptor_knowni] - (querylength5 - splice_pos);
+    segment_left = acceptor_splicecoord - (querylength5 - splice_pos);
 
-    if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,querylength5 - splice_pos,
-					   nmismatches_shortend,
+    if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,querylength5 - splice_pos,nmismatches_shortend,
 					   /*prob*/2.0,segment_left,query5_compress_rev,
-					   querylength5,/*plusp*/false,genestrand,/*sensep*/true,
+					   querylength5,/*plusp*/false,genestrand,/*first_read_p*/true,/*sensep*/true,
 					   Substring_chrnum(donor),Substring_chroffset(donor),
 					   Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
       debug9(printf("Resolved halfsplice, End 3: Splice from donor #%d to acceptor #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(donor),Substring_splicesites_i(acceptor),nmismatches_shortend));
+		    Substring_splicecoord(donor),Substring_splicecoord(acceptor),nmismatches_shortend));
+      old = *hit5;
       *hit5 = Stage3end_new_splice(&ignore_found_score,Substring_nmismatches_whole(donor),/*nmismatches_acceptor*/nmismatches_shortend,
-				   donor,acceptor,/*distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+				   donor,acceptor,/*distance*/donor_splicecoord - acceptor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength5,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 				   /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/true,
-				   /*sensedir*/SENSE_FORWARD);
+				   /*sensedir*/SENSE_FORWARD,/*sarrayp*/false);
+      if (*private5p == true) {
+	Stage3end_free(&old);
+      }
       *private5p = true;
     }
 
@@ -7683,27 +9530,33 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     assert((*hit5)->sensedir == SENSE_ANTI);
     acceptor = (*hit5)->substring_acceptor;
 
-    acceptor_knowni = Substring_splicesites_i(acceptor);
+    acceptor_splicecoord = Substring_splicecoord(acceptor);
+    /* acceptor_knowni = Substring_splicesites_knowni(acceptor); */
     splice_pos = Substring_chimera_pos(acceptor);
-    donor_knowni = (*hit5)->end_ambi[bingoi5];
+    donor_splicecoord = (*hit5)->end_ambcoords[bingoi5];
+    donor_knowni = (*hit5)->end_amb_knowni[bingoi5];
     nmismatches_shortend = (*hit5)->end_amb_nmismatches[bingoi5];
-    segment_left = splicesites[donor_knowni] - (querylength5 - splice_pos);
+    segment_left = donor_splicecoord - (querylength5 - splice_pos);
 
-    if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,querylength5 - splice_pos,
-				     nmismatches_shortend,
+    if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,querylength5 - splice_pos,nmismatches_shortend,
 				     /*prob*/2.0,segment_left,query5_compress_rev,
-				     querylength5,/*plusp*/false,genestrand,/*sensep*/false,
+				     querylength5,/*plusp*/false,genestrand,/*first_read_p*/true,/*sensep*/false,
 				     Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 				     Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
       debug9(printf("Resolved halfsplice acceptor, End 8: Splice from antiacceptor #%d to antidonor #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(acceptor),Substring_splicesites_i(donor),nmismatches_shortend));
+		    Substring_splicecoord(acceptor),Substring_splicecoord(donor),nmismatches_shortend));
+      old = *hit5;
       *hit5 = Stage3end_new_splice(&ignore_found_score,/*nmismatches_donor*/nmismatches_shortend,Substring_nmismatches_whole(acceptor),
-				   donor,acceptor,/*distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+				   donor,acceptor,/*distance*/acceptor_splicecoord - donor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength5,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 				   /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/true,
-				   /*sensedir*/SENSE_ANTI);
+				   /*sensedir*/SENSE_ANTI,/*sarrayp*/false);
+      if (*private5p == true) {
+	Stage3end_free(&old);
+      }
       *private5p = true;
     }
 
@@ -7721,28 +9574,35 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
       /* End 7 */
       shortexon = (*hit3)->substring1;
 
-      donor_knowni = Substring_splicesites_i_D(shortexon);
+      donor_splicecoord = Substring_splicecoord_D(shortexon);
+      /* donor_knowni = Substring_splicesites_knowni_D(shortexon); */
       splice_pos = Substring_chimera_pos_D(shortexon);
-      acceptor_knowni = (*hit3)->start_ambi[bingoi3];
+      acceptor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+      acceptor_knowni = (*hit3)->start_amb_knowni[bingoi3];
       nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-      segment_left = splicesites[acceptor_knowni] - (querylength3 - splice_pos);
+      segment_left = acceptor_splicecoord - (querylength3 - splice_pos);
 
-      if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,querylength3 - splice_pos,
-					     nmismatches_shortend,
+      if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,querylength3 - splice_pos,nmismatches_shortend,
 					     /*prob*/2.0,segment_left,query3_compress_rev,
-					     querylength3,/*plusp*/false,genestrand,/*sensep*/false,
+					     querylength3,/*plusp*/false,genestrand,/*first_read_p*/false,/*sensep*/false,
 					     Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 					     Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
 	debug9(printf("Resolved shortexon, End 7: Splice from antidonor #%d to antiacceptor #%d, with nmismatches %d\n",
-		      donor_knowni,acceptor_knowni,nmismatches_shortend));
+		      donor_splicecoord,acceptor_splicecoord,nmismatches_shortend));
+	old = *hit3;
 	*hit3 = Stage3end_new_shortexon(&ignore_found_score,/*donor*/(*hit3)->substringD,acceptor,shortexon,
 					/*acceptor_distance*/(*hit3)->acceptor_distance,
-					/*donor_distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+					/*donor_distance*/acceptor_splicecoord - donor_splicecoord,
 					(*hit3)->amb_nmatches_donor,/*amb_nmatches_acceptor*/0,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/true,/*copy_acceptor_p*/false,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength3,/*sensedir*/SENSE_ANTI);
+					localsplicing_penalty,querylength3,/*sensedir*/SENSE_ANTI,
+					/*sarrayp*/false);
+	if (*private3p == true) {
+	  Stage3end_free(&old);
+	}
 	*private3p = true;
       }
 
@@ -7750,28 +9610,35 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
       /* End 4 */
       shortexon = (*hit3)->substring1;
 
-      acceptor_knowni = Substring_splicesites_i_A(shortexon);
+      acceptor_splicecoord = Substring_splicecoord_A(shortexon);
+      /* acceptor_knowni = Substring_splicesites_knowni_A(shortexon); */
       splice_pos = Substring_chimera_pos_A(shortexon);
-      donor_knowni = (*hit3)->start_ambi[bingoi3];
+      donor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+      donor_knowni = (*hit3)->start_amb_knowni[bingoi3];
       nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-      segment_left = splicesites[donor_knowni] - (querylength3 - splice_pos);
+      segment_left = donor_splicecoord - (querylength3 - splice_pos);
 
-      if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,querylength3 - splice_pos,
-				       nmismatches_shortend,
+      if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,querylength3 - splice_pos,nmismatches_shortend,
 				       /*prob*/2.0,segment_left,query3_compress_rev,
-				       querylength3,/*plusp*/false,genestrand,/*sensep*/true,
+				       querylength3,/*plusp*/false,genestrand,/*first_read_p*/false,/*sensep*/true,
 				       Substring_chrnum(shortexon),Substring_chroffset(shortexon),
 				       Substring_chrhigh(shortexon),Substring_chrlength(shortexon))) != NULL) {
 	debug9(printf("Resolved halfsplice_acceptor, End 4: Splice from acceptor #%d to #%d, with nmismatches %d\n",
-		      acceptor_knowni,donor_knowni,nmismatches_shortend));
+		      acceptor_splicecoord,donor_splicecoord,nmismatches_shortend));
+	old = *hit3;
 	*hit3 = Stage3end_new_shortexon(&ignore_found_score,donor,/*acceptor*/(*hit3)->substringA,shortexon,
-					/*acceptor_distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+					/*acceptor_distance*/donor_splicecoord - acceptor_splicecoord,
 					/*donor_distance*/(*hit3)->donor_distance,
 					/*amb_nmatches_donor*/0,(*hit3)->amb_nmatches_acceptor,
-					/*ambi_left*/NULL,/*ambi_right*/NULL,
+					/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+					/*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 					/*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 					/*copy_donor_p*/false,/*copy_acceptor_p*/true,/*copy_shortexon_p*/true,
-					localsplicing_penalty,querylength3,/*sensedir*/SENSE_FORWARD);
+					localsplicing_penalty,querylength3,/*sensedir*/SENSE_FORWARD,
+					/*sarrayp*/false);
+	if (*private3p == true) {
+	  Stage3end_free(&old);
+	}
 	*private3p = true;
       }
 
@@ -7785,27 +9652,33 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     assert((*hit3)->sensedir == SENSE_ANTI);
     donor = (*hit3)->substring_donor;
 
-    donor_knowni = Substring_splicesites_i(donor);
+    donor_splicecoord = Substring_splicecoord(donor);
+    /* donor_knowni = Substring_splicesites_knowni(donor); */
     splice_pos = Substring_chimera_pos(donor);
-    acceptor_knowni = (*hit3)->start_ambi[bingoi3];
+    acceptor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+    acceptor_knowni = (*hit3)->start_amb_knowni[bingoi3];
     nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-    segment_left = splicesites[acceptor_knowni] - (querylength3 - splice_pos);
+    segment_left = acceptor_splicecoord - (querylength3 - splice_pos);
 
-    if ((acceptor = Substring_new_acceptor(acceptor_knowni,/*joffset*/0,querylength3 - splice_pos,
-					   nmismatches_shortend,
+    if ((acceptor = Substring_new_acceptor(acceptor_splicecoord,acceptor_knowni,querylength3 - splice_pos,nmismatches_shortend,
 					   /*prob*/2.0,segment_left,query3_compress_rev,
-					   querylength3,/*plusp*/false,genestrand,/*sensep*/false,
+					   querylength3,/*plusp*/false,genestrand,/*first_read_p*/false,/*sensep*/false,
 					   Substring_chrnum(donor),Substring_chroffset(donor),
 					   Substring_chrhigh(donor),Substring_chrlength(donor))) != NULL) {
       debug9(printf("Resolved halfsplice_donor, End 7: Splice from antidonor #%d to antiacceptor #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(donor),Substring_splicesites_i(acceptor),nmismatches_shortend));
+		    Substring_splicecoord(donor),Substring_splicecoord(acceptor),nmismatches_shortend));
+      old = *hit3;
       *hit3 = Stage3end_new_splice(&ignore_found_score,Substring_nmismatches_whole(donor),/*nmismatches_acceptor*/nmismatches_shortend,
-				   donor,acceptor,/*distance*/splicesites[acceptor_knowni] - splicesites[donor_knowni],
+				   donor,acceptor,/*distance*/acceptor_splicecoord - donor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength3,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 				   /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/false,
-				   /*sensedir*/SENSE_ANTI);
+				   /*sensedir*/SENSE_ANTI,/*sarrayp*/false);
+      if (*private3p == true) {
+	Stage3end_free(&old);
+      }
       *private3p = true;
     }
 
@@ -7814,27 +9687,33 @@ resolve_inside_ambiguous_splice_minus (int *unresolved_amb_nmatches, T *hit5, T
     assert((*hit3)->sensedir == SENSE_FORWARD);
     acceptor = (*hit3)->substring_acceptor;
 
-    acceptor_knowni = Substring_splicesites_i(acceptor);
+    acceptor_splicecoord = Substring_splicecoord(acceptor);
+    /* acceptor_knowni = Substring_splicesites_knowni(acceptor); */
     splice_pos = Substring_chimera_pos(acceptor);
-    donor_knowni = (*hit3)->start_ambi[bingoi3];
+    donor_splicecoord = (*hit3)->start_ambcoords[bingoi3];
+    donor_knowni = (*hit3)->start_amb_knowni[bingoi3];
     nmismatches_shortend = (*hit3)->start_amb_nmismatches[bingoi3];
-    segment_left = splicesites[donor_knowni] - (querylength3 - splice_pos);
+    segment_left = donor_splicecoord - (querylength3 - splice_pos);
 
-    if ((donor = Substring_new_donor(donor_knowni,/*joffset*/0,querylength3 - splice_pos,
-				     nmismatches_shortend,
+    if ((donor = Substring_new_donor(donor_splicecoord,donor_knowni,querylength3 - splice_pos,nmismatches_shortend,
 				     /*prob*/2.0,segment_left,query3_compress_rev,
-				     querylength3,/*plusp*/false,genestrand,/*sensep*/true,
+				     querylength3,/*plusp*/false,genestrand,/*first_read_p*/false,/*sensep*/true,
 				     Substring_chrnum(acceptor),Substring_chroffset(acceptor),
 				     Substring_chrhigh(acceptor),Substring_chrlength(acceptor))) != NULL) {
       debug9(printf("Resolved halfsplice_acceptor, End 4: Splice from acceptor #%d to #%d, with nmismatches %d\n",
-		    Substring_splicesites_i(acceptor),Substring_splicesites_i(donor),nmismatches_shortend));
+		    Substring_splicecoord(acceptor),Substring_splicecoord(donor),nmismatches_shortend));
+      old = *hit3;
       *hit3 = Stage3end_new_splice(&ignore_found_score,/*nmismatches_donor*/nmismatches_shortend,Substring_nmismatches_whole(acceptor),
-				   donor,acceptor,/*distance*/splicesites[donor_knowni] - splicesites[acceptor_knowni],
+				   donor,acceptor,/*distance*/donor_splicecoord - acceptor_splicecoord,
 				   /*shortdistancep*/true,localsplicing_penalty,querylength3,
-				   /*amb_nmatches*/0,/*ambi_left*/NULL,/*ambi_right*/NULL,
+				   /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				   /*amb_knowni_left*/NULL,/*amb_knowni_right*/NULL,
 				   /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
 				   /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/false,
-				   /*sensedir*/SENSE_FORWARD);
+				   /*sensedir*/SENSE_FORWARD,/*sarrayp*/false);
+      if (*private3p == true) {
+	Stage3end_free(&old);
+      }
       *private3p = true;
     }
 
@@ -7857,57 +9736,20 @@ alias_circular (T hit) {
     Pair_alias_circular(hit->pairarray,hit->npairs,chrlength);
 
   } else {
-    hit->genomicstart += chrlength;
-    hit->genomicend += chrlength;
-    hit->low += chrlength;
-    hit->high += chrlength;
     Substring_alias_circular(hit->substring0);
     Substring_alias_circular(hit->substring1);
     Substring_alias_circular(hit->substring2);
   }
-  hit->alias = +1;
-
-  return;
-}
-
-
-
-static void
-unalias_circular (T hit) {
-  Chrpos_T chrlength = hit->chrlength;
-
-  assert(hit->alias == +1);
-  if (hit->hittype == GMAP) {
-    Pair_unalias_circular(hit->pairarray,hit->npairs,chrlength);
-
-  } else {
-    hit->genomicstart -= chrlength;
-    hit->genomicend -= chrlength;
-    hit->low -= chrlength;
-    hit->high -= chrlength;
-    Substring_unalias_circular(hit->substring0);
-    Substring_unalias_circular(hit->substring1);
-    Substring_unalias_circular(hit->substring2);
-  }
-  hit->alias = -1;
-
-  return;
-}
-
-
-List_T
-Stage3end_unalias_circular (List_T hitlist) {
-  List_T p;
-  T hit;
 
-  for (p = hitlist; p != NULL; p = p->rest) {
-    hit = (T) p->first;
-    if (hit->alias == +1) {
-      unalias_circular(hit);
-    }
-  }
+  /* Doesn't fix hitpair->low and hitpair->high */
+  hit->genomicstart += chrlength;
+  hit->genomicend += chrlength;
+  hit->low += chrlength;
+  hit->high += chrlength;
 
-  return hitlist;
+  hit->alias = +1;
+
+  return;
 }
 
 
@@ -7918,10 +9760,13 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
 		Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
 		int genestrand,	Pairtype_T pairtype, int localsplicing_penalty,
 		bool private5p, bool private3p, bool expect_concordant_p) {
-  Stage3pair_T new = (Stage3pair_T) MALLOC_OUT(sizeof(*new));
+  Stage3pair_T new;
+  Stage3end_T copy;
   Chrpos_T chrstart, chrend, chrpos;
   int querypos;
   int unresolved_amb_nmatches = 0;
+  int found_score = 0;
+  bool overreach5p, overreach3p;
 
   int querylength5 = hit5->querylength_adj;
   int querylength3 = hit3->querylength_adj;
@@ -7929,6 +9774,30 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
   debug10(printf("\nStage3pair_new called with pairtype %s and chrnum %d, %d (effective %d, %d)\n",
 		 Pairtype_string(pairtype),hit5->chrnum,hit3->chrnum,hit5->effective_chrnum,hit3->effective_chrnum));
 
+  if (hit5->hittype == TERMINAL && Stage3end_terminal_length(hit5) < terminal_output_minlength) {
+    debug10(printf("5' terminal length %d is not long enough (< %d)\n",
+		   Stage3end_terminal_length(hit5),terminal_output_minlength));
+    if (private5p == true) {
+      Stage3end_free(&hit5);
+    }
+    if (private3p == true) {
+      Stage3end_free(&hit3);
+    }
+    return (Stage3pair_T) NULL;
+  } else if (hit3->hittype == TERMINAL && Stage3end_terminal_length(hit3) < terminal_output_minlength) {
+    debug10(printf("3' terminal length %d is not long enough (< %d)\n",
+		   Stage3end_terminal_length(hit3),terminal_output_minlength));
+    if (private5p == true) {
+      Stage3end_free(&hit5);
+    }
+    if (private3p == true) {
+      Stage3end_free(&hit3);
+    }
+    return (Stage3pair_T) NULL;
+  } else {
+    new = (Stage3pair_T) MALLOC_OUT(sizeof(*new));
+  }
+
   if (pairtype == PAIRED_UNSPECIFIED || pairtype == UNSPECIFIED) {
     /* Can get here from running GMAP improvement on a paired result */
     pairtype = Stage3_determine_pairtype(hit5,hit3);
@@ -7946,12 +9815,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
   new->absmq_score = 0;
 #endif
 
-  if (hit5->chrnum == 0 || hit3->chrnum == 0) {
-    new->dir = 0;
-    new->insertlength = pair_insert_length(hit5,hit3);
-    new->insertlength_expected_sign = insertlength_expected(new->insertlength);
-
-  } else if (hit5->hittype == GMAP && hit3->hittype == GMAP) {
+  if (hit5->hittype == GMAP && hit3->hittype == GMAP) {
     debug10(printf("Got hit5 and hit3 both of type GMAP\n"));
 
     /* Do not try to resolve ambiguity on inside of concordant ends */
@@ -7969,7 +9833,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
 		     new->insertlength,hit5->genomicend,hit3->genomicstart,querylength5,querylength3));
     } else {
       new->dir = 0;
-      new->insertlength = 0;
+      new->insertlength = pair_insert_length_unpaired(hit5,hit3); /* was 0 */
       new->insertlength_expected_sign = false;
     }
 
@@ -8038,7 +9902,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
       }
     } else {
       new->dir = 0;
-      new->insertlength = 0;
+      new->insertlength = pair_insert_length_unpaired(hit5,hit3); /* was 0 */
       new->insertlength_expected_sign = false;
     }
 
@@ -8106,7 +9970,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
       }
     } else {
       new->dir = 0;
-      new->insertlength = 0;
+      new->insertlength = pair_insert_length_unpaired(hit5,hit3); /* was 0 */
       new->insertlength_expected_sign = false;
     }
 
@@ -8123,7 +9987,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
       new->insertlength = (hit5->genomicstart - hit3->genomicstart) + querylength5 + querylength3;
       new->insertlength_expected_sign = insertlength_expected(new->insertlength);
     } else {
-      new->insertlength = 0;
+      new->insertlength = pair_insert_length_unpaired(hit5,hit3); /* was 0 */
       new->insertlength_expected_sign = false;
     }
 
@@ -8140,7 +10004,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
       new->insertlength = (hit5->genomicend - hit3->genomicend) + querylength5 + querylength3;
       new->insertlength_expected_sign = insertlength_expected(new->insertlength);
     } else {
-      new->insertlength = 0;
+      new->insertlength = pair_insert_length_unpaired(hit5,hit3); /* was 0 */
       new->insertlength_expected_sign = false;
     }
 
@@ -8150,6 +10014,97 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
     new->dir = +1;
 
     if (expect_concordant_p == true) {
+      overreach5p = overreach3p = false;
+      if (hit5->hittype == SPLICE) {
+	if (Substring_alignstart(hit5->substring2) > hit3->genomicend) {
+	  if (Substring_alignend(hit5->substring1) < hit3->genomicstart) {
+	    overreach5p = true;
+	  }
+	}
+      }
+      if (hit3->hittype == SPLICE) {
+	if (Substring_alignend(hit3->substring1) < hit5->genomicstart) {
+	  if (Substring_alignstart(hit3->substring2) > hit5->genomicend) {
+	    overreach3p = true;
+	  }
+	}
+      }
+
+      if (overreach5p == true || overreach3p == true) {
+	/* Either overreach */
+	debug5(printf("  Returning NULL because of dual overreach\n"));
+	if (private5p == true) {
+	  Stage3end_free(&hit5);
+	}
+	if (private3p == true) {
+	  Stage3end_free(&hit3);
+	}
+	FREE_OUT(new);
+	return (Stage3pair_T) NULL;
+
+#if 0
+      } else if (overreach5p == true) {
+	/* Overreach of hit5 */
+	debug9(printf("Overreach of hit5 of type SPLICE.  Removing substring2\n"));
+	if (hit5->sensedir == SENSE_FORWARD) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/Substring_nmismatches_whole(hit5->substring1),
+				      /*nmismatches_acceptor*/0,/*donor*/hit5->substring1,/*acceptor*/NULL,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit5->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/true,
+				      /*sensedir*/hit5->sensedir,hit5->sarrayp);
+	} else if (hit5->sensedir == SENSE_ANTI) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/0,
+				      /*nmismatches_acceptor*/Substring_nmismatches_whole(hit5->substring1),/*donor*/NULL,
+				      /*acceptor*/hit5->substring1,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit5->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/true,
+				      /*sensedir*/hit5->sensedir,hit5->sarrayp);
+	} else {
+	  abort();
+	}
+	if (private5p == true) {
+	  Stage3end_free(&hit5);
+	} else {
+	  private5p = true;
+	}
+	hit5 = copy;
+
+      } else if (overreach3p == true) {
+	/* Overreach of hit3 */
+	debug9(printf("Overreach of hit3 of type SPLICE.  Removing substring1\n"));
+	if (hit3->sensedir == SENSE_FORWARD) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/0,
+				      /*nmismatches_acceptor*/Substring_nmismatches_whole(hit3->substring2),/*donor*/NULL,
+				      /*acceptor*/hit3->substring2,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit3->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/true,
+				      /*sensedir*/hit3->sensedir,hit3->sarrayp);
+	} else if (hit3->sensedir == SENSE_ANTI) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/Substring_nmismatches_whole(hit3->substring2),
+				      /*nmismatches_acceptor*/0,/*donor*/hit3->substring2,/*acceptor*/NULL,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit3->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/true,
+				      /*sensedir*/hit3->sensedir,hit3->sarrayp);
+	} else {
+	  abort();
+	}
+	if (private3p == true) {
+	  Stage3end_free(&hit3);
+	} else {
+	  private3p = true;
+	}
+	hit3 = copy;
+#endif
+      }
+
       /* Try to resolve ambiguity on inside of concordant ends */
       resolve_inside_ambiguous_splice_plus(&unresolved_amb_nmatches,&hit5,&hit3,&private5p,&private3p,
 					   splicesites,query5_compress_fwd,query3_compress_fwd,
@@ -8182,6 +10137,97 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
     new->dir = -1;
 
     if (expect_concordant_p == true) {
+      overreach5p = overreach3p = false;
+      if (hit5->hittype == SPLICE) {
+	if (Substring_alignstart(hit5->substring2) < hit3->genomicend) {
+	  if (Substring_alignend(hit5->substring1) > hit3->genomicstart) {
+	    overreach5p = true;
+	  }
+	}
+      }
+      if (hit3->hittype == SPLICE) {
+	if (Substring_alignend(hit3->substring1) > hit5->genomicstart) {
+	  if (Substring_alignstart(hit3->substring2) < hit5->genomicend) {
+	    overreach3p = true;
+	  }
+	}
+      }
+
+      if (overreach5p == true || overreach3p == true) {
+	/* Either overreach */
+	debug5(printf("  Returning NULL because of dual overreach\n"));
+	if (private5p == true) {
+	  Stage3end_free(&hit5);
+	}
+	if (private3p == true) {
+	  Stage3end_free(&hit3);
+	}
+	FREE_OUT(new);
+	return (Stage3pair_T) NULL;
+
+#if 0
+      } else if (overreach5p == true) {
+	/* Overreach of hit5 */
+	debug9(printf("Overreach of hit5 of type SPLICE.  Removing substring2\n"));
+	if (hit5->sensedir == SENSE_FORWARD) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/Substring_nmismatches_whole(hit5->substring1),
+				      /*nmismatches_acceptor*/0,/*donor*/hit5->substring1,/*acceptor*/NULL,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit5->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/false,
+				      /*sensedir*/hit5->sensedir,hit5->sarrayp);
+	} else if (hit5->sensedir == SENSE_ANTI) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/0,
+				      /*nmismatches_acceptor*/Substring_nmismatches_whole(hit5->substring1),/*donor*/NULL,
+				      /*acceptor*/hit5->substring1,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit5->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/false,
+				      /*sensedir*/hit5->sensedir,hit5->sarrayp);
+	} else {
+	  abort();
+	}
+	if (private5p == true) {
+	  Stage3end_free(&hit5);
+	} else {
+	  private5p = true;
+	}
+	hit5 = copy;
+
+      } else if (overreach3p == true) {
+	/* Overreach of hit3 */
+	debug9(printf("Overreach of hit3 of type SPLICE.  Removing substring1\n"));
+	if (hit3->sensedir == SENSE_FORWARD) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/0,
+				      /*nmismatches_acceptor*/Substring_nmismatches_whole(hit3->substring2),/*donor*/NULL,
+				      /*acceptor*/hit3->substring2,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit3->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/false,/*copy_acceptor_p*/true,/*first_read_p*/false,
+				      /*sensedir*/hit3->sensedir,hit3->sarrayp);
+	} else if (hit3->sensedir == SENSE_ANTI) {
+	  copy = Stage3end_new_splice(&found_score,/*nmismatches_donor*/Substring_nmismatches_whole(hit3->substring2),
+				      /*nmismatches_acceptor*/0,/*donor*/hit3->substring2,/*acceptor*/NULL,/*distance*/0U,
+				      /*shortdistancep*/true,localsplicing_penalty,hit3->querylength,
+				      /*amb_nmatches*/0,/*ambcoords_left*/NULL,/*ambcoords_right*/NULL,
+				      /*amb_nmismatches_left*/NULL,/*amb_nmismatches_right*/NULL,
+				      /*copy_donor_p*/true,/*copy_acceptor_p*/false,/*first_read_p*/false,
+				      /*sensedir*/hit3->sensedir,hit3->sarrayp);
+	} else {
+	  abort();
+	}
+	if (private3p == true) {
+	  Stage3end_free(&hit3);
+	} else {
+	  private3p = true;
+	}
+	hit3 = copy;
+#endif
+      }
+
       /* Try to resolve ambiguity on inside of concordant ends */
       resolve_inside_ambiguous_splice_minus(&unresolved_amb_nmatches,&hit5,&hit3,&private5p,&private3p,
 					    splicesites,query5_compress_rev,query3_compress_rev,
@@ -8306,7 +10352,7 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
   new->nchimera_known = hit5->nchimera_known + hit3->nchimera_known;
   new->nchimera_novel = hit5->nchimera_novel + hit3->nchimera_novel;
 
-  debug0(printf("Created new pair from %p and %p with private %d, %d\n",hit5,hit3,private5p,private3p));
+  debug0(printf("Created new pair %p from %p and %p with private %d, %d\n",new,hit5,hit3,private5p,private3p));
   debug0(printf("  hittypes %s and %s\n",hittype_string(hit5->hittype),hittype_string(hit3->hittype)));
   debug0(printf("  sensedirs %d and %d\n",hit5->sensedir,hit3->sensedir));
   debug0(printf("  genomicpos %lu..%lu and %lu..%lu\n",hit5->genomicstart,hit5->genomicend,hit3->genomicstart,hit3->genomicend));
@@ -8317,7 +10363,12 @@ Stage3pair_new (T hit5, T hit3,	Univcoord_T *splicesites,
     new->circularp = true;
   }
 
-  if (hit5->alias > 0) {
+  /* Fixing insertlength for circular pairs */
+  if (new->insertlength > hit5->chrlength) {
+    new->insertlength -= hit5->chrlength;
+  }
+
+ if (hit5->alias > 0) {
     debug0(printf("Unaliasing 5' end\n"));
     if (private5p == false) {
       new->hit5 = Stage3end_copy(hit5);
@@ -8441,6 +10492,30 @@ hitpair_sort_cmp (const void *a, const void *b) {
   Stage3pair_T x = * (Stage3pair_T *) a;
   Stage3pair_T y = * (Stage3pair_T *) b;
   
+  Univcoord_T x_hit5_high, x_hit5_low, y_hit5_high, y_hit5_low;
+  Univcoord_T x_hit3_high, x_hit3_low, y_hit3_high, y_hit3_low;
+  Univcoord_T x_low, x_high, y_low, y_high;
+  
+  x_hit5_low = normalize_coord(x->hit5->low,x->hit5->alias,x->hit5->chrlength);
+  x_hit5_high = normalize_coord(x->hit5->high,x->hit5->alias,x->hit5->chrlength);
+
+  x_hit3_low = normalize_coord(x->hit3->low,x->hit3->alias,x->hit3->chrlength);
+  x_hit3_high = normalize_coord(x->hit3->high,x->hit3->alias,x->hit3->chrlength);
+
+  x_low = (x_hit5_low < x_hit3_low) ? x_hit5_low : x_hit3_low;
+  x_high = (x_hit5_high > x_hit3_high) ? x_hit5_high : x_hit3_high;
+
+
+  y_hit5_low = normalize_coord(y->hit5->low,y->hit5->alias,y->hit5->chrlength);
+  y_hit5_high = normalize_coord(y->hit5->high,y->hit5->alias,y->hit5->chrlength);
+
+  y_hit3_low = normalize_coord(y->hit3->low,y->hit3->alias,y->hit3->chrlength);
+  y_hit3_high = normalize_coord(y->hit3->high,y->hit3->alias,y->hit3->chrlength);
+
+  y_low = (y_hit5_low < y_hit3_low) ? y_hit5_low : y_hit3_low;
+  y_high = (y_hit5_high > y_hit3_high) ? y_hit5_high : y_hit3_high;
+
+
   if (x->dir != 0 && y->dir == 0) {
     return -1;
   } else if (x->dir == 0 && y->dir != 0) {
@@ -8465,26 +10540,38 @@ hitpair_sort_cmp (const void *a, const void *b) {
     return -1;
   } else if (y->hit3->high < x->hit3->low) {
     return +1;
-#else
-  } else if (x->hit5->low < y->hit5->low) {
+#elif 0
+  } else if (x_hit5_low < y_hit5_low) {
+    return -1;
+  } else if (y_hit5_low < x_hit5_low) {
+    return +1;
+
+  } else if (x_hit5_high < y_hit5_high) {
     return -1;
-  } else if (y->hit5->low < x->hit5->low) {
+  } else if (y_hit5_high < x_hit5_high) {
     return +1;
 
-  } else if (x->hit5->high < y->hit5->high) {
+  } else if (x_hit3_low < y_hit3_low) {
     return -1;
-  } else if (y->hit5->high < x->hit5->high) {
+  } else if (y_hit3_low < x_hit3_low) {
     return +1;
 
-  } else if (x->hit3->low < y->hit3->low) {
+  } else if (x_hit3_high < y_hit3_high) {
     return -1;
-  } else if (y->hit3->low < x->hit3->low) {
+  } else if (y_hit3_high < x_hit3_high) {
+    return +1;
+#else
+    /* low to high pattern needed for finding overlaps */
+  } else if (x_low < y_low) {
+    return -1;
+  } else if (y_low < x_low) {
     return +1;
 
-  } else if (x->hit3->high < y->hit3->high) {
+  } else if (x_high > y_high) {
     return -1;
-  } else if (y->hit3->high < x->hit3->high) {
+  } else if (y_high > x_high) {
     return +1;
+
 #endif
 
 
@@ -8543,6 +10630,29 @@ hitpair_sort_cmp (const void *a, const void *b) {
 /* Same as hitpair_sort_cmp, except for hittype, nmatches_posttrim, and indel_low */
 static int
 hitpair_equiv_cmp (Stage3pair_T x, Stage3pair_T y) {
+  Univcoord_T x_hit5_high, x_hit5_low, y_hit5_high, y_hit5_low;
+  Univcoord_T x_hit3_high, x_hit3_low, y_hit3_high, y_hit3_low;
+  Univcoord_T x_low, x_high, y_low, y_high;
+  
+  x_hit5_low = normalize_coord(x->hit5->low,x->hit5->alias,x->hit5->chrlength);
+  x_hit5_high = normalize_coord(x->hit5->high,x->hit5->alias,x->hit5->chrlength);
+
+  x_hit3_low = normalize_coord(x->hit3->low,x->hit3->alias,x->hit3->chrlength);
+  x_hit3_high = normalize_coord(x->hit3->high,x->hit3->alias,x->hit3->chrlength);
+
+  x_low = (x_hit5_low < x_hit3_low) ? x_hit5_low : x_hit3_low;
+  x_high = (x_hit5_high > x_hit3_high) ? x_hit5_high : x_hit3_high;
+
+
+  y_hit5_low = normalize_coord(y->hit5->low,y->hit5->alias,y->hit5->chrlength);
+  y_hit5_high = normalize_coord(y->hit5->high,y->hit5->alias,y->hit5->chrlength);
+
+  y_hit3_low = normalize_coord(y->hit3->low,y->hit3->alias,y->hit3->chrlength);
+  y_hit3_high = normalize_coord(y->hit3->high,y->hit3->alias,y->hit3->chrlength);
+
+  y_low = (y_hit5_low < y_hit3_low) ? y_hit5_low : y_hit3_low;
+  y_high = (y_hit5_high > y_hit3_high) ? y_hit5_high : y_hit3_high;
+
 
   if (x->dir != 0 && y->dir == 0) {
     return -1;
@@ -8552,31 +10662,31 @@ hitpair_equiv_cmp (Stage3pair_T x, Stage3pair_T y) {
     return -1;
   } else if (x->dir < 0 && y->dir > 0) {
     return +1;
-  } else if (x->low < y->low) {
+  } else if (x_low < y_low) {
     return -1;
-  } else if (y->low < x->low) {
+  } else if (y_low < x_low) {
     return +1;
-  } else if (x->high < y->high) {
+  } else if (x_high < y_high) {
     return -1;
-  } else if (y->high < x->high) {
+  } else if (y_high < x_high) {
     return +1;
 
-  } else if (x->hit5->low < y->hit5->low) {
+  } else if (x_hit5_low < y_hit5_low) {
     return -1;
-  } else if (y->hit5->low < x->hit5->low) {
+  } else if (y_hit5_low < x_hit5_low) {
     return +1;
-  } else if (x->hit5->high < y->hit5->high) {
+  } else if (x_hit5_high < y_hit5_high) {
     return -1;
-  } else if (y->hit5->high < x->hit5->high) {
+  } else if (y_hit5_high < x_hit5_high) {
     return +1;
 
-  } else if (x->hit3->low < y->hit3->low) {
+  } else if (x_hit3_low < y_hit3_low) {
     return -1;
-  } else if (y->hit3->low < x->hit3->low) {
+  } else if (y_hit3_low < x_hit3_low) {
     return +1;
-  } else if (x->hit3->high < y->hit3->high) {
+  } else if (x_hit3_high < y_hit3_high) {
     return -1;
-  } else if (y->hit3->high < x->hit3->high) {
+  } else if (y_hit3_high < x_hit3_high) {
     return +1;
 
 #if 0
@@ -8602,6 +10712,9 @@ hitpair_equiv_cmp (Stage3pair_T x, Stage3pair_T y) {
   } else if (y->nmatches_posttrim > x->nmatches_posttrim) {
     return +1;
 #endif
+
+#if 0
+    /* Causes GMAP and non-GMAP to not be recognized as equivalent */
   } else if (x->nchimera_novel < y->nchimera_novel) {
     return -1;
   } else if (y->nchimera_novel < x->nchimera_novel) {
@@ -8610,6 +10723,8 @@ hitpair_equiv_cmp (Stage3pair_T x, Stage3pair_T y) {
     return -1;
   } else if (y->nchimera_known > x->nchimera_known) {
     return +1;
+#endif
+
   } else if (x->sense_consistent_p == true && y->sense_consistent_p == false) {
     return -1;
   } else if (x->sense_consistent_p == false && y->sense_consistent_p == true) {
@@ -8841,12 +10956,12 @@ Stage3pair_remove_duplicates_exact (List_T hitpairlist) {
   debug8(
 	 for (i = 0; i < n; i++) {
 	   hitpair = hitpairs[i];
-	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), nmatches: %d\n",
+	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), alias %d|%d, nmatches: %d\n",
 		  i,Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
 		  hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
 		  hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
 		  hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
-		  hitpair->dir,hitpair->nmatches);
+		  hitpair->dir,hitpair->hit5->alias,hitpair->hit3->alias,hitpair->nmatches);
 	 }
 	 );
 
@@ -8881,9 +10996,6 @@ Stage3pair_remove_duplicates_exact (List_T hitpairlist) {
 
 static int
 hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
-#ifdef DEBUG8
-		      int k,
-#endif
 		      Stage3pair_T best_hitpair, bool finalp) {
   double prob1, prob2;
 
@@ -8894,11 +11006,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 
   if (hitpair->absdifflength_bingo_p < best_hitpair->absdifflength_bingo_p) {
     /* k is worse */
-    debug8(printf(" => %d loses by absdifflength (bingo)\n",k));
+    debug8(printf(" => loses by absdifflength (bingo)\n"));
     return -1;
   } else if (hitpair->absdifflength_bingo_p > best_hitpair->absdifflength_bingo_p) {
     /* k is better */
-    debug8(printf(" => %d wins by absdifflength (bingo)\n",k));
+    debug8(printf(" => wins by absdifflength (bingo)\n"));
     return +1;
   }
 #endif
@@ -8906,11 +11018,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 #ifdef PRE_RESOLVE_MULTIMAPPING
   if (TALLY_RATIO*Stage3pair_tally(hitpair) < Stage3pair_tally(best_hitpair)) {
     /* k is worse */
-    debug8(printf(" => %d loses by tally\n",k));
+    debug8(printf(" => loses by tally\n"));
     return -1;
   } else if (Stage3pair_tally(hitpair) > TALLY_RATIO*Stage3pair_tally(best_hitpair)) {
     /* k is better */
-    debug8(printf(" => %d wins by tally\n",k));
+    debug8(printf(" => wins by tally\n"));
     return +1;
   }
 #endif
@@ -8923,7 +11035,7 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
   } else if (hitpair->hit5->hittype == TERMINAL || hitpair->hit3->hittype == TERMINAL ||
 	     best_hitpair->hit5->hittype == TERMINAL || best_hitpair->hit3->hittype == TERMINAL) {
     /* Do not allow terminal to win or lose in pre-final stages */
-    debug8(printf(" => %d ties by terminal\n",k));
+    debug8(printf(" => ties by terminal\n"));
     return 0;
   }
 #endif
@@ -9000,11 +11112,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
     /* Skip: Use scores only if indel is involved */
   } else if (hitpair->score > best_hitpair->score) {
     /* k is worse */
-    debug8(printf(" => %d loses by score\n",k));
+    debug8(printf(" => loses by score\n"));
     return -1;
   } else if (hitpair->score < best_hitpair->score) {
     /* k is better */
-    debug8(printf(" => %d wins by score\n",k));
+    debug8(printf(" => wins by score\n"));
     return +1;
   }
 #endif
@@ -9013,77 +11125,77 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 #if 0
   if (hitpair->nmatches < best_hitpair->nmatches) {
     /* k is worse */
-    debug8(printf(" => %d loses by nmatches\n",k));
+    debug8(printf(" => loses by nmatches\n"));
     return -1;
   } else if (hitpair->nmatches > best_hitpair->nmatches) {
     /* k is better */
-    debug8(printf(" => %d wins by nmatches\n",k));
+    debug8(printf(" => wins by nmatches\n"));
     return +1;
   }
 #endif
 
   if (hitpair->nmatches_posttrim < best_hitpair->nmatches_posttrim) {
     /* k is worse */
-    debug8(printf(" => %d loses by nmatches_posttrim\n",k));
+    debug8(printf(" => loses by nmatches_posttrim\n"));
     return -1;
   } else if (hitpair->nmatches_posttrim > best_hitpair->nmatches_posttrim) {
     /* k is better */
-    debug8(printf(" => %d wins by nmatches_posttrim\n",k));
+    debug8(printf(" => wins by nmatches_posttrim\n"));
     return +1;
 
   } else if (hitpair->nchimera_novel > best_hitpair->nchimera_novel) {
     /* k is worse */
-    debug8(printf(" => %d loses by nchimera_novel\n",k));
+    debug8(printf(" => loses by nchimera_novel\n"));
     return -1;
   } else if (hitpair->nchimera_novel < best_hitpair->nchimera_novel) {
     /* k is better */
-    debug8(printf(" => %d wins by nchimera_novel\n",k));
+    debug8(printf(" => wins by nchimera_novel\n"));
     return +1;
 
     /* Favoring nchimera_known helps before outerlength favors known
        splices over novel ones */
   } else if (hitpair->nchimera_known < best_hitpair->nchimera_known) {
     /* k is worse */
-    debug8(printf(" => %d loses by nchimera_known\n",k));
+    debug8(printf(" => loses by nchimera_known\n"));
     return -1;
   } else if (hitpair->nchimera_known > best_hitpair->nchimera_known) {
     /* k is better */
-    debug8(printf(" => %d wins by nchimera_known\n",k));
+    debug8(printf(" => wins by nchimera_known\n"));
     return +1;
 
 #if 0
   } else if (hitpair->absdifflength < best_hitpair->absdifflength) {
     /* k is worse */
-    debug8(printf(" => %d loses by absdifflength\n",k));
+    debug8(printf(" => loses by absdifflength\n"));
     return -1;
   } else if (hitpair->absdifflength > best_hitpair->absdifflength) {
     /* k is better */
-    debug8(printf(" => %d wins by absdifflength\n",k));
+    debug8(printf(" => wins by absdifflength\n"));
     return +1;
 #endif
 
   } else if (hitpair->hit5->hittype > best_hitpair->hit5->hittype &&
 	     hitpair->hit3->hittype >= best_hitpair->hit3->hittype) {
     /* k is worse */
-    debug8(printf(" => %d loses by hittype\n",k));
+    debug8(printf(" => loses by hittype\n"));
     return -1;
 
   } else if (hitpair->hit5->hittype >= best_hitpair->hit5->hittype &&
 	     hitpair->hit3->hittype > best_hitpair->hit3->hittype) {
     /* k is worse */
-    debug8(printf(" => %d loses by hittype\n",k));
+    debug8(printf(" => loses by hittype\n"));
     return -1;
 
   } else if (hitpair->hit5->hittype < best_hitpair->hit5->hittype &&
 	     hitpair->hit3->hittype <= best_hitpair->hit3->hittype) {
     /* k is better */
-    debug8(printf(" => %d wins by hittype\n",k));
+    debug8(printf(" => wins by hittype\n"));
     return +1;
 
   } else if (hitpair->hit5->hittype <= best_hitpair->hit5->hittype &&
 	     hitpair->hit3->hittype < best_hitpair->hit3->hittype) {
     /* k is better */
-    debug8(printf(" => %d wins by hittype\n",k));
+    debug8(printf(" => wins by hittype\n"));
     return +1;
 
   } else if (finalp == false) {
@@ -9095,12 +11207,12 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
   } else if (best_hitpair->absdifflength <= (Chrpos_T) pairlength_deviation &&
 	     hitpair->absdifflength > (Chrpos_T) pairlength_deviation) {
     /* k is worse */
-    debug8(printf(" => %d loses by absdifflength within deviation %d\n",k,pairlength_deviation));
+    debug8(printf(" => loses by absdifflength within deviation %d\n",pairlength_deviation));
     return -1;
   } else if (hitpair->absdifflength <= (Chrpos_T) pairlength_deviation &&
 	     best_hitpair->absdifflength > (Chrpos_T) pairlength_deviation) {
     /* k is better */
-    debug8(printf(" => %d wins by absdifflength within deviation %d\n",k,pairlength_deviation));
+    debug8(printf(" => wins by absdifflength within deviation %d\n",pairlength_deviation));
     return +1;
 #endif
 
@@ -9109,11 +11221,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
        expected pairlength */
   } else if (hitpair->insertlength_expected_sign == -1 && best_hitpair->insertlength_expected_sign == +1) {
     /* k is worse */
-    debug8(printf(" => %d loses by insertlength_expected_sign\n",k));
+    debug8(printf(" => loses by insertlength_expected_sign\n"));
     return -1;
   } else if (hitpair->insertlength_expected_sign == +1 && best_hitpair->insertlength_expected_sign == -1) {
     /* k is better */
-    debug8(printf(" => %d wins by insertlength_expected_sign\n",k));
+    debug8(printf(" => wins by insertlength_expected_sign\n"));
     return +1;
 
     /* Next we look at splice probability */
@@ -9127,11 +11239,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 	Substring_chimera_prob(best_hitpair->hit3->substring_donor) + Substring_chimera_prob(best_hitpair->hit3->substring_acceptor);
       if (prob1 + 0.3 < prob2) {
 	/* k is worse */
-	debug8(printf(" => %d loses by dual splice prob %f vs %f\n",k,prob1,prob2));
+	debug8(printf(" => loses by dual splice prob %f vs %f\n",prob1,prob2));
 	return -1;
       } else if (prob1 > prob2 + 0.3) {
 	/* k is better */
-	debug8(printf(" => %d wins by dual splice prob %f vs %f\n",k,prob1,prob2));
+	debug8(printf(" => wins by dual splice prob %f vs %f\n",prob1,prob2));
 	return +1;
       }
 
@@ -9141,11 +11253,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
       prob2 = Substring_chimera_prob(best_hitpair->hit5->substring_donor) + Substring_chimera_prob(best_hitpair->hit5->substring_acceptor);
       if (prob1 + 0.3 < prob2) {
 	/* k is worse */
-	debug8(printf(" => %d loses by splice prob %f vs %f\n",k,prob1,prob2));
+	debug8(printf(" => loses by splice prob %f vs %f\n",prob1,prob2));
 	return -1;
       } else if (prob1 > prob2 + 0.3) {
 	/* k is better */
-	debug8(printf(" => %d wins by splice prob %f vs %f\n",k,prob1,prob2));
+	debug8(printf(" => wins by splice prob %f vs %f\n",prob1,prob2));
 	return +1;
       }
 
@@ -9155,23 +11267,33 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
       prob2 = Substring_chimera_prob(best_hitpair->hit3->substring_donor) + Substring_chimera_prob(best_hitpair->hit3->substring_acceptor);
       if (prob1 + 0.3 < prob2) {
 	/* k is worse */
-	debug8(printf(" => %d loses by splice prob %f vs %f\n",k,prob1,prob2));
+	debug8(printf(" => loses by splice prob %f vs %f\n",prob1,prob2));
 	return -1;
       } else if (prob1 > prob2 + 0.3) {
 	/* k is better */
-	debug8(printf(" => %d wins by splice prob %f vs %f\n",k,prob1,prob2));
+	debug8(printf(" => wins by splice prob %f vs %f\n",prob1,prob2));
 	return +1;
       }
     }
 
-    /* Next, favor shorter outerlengths to give more compact splices or closer pairs */
-    if (hitpair->outerlength > best_hitpair->outerlength) {
+    /* Overlapping ends worse than separate ends */
+    if (hitpair->insertlength <= hitpair->hit5->querylength_adj + hitpair->hit3->querylength_adj &&
+	best_hitpair->insertlength > best_hitpair->hit5->querylength_adj + best_hitpair->hit3->querylength_adj) {
+      debug8(printf(" => loses by being overlapping\n"));
+      return -1;
+    } else if (hitpair->insertlength > hitpair->hit5->querylength_adj + hitpair->hit3->querylength_adj &&
+	       best_hitpair->insertlength <= best_hitpair->hit5->querylength_adj + best_hitpair->hit3->querylength_adj) {
+      debug8(printf(" => wins by being separate\n"));
+      return +1;
+
+      /* Next, favor shorter outerlengths to give more compact splices or closer pairs */
+    } else if (hitpair->outerlength > best_hitpair->outerlength) {
       /* k is worse */
-      debug8(printf(" => %d loses by outerlength\n",k));
+      debug8(printf(" => loses by outerlength\n"));
       return -1;
     } else if (hitpair->outerlength < best_hitpair->outerlength) {
       /* k is better */
-      debug8(printf(" => %d wins by outerlength\n",k));
+      debug8(printf(" => wins by outerlength\n"));
       return +1;
       
     } else {
@@ -9181,11 +11303,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 	/* Favor shorter insert lengths */
 	if (hitpair->insertlength > best_hitpair->insertlength) {
 	  /* k is worse */
-	  debug8(printf(" => %d loses by insertlength\n",k));
+	  debug8(printf(" => loses by insertlength\n"));
 	  return -1;
 	} else if (hitpair->insertlength < best_hitpair->insertlength) {
 	  /* k is better */
-	  debug8(printf(" => %d wins by insertlength\n",k));
+	  debug8(printf(" => wins by insertlength\n"));
 	  return +1;
 	}
 
@@ -9194,11 +11316,11 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 	debug8(printf(" => long insertlengths"));
 	if (hitpair->insertlength < best_hitpair->insertlength) {
 	  /* k is worse */
-	  debug8(printf(" => %d loses by insertlength\n",k));
+	  debug8(printf(" => loses by insertlength\n"));
 	  return -1;
 	} else if (hitpair->insertlength > best_hitpair->insertlength) {
 	  /* k is better */
-	  debug8(printf(" => %d wins by insertlength\n",k));
+	  debug8(printf(" => wins by insertlength\n"));
 	  return +1;
 	}
       }
@@ -9211,6 +11333,7 @@ hitpair_goodness_cmp (bool *equalp, Stage3pair_T hitpair,
 }
 
 
+#if 0
 static bool
 hitpair_bad_superstretch_p (Stage3pair_T hitpair_k, Stage3pair_T *hitpairs, int k, int j,
 			    bool finalp) {
@@ -9221,9 +11344,6 @@ hitpair_bad_superstretch_p (Stage3pair_T hitpair_k, Stage3pair_T *hitpairs, int
     if (hitpair_subsumption(hitpair_k,hitpairs[a]) == true) {
       debug8(printf("Testing %d because stretches over %d",k,a));
       if (hitpair_goodness_cmp(&equalp,hitpairs[a],
-#ifdef DEBUG8
-			       a,
-#endif
 			       hitpair_k,finalp) > 0 || equalp == true) {
 	debug8(printf(" => eliminating\n"));
 	return true;
@@ -9233,11 +11353,193 @@ hitpair_bad_superstretch_p (Stage3pair_T hitpair_k, Stage3pair_T *hitpairs, int
   }
   return false;
 }
+#endif
+
+
+/* Recursive, list-based approach */
+static List_T
+pair_remove_bad_superstretches (bool *keep_p, Stage3pair_T superstretch, List_T list, bool finalp) {
+  List_T result = NULL, subsumed, p, q, r;
+  Stage3pair_T stage3pair, hitpair;
+  bool equalp, this_kept_p, child_better_p;
+
+  *keep_p = true;
+
+  p = list;
+  while (p != NULL) {
+    stage3pair = (Stage3pair_T) List_head(p);
+
+    q = p;
+    while (List_next(q) != NULL && hitpair_subsumption(stage3pair,(Stage3pair_T) List_head(List_next(q))) == true) {
+#if 0
+      printf("  This (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), nmatches: %d (%d posttrim), indel_low %d and %d\n",
+	     Pairtype_string(stage3pair->pairtype),hittype_string(stage3pair->hit5->hittype),
+	     hittype_string(stage3pair->hit3->hittype),stage3pair,stage3pair->low,stage3pair->high,
+	     stage3pair->hit5->low - stage3pair->hit5->chroffset,stage3pair->hit5->high - stage3pair->hit5->chroffset,
+	     stage3pair->hit3->low - stage3pair->hit3->chroffset,stage3pair->hit3->high - stage3pair->hit3->chroffset,
+	     stage3pair->dir,stage3pair->nmatches,stage3pair->nmatches_posttrim,
+	     stage3pair->hit5->indel_low,stage3pair->hit3->indel_low);
+      hitpair = (Stage3pair_T) List_head(List_next(q));
+      printf("subsumes that (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), nmatches: %d (%d posttrim), indel_low %d and %d\n",
+	     Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
+	     hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
+	     hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
+	     hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
+	     hitpair->dir,hitpair->nmatches,hitpair->nmatches_posttrim,
+	     hitpair->hit5->indel_low,hitpair->hit3->indel_low);
+#endif
+      q = List_next(q);
+    }
+
+    if (q == p) {
+      result = List_push(result,(void *) stage3pair);
+      if (superstretch != NULL && 
+	  (hitpair_goodness_cmp(&equalp,stage3pair,superstretch,finalp) > 0 || equalp == true)) {
+	*keep_p = false;
+      }
+      p = List_next(q);
+
+    } else {
+      /* Cluster */
+      subsumed = NULL;
+      child_better_p = false;
+      for (r = List_next(p); r != q; r = List_next(r)) {
+	if (hitpair_goodness_cmp(&equalp,(Stage3pair_T) List_head(r),stage3pair,finalp) > 0 || equalp == true) {
+	  child_better_p = true;
+	}
+	subsumed = List_push(subsumed,(void *) List_head(r));
+      }
+
+      if (child_better_p == false) {
+	result = List_push(result,(void *) stage3pair);
+	for (r = subsumed; r != NULL; r = List_next(r)) {
+	  hitpair = (Stage3pair_T) List_head(r);
+	  Stage3pair_free(&hitpair);
+	}
+	List_free(&subsumed);
+
+      } else {
+	/* printf("Found cluster of length %d.  Calling remove_bad_superstretches recursively\n",List_length(subsumed)); */
+	result = List_append(result,pair_remove_bad_superstretches(&this_kept_p,/*superstretch*/stage3pair,subsumed,finalp));
+	if (this_kept_p == false) {
+	  Stage3pair_free(&stage3pair);
+	} else {
+	  /* Compare stage3pair against the current parent */
+	  result = List_push(result,(void *) stage3pair);
+	  if (superstretch != NULL && 
+	      (hitpair_goodness_cmp(&equalp,stage3pair,superstretch,finalp) > 0 || equalp == true)) {
+	    *keep_p = false;
+	  }
+	}
+      }
+
+      p = q;
+    }
+  }
+
+  List_free(&list);
+
+  return result;
+}
 
 
 static List_T
 pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
   List_T unique = NULL;
+  Stage3pair_T hitpair, *hitpairs;
+  int nkept, n, i, j;
+  bool *eliminate;
+  bool keep_p;
+
+  n = List_length(hitpairlist);
+  debug8(printf("  Entering pair_remove_overlaps with %d pairs: %s\n",
+		n,finalp == true ? "FINAL" : "not final"));
+
+  if (n < 2) {
+    debug8(printf("  Exiting pair_remove_overlaps with %d < 2 pairs\n",n));
+    return hitpairlist;
+  } else {
+    eliminate = (bool *) CALLOC(n,sizeof(bool));
+    hitpairs = (Stage3pair_T *) List_to_array(hitpairlist,NULL);
+    List_free(&hitpairlist);
+  }
+
+  /* Step 1.  Check for exact duplicates */
+  debug8(printf("  Step 1. Checking for exact duplicates\n"));
+  qsort(hitpairs,n,sizeof(Stage3pair_T),hitpair_sort_cmp);
+
+  debug8(
+	 for (i = 0; i < n; i++) {
+	   hitpair = hitpairs[i];
+	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), alias %d|%d, nmatches: %d (%d posttrim), indel_low %d and %d\n",
+		  i,Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
+		  hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
+		  hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
+		  hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
+		  hitpair->dir,hitpair->hit5->alias,hitpair->hit3->alias,hitpair->nmatches,hitpair->nmatches_posttrim,
+		  hitpair->hit5->indel_low,hitpair->hit3->indel_low);
+	 }
+	 );
+
+  i = 0;
+  while (i < n) {
+    j = i+1;
+    debug8(printf(" %d,%d",i,j));
+    while (j < n && hitpair_equiv_cmp(hitpairs[j],hitpairs[i]) == 0) {
+      debug8(printf("  %d is identical to %d => eliminating\n",j,i));
+      eliminate[j] = true;
+      j++;
+    }
+    i = j;
+  }
+  debug8(printf("\n"));
+
+  nkept = 0;
+  for (i = 0; i < n; i++) {
+    if (eliminate[i] == false) {
+      nkept++;
+    }
+  }
+  if (nkept == 0) {
+    /* All entries eliminated one another, so keep the first one */
+    eliminate[0] = false;
+    nkept = 1;
+  }
+
+  for (i = n - 1; i >= 0; --i) {
+    hitpair = hitpairs[i];
+    if (eliminate[i] == false) {
+      debug8(printf("  Keeping %lu..%lu  %u..%u|%u..%u, nmatches (trimmed) %d, score %d, (dir = %d)\n",
+		    hitpair->low,hitpair->high,
+		    hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
+		    hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
+		    hitpair->nmatches,hitpair->score,hitpair->dir));
+      unique = List_push(unique,(void *) hitpair);
+    } else {
+      debug8(printf("  Eliminating %lu..%lu  %u..%u|%u..%u, nmatches (trimmed) %d, score %d, (dir = %d)\n",
+		    hitpair->low,hitpair->high,
+		    hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
+		    hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
+		    hitpair->nmatches,hitpair->score,hitpair->dir));
+      Stage3pair_free(&hitpair);
+    }
+  }
+
+  FREE(hitpairs);
+  FREE(eliminate);
+
+  if (translocp == true) {
+    return unique;
+  } else {
+    return pair_remove_bad_superstretches(&keep_p,/*superstretch*/NULL,unique,finalp);
+  }
+}
+
+
+#if 0
+static List_T
+pair_remove_overlaps_old (List_T hitpairlist, bool translocp, bool finalp) {
+  List_T unique = NULL;
   Stage3pair_T best_hitpair, hitpair, *hitpairs, *prev;
   int cmp;
   int nkept, n, i, j, k, besti;
@@ -9266,12 +11568,12 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
   debug8(
 	 for (i = 0; i < n; i++) {
 	   hitpair = hitpairs[i];
-	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), nmatches: %d (%d posttrim), indel_low %d and %d\n",
+	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), alias %d|%d, nmatches: %d (%d posttrim), indel_low %d and %d\n",
 		  i,Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
 		  hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
 		  hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
 		  hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
-		  hitpair->dir,hitpair->nmatches,hitpair->nmatches_posttrim,
+		  hitpair->dir,hitpair->hit5->alias,hitpair->hit3->alias,hitpair->nmatches,hitpair->nmatches_posttrim,
 		  hitpair->hit5->indel_low,hitpair->hit3->indel_low);
 	 }
 	 );
@@ -9330,19 +11632,23 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
     n = nkept;
     debug8(printf("  Step 2.  Checking for superstretches among %d hitpairs within subsumption clusters\n",n));
 
+#if 0
     for (i = 0; i < n; i++) {
       eliminate[i] = false;
     }
+#else
+    memset(eliminate,false,n*sizeof(bool));
+#endif
 
     debug8(
 	   for (i = 0; i < n; i++) {
 	     hitpair = hitpairs[i];
-	     printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), score: %d, nmatches: %d (%d posttrim), nnovel: %d, nknown: %d, insertlength: %u, outerlength: %u\n",
+	     printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), score: %d, alias %d|%d, nmatches: %d (%d posttrim), nnovel: %d, nknown: %d, insertlength: %u, outerlength: %u\n",
 		    i,Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
 		    hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
 		    hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
 		    hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
-		    hitpair->dir,hitpair->score,hitpair->nmatches,hitpair->nmatches_posttrim,
+		    hitpair->dir,hitpair->score,hitpair->hit5->alias,hitpair->hit3->alias,hitpair->nmatches,hitpair->nmatches_posttrim,
 		    hitpair->nchimera_novel,hitpair->nchimera_known,
 		    hitpair->insertlength,hitpair->outerlength);
 	   }
@@ -9421,12 +11727,12 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
     debug8(
 	   for (i = 0; i < n; i++) {
 	     hitpair = hitpairs[i];
-	     printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), score: %d, nmatches: %d (%d posttrim), nnovel: %d, nknown: %d, insertlength: %u, outerlength: %u\n",
+	     printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), score: %d, alias %d|%d, nmatches: %d (%d posttrim), nnovel: %d, nknown: %d, insertlength: %u, outerlength: %u\n",
 		    i,Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
 		    hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
 		    hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
 		    hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
-		    hitpair->dir,hitpair->score,hitpair->nmatches,hitpair->nmatches_posttrim,
+		    hitpair->dir,hitpair->score,hitpair->hit5->alias,hitpair->hit3->alias,hitpair->nmatches,hitpair->nmatches_posttrim,
 		    hitpair->nchimera_novel,hitpair->nchimera_known,
 		    hitpair->insertlength,hitpair->outerlength);
 	   }
@@ -9450,9 +11756,6 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
 
 	for (k = i+1; k <= j; k++) {
 	  cmp = hitpair_goodness_cmp(&equalp,hitpairs[k],
-#ifdef DEBUG8
-				     k,
-#endif
 				     best_hitpair,finalp);
 	  debug8(printf("Comparison of %d with best %d yields %d\n",k,besti,cmp));
 	  if (cmp > 0) {
@@ -9466,9 +11769,6 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
 	  if (k == besti) {
 	    /* Skip */
 	  } else if (hitpair_goodness_cmp(&equalp,hitpairs[k],
-#ifdef DEBUG8
-					  k,
-#endif
 					  best_hitpair,finalp) < 0 || equalp == true) {
 	    debug8(printf("  Eliminating hitpair %d from left, because beaten by %d\n",k,besti));
 	    eliminate[k] = true;
@@ -9496,9 +11796,6 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
 
 	for (k = i+1; k <= j; k++) {
 	  cmp = hitpair_goodness_cmp(&equalp,hitpairs[k],
-#ifdef DEBUG8
-				     k,
-#endif
 				     best_hitpair,finalp);
 	  debug8(printf("Comparison of %d with best %d yields %d\n",k,besti,cmp));
 	  if (cmp > 0) {
@@ -9512,9 +11809,6 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
 	  if (k == besti) {
 	    /* Skip */
 	  } else if (hitpair_goodness_cmp(&equalp,hitpairs[k],
-#ifdef DEBUG8
-					  k,
-#endif
 					  best_hitpair,finalp) < 0 || equalp == true) {
 	    debug8(printf("  Eliminating hitpair %d from right, because beaten by %d\n",k,besti));
 	    eliminate[k] = true;
@@ -9574,15 +11868,15 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
   debug8(
 	 for (i = 0; i < n; i++) {
 	   hitpair = hitpairs[i];
-	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), score: %d, nmatches: %d (%d posttrim), insertlength: %u, outerlength: %u\n",
+	   printf("  Initial %d (%s, %s-%s): %p, %lu..%lu  %u..%u|%u..%u (dir = %d), score: %d, alias %d|%d, nmatches: %d (%d posttrim), insertlength: %u, outerlength: %u\n",
 		  i,Pairtype_string(hitpair->pairtype),hittype_string(hitpair->hit5->hittype),
 		  hittype_string(hitpair->hit3->hittype),hitpair,hitpair->low,hitpair->high,
 		  hitpair->hit5->low - hitpair->hit5->chroffset,hitpair->hit5->high - hitpair->hit5->chroffset,
 		  hitpair->hit3->low - hitpair->hit3->chroffset,hitpair->hit3->high - hitpair->hit3->chroffset,
-		  hitpair->dir,hitpair->score,hitpair->nmatches,hitpair->nmatches_posttrim,
+		  hitpair->dir,hitpair->score,hitpair->hit5->alias,hitpair->hit3->alias,hitpair->nmatches,hitpair->nmatches_posttrim,
 		  hitpair->insertlength,hitpair->outerlength);
 	 }
-	 );
+	 )
 
 #if 0
   i = 0;
@@ -9687,6 +11981,7 @@ pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
   debug8(printf("  Exited pair_remove_overlaps with %d pairs\n",List_length(unique)));
   return unique;
 }
+#endif
 
 
 List_T
@@ -9724,6 +12019,7 @@ Stage3pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
   } else if (unique_separate == NULL) {
     return unique_overlapping;
   } else {
+    debug8(printf("Have both overlapping and separate\n"));
     n_overlapping = List_length(unique_overlapping);
     array_overlapping = (Stage3pair_T *) List_to_array(unique_overlapping,NULL);
     List_free(&unique_overlapping);
@@ -9747,9 +12043,6 @@ Stage3pair_remove_overlaps (List_T hitpairlist, bool translocp, bool finalp) {
       subsumedp = false;
       while (j < n_separate && subsumedp == false && array_separate[j]->low <= high) {
 	if (hitpair_goodness_cmp(&equalp,array_separate[j],
-#ifdef DEBUG8
-				 j,
-#endif
 				 hitpair_overlapping,finalp) > 0) {
 	  debug8(printf("separate pair %d better than overlapping pair %d\n",j,i));
 	  subsumedp = hitpair_subsumption(array_separate[j],hitpair_overlapping);
@@ -9896,14 +12189,15 @@ Stage3pair_eval_and_sort (int *npaths, int *first_absmq, int *second_absmq,
 			  Compress_T query3_compress_fwd, Compress_T query3_compress_rev, 
 			  Genome_T genome, char *quality_string_5, char *quality_string_3) {
   char *query5, *query3;
-  double maxlik, loglik;
+  float maxlik, loglik;
 
-  double total, q;
+  float total, q;
   int mapq_score;
   bool non_terminal_5p, non_terminal_3p;
 
   int compute_npaths;
-  int i;
+  int randomi, i;
+  Stage3pair_T temp;
 
   if (*npaths == 0) {
     /* Skip */
@@ -9953,8 +12247,26 @@ Stage3pair_eval_and_sort (int *npaths, int *first_absmq, int *second_absmq,
 			     quality_string_3,/*trim_terminals_p*/non_terminal_3p ? false : true);
     }
 
-    /* Sort by nmatches, then mapq, and then insert length.  Enforce monotonicity. */
+    /* Sort by nmatches, then mapq, and then insert length */
     qsort(stage3pairarray,*npaths,sizeof(Stage3pair_T),Stage3pair_output_cmp);
+
+    if (want_random_p) {
+      /* Randomize among best alignments */
+      i = 1;
+      while (i < *npaths && Stage3pair_output_cmp(&(stage3pairarray[i]),&(stage3pairarray[0])) == 0) {
+	i++;
+      }
+      if (i > 1) {		/* i is number of ties */
+	/* randomi = (int) ((double) i * rand()/((double) RAND_MAX + 1.0)); */
+	randomi = (int) (rand() / (((double) RAND_MAX + 1.0) / (double) i));
+	/* fprintf(stderr,"%d dups => random %d\n",i,randomi); */
+	temp = stage3pairarray[0];
+	stage3pairarray[0] = stage3pairarray[randomi];
+	stage3pairarray[randomi] = temp;
+      }
+    }
+
+    /* Enforce monotonicity */
     for (i = *npaths - 1; i > 0; i--) {
       if (stage3pairarray[i-1]->mapq_loglik < stage3pairarray[i]->mapq_loglik) {
 	stage3pairarray[i-1]->mapq_loglik = stage3pairarray[i]->mapq_loglik;
@@ -9992,7 +12304,7 @@ Stage3pair_eval_and_sort (int *npaths, int *first_absmq, int *second_absmq,
     /* Compute Bayesian mapq */
     total = 0.0;
     for (i = 0; i < *npaths; i++) {
-      total += (stage3pairarray[i]->mapq_loglik = exp(stage3pairarray[i]->mapq_loglik));
+      total += (stage3pairarray[i]->mapq_loglik = fasterexp(stage3pairarray[i]->mapq_loglik));
     }
 
     /* Prepare for display */
@@ -10721,12 +13033,29 @@ List_T
 Stage3pair_remove_circular_alias (List_T hitpairlist) {
   List_T newlist = NULL, p;
   Stage3pair_T hitpair;
+  int trim;
 
   debug12(printf("Stage3pair_remove_circular_alias called with %d hitpairs\n",
 		 List_length(hitpairlist)));
   for (p = hitpairlist; p != NULL; p = p->rest) {
     hitpair = (Stage3pair_T) p->first;
-    if (hitpair->low >= hitpair->hit5->chroffset + hitpair->hit5->chrlength) {
+
+#if 0
+    /* Not sure if this is necessary */
+    if (hitpair->hit5->alias == +1 && hitpair->hit3->alias == +1) {
+      /* First, try to salvage alias +1 */
+      unalias_circular(hitpair->hit5);
+      unalias_circular(hitpair->hit3);
+    }
+#endif
+
+    if (hitpair->hit5->plusp == true) {
+      trim = hitpair->hit5->trim_left;
+    } else {
+      trim = hitpair->hit3->trim_right;
+    }
+
+    if (hitpair->low + trim >= hitpair->hit5->chroffset + hitpair->hit5->chrlength) {
       /* Both ends in circular alias */
       debug12(printf("Both ends in circular alias\n"));
       Stage3pair_free(&hitpair);
@@ -10884,7 +13213,7 @@ pair_up_concordant_aux (bool *abort_pairing_p, int *found_score, int *nconcordan
 		      (*nconcordant)++;
 		    }
 
-		    if (*nconcordant > maxpairedpaths) {
+		    if (0 && *nconcordant > maxpairedpaths) {
 		      debug(printf(" -- %d concordant paths exceeds %d",*nconcordant,maxpairedpaths));
 		      *abort_pairing_p = true;
 		    }
@@ -10993,7 +13322,7 @@ pair_up_concordant_aux (bool *abort_pairing_p, int *found_score, int *nconcordan
 		      (*nconcordant)++;
 		    }
 
-		    if (*nconcordant > maxpairedpaths) {
+		    if (0 && *nconcordant > maxpairedpaths) {
 		      debug(printf(" -- %d concordant paths exceeds %d",*nconcordant,maxpairedpaths));
 		      *abort_pairing_p = true;
 		    }
diff --git a/src/stage3hr.h b/src/stage3hr.h
index a43c17b..35e61be 100644
--- a/src/stage3hr.h
+++ b/src/stage3hr.h
@@ -1,4 +1,4 @@
-/* $Id: stage3hr.h 102130 2013-07-19 22:59:15Z twu $ */
+/* $Id: stage3hr.h 138745 2014-06-11 19:04:25Z twu $ */
 #ifndef STAGE3HR_INCLUDED
 #define STAGE3HR_INCLUDED
 
@@ -36,12 +36,38 @@ Stage3hr_setup (bool invert_first_p_in, bool invert_second_p_in,
 		IIT_T genes_iit_in, int *genes_divint_crosstable_in,
 		IIT_T tally_iit_in, int *tally_divint_crosstable_in,
 		IIT_T runlength_iit_in, int *runlength_divint_crosstable_in,
-		bool distances_observed_p, int pairmax_in,
+		int terminal_output_minlength_in, bool distances_observed_p, int pairmax_in,
 		Chrpos_T expected_pairlength, Chrpos_T pairlength_deviation,
 		int localsplicing_penalty_in, int indel_penalty_middle_in,
 		int antistranded_penalty_in, bool favor_multiexon_p_in,
 		int gmap_min_nconsecutive_in, int index1part, int index1interval,
-		bool novelsplicingp_in, bool *circularp_in);
+		bool novelsplicingp_in, bool merge_samechr_p_in,
+		bool *circularp_in, char *failedinput_root_in, bool fastq_format_p_in);
+
+extern void
+Stage3hr_file_setup_single (FILE *fp_failedinput_in, FILE *fp_nomapping_in,
+			    FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+			    FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in);
+
+extern void
+Stage3hr_file_setup_paired (FILE *fp_failedinput_1_in, FILE *fp_failedinput_2_in, FILE *fp_nomapping_in,
+			    FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+			    FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+			    FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+			    FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+			    FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+			    FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in);
+
+extern void
+Stage3hr_file_setup_all (FILE *fp_failedinput_1_in, FILE *fp_failedinput_2_in, FILE *fp_nomapping_in,
+			 FILE *fp_unpaired_uniq_in, FILE *fp_unpaired_circular_in, FILE *fp_unpaired_transloc_in,
+			 FILE *fp_unpaired_mult_in, FILE *fp_unpaired_mult_xs_1_in, FILE *fp_unpaired_mult_xs_2_in,
+			 FILE *fp_halfmapping_uniq_in, FILE *fp_halfmapping_circular_in, FILE *fp_halfmapping_transloc_in,
+			 FILE *fp_halfmapping_mult_in, FILE *fp_halfmapping_mult_xs_1_in, FILE *fp_halfmapping_mult_xs_2_in,
+			 FILE *fp_paired_uniq_circular_in, FILE *fp_paired_uniq_inv_in, FILE *fp_paired_uniq_scr_in,
+			 FILE *fp_paired_uniq_long_in, FILE *fp_paired_mult_in, FILE *fp_paired_mult_xs_1_in, FILE *fp_paired_mult_xs_2_in,
+			 FILE *fp_concordant_uniq_in, FILE *fp_concordant_circular_in, FILE *fp_concordant_transloc_in, 
+			 FILE *fp_concordant_mult_in, FILE *fp_concordant_mult_xs_1_in, FILE *fp_concordant_mult_xs_2_in);
 
 extern Hittype_T
 Stage3end_hittype (T this);
@@ -50,6 +76,12 @@ Stage3end_hittype_string (T this);
 extern int
 Stage3end_genestrand (T this);
 extern bool
+Stage3end_sarrayp (T this);
+extern bool
+Stage3end_improved_by_gmap_p (T this);
+extern void
+Stage3end_set_improved_by_gmap (T this);
+extern bool
 Stage3end_anomalous_splice_p (T this);
 extern Chrnum_T
 Stage3end_chrnum (T this);
@@ -83,10 +115,12 @@ extern double
 Stage3end_gmap_min_splice_prob (T this);
 extern int
 Stage3end_best_score (List_T hits);
+extern bool
+Stage3end_equiv_score_unpaired_p (List_T hits, int best_score);
 extern int
 Stage3end_best_score_paired (List_T hits);
 extern int
-Stage3end_nmatches (T this);
+Stage3end_nmatches_posttrim (T this);
 extern int
 Stage3end_nmismatches_whole (T this);
 extern int
@@ -151,6 +185,23 @@ extern Chrpos_T
 Stage3end_shortexon_acceptor_distance (T this);
 extern Chrpos_T
 Stage3end_shortexon_donor_distance (T this);
+extern double
+Stage3end_chimera_prob (T this);
+extern double
+Stage3end_shortexon_prob (T this);
+extern Univcoord_T
+Stage3end_chimera_segmenti_left (T this);
+extern Univcoord_T
+Stage3end_chimera_segmentj_left (T this);
+extern int
+Stage3end_chimera_segmenti_cmp (const void *a, const void *b);
+extern int
+Stage3end_chimera_segmentj_cmp (const void *a, const void *b);
+extern int
+Stage3end_shortexon_substringD_cmp (const void *a, const void *b);
+extern int
+Stage3end_shortexon_substringA_cmp (const void *a, const void *b);
+
 extern int
 Stage3end_sensedir (T this);
 extern int
@@ -160,6 +211,15 @@ Stage3end_cdna_direction (T this);
 extern int
 Stage3end_nintrons (T this);
 extern bool
+Stage3end_start_ambiguous_p (T this);
+extern bool
+Stage3end_end_ambiguous_p (T this);
+extern int
+Stage3end_amb_nmatches_start (T this);
+extern int
+Stage3end_amb_nmatches_end (T this);
+
+extern bool
 Stage3end_gmap_triedp (T this);
 extern void
 Stage3end_set_gmap_triedp (T this);
@@ -169,6 +229,8 @@ extern int
 Stage3end_gmap_queryend (T this);
 extern int
 Stage3end_terminal_trim (T this);
+extern int
+Stage3end_terminal_length (T this);
 extern bool
 Stage3end_contains_known_splicesite (T this);
 extern bool
@@ -183,6 +245,8 @@ Stage3end_genomicbound_from_end (Univcoord_T *genomicbound, T this, int overlap,
 
 extern void
 Stage3end_free (T *old);
+extern void
+Stage3end_list_free (List_T *values);
 
 
 extern bool
@@ -202,7 +266,11 @@ Stage3pair_absmq_score (Stage3pair_T this);
 extern Chrpos_T
 Stage3pair_pairlength (Stage3pair_T this);
 extern int
-Stage3pair_nmatches (Stage3pair_T this);
+Stage3pair_nmatches_posttrim (int *nmatches5, int *nmatches3, Stage3pair_T this);
+extern bool
+Stage3pair_concordantp (List_T hitpairs);
+extern List_T
+Stage3pair_filter_nonconcordant (List_T hitpairs);
 extern int
 Stage3pair_overlap (int *hardclip5, int *hardclip3, Stage3pair_T this);
 extern void
@@ -222,46 +290,60 @@ Stage3end_copy (T old);
 
 extern T
 Stage3end_new_exact (int *found_score, Univcoord_T left, int genomiclength, Compress_T query_compress,
-		     bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-		     Chrpos_T chrlength);
+		     bool plusp, int genestrand, bool first_read_p,
+		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+		     bool sarrayp);
 extern T
 Stage3end_new_substitution (int *found_score, int nmismatches, Univcoord_T left,
 			    int genomiclength, Compress_T query_compress,
-			    bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh,
-			    Chrpos_T chrlength);
+			    bool plusp, int genestrand, bool first_read_p,
+			    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+			    bool sarrayp);
 extern T
 Stage3end_new_insertion (int *found_score, int nindels, int indel_pos, int nmismatches1, int nmismatches2,
 			 Univcoord_T left, int genomiclength, Compress_T query_compress,
-			 int querylength, bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset,
-			 Univcoord_T chrhigh, Chrpos_T chrlength, int indel_penalty);
+			 int querylength, bool plusp, int genestrand, bool first_read_p,
+			 Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
+			 int indel_penalty, bool sarrayp);
 extern T
 Stage3end_new_deletion (int *found_score, int nindels, int indel_pos, int nmismatches1, int nmismatches2,
 			Univcoord_T left, int genomiclength, Compress_T query_compress,
-			int querylength, bool plusp, int genestrand, Chrnum_T chrnum, Univcoord_T chroffset,
-			Univcoord_T chrhigh, Chrpos_T chrlength, int indel_penalty);
+			int querylength, bool plusp, int genestrand, bool first_read_p,
+			Chrnum_T chrnum, Univcoord_T chroffset,	Univcoord_T chrhigh, Chrpos_T chrlength,
+			int indel_penalty, bool sarrayp);
 
 extern T
 Stage3end_new_terminal (int querystart, int queryend, Univcoord_T left, Compress_T query_compress,
-			int querylength, bool plusp, int genestrand,
+			int querylength, bool plusp, int genestrand, bool first_read_p,
 			Endtype_T start_endtype, Endtype_T end_endtype,
 			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
-			int max_mismatches_allowed);
+			int max_mismatches_allowed, bool sarrayp);
 extern T
 Stage3end_new_splice (int *found_score, int donor_nmismatches, int acceptor_nmismatches,
 		      Substring_T donor, Substring_T acceptor, Chrpos_T distance,
-		      bool shortdistancep, int splicing_penalty, int querylength,
-		      int amb_nmatches, Intlist_T ambi_left, Intlist_T ambi_right,
+		      bool shortdistancep, int splicing_penalty, int querylength, int amb_nmatches,
+#ifdef LARGE_GENOMES
+		      Uint8list_T ambcoords_left, Uint8list_T ambcoords_right,
+#else
+		      Uintlist_T ambcoords_left, Uintlist_T ambcoords_right,
+#endif
+		      Intlist_T amb_knowni_left, Intlist_T amb_knowni_right,
 		      Intlist_T amb_nmismatches_left, Intlist_T amb_nmismatches_right,
 		      bool copy_donor_p, bool copy_acceptor_p,
-		      bool first_read_p, int sensedir);
+		      bool first_read_p, int sensedir, bool sarrayp);
 extern T
 Stage3end_new_shortexon (int *found_score, Substring_T donor, Substring_T acceptor, Substring_T shortexon,
 			 Chrpos_T acceptor_distance, Chrpos_T donor_distance,
 			 int amb_nmatches_donor, int amb_nmatches_acceptor,
-			 Intlist_T ambi_left, Intlist_T ambi_right,
+#ifdef LARGE_GENOMES
+			 Uint8list_T ambcoords_left, Uint8list_T ambcoords_right,
+#else
+			 Uintlist_T ambcoords_left, Uintlist_T ambcoords_right,
+#endif
+			 Intlist_T amb_knowni_left, Intlist_T amb_knowni_right,
 			 Intlist_T amb_nmismatches_left, Intlist_T amb_nmismatches_right,
 			 bool copy_donor_p, bool copy_acceptor_p, bool copy_shortexon_p,
-			 int splicing_penalty, int querylength, int sensedir);
+			 int splicing_penalty, int querylength, int sensedir, bool sarrayp);
 
 extern T
 Stage3end_new_gmap (int nmismatches_whole, int nmatches_posttrim, int max_match_length,
@@ -269,7 +351,7 @@ Stage3end_new_gmap (int nmismatches_whole, int nmatches_posttrim, int max_match_
 		    Splicetype_T ambig_splicetype_5, Splicetype_T ambig_splicetype_3,
 		    double min_splice_prob, struct Pair_T *pairarray, int npairs,
 		    int nsegments, int nintrons, int nindelbreaks,
-		    Univcoord_T left, int genomiclength, bool plusp, int genestrand, int querylength,
+		    Univcoord_T left, int genomiclength, bool plusp, int genestrand, bool first_read_p, int querylength,
 		    Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength,
 		    int cdna_direction, int sensedir);
 
@@ -305,7 +387,9 @@ Stage3end_remove_circular_alias (List_T hitlist);
 extern int
 Stage3end_noptimal (List_T hitlist);
 extern List_T
-Stage3end_remove_duplicates (List_T hitlist, Shortread_T queryseq1, Shortread_T queryseq2);
+Stage3end_remove_duplicates (List_T hitlist);
+extern List_T
+Stage3end_filter_terminals (List_T hits, int querylength);
 extern List_T
 Stage3end_remove_overlaps (List_T hitlist, bool finalp);
 extern List_T
@@ -317,15 +401,10 @@ Stage3_determine_pairtype (T hit5, T hit3);
 
 /* If hit5 and hit3 are not NULL, then we know this is part of a pair */
 extern void
-Stage3end_print (FILE *fp, T this, int score,
-		 Univ_IIT_T chromosome_iit, Shortread_T queryseq,
+Stage3end_print (FILE *fp, T this, int score, Univ_IIT_T chromosome_iit, Shortread_T queryseq,
 		 bool invertp, T hit5, T hit3, int pairedlength, int pairscore,
 		 Pairtype_T pairtype, int mapq_score);
 
-extern List_T
-Stage3end_unalias_circular (List_T hitlist);
-
-
 extern Pairtype_T
 Stage3pair_pairtype (Stage3pair_T this);
 extern bool
@@ -335,17 +414,7 @@ extern void
 Stage3pair_print (Result_T result, Resulttype_T resulttype,
 		  Univ_IIT_T chromosome_iit, Shortread_T queryseq1, Shortread_T queryseq2,
 		  int maxpaths, bool quiet_if_excessive_p,
-		  bool nofailsp, bool failsonlyp,
-		  bool fails_as_input_p, bool fastq_format_p, int quality_shift,
-		  FILE *fp_nomapping_1, FILE *fp_nomapping_2,
-		  FILE *fp_unpaired_uniq, FILE *fp_unpaired_circular,
-		  FILE *fp_unpaired_transloc, FILE *fp_unpaired_mult,
-		  FILE *fp_halfmapping_uniq, FILE *fp_halfmapping_circular,
-		  FILE *fp_halfmapping_transloc, FILE *fp_halfmapping_mult,
-		  FILE *fp_paired_uniq_circular, FILE *fp_paired_uniq_inv, FILE *fp_paired_uniq_scr,
-		  FILE *fp_paired_uniq_long, FILE *fp_paired_mult,
-		  FILE *fp_concordant_uniq, FILE *fp_concordant_circular,
-		  FILE *fp_concordant_transloc, FILE *fp_concordant_mult);
+		  bool nofailsp, bool failsonlyp, bool fastq_format_p, int quality_shift);
 
 extern Stage3pair_T
 Stage3pair_new (T hit5, T hit3, Univcoord_T *splicesites,
@@ -379,6 +448,11 @@ Stage3pair_optimal_score (List_T hitpairlist, int cutoff_level, int suboptimal_m
 			  Compress_T query3_compress_fwd, Compress_T query3_compress_rev,
 			  bool keep_gmap_p, bool finalp);
 
+#if 0
+extern List_T
+Stage3end_unalias_circular (List_T hitlist);
+#endif
+
 extern List_T
 Stage3pair_remove_circular_alias (List_T hitpairlist);
 
diff --git a/src/stopwatch.c b/src/stopwatch.c
index 02b86ee..cb14a96 100644
--- a/src/stopwatch.c
+++ b/src/stopwatch.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stopwatch.c 43367 2011-07-21 20:47:54Z twu $";
+static char rcsid[] = "$Id: stopwatch.c 134892 2014-05-01 23:35:06Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -6,18 +6,26 @@ static char rcsid[] = "$Id: stopwatch.c 43367 2011-07-21 20:47:54Z twu $";
 #include "stopwatch.h"
 #include "mem.h"
 
+#define USE_POSIX_C_TIME 1
+
+
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>		/* For sysconf */
 #endif
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>		/* For sys/times.h under AT&T System V Interface */
 #endif
+
+#ifdef USE_POSIX_C_TIME
 #include <sys/times.h>
+#else
 #include <time.h>		/* For clock() */
+#endif
+
 
 #define T Stopwatch_T
 struct T {
-#if 1
+#ifdef USE_POSIX_C_TIME
   struct tms start;
   struct tms stop;
 #endif
@@ -42,7 +50,7 @@ Stopwatch_free (T *old) {
 void
 Stopwatch_start (T this) {
   if (this != NULL) {
-#if 1
+#ifdef USE_POSIX_C_TIME
     this->start_elapsed = times(&this->start);
 #else
     this->start_elapsed = clock();
@@ -56,12 +64,14 @@ Stopwatch_start (T this) {
    in "clock ticks per second", CLK_TCK */
 double 
 Stopwatch_stop (T this) {
+#ifdef USE_POSIX_C_TIME
   long clk_tck = sysconf(_SC_CLK_TCK);
+#endif
 
   if (this == NULL) {
     return 0.0;
   } else {
-#if 1
+#ifdef USE_POSIX_C_TIME
     this->stop_elapsed = times(&this->stop);
     /* user time is in stop.tms_utime */
     return (double) (this->stop_elapsed - this->start_elapsed)/(double) clk_tck;
diff --git a/src/substring.c b/src/substring.c
index ceefa06..46303f7 100644
--- a/src/substring.c
+++ b/src/substring.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: substring.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: substring.c 138720 2014-06-11 17:07:51Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -15,7 +15,7 @@ static char rcsid[] = "$Id: substring.c 99737 2013-06-27 19:33:03Z twu $";
 #include "listdef.h"
 #include "list.h"
 #include "complement.h"
-#include "genome_hr.h"
+#include "genome128_hr.h"
 #include "mapq.h"
 #include "pair.h"		/* For Pair_print_gsnap */
 #include "pairdef.h"		/* For State_T */
@@ -251,6 +251,7 @@ struct T {
   int genomiclength;
   bool plusp;
   int genestrand;
+  bool first_read_p;
 
   char *genomic_bothdiff; /* In same direction as query.  NULL if same
   			     as query.  Has dashes outside of
@@ -267,14 +268,14 @@ struct T {
 			     a pointer to genomic_bothdiff.  Use for
 			     NM and MD computations.  */
 
-  double mapq_loglik;
+  float mapq_loglik;
 
   /* for splices */
   bool chimera_sensep;
 
-  int splicesites_i;		/* Keep this for finding short-end
-				   splicing later.  If < 0, then it's
-				   a novel splice site. */
+  Univcoord_T splicecoord;
+  int splicesites_knowni;	/* Needed for intragenic_splice_p in stage1hr.c */
+
   bool chimera_knownp;
   bool chimera_novelp;
   Univcoord_T chimera_modelpos;
@@ -282,8 +283,10 @@ struct T {
   double chimera_prob;
 
   /* for shortexon (always use *_1 for acceptor and *_2 for donor) */
-  /* for donor/acceptor: the ambiguous site */
-  int splicesites_i_2;
+  /* for donor/acceptor: the ambiguous position */
+  Univcoord_T splicecoord_2;
+  int splicesites_knowni_2;
+
   bool chimera_knownp_2;
   bool chimera_novelp_2;
   Univcoord_T chimera_modelpos_2;
@@ -567,7 +570,7 @@ count_mismatches_dibase (char *genome, char *query, int start, int end, bool plu
 
 static int
 trim_left_end (Compress_T query_compress, Univcoord_T left, int querystart, int queryend,
-	       int querylength, bool plusp, int genestrand, int trim_mismatch_score) {
+	       int querylength, bool plusp, int genestrand, bool first_read_p, int trim_mismatch_score) {
   int bestscore, score;
   int trim5, alignlength, pos, prevpos, i;
 
@@ -584,7 +587,7 @@ trim_left_end (Compress_T query_compress, Univcoord_T left, int querystart, int
   if (plusp == true) {
     nmismatches = Genome_mismatches_right_trim(mismatch_positions,/*max_mismatches*/alignlength,
 					       query_compress,left,/*pos5*/querystart,/*pos3*/queryend,
-					       plusp,genestrand);
+					       plusp,genestrand,first_read_p);
     debug8(printf("%d mismatches:",nmismatches));
     debug8(
 	   for (i = 0; i < nmismatches; i++) {
@@ -613,7 +616,7 @@ trim_left_end (Compress_T query_compress, Univcoord_T left, int querystart, int
   } else {
     nmismatches = Genome_mismatches_left_trim(mismatch_positions,/*max_mismatches*/alignlength,
 					      query_compress,left,/*pos5*/querylength - queryend,
-					      /*pos3*/querylength - querystart,plusp,genestrand);
+					      /*pos3*/querylength - querystart,plusp,genestrand,first_read_p);
 
     debug8(printf("%d mismatches:",nmismatches));
     debug8(
@@ -659,7 +662,7 @@ trim_left_end (Compress_T query_compress, Univcoord_T left, int querystart, int
 /* sequences may have had lower case characters marked */
 static int
 trim_right_end (Compress_T query_compress, Univcoord_T left, int querystart, int queryend,
-		int querylength, bool plusp, int genestrand, int trim_mismatch_score) {
+		int querylength, bool plusp, int genestrand, bool first_read_p, int trim_mismatch_score) {
   int bestscore, score;
   int trim3, alignlength, pos, prevpos, i;
 
@@ -677,7 +680,7 @@ trim_right_end (Compress_T query_compress, Univcoord_T left, int querystart, int
   if (plusp == true) {
     nmismatches = Genome_mismatches_left_trim(mismatch_positions,/*max_mismatches*/alignlength,
 					      query_compress,left,/*pos5*/querystart,/*pos3*/queryend,
-					      plusp,genestrand);
+					      plusp,genestrand,first_read_p);
 
     debug8(printf("%d mismatches:",nmismatches));
     debug8(
@@ -707,7 +710,7 @@ trim_right_end (Compress_T query_compress, Univcoord_T left, int querystart, int
   } else {
     nmismatches = Genome_mismatches_right_trim(mismatch_positions,/*max_mismatches*/alignlength,
 					       query_compress,left,/*pos5*/querylength - queryend,
-					       /*pos3*/querylength - querystart,plusp,genestrand);
+					       /*pos3*/querylength - querystart,plusp,genestrand,first_read_p);
 
     debug8(printf("%d mismatches:",nmismatches));
     debug8(
@@ -754,8 +757,7 @@ bool
 Substring_bad_stretch_p (T this, Compress_T query_compress_fwd, Compress_T query_compress_rev) {
   int alignlength, startpos, endpos, pos, i;
   int mismatch_positions[MAX_READLENGTH];
-  int nmismatches;
-  double vprob_good, vprob_bad, prev_vprob_good, prev_vprob_bad, good_incr_prob, bad_incr_prob;
+  float vprob_good, vprob_bad, prev_vprob_good, prev_vprob_bad, good_incr_prob, bad_incr_prob;
 #ifdef DEBUG9
   bool result;
   State_T vstate_good[MAX_READLENGTH], vstate_bad[MAX_READLENGTH], state;
@@ -769,16 +771,20 @@ Substring_bad_stretch_p (T this, Compress_T query_compress_fwd, Compress_T query
     startpos = this->querystart_orig;
     endpos = this->queryend_orig;
     debug9(printf("Calling Genome_mismatches_left from pos5 %d to pos3 %d\n",startpos,endpos));
+#ifdef DEBUG9
     nmismatches = Genome_mismatches_left(mismatch_positions,/*max_mismatches*/alignlength,
 					 query_compress_fwd,this->left,/*pos5*/startpos,/*pos3*/endpos,
-					 /*plusp*/true,this->genestrand);
+					 /*plusp*/true,this->genestrand,this->first_read_p);
+#endif
   } else {
     startpos = this->querylength - this->queryend_orig;
     endpos = this->querylength - this->querystart_orig;
     debug9(printf("Calling Genome_mismatches_left from pos5 %d to pos3 %d\n",startpos,endpos));
+#ifdef DEBUG9
     nmismatches = Genome_mismatches_left(mismatch_positions,/*max_mismatches*/alignlength,
 					 query_compress_rev,this->left,/*pos5*/startpos,/*pos3*/endpos,
-					 /*plusp*/false,this->genestrand);
+					 /*plusp*/false,this->genestrand,this->first_read_p);
+#endif
   }
 
   debug9(printf("%d mismatches:",nmismatches));
@@ -995,23 +1001,41 @@ Substring_print_ends (T this, int chrnum) {
 
 
 int
-Substring_compare (T substring1, T substring2) {
+Substring_compare (T substring1, T substring2, int alias1, int alias2, Chrpos_T chrlength1, Chrpos_T chrlength2) {
+  Univcoord_T alignstart1, alignend1, alignstart2, alignend2;
+
   if (substring1 == NULL && substring2 == NULL) {
     return 0;
   } else if (substring1 == NULL) {
     return -1;
   } else if (substring2 == NULL) {
     return +1;
-  } else if (substring1->alignstart < substring2->alignstart) {
-    return -1;
-  } else if (substring1->alignstart > substring2->alignstart) {
-    return +1;
-  } else if (substring1->alignend < substring2->alignend) {
-    return -1;
-  } else if (substring1->alignend > substring2->alignend) {
-    return +1;
   } else {
-    return 0;
+    alignstart1 = substring1->alignstart;
+    alignend1 = substring1->alignend;
+    if (alias1 < 0) {
+      alignstart1 += chrlength1;
+      alignend1 += chrlength1;
+    }
+
+    alignstart2 = substring2->alignstart;
+    alignend2 = substring2->alignend;
+    if (alias2 < 0) {
+      alignstart2 += chrlength2;
+      alignend2 += chrlength2;
+    }
+
+    if (alignstart1 < alignstart2) {
+      return -1;
+    } else if (alignstart1 > alignstart2) {
+      return +1;
+    } else if (alignend1 < alignend2) {
+      return -1;
+    } else if (alignend1 > alignend2) {
+      return +1;
+    } else {
+      return 0;
+    }
   }
 }
 
@@ -1090,37 +1114,137 @@ Substring_insert_length (T substring5, T substring3) {
 }
 
 
-static void
-mark_mismatches_cmet_stranded_gsnap (char *gbuffer, char *query, int start, int end) {
-  int i;
+bool
+Substring_overlap_point_trimmed_p (T substring, Univcoord_T endpos) {
+  Univcoord_T low, high;
+
+  if (substring == NULL) {
+    return false;
+  }
+
+  if (substring->plusp == true) {
+    low = substring->alignstart_trim;
+    high = substring->alignend_trim;
+  } else {
+    low = substring->alignend_trim;
+    high = substring->alignstart_trim;
+  }
+
+  debug3(printf("Checking overlap between %u..%u and %u",low,high,endpos));
+
+  if (endpos < low) {
+    debug3(printf(" => no because %u < %u\n",endpos,low));
+    return false;
+  } else if (endpos > high) {
+    debug3(printf(" => no because %u > %u\n",endpos,high));
+    return false;
+  } else {
+    debug3(printf(" => yes\n"));
+    return true;
+  }
+}
+
+
+bool
+Substring_overlap_segment_trimmed_p (T substring1, T substring2) {
+  Univcoord_T low1, high1, low2, high2;
+
+  if (substring1->plusp == true) {
+    low1 = substring1->alignstart_trim;
+    high1 = substring1->alignend_trim;
+  } else {
+    low1 = substring1->alignend_trim;
+    high1 = substring1->alignstart_trim;
+  }
+
+  if (substring2->plusp == true) {
+    low2 = substring2->alignstart_trim;
+    high2 = substring2->alignend_trim;
+  } else {
+    low2 = substring2->alignend_trim;
+    high2 = substring2->alignstart_trim;
+  }
+
+  debug3(printf("Checking overlap between %u..%u and %u..%u",low1,high1,low2,high2));
+
+  if (high2 < low1) {
+    debug3(printf(" => no because %u < %u\n",high2,low1));
+    return false;
+  } else if (low2 > high1) {
+    debug3(printf(" => no because %u > %u\n",low2,high1));
+    return false;
+  } else {
+    debug3(printf(" => yes\n"));
+    return true;
+  }
+}
+
+
+
+#if 0
+Chrpos_T
+Substring_insert_length_trimmed (T substring5, T substring3, int hit5_trim_left, int hit5_trim_right, int hit3_trim_left, int hit3_trim_right) {
+  Univcoord_T rightpos, leftpos, pos;
+  int right_extent, left_extent;
   
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("count:  "));
+  debug3(printf("substring5 %d..%d out of %d.  aligned to %u..%u\n",
+		substring5->querystart,substring5->queryend,substring5->querylength,
+		substring5->alignstart_trim - substring5->chroffset,substring5->alignend_trim - substring5->chroffset));
+  debug3(printf("substring3 %d..%d out of %d.  aligned to %u..%u\n",
+		substring3->querystart,substring3->queryend,substring3->querylength,
+		substring3->alignstart_trim - substring3->chroffset,substring3->alignend_trim - substring3->chroffset));
+  if (substring5->plusp == true) {
+    if (substring5->alignend_trim > substring3->alignend_trim) {
+      rightpos = substring5->alignend_trim;
+      right_extent = substring5->querylength - substring5->queryend - hit5_trim_right;
+    } else {
+      rightpos = substring3->alignend_trim;
+      right_extent = substring3->querylength - substring3->queryend - hit3_trim_right;
+    }
+    debug3(printf("rightpos = %u, right_extent = %d\n",rightpos,right_extent));
 
-  for (i = start; i < end; i++) {
-    if (gbuffer[i] == 'C' && query[i] == 'T') {
-      debug1(printf("."));
-      gbuffer[i] = '.';
-    } else if (query[i] != gbuffer[i]) {
-      debug1(printf("x"));
-      assert(gbuffer[i] != OUTOFBOUNDS);
-      gbuffer[i] = (char) tolower(gbuffer[i]);
+    if (substring5->alignstart_trim < substring3->alignstart_trim) {
+      leftpos = substring5->alignstart_trim;
+      left_extent = substring5->querystart - hit5_trim_left;
     } else {
-      debug1(printf("*"));
+      leftpos = substring3->alignstart_trim;
+      left_extent = substring3->querystart - hit3_trim_left;
     }
-  }
+    debug3(printf("leftpos = %u, left_extent = %d\n",leftpos,left_extent));
 
-  return;
+    return (rightpos - leftpos) + right_extent + left_extent;
+
+  } else {
+    if (substring3->alignstart_trim > (pos = substring5->alignend_trim + (substring5->queryend - substring5->querystart /* - hit5_trim_left */) +
+				       (substring3->querylength - substring3->querystart - hit3_trim_right))) {
+      return 0;
+    } else {
+      debug3(printf("minus: substring5->alignend_trim %u - substring3->alignstart_trim %u +\n",
+		    substring5->alignend_trim - substring5->chroffset,substring3->alignstart_trim - substring3->chroffset));
+      debug3(printf("      substring5->queryend %d - substring5->querystart %d +\n",substring5->queryend,substring5->querystart));
+      debug3(printf("      substring3->querylength %d - substring3->querystart %d - hit3_trim_right %d\n",
+		    substring3->querylength,substring3->querystart,hit3_trim_right));
+      return (pos - substring3->alignstart_trim);
+    }
+  }
 }
+#endif
+
+
 
 static void
-mark_mismatches_cmet_nonstranded_gsnap (char *gbuffer, char *query, int start, int end,
-					bool plusp, int genestrand) {
+mark_mismatches_cmet_gsnap (char *gbuffer, char *query, int start, int end,
+			    int genestrand, bool first_read_p) {
   int i;
+  
+  debug1(printf("\n"));
+  debug1(printf("first_read_p %d\n",first_read_p));
+  debug1(printf("query:  %s\n",query));
+  debug1(printf("genome: %s\n",gbuffer));
+  debug1(printf("count:  "));
 
-  if (genestrand == +1) {
-    if (plusp == true) {
+  if (genestrand == +2) {
+    if (first_read_p == false) {
       for (i = start; i < end; i++) {
 	if (gbuffer[i] == 'C' && query[i] == 'T') {
 	  debug1(printf("."));
@@ -1149,10 +1273,9 @@ mark_mismatches_cmet_nonstranded_gsnap (char *gbuffer, char *query, int start, i
     }
 
   } else {
-    /* genestrand == +2 */
-    if (plusp == true) {
+    if (first_read_p == true) {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'G' && query[i] == 'A') {
+	if (gbuffer[i] == 'C' && query[i] == 'T') {
 	  debug1(printf("."));
 	  gbuffer[i] = '.';
 	} else if (query[i] != gbuffer[i]) {
@@ -1165,7 +1288,7 @@ mark_mismatches_cmet_nonstranded_gsnap (char *gbuffer, char *query, int start, i
       }
     } else {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'C' && query[i] == 'T') {
+	if (gbuffer[i] == 'G' && query[i] == 'A') {
 	  debug1(printf("."));
 	  gbuffer[i] = '.';
 	} else if (query[i] != gbuffer[i]) {
@@ -1179,56 +1302,21 @@ mark_mismatches_cmet_nonstranded_gsnap (char *gbuffer, char *query, int start, i
     }
   }
 
-  debug1(printf("\n"));
-
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("\n"));
-
   return;
 }
 
 
-
 static void
-mark_mismatches_cmet_stranded_sam (char *gbuffer, char *query, int start, int end) {
+mark_mismatches_cmet_sam (char *gbuffer, char *query, int start, int end,
+			  int genestrand, bool first_read_p) {
   int i;
   
   debug1(printf("query:  %s\n",query));
   debug1(printf("genome: %s\n",gbuffer));
   debug1(printf("count:  "));
 
-  for (i = start; i < end; i++) {
-    if (gbuffer[i] == 'C' && query[i] == 'T') {
-      debug1(printf("."));
-#if 0
-      /* Want to show mismatches */
-      gbuffer[i] = 'T';		/* Avoids showing mismatches in MD and NM strings */
-#endif
-    } else if (query[i] != gbuffer[i]) {
-      debug1(printf("x"));
-      assert(gbuffer[i] != OUTOFBOUNDS);
-      gbuffer[i] = (char) tolower(gbuffer[i]);
-    } else {
-      debug1(printf("*"));
-    }
-  }
-  
-  return;
-}
-
-
-static void
-mark_mismatches_cmet_nonstranded_sam (char *gbuffer, char *query, int start, int end,
-				      bool plusp, int genestrand) {
-  int i;
-  
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("count:  "));
-
-  if (genestrand == +1) {
-    if (plusp == true) {
+  if (genestrand == +2) {
+    if (first_read_p == false) {
       for (i = start; i < end; i++) {
 	if (gbuffer[i] == 'C' && query[i] == 'T') {
 	  debug1(printf("."));
@@ -1261,15 +1349,15 @@ mark_mismatches_cmet_nonstranded_sam (char *gbuffer, char *query, int start, int
 	}
       }
     }
+
   } else {
-    /* genestrand == +2 */
-    if (plusp == true) {
+    if (first_read_p == true) {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'G' && query[i] == 'A') {
+	if (gbuffer[i] == 'C' && query[i] == 'T') {
 	  debug1(printf("."));
 #if 0
 	  /* Want to show mismatches */
-	  gbuffer[i] = 'A';		/* Avoids showing mismatches in MD and NM strings */
+	  gbuffer[i] = 'T';		/* Avoids showing mismatches in MD and NM strings */
 #endif
 	} else if (query[i] != gbuffer[i]) {
 	  debug1(printf("x"));
@@ -1281,11 +1369,11 @@ mark_mismatches_cmet_nonstranded_sam (char *gbuffer, char *query, int start, int
       }
     } else {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'C' && query[i] == 'T') {
+	if (gbuffer[i] == 'G' && query[i] == 'A') {
 	  debug1(printf("."));
 #if 0
 	  /* Want to show mismatches */
-	  gbuffer[i] = 'T';		/* Avoids showing mismatches in MD and NM strings */
+	  gbuffer[i] = 'A';		/* Avoids showing mismatches in MD and NM strings */
 #endif
 	} else if (query[i] != gbuffer[i]) {
 	  debug1(printf("x"));
@@ -1297,53 +1385,23 @@ mark_mismatches_cmet_nonstranded_sam (char *gbuffer, char *query, int start, int
       }
     }
   }
-
-  debug1(printf("\n"));
-
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("\n"));
-
-  return;
-}
-
-
-static void
-mark_mismatches_atoi_stranded_gsnap (char *gbuffer, char *query, int start, int end) {
-  int i;
-  
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("count:  "));
-
-  for (i = start; i < end; i++) {
-    if (gbuffer[i] == 'A' && query[i] == 'G') {
-      debug1(printf("."));
-      gbuffer[i] = '.';
-    } else if (query[i] != gbuffer[i]) {
-      debug1(printf("x"));
-      assert(gbuffer[i] != OUTOFBOUNDS);
-      gbuffer[i] = (char) tolower(gbuffer[i]);
-    } else {
-      debug1(printf("*"));
-    }
-  }
   
   return;
 }
 
 
+
 static void
-mark_mismatches_atoi_nonstranded_gsnap (char *gbuffer, char *query, int start, int end,
-					bool plusp, int genestrand) {
+mark_mismatches_atoi_gsnap (char *gbuffer, char *query, int start, int end,
+			    int genestrand, bool first_read_p) {
   int i;
   
   debug1(printf("query:  %s\n",query));
   debug1(printf("genome: %s\n",gbuffer));
   debug1(printf("count:  "));
 
-  if (genestrand == +1) {
-    if (plusp == true) {
+  if (genestrand == +2) {
+    if (first_read_p == false) {
       for (i = start; i < end; i++) {
 	if (gbuffer[i] == 'A' && query[i] == 'G') {
 	  debug1(printf("."));
@@ -1372,10 +1430,9 @@ mark_mismatches_atoi_nonstranded_gsnap (char *gbuffer, char *query, int start, i
     }
 
   } else {
-    /* genestrand == +2 */
-    if (plusp == true) {
+    if (first_read_p == true) {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'T' && query[i] == 'C') {
+	if (gbuffer[i] == 'A' && query[i] == 'G') {
 	  debug1(printf("."));
 	  gbuffer[i] = '.';
 	} else if (query[i] != gbuffer[i]) {
@@ -1388,7 +1445,7 @@ mark_mismatches_atoi_nonstranded_gsnap (char *gbuffer, char *query, int start, i
       }
     } else {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'A' && query[i] == 'G') {
+	if (gbuffer[i] == 'T' && query[i] == 'C') {
 	  debug1(printf("."));
 	  gbuffer[i] = '.';
 	} else if (query[i] != gbuffer[i]) {
@@ -1401,56 +1458,23 @@ mark_mismatches_atoi_nonstranded_gsnap (char *gbuffer, char *query, int start, i
       }
     }
   }
-
-  debug1(printf("\n"));
-
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("\n"));
-
-  return;
-}
-
-
-static void
-mark_mismatches_atoi_stranded_sam (char *gbuffer, char *query, int start, int end) {
-  int i;
   
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("count:  "));
-
-  for (i = start; i < end; i++) {
-    if (gbuffer[i] == 'A' && query[i] == 'G') {
-      debug1(printf("."));
-#if 0
-      /* Want to show mismatches */
-      gbuffer[i] = 'G';		/* Avoids showing mismatches in MD and NM strings */
-#endif
-    } else if (query[i] != gbuffer[i]) {
-      debug1(printf("x"));
-      assert(gbuffer[i] != OUTOFBOUNDS);
-      gbuffer[i] = (char) tolower(gbuffer[i]);
-    } else {
-      debug1(printf("*"));
-    }
-  }
-
   return;
 }
 
 
+
 static void
-mark_mismatches_atoi_nonstranded_sam (char *gbuffer, char *query, int start, int end,
-				      bool plusp, int genestrand) {
+mark_mismatches_atoi_sam (char *gbuffer, char *query, int start, int end,
+			  int genestrand, bool first_read_p) {
   int i;
   
   debug1(printf("query:  %s\n",query));
   debug1(printf("genome: %s\n",gbuffer));
   debug1(printf("count:  "));
 
-  if (genestrand == +1) {
-    if (plusp == true) {
+  if (genestrand == +2) {
+    if (first_read_p == false) {
       for (i = start; i < end; i++) {
 	if (gbuffer[i] == 'A' && query[i] == 'G') {
 	  debug1(printf("."));
@@ -1467,32 +1491,29 @@ mark_mismatches_atoi_nonstranded_sam (char *gbuffer, char *query, int start, int
 	}
       }
     } else {
-      for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'T' && query[i] == 'C') {
-	  debug1(printf("."));
+      if (gbuffer[i] == 'T' && query[i] == 'C') {
+	debug1(printf("."));
 #if 0
-	  /* Want to show mismatches */
-	  gbuffer[i] = 'C';		/* Avoids showing mismatches in MD and NM strings */
+	/* Want to show mismatches */
+	gbuffer[i] = 'C';		/* Avoids showing mismatches in MD and NM strings */
 #endif
-	} else if (query[i] != gbuffer[i]) {
-	  debug1(printf("x"));
-	  assert(gbuffer[i] != OUTOFBOUNDS);
-	  gbuffer[i] = (char) tolower(gbuffer[i]);
-	} else {
-	  debug1(printf("*"));
-	}
+      } else if (query[i] != gbuffer[i]) {
+	debug1(printf("x"));
+	assert(gbuffer[i] != OUTOFBOUNDS);
+	gbuffer[i] = (char) tolower(gbuffer[i]);
+      } else {
+	debug1(printf("*"));
       }
     }
 
   } else {
-    /* genestrand == +2 */
-    if (plusp == true) {
+    if (first_read_p == true) {
       for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'T' && query[i] == 'C') {
+	if (gbuffer[i] == 'A' && query[i] == 'G') {
 	  debug1(printf("."));
 #if 0
 	  /* Want to show mismatches */
-	  gbuffer[i] = 'C';		/* Avoids showing mismatches in MD and NM strings */
+	  gbuffer[i] = 'G';		/* Avoids showing mismatches in MD and NM strings */
 #endif
 	} else if (query[i] != gbuffer[i]) {
 	  debug1(printf("x"));
@@ -1503,30 +1524,22 @@ mark_mismatches_atoi_nonstranded_sam (char *gbuffer, char *query, int start, int
 	}
       }
     } else {
-      for (i = start; i < end; i++) {
-	if (gbuffer[i] == 'A' && query[i] == 'G') {
-	  debug1(printf("."));
+      if (gbuffer[i] == 'T' && query[i] == 'C') {
+	debug1(printf("."));
 #if 0
-	  /* Want to show mismatches */
-	  gbuffer[i] = 'G';		/* Avoids showing mismatches in MD and NM strings */
+	/* Want to show mismatches */
+	gbuffer[i] = 'C';		/* Avoids showing mismatches in MD and NM strings */
 #endif
-	} else if (query[i] != gbuffer[i]) {
-	  debug1(printf("x"));
-	  assert(gbuffer[i] != OUTOFBOUNDS);
-	  gbuffer[i] = (char) tolower(gbuffer[i]);
-	} else {
-	  debug1(printf("*"));
-	}
+      } else if (query[i] != gbuffer[i]) {
+	debug1(printf("x"));
+	assert(gbuffer[i] != OUTOFBOUNDS);
+	gbuffer[i] = (char) tolower(gbuffer[i]);
+      } else {
+	debug1(printf("*"));
       }
     }
   }
 
-  debug1(printf("\n"));
-
-  debug1(printf("query:  %s\n",query));
-  debug1(printf("genome: %s\n",gbuffer));
-  debug1(printf("\n"));
-
   return;
 }
 
@@ -1571,7 +1584,7 @@ Substring_setup (bool print_nsnpdiffs_p_in, bool print_snplabels_p_in,
 
 static char *
 embellish_genomic (char *genomic_diff, char *query, int querystart, int queryend, int querylength,
-		   int alignoffset, int extraleft, int extraright, bool plusp, int genestrand) {
+		   int alignoffset, int extraleft, int extraright, int genestrand, bool first_read_p) {
   char *result;
   int i, j, k;
 
@@ -1587,14 +1600,12 @@ embellish_genomic (char *genomic_diff, char *query, int querystart, int queryend
 
   if (mode == STANDARD) {
     /* Skip */
-  } else if (mode == CMET_STRANDED) {
-    mark_mismatches_cmet_stranded_gsnap(result,query,querystart,queryend);
-  } else if (mode == CMET_NONSTRANDED) {
-    mark_mismatches_cmet_nonstranded_gsnap(result,query,querystart,queryend,plusp,genestrand);
-  } else if (mode == ATOI_STRANDED) {
-    mark_mismatches_atoi_stranded_gsnap(result,query,querystart,queryend);
-  } else if (mode == ATOI_NONSTRANDED) {
-    mark_mismatches_atoi_nonstranded_gsnap(result,query,querystart,queryend,plusp,genestrand);
+  } else if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
+    mark_mismatches_cmet_gsnap(result,query,querystart,queryend,genestrand,first_read_p);
+  } else if (mode == ATOI_STRANDED || mode == ATOI_NONSTRANDED) {
+    mark_mismatches_atoi_gsnap(result,query,querystart,queryend,genestrand,first_read_p);
+  } else {
+    abort();
   }
 
   fill_w_dashes(result,queryend,querylength);
@@ -1623,7 +1634,7 @@ embellish_genomic (char *genomic_diff, char *query, int querystart, int queryend
 
 static char *
 embellish_genomic_sam (char *genomic_diff, char *query, int querystart, int queryend, int querylength,
-		       int genomiclength, int alignoffset, bool plusp, int genestrand) {
+		       int genomiclength, int alignoffset, int genestrand, bool first_read_p) {
   char *result;
   int i, j, k;
 
@@ -1634,14 +1645,12 @@ embellish_genomic_sam (char *genomic_diff, char *query, int querystart, int quer
 
   if (mode == STANDARD) {
     /* Skip */
-  } else if (mode == CMET_STRANDED) {
-    mark_mismatches_cmet_stranded_sam(result,query,querystart,queryend);
-  } else if (mode == CMET_NONSTRANDED) {
-    mark_mismatches_cmet_nonstranded_sam(result,query,querystart,queryend,plusp,genestrand);
-  } else if (mode == ATOI_STRANDED) {
-    mark_mismatches_atoi_stranded_sam(result,query,querystart,queryend);
-  } else if (mode == ATOI_NONSTRANDED) {
-    mark_mismatches_atoi_nonstranded_sam(result,query,querystart,queryend,plusp,genestrand);
+  } else if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
+    mark_mismatches_cmet_sam(result,query,querystart,queryend,genestrand,first_read_p);
+  } else if (mode == ATOI_STRANDED || mode == ATOI_NONSTRANDED) {
+    mark_mismatches_atoi_sam(result,query,querystart,queryend,genestrand,first_read_p);
+  } else {
+    abort();
   }
 
   /* Add terminal ends as lower-case */
@@ -1685,7 +1694,8 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
 	       int querystart, int queryend, int querylength,
 	       Univcoord_T alignstart, Univcoord_T alignend, int genomiclength,
 	       int extraleft, int extraright, bool exactp,
-	       bool plusp, int genestrand, bool trim_left_p, bool trim_right_p, int minlength) {
+	       bool plusp, int genestrand, bool first_read_p,
+	       bool trim_left_p, bool trim_right_p, int minlength) {
   T new;
   int aligndiff;
   int nmatches;
@@ -1729,12 +1739,16 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
   new->genomiclength = genomiclength;
   new->plusp = plusp;
   new->genestrand = genestrand;
+  new->first_read_p = first_read_p;
 
   new->chimera_knownp = false;
   new->chimera_knownp_2 = false;
   new->chimera_novelp = false;
   new->chimera_novelp_2 = false;
 
+  debug2(printf("Entered Substring_new with chrnum %d (chroffset %u, chrhigh %u)\n",
+		chrnum,chroffset,chrhigh));
+
   /* Compute coordinates */
   if (plusp == true) {
     new->alignoffset = alignstart - genomicstart;
@@ -1756,6 +1770,8 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
     debug2(printf("querylength is %d, genomiclength is %d, alignstart is %u, alignend is %u, genomicstart is %u, genomicend is %u, alignoffset is %d\n",
 		  querylength,genomiclength,alignstart,alignend,genomicstart,genomicend,new->alignoffset));
   }
+  assert(alignstart <= chrhigh);
+  assert(alignend <= chrhigh);
 
   /* Assign new->nmismatches_whole */
   new->nmismatches_whole = nmismatches_whole;
@@ -1769,10 +1785,10 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
     new->trim_left_splicep = false;
   } else {
     if (new->start_endtype == TERM) {
-      new->trim_left = trim_left_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,
+      new->trim_left = trim_left_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,first_read_p,
 				     /*trim_mismatch_score*/-3);
     } else {
-      new->trim_left = trim_left_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,
+      new->trim_left = trim_left_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,first_read_p,
 				     trim_mismatch_score);
     }
     new->querystart += new->trim_left;
@@ -1804,10 +1820,10 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
     new->trim_right_splicep = false;
   } else {
     if (new->end_endtype == TERM) {
-      new->trim_right = trim_right_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,
+      new->trim_right = trim_right_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,first_read_p,
 				       /*trim_mismatch_score*/-3);
     } else {
-      new->trim_right = trim_right_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,
+      new->trim_right = trim_right_end(query_compress,left,querystart,queryend,querylength,plusp,genestrand,first_read_p,
 				       trim_mismatch_score);
     }
     new->queryend -= new->trim_right;
@@ -1863,11 +1879,11 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
   } else if (plusp == true) {
     new->nmismatches_bothdiff = 
       Genome_count_mismatches_substring(query_compress,left,/*pos5*/new->alignstart_trim-left,
-					/*pos3*/new->alignend_trim-left,plusp,genestrand);
+					/*pos3*/new->alignend_trim-left,plusp,genestrand,first_read_p);
   } else {
     new->nmismatches_bothdiff = 
       Genome_count_mismatches_substring(query_compress,left,/*pos5*/new->alignend_trim-left,
-					/*pos3*/new->alignstart_trim-left,plusp,genestrand);
+					/*pos3*/new->alignstart_trim-left,plusp,genestrand,first_read_p);
   }
 
   /* General test for goodness over trimmed region */
@@ -1885,7 +1901,7 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
 
 
 /* Look also at Pair_compute_mapq */
-double
+float
 Substring_compute_mapq (T this, Compress_T query_compress, char *quality_string, bool trim_terminals_p) {
   int mapq_start, mapq_end;
 
@@ -1914,7 +1930,7 @@ Substring_compute_mapq (T this, Compress_T query_compress, char *quality_string,
     debug2(printf("trim_left %d, trim_right %d, mapq_start = %d, mapq_end = %d\n",
 		  this->trim_left,this->trim_right,mapq_start,mapq_end));
     this->mapq_loglik = MAPQ_loglik(query_compress,this->left,mapq_start,mapq_end,
-				    this->querylength,quality_string,this->plusp,this->genestrand);
+				    this->querylength,quality_string,this->plusp,this->genestrand,this->first_read_p);
   }
 
   return this->mapq_loglik;
@@ -1957,11 +1973,11 @@ Substring_display_prep (char **deletion, T this, char *query, Compress_T query_c
 
     Genome_mark_mismatches(genomic_diff,this->querylength,query_compress_fwd,
 			   this->left,/*pos5*/this->querystart_orig,/*pos3*/this->queryend_orig,
-			   mismatch_offset,/*plusp*/true,this->genestrand);
+			   mismatch_offset,/*plusp*/true,this->genestrand,this->first_read_p);
 
     this->genomic_bothdiff = embellish_genomic(genomic_diff,query,this->querystart_orig,this->queryend_orig,
 					       this->querylength,this->alignoffset,this->extraleft,this->extraright,
-					       this->plusp,this->genestrand);
+					       this->genestrand,this->first_read_p);
 
     if (snps_iit == NULL) {
       this->genomic_refdiff = this->genomic_bothdiff;
@@ -1972,22 +1988,22 @@ Substring_display_prep (char **deletion, T this, char *query, Compress_T query_c
 	Genome_count_mismatches_substring_ref(query_compress_fwd,this->left,
 					      /*pos5*/this->alignstart_trim - this->left,
 					      /*pos3*/this->alignend_trim - this->left,
-					      /*plusp*/true,this->genestrand);
+					      /*plusp*/true,this->genestrand,this->first_read_p);
 
       Genome_mark_mismatches_ref(genomic_diff,this->querylength,query_compress_fwd,this->left,
 				 /*pos5*/this->querystart_orig,/*pos3*/this->queryend_orig,
-				 mismatch_offset,/*plusp*/true,this->genestrand);
+				 mismatch_offset,/*plusp*/true,this->genestrand,this->first_read_p);
       if (output_sam_p == false) {
 	this->genomic_refdiff = embellish_genomic(genomic_diff,query,this->querystart_orig,this->queryend_orig,
 						  this->querylength,this->alignoffset,this->extraleft,this->extraright,
-						  this->plusp,this->genestrand);
+						  this->genestrand,this->first_read_p);
       }
     }
 
     if (output_sam_p == true) {
       this->genomic_refdiff = embellish_genomic_sam(genomic_diff,query,this->querystart_orig,this->queryend_orig,
 						    this->querylength,this->genomiclength,this->alignoffset,
-						    this->plusp,this->genestrand);
+						    this->genestrand,this->first_read_p);
     }
 
     if (allocp == true) {
@@ -2013,11 +2029,11 @@ Substring_display_prep (char **deletion, T this, char *query, Compress_T query_c
     Genome_mark_mismatches(genomic_diff,this->querylength,query_compress_rev,
 			   this->left,/*pos5*/this->querylength - this->queryend_orig,
 			   /*pos3*/this->querylength - this->querystart_orig,
-			   mismatch_offset,/*plusp*/false,this->genestrand);
+			   mismatch_offset,/*plusp*/false,this->genestrand,this->first_read_p);
 
     this->genomic_bothdiff = embellish_genomic(genomic_diff,query,this->querystart_orig,this->queryend_orig,
 					       this->querylength,this->alignoffset,this->extraleft,this->extraright,
-					       this->plusp,this->genestrand);
+					       this->genestrand,this->first_read_p);
 
     if (snps_iit == NULL) {
       this->genomic_refdiff = this->genomic_bothdiff;
@@ -2028,24 +2044,24 @@ Substring_display_prep (char **deletion, T this, char *query, Compress_T query_c
 	Genome_count_mismatches_substring_ref(query_compress_rev,this->left,
 					      /*pos5*/this->alignend_trim - this->left,
 					      /*pos3*/this->alignstart_trim - this->left,/*plusp*/false,
-					      this->genestrand);
+					      this->genestrand,this->first_read_p);
 
       Genome_mark_mismatches_ref(genomic_diff,this->querylength,query_compress_rev,this->left,
 				 /*pos5*/this->querylength - this->queryend_orig,
 				 /*pos3*/this->querylength - this->querystart_orig,
-				 mismatch_offset,/*plusp*/false,this->genestrand);
+				 mismatch_offset,/*plusp*/false,this->genestrand,this->first_read_p);
 
       if (output_sam_p == false) {
 	this->genomic_refdiff = embellish_genomic(genomic_diff,query,this->querystart_orig,this->queryend_orig,
 						  this->querylength,this->alignoffset,this->extraleft,this->extraright,
-						  this->plusp,this->genestrand);
+						  this->genestrand,this->first_read_p);
       }
     }
 
     if (output_sam_p == true) {
       this->genomic_refdiff = embellish_genomic_sam(genomic_diff,query,this->querystart_orig,this->queryend_orig,
 						    this->querylength,this->genomiclength,this->alignoffset,
-						    this->plusp,this->genestrand);
+						    this->genestrand,this->first_read_p);
     }
 
     if (allocp == true) {
@@ -2057,19 +2073,24 @@ Substring_display_prep (char **deletion, T this, char *query, Compress_T query_c
 }
 
 
-int
-Substring_splicesites_i (T this) {
-  return this->splicesites_i;
+Univcoord_T
+Substring_splicecoord (T this) {
+  return this->splicecoord;
 }
 
 int
-Substring_splicesites_i_A (T this) {
-  return this->splicesites_i;
+Substring_splicesites_knowni (T this) {
+  return this->splicesites_knowni;
 }
 
-int
-Substring_splicesites_i_D (T this) {
-  return this->splicesites_i_2;
+Univcoord_T
+Substring_splicecoord_A (T this) {
+  return this->splicecoord;
+}
+
+Univcoord_T
+Substring_splicecoord_D (T this) {
+  return this->splicecoord_2;
 }
 
 bool
@@ -2082,6 +2103,11 @@ Substring_genestrand (T this) {
   return this->genestrand;
 }
 
+bool
+Substring_first_read_p (T this) {
+  return this->first_read_p;
+}
+
 char *
 Substring_genomic_bothdiff (T this) {
   return this->genomic_bothdiff;
@@ -2152,7 +2178,7 @@ Substring_set_endtypes (T this, Endtype_T start_endtype, Endtype_T end_endtype)
 
 
 
-double
+float
 Substring_mapq_loglik (T this) {
   return this->mapq_loglik;
 }
@@ -2194,6 +2220,11 @@ Substring_queryend (T this) {
 }
 
 int
+Substring_queryend_orig (T this) {
+  return this->queryend_orig;
+}
+
+int
 Substring_querylength (T this) {
   return this->querylength;
 }
@@ -2272,6 +2303,11 @@ Substring_alignend_trim (T this) {
 
 
 Univcoord_T
+Substring_left_genomicseg (T this) {
+  return this->left_genomicseg;
+}
+
+Univcoord_T
 Substring_genomicstart (T this) {
   return this->genomicstart;
 }
@@ -2302,6 +2338,11 @@ Substring_chimera_prob (T this) {
   return this->chimera_prob;
 }
 
+double
+Substring_chimera_prob_2 (T this) {
+  return this->chimera_prob_2;
+}
+
 int
 Substring_chimera_pos (T this) {
   return this->chimera_pos;
@@ -2365,8 +2406,9 @@ Substring_circularpos (T this) {
     return -1;
 
   } else if (this->plusp == true) {
-    /* printf("substring plus: looking at %u..%u vs %u+%u\n",this->alignstart,this->alignend,this->chroffset,this->chrlength); */
-    if (this->alignend > this->chroffset + this->chrlength) {
+    /* printf("substring plus: looking at %u (trim %u) vs %u+%u\n",
+       this->alignend,this->alignend_trim,this->chroffset,this->chrlength); */
+    if (this->alignend_trim > this->chroffset + this->chrlength) {
       /* return (this->querystart - this->trim_left) + (this->chroffset + this->chrlength) - this->alignstart; */
       return this->querystart + (this->chroffset + this->chrlength) - this->alignstart_trim;
     } else {
@@ -2374,8 +2416,9 @@ Substring_circularpos (T this) {
     }
 
   } else {
-    /* printf("substring minus: looking at %u vs %u+%u\n",this->alignstart,this->chroffset,this->chrlength); */
-    if (this->alignstart > this->chroffset + this->chrlength) {
+    /* printf("substring minus: looking at %u (trim %u) vs %u+%u\n",
+       this->alignstart,this->alignstart_trim,this->chroffset,this->chrlength); */
+    if (this->alignstart_trim > this->chroffset + this->chrlength) {
       /* return ((this->querylength - this->trim_right) - this->queryend) + (this->chroffset + this->chrlength) - this->alignend; */
       return (this->querylength - this->queryend) + (this->chroffset + this->chrlength) - this->alignend_trim;
     } else {
@@ -2437,6 +2480,7 @@ Substring_copy (T old) {
     new->genomiclength = old->genomiclength;
     new->plusp = old->plusp;
     new->genestrand = old->genestrand;
+    new->first_read_p = old->first_read_p;
 
     if (old->genomic_bothdiff == NULL) {
       new->genomic_bothdiff = (char *) NULL;
@@ -2456,14 +2500,16 @@ Substring_copy (T old) {
 
     new->chimera_sensep = old->chimera_sensep;
 
-    new->splicesites_i = old->splicesites_i;
+    new->splicecoord = old->splicecoord;
+    new->splicesites_knowni = old->splicesites_knowni;
     new->chimera_knownp = old->chimera_knownp;
     new->chimera_novelp = old->chimera_novelp;
     new->chimera_modelpos = old->chimera_modelpos;
     new->chimera_pos = old->chimera_pos;
     new->chimera_prob = old->chimera_prob;
 
-    new->splicesites_i_2 = old->splicesites_i_2;
+    new->splicecoord_2 = old->splicecoord_2;
+    new->splicesites_knowni_2 = old->splicesites_knowni_2;
     new->chimera_knownp_2 = old->chimera_knownp_2;
     new->chimera_novelp_2 = old->chimera_novelp_2;
     new->chimera_modelpos_2 = old->chimera_modelpos_2;
@@ -2477,9 +2523,9 @@ Substring_copy (T old) {
 
 
 T
-Substring_new_donor (int splicesites_i, int splicesites_offset, int donor_pos, int donor_nmismatches,
+Substring_new_donor (Univcoord_T donor_coord, int donor_knowni, int donor_pos, int donor_nmismatches,
 		     double donor_prob, Univcoord_T left, Compress_T query_compress,
-		     int querylength, bool plusp, int genestrand, bool sensep,
+		     int querylength, bool plusp, int genestrand, bool first_read_p, bool sensep,
 		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength) {
   T new;
   int querystart, queryend, extraleft, extraright;
@@ -2487,7 +2533,15 @@ Substring_new_donor (int splicesites_i, int splicesites_offset, int donor_pos, i
   Endtype_T start_endtype, end_endtype;
   bool trim_left_p, trim_right_p;
 
-  if (plusp == true) {
+  /* Previously checked if left >= chroffset + chrlength to exclude
+     the duplicate length, but now excluding all translocations to
+     circular chromosomes */
+
+  if (chroffset + chrlength < chrhigh) {
+    /* Don't splice to circular chromosomes */
+    return (T) NULL;
+
+  } else if (plusp == true) {
     genomicstart = left;
     genomicend = left + querylength;
     if (sensep == true) {
@@ -2552,22 +2606,24 @@ Substring_new_donor (int splicesites_i, int splicesites_offset, int donor_pos, i
 			   left,genomicstart,genomicend,query_compress,
 			   start_endtype,end_endtype,querystart,queryend,querylength,
 			   alignstart,alignend,/*genomiclength*/querylength,
-			   extraleft,extraright,/*exactp*/false,plusp,genestrand,
+			   extraleft,extraright,/*exactp*/false,plusp,genestrand,first_read_p,
 			   trim_left_p,trim_right_p,/*minlength*/0)) == NULL) {
     return (T) NULL;
   }
 
-  debug2(printf("Making new donor with splicesites_i %d and left %u, plusp %d\n",splicesites_i,left,plusp));
+  debug2(printf("Making new donor with coord %u and left %u, plusp %d\n",donor_coord,left,plusp));
+  new->splicecoord = donor_coord;
+  new->splicesites_knowni = donor_knowni;
+
   new->chimera_modelpos = left + donor_pos;
+  assert(new->splicecoord == new->chimera_modelpos);
   new->chimera_sensep = sensep;
-  if (splicesites_i >= 0) {
+  if (donor_knowni >= 0) {
     new->chimera_knownp = true;
-    /* new->chimera_novelp = false; */
-    new->splicesites_i = splicesites_offset + splicesites_i;
+    /* new->chimera_novelp = false */
   } else {
     /* new->chimera_knownp = false; */
     new->chimera_novelp = true;
-    new->splicesites_i = -1;
   }
 
   if (plusp == true) {
@@ -2582,9 +2638,9 @@ Substring_new_donor (int splicesites_i, int splicesites_offset, int donor_pos, i
 
 
 T
-Substring_new_acceptor (int splicesites_i, int splicesites_offset, int acceptor_pos, int acceptor_nmismatches,
+Substring_new_acceptor (Univcoord_T acceptor_coord, int acceptor_knowni, int acceptor_pos, int acceptor_nmismatches,
 			double acceptor_prob, Univcoord_T left, Compress_T query_compress,
-			int querylength, bool plusp, int genestrand, bool sensep,
+			int querylength, bool plusp, int genestrand, bool first_read_p, bool sensep,
 			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength) {
   T new;
   int querystart, queryend, extraleft, extraright;
@@ -2592,7 +2648,15 @@ Substring_new_acceptor (int splicesites_i, int splicesites_offset, int acceptor_
   Endtype_T start_endtype, end_endtype;
   bool trim_left_p, trim_right_p;
 
-  if (plusp == true) {
+  /* Previously checked if left >= chroffset + chrlength to exclude
+     the duplicate length, but now excluding all translocations to
+     circular chromosomes */
+
+  if (chroffset + chrlength < chrhigh) {
+    /* Don't splice to circular chromosomes */
+    return (T) NULL;
+
+  } else if (plusp == true) {
     genomicstart = left;
     genomicend = left + querylength;
     if (sensep == true) {
@@ -2657,22 +2721,24 @@ Substring_new_acceptor (int splicesites_i, int splicesites_offset, int acceptor_
 			   left,genomicstart,genomicend,query_compress,
 			   start_endtype,end_endtype,querystart,queryend,querylength,
 			   alignstart,alignend,/*genomiclength*/querylength,
-			   extraleft,extraright,/*exactp*/false,plusp,genestrand,
+			   extraleft,extraright,/*exactp*/false,plusp,genestrand,first_read_p,
 			   trim_left_p,trim_right_p,/*minlength*/0)) == NULL) {
     return (T) NULL;
   }
 
-  debug2(printf("Making new acceptor with splicesites_i %d and left %u, plusp %d\n",splicesites_i,left,plusp));
+  debug2(printf("Making new acceptor with coord %u and left %u, plusp %d\n",acceptor_coord,left,plusp));
+  new->splicecoord = acceptor_coord;
+  new->splicesites_knowni = acceptor_knowni;
+
   new->chimera_modelpos = left + acceptor_pos;
+  assert(new->splicecoord == new->chimera_modelpos);
   new->chimera_sensep = sensep;
-  if (splicesites_i >= 0) {
+  if (acceptor_knowni >= 0) {
     new->chimera_knownp = true;
     /* new->chimera_novelp = false */
-    new->splicesites_i = splicesites_i + splicesites_offset;
   } else {
     /* new->chimera_knownp = false; */
     new->chimera_novelp = true;
-    new->splicesites_i = -1;
   }
 
   if (plusp == true) {
@@ -2688,11 +2754,11 @@ Substring_new_acceptor (int splicesites_i, int splicesites_offset, int acceptor_
 
 
 T
-Substring_new_shortexon (int acceptor_splicesites_i, int donor_splicesites_i, int splicesites_offset,
+Substring_new_shortexon (Univcoord_T acceptor_coord, int acceptor_knowni, Univcoord_T donor_coord, int donor_knowni,
 			 int acceptor_pos, int donor_pos, int nmismatches,
 			 double acceptor_prob, double donor_prob, Univcoord_T left,
 			 Compress_T query_compress, int querylength,
-			 bool plusp, int genestrand, bool sensep,
+			 bool plusp, int genestrand, bool first_read_p, bool sensep,
 			 bool acceptor_ambp, bool donor_ambp,
 			 Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength) {
   T new;
@@ -2743,35 +2809,36 @@ Substring_new_shortexon (int acceptor_splicesites_i, int donor_splicesites_i, in
 			   left,genomicstart,genomicend,query_compress,
 			   start_endtype,end_endtype,querystart,queryend,querylength,
 			   alignstart,alignend,/*genomiclength*/querylength,
-			   /*extraleft*/2,/*extraright*/2,/*exactp*/false,plusp,genestrand,
+			   /*extraleft*/2,/*extraright*/2,/*exactp*/false,plusp,genestrand,first_read_p,
 			   /*trim_left_p*/false,/*trim_right_p*/false,
 			   /*minlength*/0)) == NULL) {
     return (T) NULL;
   }
 
   debug2(printf("Making new middle with left %u, plusp %d\n",left,plusp));
+  new->splicecoord = acceptor_coord;
+  new->splicesites_knowni = acceptor_knowni;
+  new->splicecoord_2 = donor_coord;
+  new->splicesites_knowni_2 = donor_knowni;
+
   new->chimera_modelpos = left + acceptor_pos;
   new->chimera_modelpos_2 = left + donor_pos;
   new->chimera_sensep = sensep;
 
-  if (acceptor_splicesites_i >= 0) {
+  if (acceptor_knowni >= 0) {
     new->chimera_knownp = true;
     /* new->chimera_novelp = false; */
-    new->splicesites_i = acceptor_splicesites_i + splicesites_offset;
   } else {
     /* new->chimera_knownp = false; */
     new->chimera_novelp = true;
-    new->splicesites_i = -1;
   }
 
-  if (donor_splicesites_i >= 0) {
+  if (donor_knowni >= 0) {
     new->chimera_knownp_2 = true;
     /* new->chimera_novelp_2 = false; */
-    new->splicesites_i_2 = donor_splicesites_i + splicesites_offset;
   } else {
     /* new->chimera_knownp_2 = false; */
     new->chimera_novelp_2 = true;
-    new->splicesites_i_2 = -1;
   }
 
   if (plusp == true) {
@@ -4121,12 +4188,12 @@ Substring_count_mismatches_region (T this, int trim_left, int trim_right,
 
     if (this->plusp) {
       return Genome_count_mismatches_substring(query_compress_fwd,this->left,/*pos5*/left_bound,
-					       /*pos3*/right_bound,/*plusp*/true,this->genestrand);
+					       /*pos3*/right_bound,/*plusp*/true,this->genestrand,this->first_read_p);
     } else {
       return Genome_count_mismatches_substring(query_compress_rev,this->left,
 					       /*pos5*/this->querylength - right_bound,
 					       /*pos3*/this->querylength - left_bound,
-					       /*plusp*/false,this->genestrand);
+					       /*plusp*/false,this->genestrand,this->first_read_p);
     }
   }
 }
diff --git a/src/substring.h b/src/substring.h
index cadba71..61bf7e3 100644
--- a/src/substring.h
+++ b/src/substring.h
@@ -1,4 +1,4 @@
-/* $Id: substring.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: substring.h 138720 2014-06-11 17:07:51Z twu $ */
 #ifndef SUBSTRING_INCLUDED
 #define SUBSTRING_INCLUDED
 
@@ -45,9 +45,10 @@ Substring_new (int nmismatches_whole, Chrnum_T chrnum, Univcoord_T chroffset,
 	       int querystart, int queryend, int querylength,
 	       Univcoord_T alignstart, Univcoord_T alignend, int genomiclength,
 	       int extraleft, int extraright, bool exactp,
-	       bool plusp, int genestrand, bool trim_left_p, bool trim_right_p, int minlength);
+	       bool plusp, int genestrand, bool first_read_p,
+	       bool trim_left_p, bool trim_right_p, int minlength);
 
-extern double
+extern float
 Substring_compute_mapq (T this, Compress_T query_compress, char *quality_string, bool trim_terminals_p);
 
 extern int
@@ -65,23 +66,31 @@ Substring_contains_p (T this, int querypos);
 extern void
 Substring_print_ends (T this, int chrnum);
 extern int
-Substring_compare (T substring1, T substring2);
+Substring_compare (T substring1, T substring2, int alias1, int alias2, Chrpos_T chrlength1, Chrpos_T chrlength2);
 extern bool
 Substring_overlap_p (T substring1, T substring2);
 extern Chrpos_T
 Substring_insert_length (T substring5, T substring3);
+extern bool
+Substring_overlap_point_trimmed_p (T substring, Univcoord_T endpos);
+extern bool
+Substring_overlap_segment_trimmed_p (T substring1, T substring2);
 
+extern Univcoord_T
+Substring_splicecoord (T this);
 extern int
-Substring_splicesites_i (T this);
-extern int
-Substring_splicesites_i_A (T this);
-extern int
-Substring_splicesites_i_D (T this);
+Substring_splicesites_knowni (T this);
+extern Univcoord_T
+Substring_splicecoord_A (T this);
+extern Univcoord_T
+Substring_splicecoord_D (T this);
 
 extern bool
 Substring_plusp (T this);
 extern int
 Substring_genestrand (T this);
+extern bool
+Substring_first_read_p (T this);
 extern char *
 Substring_genomic_bothdiff (T this);
 extern char *
@@ -106,7 +115,7 @@ extern Endtype_T
 Substring_end_endtype (T this);
 extern void
 Substring_set_endtypes (T this, Endtype_T start_endtype, Endtype_T end_endtype);
-extern double
+extern float
 Substring_mapq_loglik (T this);
 extern int
 Substring_trim_left (T this);
@@ -123,6 +132,8 @@ Substring_querystart_orig (T this);
 extern int
 Substring_queryend (T this);
 extern int
+Substring_queryend_orig (T this);
+extern int
 Substring_querylength (T this);
 extern int
 Substring_match_length (T this);
@@ -148,6 +159,8 @@ Substring_alignstart_trim (T this);
 extern Univcoord_T
 Substring_alignend_trim (T this);
 extern Univcoord_T
+Substring_left_genomicseg (T this);
+extern Univcoord_T
 Substring_genomicstart (T this);
 extern Univcoord_T
 Substring_genomicend (T this);
@@ -161,6 +174,8 @@ Substring_chrend (T this);
 
 extern double
 Substring_chimera_prob (T this);
+extern double
+Substring_chimera_prob_2 (T this);
 extern int
 Substring_chimera_pos (T this);
 extern int
@@ -185,21 +200,21 @@ extern T
 Substring_copy (T old);
 
 extern T
-Substring_new_donor (int splicesites_i, int splicesites_offset, int donor_pos, int donor_nmismatches,
+Substring_new_donor (Univcoord_T donor_coord, int donor_knowni, int donor_pos, int donor_nmismatches,
 		     double donor_prob, Univcoord_T left, Compress_T query_compress,
-		     int querylength, bool plusp, int genestrand, bool sensep,
+		     int querylength, bool plusp, int genestrand, bool first_read_p, bool sensep,
 		     Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength);
 extern T
-Substring_new_acceptor (int splicesites_i, int splicesites_offset, int acceptor_pos, int acceptor_nmismatches,
+Substring_new_acceptor (Univcoord_T acceptor_coord, int acceptor_knowni, int acceptor_pos, int acceptor_nmismatches,
 			double acceptor_prob, Univcoord_T left, Compress_T query_compress,
-			int querylength, bool plusp, int genestrand, bool sensep,
+			int querylength, bool plusp, int genestrand, bool first_read_p, bool sensep,
 			Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength);
 extern T
-Substring_new_shortexon (int acceptor_splicesites_i, int donor_splicesites_i, int splicesites_offset,
+Substring_new_shortexon (Univcoord_T acceptor_coord, int acceptor_knowni, Univcoord_T donor_coord, int donor_knowni,
 			 int acceptor_pos, int donor_pos, int nmismatches,
 			 double acceptor_prob, double donor_prob, Univcoord_T left,
 			 Compress_T query_compress, int querylength,
-			 bool plusp, int genestrand, bool sensep,
+			 bool plusp, int genestrand, bool first_read_p, bool sensep,
 			 bool acceptor_ambp, bool donor_ambp,
 			 Chrnum_T chrnum, Univcoord_T chroffset, Univcoord_T chrhigh, Chrpos_T chrlength);
 
diff --git a/src/table.c b/src/table.c
index 522e588..0735e7e 100644
--- a/src/table.c
+++ b/src/table.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: table.c 81280 2012-12-11 19:43:18Z twu $";
+static char rcsid[] = "$Id: table.c 115432 2013-11-18 18:21:03Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -272,3 +272,22 @@ Table_free (T *table) {
   }
   FREE(*table);
 }
+
+void
+Table_gc (T *table, void (*keyfree)(const void **key), void (*valuefree)(void **value)) {
+  int i;
+  struct binding *p, *q;
+
+  for (i = 0; i < (*table)->size; i++) {
+    for (p = (*table)->buckets[i]; p; p = q) {
+      (*keyfree)(&p->key);
+      (*valuefree)(&p->value);
+      q = p->link;
+      FREE(p);
+    }
+  }
+  FREE(*table);
+  return;
+}
+
+
diff --git a/src/table.h b/src/table.h
index 95d160b..653f7b0 100644
--- a/src/table.h
+++ b/src/table.h
@@ -1,4 +1,4 @@
-/* $Id: table.h 40271 2011-05-28 02:29:18Z twu $ */
+/* $Id: table.h 115432 2013-11-18 18:21:03Z twu $ */
 #ifndef TABLE_INCLUDED
 #define TABLE_INCLUDED
 
@@ -36,6 +36,8 @@ extern void **
 Table_keys_by_timeindex (T table, void *end);
 extern void **
 Table_values (T table, void *end);
+void
+Table_gc (T *table, void (*keyfree)(const void **key), void (*valuefree)(void **value));
 
 #undef T
 #endif
diff --git a/src/translation.c b/src/translation.c
index 14045e0..769773e 100644
--- a/src/translation.c
+++ b/src/translation.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: translation.c 65446 2012-05-31 20:36:07Z twu $";
+static char rcsid[] = "$Id: translation.c 130296 2014-03-17 17:16:05Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -187,7 +187,7 @@ Translation_get_codon (char a, char b, char c) {
 
 #ifndef PMAP
 static void
-find_bounds_forward (int *translation_frame, int *translation_starti, 
+find_bounds_forward (Frame_T *translation_frame, int *translation_starti, 
 		     int *translation_endi, int *translation_length,
 		     bool *endstopp, struct T *translation, 
 		     int translationlen, bool fulllengthp) {
@@ -345,7 +345,7 @@ find_bounds_forward (int *translation_frame, int *translation_starti,
 
 #ifndef PMAP
 static void
-find_bounds_backward (int *translation_frame, int *translation_starti,
+find_bounds_backward (Frame_T *translation_frame, int *translation_starti,
 		      int *translation_endi, int *translation_length,
 		      bool *endstopp, struct T *translation, int translationlen, bool fulllengthp) {
   int beststart0, beststart1, beststart2, bestend0, bestend1, bestend2;
@@ -497,11 +497,12 @@ find_bounds_backward (int *translation_frame, int *translation_starti,
 
 #ifndef PMAP
 static void
-find_bounds_forward_fromstart (int *translation_frame, int *translation_starti, 
+find_bounds_forward_fromstart (Frame_T *translation_frame, int *translation_starti, 
 			       int *translation_endi, int *translation_length,
 			       bool *endstopp, struct T *translation, int translationlen,
 			       int cds_startpos) {
-  int frame_fromstart, phase_fromstart;
+  Frame_T frame_fromstart;
+  int phase_fromstart;
   int beststart0, bestend0;
   int bestorf0 = 0, orf0 = 0;
   int start0 = 0;
@@ -571,11 +572,12 @@ find_bounds_forward_fromstart (int *translation_frame, int *translation_starti,
 
 #ifndef PMAP
 static void
-find_bounds_backward_fromstart (int *translation_frame, int *translation_starti,
+find_bounds_backward_fromstart (Frame_T *translation_frame, int *translation_starti,
 				int *translation_endi, int *translation_length,
 				bool *endstopp, struct T *translation, int translationlen,
 				int cds_startpos, int querylength) {
-  int frame_fromstart, phase_fromstart;
+  Frame_T frame_fromstart;
+  int phase_fromstart;
   int beststart0, bestend0;
   int bestorf0 = 0, orf0 = 0;
   int start0 = translationlen-1;
@@ -1074,7 +1076,8 @@ get_codon_genomic (int *nexti, struct Pair_T *pairs, int npairs, int starti) {
 static int
 assign_cdna_forward (int ncdna, struct Pair_T *pairs, int npairs, bool revcompp, int starti) {
   struct Pair_T *pair;
-  int i, nexti, j = 0, codon;
+  int i, nexti, j = 0;
+  int codon = ' ';
 
   i = starti;
   while (i < npairs && pairs[i].cdna == ' ') {
@@ -1115,6 +1118,7 @@ static int
 assign_cdna_backward (int ncdna, struct Pair_T *pairs, int npairs, bool revcompp, int starti) {
   struct Pair_T *pair;
   int i, nexti, j = 0;
+  int codon = ' ';
 
   i = starti;
   while (i >= 0 && pairs[i].cdna == ' ') {
@@ -1122,13 +1126,13 @@ assign_cdna_backward (int ncdna, struct Pair_T *pairs, int npairs, bool revcompp
   }
   while (j < ncdna) {
     pair = &(pairs[i]);
-    pair->aa_e = get_codon_backward(&nexti,pairs,npairs,i,revcompp);
+    codon = pair->aa_e = get_codon_backward(&nexti,pairs,npairs,i,revcompp);
     debug2(Pair_dump_one(pair,true));
     debug2(printf(" marked with amino acid %c\n",pair->aa_e));
     i = nexti;
     j += 3;
   }
-  return ncdna;
+  return codon;
 }
 
 static void
@@ -1265,6 +1269,7 @@ mark_cdna_forward (struct Pair_T *pairs, int npairs, bool revcompp, int starti,
     }
   }
 
+  debug2(printf("Calling terminate_cdna_forward\n"));
   terminate_cdna_forward(pairs,npairs,revcompp,i);
 
   return;
@@ -1276,7 +1281,7 @@ mark_cdna_backward_strict (struct Pair_T *pairs, int npairs, bool revcompp, int
   struct Pair_T *pair;
   int i, nexti, ncdna, codon = ' ';
 
-  debug2(printf("mark_cdna_backward called with pairs #%d..%d\n",starti,endi));
+  debug2(printf("mark_cdna_backward_strict called with pairs #%d..%d\n",starti,endi));
 
   i = starti;
 
@@ -1348,6 +1353,7 @@ mark_cdna_backward (struct Pair_T *pairs, int npairs, bool revcompp, int starti,
     }
   }
 
+  debug2(printf("Calling terminate_cdna_backward\n"));
   terminate_cdna_backward(pairs,npairs,revcompp,i);
 
   return;
@@ -1485,7 +1491,8 @@ Translation_via_genomic (int *translation_leftpos, int *translation_rightpos, in
   struct T *translation;
   bool endstopp;
   int i, aapos = 0;
-  int translation_frame, translation_starti = 0, translation_endi = 0, phase;
+  Frame_T translation_frame;
+  int translation_starti = 0, translation_endi = 0, phase;
   int minpos, maxpos;
 
   if (npairs < MIN_NPAIRS) {
diff --git a/src/types.h b/src/types.h
index 4d77db5..ce196b5 100644
--- a/src/types.h
+++ b/src/types.h
@@ -1,4 +1,4 @@
-/* $Id: types.h 102168 2013-07-20 00:44:27Z twu $ */
+/* $Id: types.h 132144 2014-04-02 16:02:28Z twu $ */
 #ifndef TYPES_INCLUDED
 #define TYPES_INCLUDED
 #ifdef HAVE_CONFIG_H
@@ -28,7 +28,7 @@ typedef UINT4 Genomecomp_T;
 /* An 8-byte word */
 /* Oligospace_T needs to hold 1 more than maximum Storedoligomer_T.
    If 8-byte words are not available, then maximum k-mer is 15 */
-/* Prefer to use unsigned long long, which should be 8 bytes on all systems */
+/* Prefer to use unsigned long long, whic should be 8 bytes on all systems */
 #if (SIZEOF_UNSIGNED_LONG_LONG == 8)
 #define HAVE_64_BIT 1
 #define MAXIMUM_KMER 16
@@ -45,10 +45,6 @@ typedef unsigned long Oligospace_T;
 typedef unsigned int Oligospace_T;
 #endif
 
-/* Pointer into compressed offsets file.  Can be UINT4 as long as file
-   has fewer than 4 billion words, which should hold for k <= 16. */
-typedef UINT4 Gammaptr_T;
-
 /* Contents of compressed offsets file.  Storing as UINT4, even for
    large genomes, to reduce zero-padding of bitstreams.  For large
    genomes, need to store 64-bit Positionsptr_T quantity in 2 UINT4
@@ -56,12 +52,36 @@ typedef UINT4 Gammaptr_T;
 typedef UINT4 Offsetscomp_T;
 
 /* Holds a k-mer.  Can be UINT4 as long as k <= 16. */
+/* Some procedures use Shortoligomer_T, which should be the same */
 typedef UINT4 Storedoligomer_T;
 
+
+/* Definitions */
+/* Large genome: Genomic length > 2^32, needing 8-byte Univcoord_T */
+/* Huge genome: Entries in positions file > 2^32, needing 8-byte Positionsptr_T */
+
 /* An offset into the positions file of an IndexDB.  For small genomes
    < 2^32 bp such as human, need 3 billion divided by sampling
-   interval (default 3), requiring a maximum of 32 bits or 4 bytes */
+   interval (default 3), requiring a maximum of 32 bits or 4 bytes
+   (Positionsptr_T).  For huge genomes or more frequent sampling,
+   need 8 bytes, or Hugepositionsptr_T. */
+#ifdef HAVE_64_BIT
+
+#ifdef UTILITYP
+typedef UINT8 Hugepositionsptr_T;
+typedef UINT4 Positionsptr_T;
+#elif defined(LARGE_GENOMES)
+/* Don't really need offsets to be 8-byte unless we have a huge
+   genome, but this simplifies the code */
+typedef UINT8 Hugepositionsptr_T;
+typedef UINT8 Positionsptr_T;
+#else
 typedef UINT4 Positionsptr_T;
+#endif
+
+#else
+typedef UINT4 Positionsptr_T;
+#endif
 
 
 /* For definition of Univcoord_T and Chrpos_T, see genomicpos.h */
@@ -71,7 +91,7 @@ typedef UINT4 Positionsptr_T;
 
 #ifdef UTILITYP
 typedef UINT8 Univcoord_T;
-#elif defined LARGE_GENOMES
+#elif defined(LARGE_GENOMES)
 typedef UINT8 Univcoord_T;
 #else
 typedef UINT4 Univcoord_T;
@@ -85,5 +105,8 @@ typedef UINT4 Univcoord_T;
 typedef UINT4 Trieoffset_T;
 typedef UINT4 Triecontent_T;
 
+/* For suffix array */
+typedef UINT4 Sarrayptr_T;
+
 #endif
 
diff --git a/src/uint8list.c b/src/uint8list.c
index 2cc114d..66e8a1a 100644
--- a/src/uint8list.c
+++ b/src/uint8list.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: uint8list.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: uint8list.c 136085 2014-05-13 23:00:04Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -104,6 +104,24 @@ Uint8list_to_array (int *n, T list) {
   return array;
 }
 
+UINT8 *
+Uint8list_to_array_out (int *n, T list) {
+  UINT8 *array;
+  int i;
+
+  *n = Uint8list_length(list);
+  if (*n == 0) {
+    return NULL;
+  } else {
+    array = (UINT8 *) CALLOC_OUT(*n,sizeof(UINT8));
+    for (i = 0; i < *n; i++) {
+      array[i] = list->first;
+      list = list->rest;
+    }
+    return array;
+  }
+}
+
 T
 Uint8list_copy (T list) {
   T head, *p = &head;
diff --git a/src/uint8list.h b/src/uint8list.h
index 571f92f..9f452c9 100644
--- a/src/uint8list.h
+++ b/src/uint8list.h
@@ -1,4 +1,4 @@
-/* $Id: uint8list.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: uint8list.h 136085 2014-05-13 23:00:04Z twu $ */
 #ifndef UINT8LIST_INCLUDED
 #define UINT8LIST_INCLUDED
 #include "types.h"
@@ -25,6 +25,8 @@ extern int
 Uint8list_length (T list);
 extern UINT8 *
 Uint8list_to_array (int *n, T list);
+extern UINT8 *
+Uint8list_to_array_out (int *n, T list);
 extern T 
 Uint8list_copy (T list);
 extern T 
diff --git a/src/uintlist.c b/src/uintlist.c
index a419786..f0647c7 100644
--- a/src/uintlist.c
+++ b/src/uintlist.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: uintlist.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: uintlist.c 136085 2014-05-13 23:00:04Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -104,6 +104,24 @@ Uintlist_to_array (int *n, T list) {
   return array;
 }
 
+UINT4 *
+Uintlist_to_array_out (int *n, T list) {
+  UINT4 *array;
+  int i;
+
+  *n = Uintlist_length(list);
+  if (*n == 0) {
+    return NULL;
+  } else {
+    array = (UINT4 *) CALLOC_OUT(*n,sizeof(UINT4));
+    for (i = 0; i < *n; i++) {
+      array[i] = list->first;
+      list = list->rest;
+    }
+    return array;
+  }
+}
+
 T
 Uintlist_copy (T list) {
   T head, *p = &head;
diff --git a/src/uintlist.h b/src/uintlist.h
index 7f1773c..1677bcb 100644
--- a/src/uintlist.h
+++ b/src/uintlist.h
@@ -1,4 +1,4 @@
-/* $Id: uintlist.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: uintlist.h 136085 2014-05-13 23:00:04Z twu $ */
 #ifndef UINTLIST_INCLUDED
 #define UINTLIST_INCLUDED
 #include "types.h"
@@ -25,6 +25,8 @@ extern int
 Uintlist_length (T list);
 extern UINT4 *
 Uintlist_to_array (int *n, T list);
+extern UINT4 *
+Uintlist_to_array_out (int *n, T list);
 extern T 
 Uintlist_copy (T list);
 extern T 
diff --git a/src/uniqscan.c b/src/uniqscan.c
index e461163..7e90171 100644
--- a/src/uniqscan.c
+++ b/src/uniqscan.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: uniqscan.c 102130 2013-07-19 22:59:15Z twu $";
+static char rcsid[] = "$Id: uniqscan.c 135447 2014-05-07 22:25:45Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -25,16 +25,26 @@ static char rcsid[] = "$Id: uniqscan.c 102130 2013-07-19 22:59:15Z twu $";
 #include "sequence.h"
 #include "shortread.h"		/* For Shortread_setup */
 #include "genome.h"
-#include "genome_hr.h"		/* For Genome_hr_setup */
+#include "genome128_hr.h"	/* For Genome_hr_setup */
+#include "genome_sites.h"	/* For Genome_sites_setup */
 #include "maxent_hr.h"		/* For Maxent_hr_setup */
 #include "indexdb_hr.h"
 #include "substring.h"
 #include "stage3hr.h"
 #include "spanningelt.h"
+#include "splicestringpool.h"
 #include "splicetrie_build.h"
 #include "oligo.h"		/* For Oligo_setup */
 #include "oligoindex_hr.h"	/* For Oligoindex_hr_setup */
+#include "pairpool.h"
+#include "diagpool.h"
+#include "cellpool.h"
 #include "stage2.h"		/* For Stage2_setup */
+#include "indel.h"		/* For Indel_setup */
+#include "dynprog.h"
+#include "dynprog_single.h"
+#include "dynprog_genome.h"
+#include "dynprog_end.h"
 #include "stage1hr.h"
 #include "indexdb.h"
 #include "intlist.h"
@@ -49,6 +59,9 @@ static char rcsid[] = "$Id: uniqscan.c 102130 2013-07-19 22:59:15Z twu $";
 #include "getopt.h"
 
 
+#define MAX_QUERYLENGTH_FOR_ALLOC    100000
+#define MAX_GENOMICLENGTH_FOR_ALLOC 1000000
+
 #ifdef DEBUG
 #define debug(x) x
 #else
@@ -60,7 +73,7 @@ static char rcsid[] = "$Id: uniqscan.c 102130 2013-07-19 22:59:15Z twu $";
  ************************************************************************/
 
 static int gmap_mode = GMAP_PAIRSEARCH | GMAP_TERMINAL | GMAP_IMPROVEMENT;
-static double gmap_min_coverage = 0.50;
+static int gmap_min_nconsecutive = 20;
 static int nullgap = 600;
 static int maxpeelback = 11;
 static int maxpeelback_distalmedial = 24;
@@ -75,6 +88,7 @@ static int suboptimal_score_start = -1; /* Determined by simulations to have min
 static int suboptimal_score_end = 3;	/* Determined by simulations to have diminishing returns above 3 */
 
 static int trigger_score_for_gmap = 5;
+static int gmap_allowance = 3;
 /* static int trigger_score_for_terminals = 5; -- obsolete */
 
 static int min_intronlength = 9;
@@ -115,7 +129,7 @@ static bool novelsplicingp = false;
 static int trim_mismatch_score = -3;
 static int trim_indel_score = -4;
 
-static Access_mode_T offsetscomp_access = USE_MMAP_ONLY;
+static Access_mode_T offsetsstrm_access = USE_MMAP_ONLY;
 static bool expand_offsets_p = false;
 
 #ifdef HAVE_MMAP
@@ -161,8 +175,6 @@ static double min_distantsplicing_identity = 0.95;
 static int min_shortend = 2;
 static int antistranded_penalty = 0; /* Most RNA-Seq is non-stranded */
 
-static int basesize;
-static int required_basesize = 0;
 static int index1part;
 static int required_index1part = 0;
 static int index1interval;
@@ -232,7 +244,6 @@ static struct option long_options[] = {
   /* Input options */
   {"dir", required_argument, 0, 'D'},	/* user_genomedir */
   {"db", required_argument, 0, 'd'}, /* dbroot */
-  {"basesize", required_argument, 0, 'b'}, /* required_basesize, basesize */
   {"kmer", required_argument, 0, 'k'}, /* required_index1part, index1part */
   {"sampling", required_argument, 0, 'q'}, /* required_interval, index1interval */
   {"genomefull", no_argument, 0, 'G'}, /* uncompressedp */
@@ -287,6 +298,8 @@ static struct option long_options[] = {
 
   {"gmap-mode", required_argument, 0, 0}, /* gmap_mode */
   {"trigger-score-for-gmap", required_argument, 0, 0}, /* trigger_score_for_gmap */
+  {"gmap-min-match-length", required_argument, 0, 0},      /* gmap_min_nconsecutive */
+  {"gmap-allowance", required_argument, 0, 0}, /* gmap_allowance */
   {"max-gmap-pairsearch", required_argument, 0, 0}, /* max_gmap_pairsearch */
   {"max-gmap-terminal", required_argument, 0, 0}, /* max_gmap_terminal */
   {"max-gmap-improvement", required_argument, 0, 0}, /* max_gmap_improvement */
@@ -391,23 +404,27 @@ uniqueness_scan (bool from_right_p) {
   int i;
 
   /* For GMAP */
-  Oligoindex_T *oligoindices_major, *oligoindices_minor;
-  int noligoindices_major, noligoindices_minor;
+  Oligoindex_array_T oligoindices_major, oligoindices_minor;
   Dynprog_T dynprogL, dynprogM, dynprogR;
   Pairpool_T pairpool;
   Diagpool_T diagpool;
+  Cellpool_T cellpool;
 
 #ifdef MEMUSAGE
   long int memusage_constant = 0;
 #endif
 
-  oligoindices_major = Oligoindex_new_major(&noligoindices_major);
-  oligoindices_minor = Oligoindex_new_minor(&noligoindices_minor);
-  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
-  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired);
+  oligoindices_major = Oligoindex_array_new_major(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  oligoindices_minor = Oligoindex_array_new_minor(MAX_QUERYLENGTH_FOR_ALLOC,MAX_GENOMICLENGTH_FOR_ALLOC);
+  dynprogL = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
+  dynprogM = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/false);
+  dynprogR = Dynprog_new(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
+			 /*doublep*/true);
   pairpool = Pairpool_new();
   diagpool = Diagpool_new();
+  cellpool = Cellpool_new();
 
   floors_array = (Floors_T *) CALLOC(MAX_READLENGTH+1,sizeof(Floors_T));
   /* Except_stack_create(); -- requires pthreads */
@@ -431,18 +448,15 @@ uniqueness_scan (bool from_right_p) {
     /* Handle full sequence */
     queryseq1 = Shortread_new(/*acc*/NULL,/*restofheader*/NULL,/*filterp*/false,sequence,
 			      /*sequence_length*/fulllength,/*quality*/NULL,/*quality_length*/0,
-			      /*barcode_length*/0,/*invertp*/0,/*copy_acc_p*/false);
+			      /*barcode_length*/0,/*invertp*/0,/*copy_acc_p*/false,/*skipp*/false);
     stage3array = Stage1_single_read(&npaths,&first_absmq,&second_absmq,
 				     queryseq1,indexdb,indexdb2,indexdb_size_threshold,
 				     genome,floors_array,user_maxlevel_float,subopt_levels,
 				     indel_penalty_middle,indel_penalty_end,
-				     max_middle_insertions,max_middle_deletions,
 				     allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-				     shortsplicedist,localsplicing_penalty,/*distantsplicing_penalty*/100,min_shortend,
-				     oligoindices_major,noligoindices_major,
-				     oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-				     dynprogL,dynprogM,dynprogR,
-				     /*keep_floors_p*/true);
+				     localsplicing_penalty,/*distantsplicing_penalty*/100,min_shortend,
+				     oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+				     dynprogL,dynprogM,dynprogR,/*keep_floors_p*/true);
 
     /* printf("%d: %d\n",sublength,npaths); */
     if (from_right_p == true) {
@@ -478,18 +492,15 @@ uniqueness_scan (bool from_right_p) {
 	}
 	queryseq1 = Shortread_new(/*acc*/NULL,/*restofheader*/NULL,/*filterp*/false,subsequence,
 				  /*sequence_length*/sublength,/*quality*/NULL,/*quality_length*/0,
-				  /*barcode_length*/0,/*invertp*/0,/*copy_acc_p*/false);
+				  /*barcode_length*/0,/*invertp*/0,/*copy_acc_p*/false,/*skipp*/false);
 	stage3array = Stage1_single_read(&npaths,&first_absmq,&second_absmq,
 					 queryseq1,indexdb,indexdb2,indexdb_size_threshold,
 					 genome,floors_array,user_maxlevel_float,subopt_levels,
 					 indel_penalty_middle,indel_penalty_end,
-					 max_middle_insertions,max_middle_deletions,
 					 allow_end_indels_p,max_end_insertions,max_end_deletions,min_indel_end_matches,
-					 shortsplicedist,localsplicing_penalty,/*distantsplicing_penalty*/100,min_shortend,
-					 oligoindices_major,noligoindices_major,
-					 oligoindices_minor,noligoindices_minor,pairpool,diagpool,
-					 dynprogL,dynprogM,dynprogR,
-					 /*keep_floors_p*/true);
+					 localsplicing_penalty,/*distantsplicing_penalty*/100,min_shortend,
+					 oligoindices_major,oligoindices_minor,pairpool,diagpool,cellpool,
+					 dynprogL,dynprogM,dynprogR,/*keep_floors_p*/true);
 
 	/* printf("%d: %d\n",sublength,npaths); */
 	if (from_right_p == true) {
@@ -530,13 +541,14 @@ uniqueness_scan (bool from_right_p) {
   }
   FREE(floors_array);
 
+  Cellpool_free(&cellpool);
   Diagpool_free(&diagpool);
   Pairpool_free(&pairpool);
   Dynprog_free(&dynprogR);
   Dynprog_free(&dynprogM);
   Dynprog_free(&dynprogL);
-  Oligoindex_free_array(&oligoindices_minor,noligoindices_minor);
-  Oligoindex_free_array(&oligoindices_major,noligoindices_major);
+  Oligoindex_array_free(&oligoindices_minor);
+  Oligoindex_array_free(&oligoindices_major);
 
   return;
 }
@@ -563,7 +575,7 @@ add_gmap_mode (char *string) {
 }
 
 
-char *
+static char *
 check_valid_int (char *string) {
   char *p = string;
 
@@ -603,8 +615,72 @@ check_valid_int (char *string) {
 }
 
 
-char *
-check_valid_float (char *string) {
+static double
+check_valid_float (char *string, const char *option) {
+  double value;
+  char *p = string;
+
+  if (*p == '+' || *p == '-') {
+    p++;
+  }
+
+  while (*p != '\0' && isdigit(*p)) {
+    p++;
+  }
+  if (*p == '\0') {
+    if ((value = atof(string)) > 1.0 || value < 0.0) {
+      fprintf(stderr,"Value for option %s should be between 0.0 and 1.0\n",option);
+      exit(9);
+    } else {
+      return value;
+    }
+  }
+
+  if (*p == '.') {
+    p++;
+  }
+
+  if (!isdigit(*p)) {
+    fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
+    exit(9);
+    return 0.0;
+  }
+  while (*p != '\0' && isdigit(*p)) {
+    p++;
+  }
+
+  if (*p == 'e') {
+    p++;
+    if (*p == '+' || *p == '-') {
+      p++;
+    }
+    if (!isdigit(*p)) {
+      fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
+      exit(9);
+      return 0.0;
+    }
+    while (*p != '\0' && isdigit(*p)) {
+      p++;
+    }
+  }
+
+  if (*p == '\0') {
+    if ((value = atof(string)) > 1.0 || value < 0.0) {
+      fprintf(stderr,"Value for option %s should be between 0.0 and 1.0\n",option);
+      exit(9);
+    } else {
+      return value;
+    }
+  } else {
+    fprintf(stderr,"Value %s for option %s is not a valid float\n",string,option);
+    exit(9);
+    return 0.0;
+  }
+}
+
+
+static char *
+check_valid_float_or_int (char *string) {
   char *p = string;
 
   if (*p == '+' || *p == '-') {
@@ -675,7 +751,7 @@ main (int argc, char *argv[]) {
 
 
   while ((opt = getopt_long(argc,argv,
-			    "D:d:b:k:q:GN:M:m:i:y:Y:z:Z:w:e:l:g:S:s:V:v:53",
+			    "D:d:k:q:GN:M:m:i:y:Y:z:Z:w:e:l:g:S:s:V:v:53",
 			    long_options, &long_option_index)) != -1) {
     switch (opt) {
     case 0:
@@ -721,6 +797,10 @@ main (int argc, char *argv[]) {
 
       } else if (!strcmp(long_name,"trigger-score-for-gmap")) {
 	trigger_score_for_gmap = atoi(check_valid_int(optarg));
+      } else if (!strcmp(long_name,"gmap-min-match-length")) {
+	gmap_min_nconsecutive = atoi(check_valid_int(optarg));
+      } else if (!strcmp(long_name,"gmap-allowance")) {
+	gmap_allowance = atoi(check_valid_int(optarg));
 
       } else if (!strcmp(long_name,"max-gmap-pairsearch")) {
 	max_gmap_pairsearch = atoi(check_valid_int(optarg));
@@ -729,7 +809,7 @@ main (int argc, char *argv[]) {
       } else if (!strcmp(long_name,"max-gmap-improvement")) {
 	max_gmap_improvement = atoi(check_valid_int(optarg));
       } else if (!strcmp(long_name,"microexon-spliceprob")) {
-	microexon_spliceprob = atof(check_valid_float(optarg));
+	microexon_spliceprob = check_valid_float(optarg,long_name);
       } else if (!strcmp(long_name,"stage2-start")) {
 	suboptimal_score_start = atoi(check_valid_int(optarg));
       } else if (!strcmp(long_name,"stage2-end")) {
@@ -787,7 +867,6 @@ main (int argc, char *argv[]) {
       dbroot = (char *) CALLOC(strlen(optarg)+1,sizeof(char));
       strcpy(dbroot,optarg);
       break;
-    case 'b': required_basesize = atoi(check_valid_int(optarg)); break;
     case 'k':
       required_index1part = atoi(check_valid_int(optarg));
       if (required_index1part > 16) {
@@ -836,7 +915,7 @@ main (int argc, char *argv[]) {
 
     case 'M': subopt_levels = atoi(check_valid_int(optarg)); break;
     case 'm':
-      user_maxlevel_float = atof(check_valid_float(optarg));
+      user_maxlevel_float = atof(check_valid_float_or_int(optarg));
       if (user_maxlevel_float > 1.0 && user_maxlevel_float != rint(user_maxlevel_float)) {
 	fprintf(stderr,"Cannot specify fractional value %f for --max-mismatches except between 0.0 and 1.0\n",user_maxlevel_float);
 	exit(9);
@@ -906,7 +985,7 @@ main (int argc, char *argv[]) {
 
 #if 0
   expand_offsets_p = false;
-  offsetscomp_access = USE_MMAP_ONLY;
+  offsetsstrm_access = USE_MMAP_ONLY;
   positions_access = USE_MMAP_ONLY;
   genome_access = USE_MMAP_ONLY;
 #endif
@@ -931,7 +1010,8 @@ main (int argc, char *argv[]) {
 
 
   if (snps_root == NULL) {
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
+    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			uncompressedp,genome_access);
     if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
       if (user_cmetdir == NULL) {
 	modedir = genomesubdir;
@@ -939,18 +1019,18 @@ main (int argc, char *argv[]) {
 	modedir = user_cmetdir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"metct",/*snps_root*/NULL,
-					required_basesize,required_index1part,required_interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metct index file.  Need to run cmetindex first\n");
 	exit(9);
       }
 
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"metga",/*snps_root*/NULL,
-					 required_basesize,required_index1part,required_interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metga index file.  Need to run cmetindex first\n");
 	exit(9);
       }
@@ -962,18 +1042,18 @@ main (int argc, char *argv[]) {
 	modedir = user_atoidir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"a2iag",/*snps_root*/NULL,
-					required_basesize,required_index1part,required_interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2iag index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"a2itc",/*snps_root*/NULL,
-					 required_basesize,required_index1part,required_interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2itc index file.  Need to run atoiindex first\n");
 	exit(9);
       }
@@ -981,10 +1061,10 @@ main (int argc, char *argv[]) {
 
     } else {
       /* Standard behavior */
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					genomesubdir,fileroot,IDX_FILESUFFIX,/*snps_root*/NULL,
-					required_basesize,required_index1part,required_interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find offsets file %s.%s*offsets, needed for GSNAP\n",fileroot,IDX_FILESUFFIX);
 	exit(9);
       }
@@ -1001,8 +1081,10 @@ main (int argc, char *argv[]) {
     }
 
     /* SNPs */
-    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,uncompressedp,genome_access);
-    genomealt = Genome_new(snpsdir,fileroot,snps_root,uncompressedp,genome_access);
+    genome = Genome_new(genomesubdir,fileroot,/*snps_root*/NULL,/*genometype*/GENOME_OLIGOS,
+			uncompressedp,genome_access);
+    genomealt = Genome_new(snpsdir,fileroot,snps_root,/*genometype*/GENOME_OLIGOS,
+			   uncompressedp,genome_access);
 
     if (mode == CMET_STRANDED || mode == CMET_NONSTRANDED) {
       if (user_cmetdir == NULL) {
@@ -1011,17 +1093,17 @@ main (int argc, char *argv[]) {
 	modedir = user_cmetdir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"metct",snps_root,
-					required_basesize,required_index1part,required_interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metct index file.  Need to run cmetindex first\n");
 	exit(9);
       }
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"metga",snps_root,
-					 required_basesize,required_index1part,required_interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find metga index file.  Need to run cmetindex first\n");
 	exit(9);
       }
@@ -1033,26 +1115,26 @@ main (int argc, char *argv[]) {
 	modedir = user_atoidir;
       }
 
-      if ((indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb = Indexdb_new_genome(&index1part,&index1interval,
 					modedir,fileroot,/*idx_filesuffix*/"a2iag",snps_root,
-					required_basesize,required_index1part,required_interval,
-					expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					required_index1part,required_interval,
+					expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2iag index file.  Need to run atoiindex first\n");
 	exit(9);
       }
-      if ((indexdb2 = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      if ((indexdb2 = Indexdb_new_genome(&index1part,&index1interval,
 					 modedir,fileroot,/*idx_filesuffix*/"a2itc",snps_root,
-					 required_basesize,required_index1part,required_interval,
-					 expand_offsets_p,offsetscomp_access,positions_access)) == NULL) {
+					 required_index1part,required_interval,
+					 expand_offsets_p,offsetsstrm_access,positions_access)) == NULL) {
 	fprintf(stderr,"Cannot find a2itc index file.  Need to run atoiindex first\n");
 	exit(9);
       }
 
     } else {
-      indexdb = Indexdb_new_genome(&basesize,&index1part,&index1interval,
+      indexdb = Indexdb_new_genome(&index1part,&index1interval,
 				   snpsdir,fileroot,/*idx_filesuffix*/"ref",snps_root,
-				   required_basesize,required_index1part,required_interval,
-				   expand_offsets_p,offsetscomp_access,positions_access);
+				   required_index1part,required_interval,
+				   expand_offsets_p,offsetsstrm_access,positions_access);
       if (indexdb == NULL) {
 	fprintf(stderr,"Cannot find snps index file for %s in directory %s\n",snps_root,snpsdir);
 	exit(9);
@@ -1087,8 +1169,7 @@ main (int argc, char *argv[]) {
   genome_blocks = Genome_blocks(genome);
 
 
-  Dynprog_init(nullgap,EXTRAQUERYGAP,maxpeelback,extramaterial_end,extramaterial_paired,
-	       /*mode*/STANDARD);
+  Dynprog_init(/*mode*/STANDARD);
   Compoundpos_init_positions_free(Indexdb_positions_fileio_p(indexdb));
   Spanningelt_init_positions_free(Indexdb_positions_fileio_p(indexdb));
   Stage1_init_positions_free(Indexdb_positions_fileio_p(indexdb));
@@ -1104,6 +1185,7 @@ main (int argc, char *argv[]) {
   Genome_setup(genome,genomealt,/*mode*/STANDARD,circular_typeint);
   Genome_hr_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL,
 		  query_unk_mismatch_p,genome_unk_mismatch_p,mode);
+  Genome_sites_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL);
   Maxent_hr_setup(Genome_blocks(genome),/*snp_blocks*/genomealt ? Genome_blocks(genomealt) : NULL);
   Indexdb_setup(index1part);
   Indexdb_hr_setup(index1part);
@@ -1112,15 +1194,18 @@ main (int argc, char *argv[]) {
 		   trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max,
 		   /*snpp*/snps_iit ? true : false,amb_closest_p,/*amb_clip_p*/true,min_shortend);
   spansize = Spanningelt_setup(index1part,index1interval);
-  Stage1hr_setup(index1part,index1interval,spansize,chromosome_iit,nchromosomes,
-		 genomealt,mode,/*maxpaths_search*/10,/*terminal_threshold*/5,
+  Indel_setup(min_indel_end_matches,indel_penalty_middle);
+  Stage1hr_setup(/*use_sarray_p*/false,index1part,index1interval,
+		 spansize,chromosome_iit,nchromosomes,
+		 genomealt,mode,/*maxpaths_search*/10,/*terminal_threshold*/5,/*terminal_output_minlength*/0,
 		 splicesites,splicetypes,splicedists,nsplicesites,
 		 novelsplicingp,knownsplicingp,distances_observed_p,
-		 shortsplicedist_known,shortsplicedist_novelend,min_intronlength,
+		 max_middle_insertions,max_middle_deletions,
+		 shortsplicedist,shortsplicedist_known,shortsplicedist_novelend,min_intronlength,
 		 min_distantsplicing_end_matches,min_distantsplicing_identity,
 		 nullgap,maxpeelback,maxpeelback_distalmedial,
 		 extramaterial_end,extramaterial_paired,gmap_mode,
-		 trigger_score_for_gmap,max_gmap_pairsearch,
+		 trigger_score_for_gmap,gmap_allowance,max_gmap_pairsearch,
 		 max_gmap_terminal,max_gmap_improvement,antistranded_penalty);
   Substring_setup(/*print_nsnpdiffs_p*/false,/*print_snplabels_p*/false,
 		  /*show_refdiff_p*/false,snps_iit,snps_divint_crosstable,
@@ -1128,28 +1213,31 @@ main (int argc, char *argv[]) {
 		  splicing_iit,splicing_divint_crosstable,
 		  donor_typeint,acceptor_typeint,trim_mismatch_score,
 		  novelsplicingp,knownsplicingp,/*output_sam_p*/false,mode);
-  Dynprog_setup(novelsplicingp,splicing_iit,splicing_divint_crosstable,
-		donor_typeint,acceptor_typeint,
-		splicesites,splicetypes,splicedists,nsplicesites,
-		trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max);
+  Dynprog_single_setup(/*homopolymerp*/false);
+  Dynprog_genome_setup(novelsplicingp,splicing_iit,splicing_divint_crosstable,
+		       donor_typeint,acceptor_typeint);
+  Dynprog_end_setup(splicesites,splicetypes,splicedists,nsplicesites,
+		    trieoffsets_obs,triecontents_obs,trieoffsets_max,triecontents_max);
   Oligoindex_hr_setup(Genome_blocks(genome),/*mode*/STANDARD);
-  Stage2_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,
-	       suboptimal_score_start,suboptimal_score_end,mode,/*snps_p*/snps_iit ? true : false);
+  Stage2_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,/*cross_species_p*/false,
+	       suboptimal_score_start,suboptimal_score_end,
+	       mode,/*snps_p*/snps_iit ? true : false);
   Pair_setup(trim_mismatch_score,trim_indel_score,/*sam_insert_0M_p*/false,
 	     /*force_xs_direction_p*/false,/*md_lowercase_variant_p*/false,
 	     /*snps_p*/snps_iit ? true : false);
   Stage3_setup(/*splicingp*/novelsplicingp == true || knownsplicingp == true,novelsplicingp,
 	       /*require_splicedir_p*/false,splicing_iit,splicing_divint_crosstable,
 	       donor_typeint,acceptor_typeint,
-	       splicesites,min_intronlength,max_deletionlength,
-	       /*output_sam_p*/false);
+	       splicesites,min_intronlength,max_deletionlength,/*min_indel_end_matches*/6,
+	       /*output_sam_p*/false,/*homopolymerp*/false,/*stage3debug*/NO_STAGE3DEBUG);
   Stage3hr_setup(/*invert_first_p*/false,/*invert_second_p*/false,genes_iit,genes_divint_crosstable,
 		 /*tally_iit*/NULL,/*tally_divint_crosstable*/NULL,
-		 /*runlength_iit*/NULL,/*runlength_divint_crosstable*/NULL,
+		 /*runlength_iit*/NULL,/*runlength_divint_crosstable*/NULL,/*terminal_output_minlength*/0,
 		 distances_observed_p,pairmax,expected_pairlength,pairlength_deviation,
 		 localsplicing_penalty,indel_penalty_middle,antistranded_penalty,
-		 favor_multiexon_p,gmap_min_coverage,index1part,index1interval,
-		 novelsplicingp,circularp);
+		 favor_multiexon_p,gmap_min_nconsecutive,index1part,index1interval,
+		 novelsplicingp,/*merge_samechr_p*/false,circularp,
+		 /*fails_as_input_p*/false,/*fastq_format_p*/false);
 
   uniqueness_scan(from_right_p);
 
@@ -1182,7 +1270,8 @@ main (int argc, char *argv[]) {
       FREE(nsplicepartners_max);
       FREE(nsplicepartners_obs);
       FREE(nsplicepartners_skip);
-      Splicestring_gc(splicestrings,nsplicesites);
+      /* Splicestring_gc(splicestrings,nsplicesites); */
+      FREE(splicestrings);
     }
     FREE(splicefrags_ref);
     FREE(splicedists);
diff --git a/src/univinterval.c b/src/univinterval.c
index 6849968..1f4072c 100644
--- a/src/univinterval.c
+++ b/src/univinterval.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: univinterval.c 99737 2013-06-27 19:33:03Z twu $";
+static char rcsid[] = "$Id: univinterval.c 102893 2013-07-25 22:11:12Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -59,6 +59,14 @@ Univinterval_free (T *old) {
 }
 
 void
+Univinterval_table_free (void **x) {
+  T *old = (T *) x;
+  FREE(*old);
+  return;
+}
+
+
+void
 Univinterval_print (T this) {
   printf("%lu %lu %d",this->low,this->high,this->type);
   return;
@@ -282,3 +290,56 @@ Univinterval_cmp_high (const void *a, const void *b) {
 }
 
 
+#if 0
+int
+Univinterval_table_cmp (const void *a, const void *b) {
+  T x = (T) a;
+  T y = (T) b;
+
+  debug(printf("Comparing %u..%u with %u..%u => ",x->low,x->high,y->low,y->high));
+  if (x->low < y->low) {
+    debug(printf("-1\n"));
+    return -1;
+  } else if (x->low > y->low) {
+    debug(printf("+1\n"));
+    return +1;
+  } else if (x->high < y->high) {
+    debug(printf("-1\n"));
+    return -1;
+  } else if (x->high > y->high) {
+    debug(printf("+1\n"));
+    return +1;
+  } else if (x->type < y->type) {
+    debug(printf("-1\n"));
+    return -1;
+  } else if (x->type > y->type) {
+    debug(printf("+1\n"));
+    return +1;
+  } else {
+    debug(printf("0\n"));
+    return 0;
+  }
+}
+#endif
+
+#if 0
+unsigned int
+Univinterval_table_hash (const void *a) {
+  T x = (T) a;
+  return (unsigned int) (x->low + x->high);
+}
+#endif
+
+bool
+Univinterval_equal (T x, T y) {
+  debug(printf("Comparing %u..%u with %u..%u => ",x->low,x->high,y->low,y->high));
+  if (x->low != y->low) {
+    return false;
+  } else if (x->high != y->high) {
+    return false;
+  } else if (x->type != y->type) {
+    return false;
+  } else {
+    return true;
+  }
+}
diff --git a/src/univinterval.h b/src/univinterval.h
index 13e85ce..a533855 100644
--- a/src/univinterval.h
+++ b/src/univinterval.h
@@ -1,4 +1,4 @@
-/* $Id: univinterval.h 99737 2013-06-27 19:33:03Z twu $ */
+/* $Id: univinterval.h 102893 2013-07-25 22:11:12Z twu $ */
 #ifndef UNIVINTERVAL_INCLUDED
 #define UNIVINTERVAL_INCLUDED
 #include "bool.h"
@@ -21,6 +21,8 @@ Univinterval_copy (T old);
 extern void
 Univinterval_free (T *old);
 extern void
+Univinterval_table_free (void **x);
+extern void
 Univinterval_print (T this);
 
 extern Univcoord_T
@@ -58,6 +60,15 @@ Univinterval_cmp_low (const void *a, const void *b);
 extern int
 Univinterval_cmp_high (const void *a, const void *b);
 
+#if 0
+extern int
+Univinterval_table_cmp (const void *a, const void *b);
+extern unsigned int
+Univinterval_table_hash (const void *a);
+#endif
+
+bool
+Univinterval_equal (T x, T y);
 
 #undef T
 #endif
diff --git a/tests/Makefile.in b/tests/Makefile.in
index c43c779..a2fa29a 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -51,9 +51,10 @@ am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \
 	$(top_srcdir)/config/builtin.m4 \
 	$(top_srcdir)/config/struct-stat64.m4 \
 	$(top_srcdir)/config/expand.m4 $(top_srcdir)/config/perl.m4 \
-	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/popcnt.m4 \
-	$(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/sse2_shift_defect.m4 \
 	$(top_srcdir)/config/ax_gcc_x86_cpuid.m4 \
+	$(top_srcdir)/config/ax_gcc_x86_avx_xgetbv.m4 \
 	$(top_srcdir)/config/ax_check_compile_flag.m4 \
 	$(top_srcdir)/config/ax_ext.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -65,6 +66,7 @@ SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -124,7 +126,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-POPCNT_CFLAGS = @POPCNT_CFLAGS@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
diff --git a/util/Makefile.am b/util/Makefile.am
index b829396..acf6477 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -1,17 +1,19 @@
 
 
 if FULLDIST
-bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
               psl_splicesites psl_introns psl_genes \
+              ensembl_genes \
               gtf_splicesites gtf_introns gtf_genes \
               gff3_splicesites gff3_introns gff3_genes \
-              dbsnp_iit vcf_iit sam_merge sam_restore
+              dbsnp_iit gvf_iit vcf_iit sam_merge sam_restore
 else
-bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
               psl_splicesites psl_introns psl_genes \
+              ensembl_genes \
               gtf_splicesites gtf_introns gtf_genes \
               gff3_splicesites gff3_introns gff3_genes \
-              dbsnp_iit vcf_iit
+              dbsnp_iit gvf_iit vcf_iit
 endif
 
 gmap_compress: gmap_compress.pl
@@ -26,10 +28,6 @@ gmap_process: gmap_process.pl
 	cp gmap_process.pl gmap_process
 	chmod +x gmap_process
 
-gmap_setup: gmap_setup.pl
-	cp gmap_setup.pl gmap_setup
-	chmod +x gmap_setup
-
 gmap_build: gmap_build.pl
 	cp gmap_build.pl gmap_build
 	chmod +x gmap_build
@@ -62,6 +60,11 @@ psl_splices: psl_splices.pl
 	cp psl_splices.pl psl_splices
 	chmod +x psl_splices
 
+ensembl_genes: ensembl_genes.pl
+	cp ensembl_genes.pl ensembl_genes
+	chmod +x ensembl_genes
+
+
 gtf_splicesites: gtf_splicesites.pl
 	cp gtf_splicesites.pl gtf_splicesites
 	chmod +x gtf_splicesites
@@ -91,6 +94,10 @@ dbsnp_iit: dbsnp_iit.pl
 	cp dbsnp_iit.pl dbsnp_iit
 	chmod +x dbsnp_iit
 
+gvf_iit: gvf_iit.pl
+	cp gvf_iit.pl gvf_iit
+	chmod +x gvf_iit
+
 vcf_iit: vcf_iit.pl
 	cp vcf_iit.pl vcf_iit
 	chmod +x vcf_iit
@@ -105,16 +112,18 @@ sam_restore: sam_restore.pl
 
 
 if FULLDIST
-CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
              psl_splicesites psl_introns psl_genes \
+             ensembl_genes \
              gtf_splicesites gtf_introns gtf_genes \
              gff3_splicesites gff3_introns gff3_genes \
-             dbsnp_iit vcf_iif sam_merge sam_restore
+             dbsnp_iit gvf_iit vcf_iit sam_merge sam_restore
 else
-CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
              psl_splicesites psl_introns psl_genes \
+             ensembl_genes \
              gtf_splicesites gtf_introns gtf_genes \
              gff3_splicesites gff3_introns gff3_genes \
-             dbsnp_iit vcf_iit
+             dbsnp_iit gvf_iit vcf_iit
 endif
 
diff --git a/util/Makefile.in b/util/Makefile.in
index 5c0450f..29a1f60 100644
--- a/util/Makefile.in
+++ b/util/Makefile.in
@@ -35,16 +35,16 @@ host_triplet = @host@
 target_triplet = @target@
 subdir = util
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/dbsnp_iit.pl.in $(srcdir)/fa_coords.pl.in \
-	$(srcdir)/gff3_genes.pl.in $(srcdir)/gff3_introns.pl.in \
-	$(srcdir)/gff3_splicesites.pl.in $(srcdir)/gmap_build.pl.in \
-	$(srcdir)/gmap_compress.pl.in $(srcdir)/gmap_process.pl.in \
-	$(srcdir)/gmap_reassemble.pl.in $(srcdir)/gmap_setup.pl.in \
+	$(srcdir)/dbsnp_iit.pl.in $(srcdir)/ensembl_genes.pl.in \
+	$(srcdir)/fa_coords.pl.in $(srcdir)/gff3_genes.pl.in \
+	$(srcdir)/gff3_introns.pl.in $(srcdir)/gff3_splicesites.pl.in \
+	$(srcdir)/gmap_build.pl.in $(srcdir)/gmap_compress.pl.in \
+	$(srcdir)/gmap_process.pl.in $(srcdir)/gmap_reassemble.pl.in \
 	$(srcdir)/gmap_uncompress.pl.in $(srcdir)/gtf_genes.pl.in \
 	$(srcdir)/gtf_introns.pl.in $(srcdir)/gtf_splicesites.pl.in \
-	$(srcdir)/md_coords.pl.in $(srcdir)/psl_genes.pl.in \
-	$(srcdir)/psl_introns.pl.in $(srcdir)/psl_splicesites.pl.in \
-	$(srcdir)/vcf_iit.pl.in
+	$(srcdir)/gvf_iit.pl.in $(srcdir)/md_coords.pl.in \
+	$(srcdir)/psl_genes.pl.in $(srcdir)/psl_introns.pl.in \
+	$(srcdir)/psl_splicesites.pl.in $(srcdir)/vcf_iit.pl.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \
 	$(top_srcdir)/config/ltoptions.m4 \
@@ -60,9 +60,10 @@ am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \
 	$(top_srcdir)/config/builtin.m4 \
 	$(top_srcdir)/config/struct-stat64.m4 \
 	$(top_srcdir)/config/expand.m4 $(top_srcdir)/config/perl.m4 \
-	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/popcnt.m4 \
-	$(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/fopen.m4 $(top_srcdir)/config/asm-bsr.m4 \
+	$(top_srcdir)/config/sse2_shift_defect.m4 \
 	$(top_srcdir)/config/ax_gcc_x86_cpuid.m4 \
+	$(top_srcdir)/config/ax_gcc_x86_avx_xgetbv.m4 \
 	$(top_srcdir)/config/ax_check_compile_flag.m4 \
 	$(top_srcdir)/config/ax_ext.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -70,11 +71,11 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/src/config.h
 CONFIG_CLEAN_FILES = gmap_compress.pl gmap_uncompress.pl \
-	gmap_process.pl gmap_setup.pl gmap_build.pl gmap_reassemble.pl \
-	md_coords.pl fa_coords.pl psl_splicesites.pl psl_introns.pl \
-	psl_genes.pl gtf_splicesites.pl gtf_introns.pl gtf_genes.pl \
-	gff3_splicesites.pl gff3_introns.pl gff3_genes.pl dbsnp_iit.pl \
-	vcf_iit.pl
+	gmap_process.pl gmap_build.pl gmap_reassemble.pl md_coords.pl \
+	fa_coords.pl psl_splicesites.pl psl_introns.pl psl_genes.pl \
+	ensembl_genes.pl gtf_splicesites.pl gtf_introns.pl \
+	gtf_genes.pl gff3_splicesites.pl gff3_introns.pl gff3_genes.pl \
+	dbsnp_iit.pl gvf_iit.pl vcf_iit.pl
 am__installdirs = "$(DESTDIR)$(bindir)"
 binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS)
@@ -82,6 +83,7 @@ SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -141,7 +143,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-POPCNT_CFLAGS = @POPCNT_CFLAGS@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
@@ -210,29 +211,33 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
- at FULLDIST_FALSE@bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+ at FULLDIST_FALSE@bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
 @FULLDIST_FALSE@              psl_splicesites psl_introns psl_genes \
+ at FULLDIST_FALSE@              ensembl_genes \
 @FULLDIST_FALSE@              gtf_splicesites gtf_introns gtf_genes \
 @FULLDIST_FALSE@              gff3_splicesites gff3_introns gff3_genes \
- at FULLDIST_FALSE@              dbsnp_iit vcf_iit
+ at FULLDIST_FALSE@              dbsnp_iit gvf_iit vcf_iit
 
- at FULLDIST_TRUE@bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+ at FULLDIST_TRUE@bin_SCRIPTS = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
 @FULLDIST_TRUE@              psl_splicesites psl_introns psl_genes \
+ at FULLDIST_TRUE@              ensembl_genes \
 @FULLDIST_TRUE@              gtf_splicesites gtf_introns gtf_genes \
 @FULLDIST_TRUE@              gff3_splicesites gff3_introns gff3_genes \
- at FULLDIST_TRUE@              dbsnp_iit vcf_iit sam_merge sam_restore
+ at FULLDIST_TRUE@              dbsnp_iit gvf_iit vcf_iit sam_merge sam_restore
 
- at FULLDIST_FALSE@CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+ at FULLDIST_FALSE@CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
 @FULLDIST_FALSE@             psl_splicesites psl_introns psl_genes \
+ at FULLDIST_FALSE@             ensembl_genes \
 @FULLDIST_FALSE@             gtf_splicesites gtf_introns gtf_genes \
 @FULLDIST_FALSE@             gff3_splicesites gff3_introns gff3_genes \
- at FULLDIST_FALSE@             dbsnp_iit vcf_iit
+ at FULLDIST_FALSE@             dbsnp_iit gvf_iit vcf_iit
 
- at FULLDIST_TRUE@CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_setup gmap_build gmap_reassemble md_coords fa_coords \
+ at FULLDIST_TRUE@CLEANFILES = gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords \
 @FULLDIST_TRUE@             psl_splicesites psl_introns psl_genes \
+ at FULLDIST_TRUE@             ensembl_genes \
 @FULLDIST_TRUE@             gtf_splicesites gtf_introns gtf_genes \
 @FULLDIST_TRUE@             gff3_splicesites gff3_introns gff3_genes \
- at FULLDIST_TRUE@             dbsnp_iit vcf_iif sam_merge sam_restore
+ at FULLDIST_TRUE@             dbsnp_iit gvf_iit vcf_iit sam_merge sam_restore
 
 all: all-am
 
@@ -272,8 +277,6 @@ gmap_uncompress.pl: $(top_builddir)/config.status $(srcdir)/gmap_uncompress.pl.i
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gmap_process.pl: $(top_builddir)/config.status $(srcdir)/gmap_process.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-gmap_setup.pl: $(top_builddir)/config.status $(srcdir)/gmap_setup.pl.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gmap_build.pl: $(top_builddir)/config.status $(srcdir)/gmap_build.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gmap_reassemble.pl: $(top_builddir)/config.status $(srcdir)/gmap_reassemble.pl.in
@@ -288,6 +291,8 @@ psl_introns.pl: $(top_builddir)/config.status $(srcdir)/psl_introns.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 psl_genes.pl: $(top_builddir)/config.status $(srcdir)/psl_genes.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ensembl_genes.pl: $(top_builddir)/config.status $(srcdir)/ensembl_genes.pl.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gtf_splicesites.pl: $(top_builddir)/config.status $(srcdir)/gtf_splicesites.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gtf_introns.pl: $(top_builddir)/config.status $(srcdir)/gtf_introns.pl.in
@@ -302,6 +307,8 @@ gff3_genes.pl: $(top_builddir)/config.status $(srcdir)/gff3_genes.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 dbsnp_iit.pl: $(top_builddir)/config.status $(srcdir)/dbsnp_iit.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+gvf_iit.pl: $(top_builddir)/config.status $(srcdir)/gvf_iit.pl.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 vcf_iit.pl: $(top_builddir)/config.status $(srcdir)/vcf_iit.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binSCRIPTS: $(bin_SCRIPTS)
@@ -475,10 +482,6 @@ gmap_process: gmap_process.pl
 	cp gmap_process.pl gmap_process
 	chmod +x gmap_process
 
-gmap_setup: gmap_setup.pl
-	cp gmap_setup.pl gmap_setup
-	chmod +x gmap_setup
-
 gmap_build: gmap_build.pl
 	cp gmap_build.pl gmap_build
 	chmod +x gmap_build
@@ -511,6 +514,10 @@ psl_splices: psl_splices.pl
 	cp psl_splices.pl psl_splices
 	chmod +x psl_splices
 
+ensembl_genes: ensembl_genes.pl
+	cp ensembl_genes.pl ensembl_genes
+	chmod +x ensembl_genes
+
 gtf_splicesites: gtf_splicesites.pl
 	cp gtf_splicesites.pl gtf_splicesites
 	chmod +x gtf_splicesites
@@ -539,6 +546,10 @@ dbsnp_iit: dbsnp_iit.pl
 	cp dbsnp_iit.pl dbsnp_iit
 	chmod +x dbsnp_iit
 
+gvf_iit: gvf_iit.pl
+	cp gvf_iit.pl gvf_iit
+	chmod +x gvf_iit
+
 vcf_iit: vcf_iit.pl
 	cp vcf_iit.pl vcf_iit
 	chmod +x vcf_iit
diff --git a/util/ensembl_genes.pl.in b/util/ensembl_genes.pl.in
new file mode 100644
index 0000000..e133ceb
--- /dev/null
+++ b/util/ensembl_genes.pl.in
@@ -0,0 +1,54 @@
+#! @PERL@
+
+# For processing ensGene file.  Modified from psl_genes
+
+use Getopt::Std;
+undef $opt_P;			# Remove chr prefix
+getopts("P");
+
+
+while (defined($line = <>)) {
+    $line =~ s/\r\n/\n/;
+    chop $line;
+    @fields = split /\t/,$line;
+
+    $acc = $fields[0];
+    $acc =~ s/^>//;
+    $coords = $fields[1];
+    ($chr) = $coords =~ /(\S+):/;
+    if (defined($opt_P)) {
+	$chr =~ s/chr//;
+    }
+    #$chr =~ s/_random/U/;
+
+    $strand = $fields[3];
+    @starts = split ",",$fields[7];
+    @ends = split ",",$fields[8];
+
+    $genename = $fields[10];
+
+    $nexons = $#starts + 1;
+    if ($nexons != $fields[6]) {
+	print STDERR "Reported number of exons $fields[7] != observed $nexons: Skipping $line\n";
+
+    } elsif ($strand eq "+") {
+	printf ">$acc $chr:%u..%u\n",$starts[0] + 1,$ends[$#ends];
+	print "$genename\n";
+	for ($i = 0; $i < $nexons; $i++) {
+	    printf "%u %u\n",$starts[$i] + 1,$ends[$i];
+	}
+    } elsif ($strand eq "-") {
+	@starts = reverse @starts;
+	@ends = reverse @ends;
+	printf ">$acc $chr:%u..%u\n",$ends[0],$starts[$#starts] + 1;
+	print "$genename\n";
+	for ($i = 0; $i < $nexons; $i++) {
+	    printf "%u %u\n",$ends[$i],$starts[$i] + 1;
+	}
+    } else {
+	print STDERR "Strand is neither + nor -: Skipping $line\n";
+    }
+}
+
+exit;
+
diff --git a/util/fa_coords.pl.in b/util/fa_coords.pl.in
index fa25bec..b4bc642 100644
--- a/util/fa_coords.pl.in
+++ b/util/fa_coords.pl.in
@@ -13,14 +13,29 @@ undef($opt_E);			# Interpret argument as a command
 undef($opt_g);			# gunzip each file first
 #undef($opt_S);			# Do not order chromosomes
 undef($opt_c);			# Circular chromosomes
+undef($opt_n);			# File with substitute chromosome names
+undef($opt_f);			# File with input FASTA source filenames
 use Getopt::Std;
-getopts("o:CEgc:");
+getopts("o:CEgc:n:f:");
 
-# Usage: fa_coords [-o <output>] [-C] [-E] [-g] <fastafiles or command>
+# Usage: fa_coords [-o <output>] [-C] [-E] [-g] [-n <namefile>] [-f <sourcefiles>]
 
 if (defined($circular = $opt_c)) {
-    foreach $chr (split ",",$circular) {
-	$circularp{$chr} = 1;
+    if (-e $circular) {
+	print STDERR "Reading circular chromosomes from the file $circular...";
+	$ncircular = 0;
+	$FP = new IO::File($circular);
+	while (defined($line = <$FP>)) {
+	    ($chr) = $line =~ /(\S+)/;
+	    $circularp{$chr} = 1;
+	    $ncircular++;
+	}
+	close($FP);
+	print STDERR "read $circular chromosomes\n";
+    } else {
+	foreach $chr (split ",",$circular) {
+	    $circularp{$chr} = 1;
+	}
     }
 }
 
@@ -28,6 +43,22 @@ if (!defined($outfile = $opt_o)) {
     $outfile = "coords.txt";
 }
 
+if (defined($opt_n)) {
+    $FP = new IO::File($opt_n) or die "Cannot open file $opt_n";
+    print STDERR "Reading substitute chromosome names from $opt_n\n";
+    while (defined($line = <$FP>)) {
+	chop $line;
+	($oldname,$newname) = split /\t/,$line;
+	if (defined($oldname) && defined($newname) && $newname =~ /\S/) {
+	    $newname{$oldname} = $newname;
+	}
+    }
+    close($FP);
+}
+    
+
+
+
 $flags = "";
 $flags .= "-o $outfile";
 
@@ -35,13 +66,28 @@ $flags .= "-o $outfile";
 #print STDERR "  $opt_l nt (but processing all of them, of course).\n";
 #print STDERR "  You can change this value with the -l flag to fa_coords.\n";
 
-if ($#ARGV < 0) {
+if (defined($opt_f)) {
+    # Source files given in a file
+    @sourcefiles = ();
+    $SOURCES = new IO::File($opt_f) or die "Cannot open file $opt_f";
+    while (defined($line = <$SOURCES>)) {
+	chop $line;
+	push @sourcefiles,$line;
+    }
+    close($SOURCES);
+    ($output,$skipped) = parse_fa_files(\@sourcefiles);
+
+} elsif ($#ARGV < 0) {
+    # FASTA is piped via stdin
     @streams = ();
     push @streams,"<&STDIN";
     ($output,$skipped) = parse_fa_files(\@streams);
+
 } else {
+    # Source files given on command line
     ($output,$skipped) = parse_fa_files(\@ARGV);
 }
+
 if ($#{$output} < 0) {
     printf STDOUT "Error: No contigs were read in.\n";
     exit(9);
@@ -197,11 +243,14 @@ sub parse_fa_files {
 			    $shortp = 0;
 			}
 			if ($chronlyp == 1) {
-			    printf STDOUT ("  Contig %s: concatenated at chromosome end: %s:%d..",
-					   $contig,$chr,$chrpos{$chr});
+			    printf STDOUT ("  Contig %s: concatenated at chromosome end: ",$contig);
 			} else {
-			    printf STDOUT ("  Contig %s: parsed chromosomal coordinates: %s:%d..",
-					   $contig,$chr,$chrpos{$chr});
+			    printf STDOUT ("  Contig %s: parsed chromosomal coordinates: ",$contig);
+			}
+			if (defined($newname{$chr})) {
+			    printf STDOUT ("%s:%d..",$newname{$chr},$chrpos{$chr});
+			} else {
+			    printf STDOUT ("%s:%d..",$chr,$chrpos{$chr});
 			}
 			printf STDOUT ("%d (length = %d nt)",$chrpos{$chr}+$seglength-1,$seglength);
 			if (defined($orientation) && $orientation eq "rev") {
@@ -220,10 +269,15 @@ sub parse_fa_files {
 			}
 		    }
 
+		    if (defined($newname{$chr})) {
+			$string = sprintf("%s\t%s:",$contig,$newname{$chr});
+		    } else {
+			$string = sprintf("%s\t%s:",$contig,$chr);
+		    }
 		    if (defined($orientation) && $orientation eq "rev") {
-			$string = sprintf("%s\t%s:%d..%d",$contig,$chr,$chrpos{$chr}+$seglength-1,$chrpos{$chr});
+			$string .= sprintf("%d..%d",$chrpos{$chr}+$seglength-1,$chrpos{$chr});
 		    } else {
-			$string = sprintf("%s\t%s:%d..%d",$contig,$chr,$chrpos{$chr},$chrpos{$chr}+$seglength-1);
+			$string .= sprintf("%d..%d",$chrpos{$chr},$chrpos{$chr}+$seglength-1);
 		    }
 		    if (defined($circularp{$chr})) {
 			$string .= "\tcircular";
@@ -360,11 +414,14 @@ sub parse_fa_files {
 		    $shortp = 0;
 		}
 		if ($chronlyp == 1) {
-		    printf STDOUT ("  Contig %s: concatenated at chromosome end: %s:%d..",
-				   $contig,$chr,$chrpos{$chr});
+		    printf STDOUT ("  Contig %s: concatenated at chromosome end: ",$contig);
+		} else {
+		    printf STDOUT ("  Contig %s: parsed chromosomal coordinates: ",$contig);
+		}
+		if (defined($newname{$chr})) {
+		    printf STDOUT ("%s:%d..",$newname{$chr},$chrpos{$chr});
 		} else {
-		    printf STDOUT ("  Contig %s: parsed chromosomal coordinates: %s:%d..",
-				   $contig,$chr,$chrpos{$chr});
+		    printf STDOUT ("%s:%d..",$chr,$chrpos{$chr});
 		}
 		printf STDOUT ("%d (length = %d nt)",$chrpos{$chr}+$seglength-1,$seglength);
 		if (defined($orientation) && $orientation eq "rev") {
@@ -384,10 +441,15 @@ sub parse_fa_files {
 		}
 	    }
 
+	    if (defined($newname{$chr})) {
+		$string = sprintf("%s\t%s:",$contig,$newname{$chr});
+	    } else {
+		$string = sprintf("%s\t%s:",$contig,$chr);
+	    }
 	    if (defined($orientation) && $orientation eq "rev") {
-		$string = sprintf("%s\t%s:%d..%d",$contig,$chr,$chrpos{$chr}+$seglength-1,$chrpos{$chr});
+		$string .= sprintf("%d..%d",$chrpos{$chr}+$seglength-1,$chrpos{$chr});
 	    } else {
-		$string = sprintf("%s\t%s:%d..%d",$contig,$chr,$chrpos{$chr},$chrpos{$chr}+$seglength-1);
+		$string .= sprintf("%d..%d",$chrpos{$chr},$chrpos{$chr}+$seglength-1);
 	    }
 	    if (defined($circularp{$chr})) {
 		$string .= "\tcircular";
diff --git a/util/gmap_build.pl.in b/util/gmap_build.pl.in
index caf8a99..c7adcf7 100644
--- a/util/gmap_build.pl.in
+++ b/util/gmap_build.pl.in
@@ -1,11 +1,12 @@
 #! @PERL@
-# $Id: gmap_build.pl.in 87978 2013-03-05 17:56:07Z twu $
+# $Id: gmap_build.pl.in 138523 2014-06-09 17:09:03Z twu $
 
 use warnings;	
 
-$gmapdb = "@GMAPDB@";
-$package_version = "@PACKAGE_VERSION@";
+my $gmapdb = "@GMAPDB@";
+my $package_version = "@PACKAGE_VERSION@";
 
+use IO::File;
 use File::Copy;	
 use Getopt::Long;
 
@@ -13,26 +14,31 @@ Getopt::Long::Configure(qw(no_auto_abbrev no_ignore_case_always));
 
 
 # Default values
-$bindir = "@BINDIR@";
-$builddir = ".";
-$sampling = 3;
-$sleeptime = 2;
+my $bindir = "@BINDIR@";
+my $sampling = 3;
+my $sleeptime = 2;
 
 GetOptions(
+    'no-sarray' => \$skip_sarray_p, # skip suffix array
+
     'B=s' => \$bindir,		# binary directory
     'T=s' => \$builddir,	# temporary build directory
 
     'D|dir=s' => \$destdir,	# destination directory
     'd|db=s' => \$dbname,	# genome name
+    'n|names=s' => \$chrnamefile,   # substitute chromosomal names
 
     'M|mdfile=s' => \$mdfile,	# NCBI MD file
+    'C|contigs-are-mapped' => \$contigs_mapped_p, # Each contig contains a chromosome tag in the FASTA header
 
+    'z|compression=s' => \$compression_types, # compression types
     'k|kmer=s' => \$kmersize, # k-mer size for genomic index (allowed: 16 or less)
-    'b|basesize=s' => \$basesize, # offsetscomp basesize
     'q=s' => \$sampling,	   # sampling interval for genome (default: 3)
 
     's|sort=s' => \$sorting,	# Sorting
     'g|gunzip' => \$gunzipp,	# gunzip files
+    'E|fasta-pipe=s' => \$fasta_pipe,		  # Pipe for providing FASTA files
+
     'w=s' => \$sleeptime, # waits (sleeps) this many seconds between steps.  Useful if there is a delay in the filesystem.
 
     'c|circular=s' => \$circular,  # Circular chromosomes
@@ -41,52 +47,61 @@ GetOptions(
     );
 
 
+if (defined($builddir)) {
+    print STDERR "Note: the -T flag is no longer necessary, since gmap_build now builds directly in the destination directory\n";
+}
+
+if (defined($compression_types)) {
+    $compression_flag = "-z $compression_types";
+} else {
+    $compression_flag = "";
+}
 
 if (!defined($kmersize)) {
-    print STDERR "-k flag not specified, so building with default 15-mers and base size 12-mers\n";
+    print STDERR "-k flag not specified, so building with default 15-mers\n";
     $kmersize = 15;
-    $basesize = 12;
-} elsif (!defined($basesize)) {
-    if ($kmersize == 15) {
-	print STDERR "-k flag specified as 15, but not -b, so building with basesize == 12\n";
-	$basesize = 12;
-    } else {
-	print STDERR "-k flag specified (not as 15), but not -b, so building with basesize == kmer size\n";
-	$basesize = $kmersize;
-    }
 }
 
-
 if (!defined($dbname)) {
-  print_usage();
-  die "Must specify genome database name with -d flag.";
+    print_usage();
+    die "Must specify genome database name with -d flag.";
 } elsif ($dbname =~ /(\S+)\/(\S+)/) {
-  $dbname = $2;
-  if (defined($destdir) && $destdir =~ /\S/) {
-    $destdir = $destdir . "/" . $1;
-  } else {
-    $destdir = $1;
-  }
+    $dbdir = $1;
+    $dbname = $2;
+    if (defined($destdir) && $destdir =~ /\S/) {
+	$destdir = $destdir . "/" . $dbname;
+    } else {
+	$destdir = $dbdir;
+    }
 }
 
 $dbname =~ s/\/$//;	# In case user gives -d argument with trailing slash
 
 if (!defined($destdir) || $destdir !~ /\S/) {
+    print STDERR "Destination directory not defined with -D flag, so writing to $gmapdb\n";
     $destdir = $gmapdb;
 }
 
 if (defined($sorting)) {
-    $chr_order_flag = "-s $sorting";
+    if ($sorting ne "names") {
+	$chr_order_flag = "-s $sorting";
+    } elsif (!defined($chrnamefile)) {
+	die "For --sort=names option, must also provide a filename to --names";
+    } else {
+	$chr_order_flag = "-s $sorting -n $chrnamefile";
+    }
 } else {
     # Default is to order genomes
     print STDERR "Sorting chromosomes in chrom order.  To turn off or sort other ways, use the -s flag.\n";
     $chr_order_flag = "";
 }
 
-if (defined($gunzipp)) {
-    $gunzip_flag = "-g";
-} else {
+if (!defined($gunzipp)) {
     $gunzip_flag = "";
+} elsif (defined($fasta_pipe)) {
+    die "Cannot use the -E (--fasta-pipe) flag with the -g (--gunzip) flag";
+} else {
+    $gunzip_flag = "-g";
 }
 
 if (defined($circular)) {
@@ -101,38 +116,120 @@ if (defined($nmessages)) {
     $nmessages_flag = "";
 }
 
+if (defined($skip_sarray_p)) {
+    $sarrayp = 0;
+} else {
+    $sarrayp = 1;
+}
 
+if (defined($contigs_mapped_p)) {
+    $contigs_mapped_flag = "-C";
+} else {
+    $contigs_mapped_flag = "";
+}
+
+
+#my @quoted = ();
+#foreach $fasta (@ARGV) {
+#    push @quoted,"\"$fasta\"";
+#}
+#my $genome_fasta = join(" ", at quoted);
 
- at quoted = ();
+my $coordsfile = "$destdir/$dbname.coords";
+my $fasta_sources = "$destdir/$dbname.sources";
+$FP = new IO::File(">$fasta_sources") or die "Could not create $fasta_sources";
 foreach $fasta (@ARGV) {
-    push @quoted,"\"$fasta\"";
+    print $FP $fasta . "\n";
 }
-$genome_fasta = join(" ", at quoted);
-
+close($FP);
 
 
 #####################################################################################
 
-create_coords();
-create_genome_version();
-make_contig();
-compress_genome();
-create_index_offsets();
-create_index_positions();
-install_db();
+$dbdir = create_db($destdir,$dbname);
+
+create_genome_version($dbdir,$dbname);
+
+create_coords($mdfile,$fasta_pipe,$gunzip_flag,$circular_flag,$contigs_mapped_flag,$chrnamefile,
+	      $bindir,$coordsfile,$fasta_sources);
+if (!(-s "$coordsfile")) {
+    die "ERROR: $coordsfile not found";
+} else {
+    $gmap_process_pipe = make_gmap_process_pipe($fasta_pipe,$gunzip_flag,$bindir,$coordsfile,$fasta_sources);
+}
+
+make_contig($nmessages_flag,$chr_order_flag,
+	    $bindir,$dbdir,$dbname,$gmap_process_pipe);
+
+$genomecompfile = compress_genome($nmessages_flag,$bindir,$dbdir,$dbname,$gmap_process_pipe);
+
+unshuffle_genome($bindir,$dbdir,$dbname,$genomecompfile);
+
+$index_cmd = "$bindir/gmapindex -k $kmersize -q $sampling $nmessages_flag -d $dbname -F $dbdir -D $dbdir";
+
+if (count_index_offsets($index_cmd,$genomecompfile) == 1) {
+    $index_cmd .= " -H";
+}
+
+create_index_offsets($index_cmd,$compression_flag,$genomecompfile);
+
+create_index_positions($index_cmd,$genomecompfile);
+
+if ($sarrayp == 1) {
+    make_enhanced_suffix_array($bindir,$dbdir,$dbname);
+}
+
+# install_db($sarrayp);
+system("rm -f \"$fasta_sources\"");
+system("rm -f \"$coordsfile\"");
 
 exit;
 
 
 #####################################################################################
 
+sub create_db {
+    my ($destdir, $dbname) = @_;
+
+    print STDERR "Creating files in directory $destdir/$dbname\n";
+    system("mkdir -p \"$destdir/$dbname\"");
+    system("mkdir -p \"$destdir/$dbname/$dbname.maps\"");
+    system("chmod 755 \"$destdir/$dbname/$dbname.maps\"");
+
+    return "$destdir/$dbname";
+}
+
+
+sub create_genome_version {
+    my ($dbdir, $dbname) = @_;
+
+    open GENOMEVERSIONFILE, ">$dbdir/$dbname.version" or die $!;
+    print GENOMEVERSIONFILE "$dbname\n";
+    close GENOMEVERSIONFILE or die $!;
+    sleep($sleeptime);
+    return;
+}
 
 sub create_coords {
+    my ($mdfile, $fasta_pipe, $gunzip_flag, $circular_flag, $contigs_mapped_flag, $chrnamefile,
+	$bindir, $coordsfile, $fasta_sources) = @_;
+    my ($cmd, $rc);
+
     if (defined($mdfile)) {
 	# MD file cannot specify that a chromosome is circular
-	$cmd = "$bindir/md_coords -o $builddir/$dbname.coords $mdfile";
+	$cmd = "$bindir/md_coords -o $coordsfile $mdfile";
     } else {
-	$cmd = "$bindir/fa_coords $gunzip_flag $circular_flag -o $builddir/$dbname.coords $genome_fasta";
+	if (defined($fasta_pipe)) {
+	    $cmd = "$fasta_pipe | $bindir/fa_coords $circular_flag $contigs_mapped_flag -o $coordsfile";
+	} else {
+	    $cmd = "$bindir/fa_coords $gunzip_flag $circular_flag $contigs_mapped_flag -o $coordsfile";
+	}
+	if (defined($chrnamefile)) {
+	    $cmd .= " -n $chrnamefile";
+	}
+	if (!defined($fasta_pipe)) {
+	    $cmd .= " -f $fasta_sources";
+	}
     }
     print STDERR "Running $cmd\n";
     if (($rc = system($cmd)) != 0) {
@@ -142,25 +239,22 @@ sub create_coords {
     return;
 }
 
-sub check_coords_exists {
-# file exists, and is not empty
-    unless (-s "$builddir/$dbname.coords") {
-	die "ERROR: $builddir/$dbname.coords not found.\n";
-    }
-    return;
-}
+sub make_gmap_process_pipe {
+    my ($fasta_pipe, $gunzip_flag, $bindir, $coordsfile, $fasta_sources) = @_;
 
-sub create_genome_version {
-    open GENOMEVERSIONFILE, ">$builddir/$dbname.version" or die $!;
-    print GENOMEVERSIONFILE "$dbname\n";
-    close GENOMEVERSIONFILE or die $!;
-    sleep($sleeptime);
-    return;
+    if (defined($fasta_pipe)) {
+	return "$fasta_pipe | $bindir/gmap_process -c $coordsfile";
+    } else {
+	return "$bindir/gmap_process $gunzip_flag -c $coordsfile -f $fasta_sources";
+    }
 }
 
 sub make_contig {
-    check_coords_exists();
-    $cmd = "$bindir/gmap_process $gunzip_flag -c $builddir/$dbname.coords $genome_fasta | $bindir/gmapindex $nmessages_flag -d $dbname -D $builddir -A $chr_order_flag";
+    my ($nmessages_flag, $chr_order_flag,
+	$bindir, $dbdir, $dbname, $gmap_process_pipe) = @_;
+    my ($cmd, $rc);
+
+    $cmd = "$gmap_process_pipe | $bindir/gmapindex $nmessages_flag -d $dbname -D $dbdir -A $chr_order_flag";
     print STDERR "Running $cmd\n";
     if (($rc = system($cmd)) != 0) {
 	die "$cmd failed with return code $rc";
@@ -170,20 +264,24 @@ sub make_contig {
 }
 
 sub compress_genome {
-    $cmd = "$bindir/gmap_process $gunzip_flag -c $builddir/$dbname.coords $genome_fasta | $bindir/gmapindex $nmessages_flag -d $dbname -F $builddir -D $builddir -G";
+    my ($nmessages_flag, $bindir, $dbdir, $dbname, $gmap_process_pipe) = @_;
+    my $genomecompfile = "$dbdir/$dbname.genomecomp";
+    my ($cmd, $rc);
+
+    $cmd = "$gmap_process_pipe | $bindir/gmapindex $nmessages_flag -d $dbname -F $dbdir -D $dbdir -G";
     print STDERR "Running $cmd\n";
     if (($rc = system($cmd)) != 0) {
 	die "$cmd failed with return code $rc";
     }
     sleep($sleeptime);
-    return;
+    return $genomecompfile;
 }
 
-sub full_ASCII_genome {
-    check_coords_exists();
-    make_contig();
-	
-    $cmd = "$bindir/gmap_process $gunzip_flag -c $builddir/$dbname.coords $genome_fasta | $bindir/gmapindex $nmessages_flag -d $dbname -F $builddir -D $builddir -l -G";
+sub unshuffle_genome {
+    my ($bindir, $dbdir, $dbname, $genomecompfile) = @_;
+    my ($cmd, $rc);
+
+    $cmd = "cat $genomecompfile | $bindir/gmapindex -d $dbname -U > $dbdir/$dbname.genomebits128";
     print STDERR "Running $cmd\n";
     if (($rc = system($cmd)) != 0) {
 	die "$cmd failed with return code $rc";
@@ -192,8 +290,44 @@ sub full_ASCII_genome {
     return;
 }
 
+# No longer supported
+#sub full_ASCII_genome {
+#    make_contig();
+#	
+#    $cmd = "$bindir/gmap_process $gunzip_flag -c $dbdir/$dbname.coords $genome_fasta | $bindir/gmapindex $nmessages_flag -d $dbname -F $dbdir -D $dbdir -l -G";
+#    print STDERR "Running $cmd\n";
+#    if (($rc = system($cmd)) != 0) {
+#	die "$cmd failed with return code $rc";
+#    }
+#    sleep($sleeptime);
+#    return;
+#}
+
+sub count_index_offsets {
+    my ($index_cmd, $genomecompfile) = @_;
+    my $huge_genome_p;
+    my ($cmd, $noffsets);
+    
+    $cmd = "cat $genomecompfile | $index_cmd -N";
+    print STDERR "Running $cmd\n";
+    $noffsets = `$cmd`;
+    chop $noffsets;
+    if ($noffsets <= 4294967295) {
+	print STDERR "Number of offsets: $noffsets => pages file not required\n";
+	$huge_genome_p = 0;
+    } else {
+	print STDERR "Number of offsets: $noffsets => pages file required\n";
+	$huge_genome_p = 1;
+    }
+    sleep($sleeptime);
+    return $huge_genome_p;
+}
+
 sub create_index_offsets {
-    $cmd = "cat $builddir/$dbname.genomecomp | $bindir/gmapindex -b $basesize -k $kmersize -q $sampling $nmessages_flag -d $dbname -F $builddir -D $builddir -O";
+    my ($index_cmd, $compression_flag, $genomecompfile) = @_;
+    my ($cmd, $rc);
+
+    $cmd = "cat $genomecompfile | $index_cmd -O $compression_flag";
     print STDERR "Running $cmd\n";
     if (($rc = system($cmd)) != 0) {
 	die "$cmd failed with return code $rc";
@@ -203,7 +337,10 @@ sub create_index_offsets {
 }
 
 sub create_index_positions {
-    $cmd = "cat $builddir/$dbname.genomecomp | $bindir/gmapindex -b $basesize -k $kmersize -q $sampling $nmessages_flag -d $dbname -F $builddir -D $builddir -P";
+    my ($index_cmd, $genomecompfile) = @_;
+    my ($cmd, $rc);
+
+    $cmd = "cat $genomecompfile | $index_cmd -P";
     print STDERR "Running $cmd\n";
     if (($rc = system($cmd)) != 0) {
 	die "$cmd failed with return code $rc";
@@ -212,37 +349,30 @@ sub create_index_positions {
     return;
 }
 
-sub install_db {
-    my @suffixes = (
-	"chromosome", 
-	"chromosome.iit", 
-	"chrsubset", 
-	"contig", 
-	"contig.iit", 
-	"genomecomp", 
-	"version");
-	
-    if ($kmersize > $basesize) {
-	push @suffixes,sprintf "ref%02d%02d%dgammaptrs",$basesize,$kmersize,$sampling;
+sub make_enhanced_suffix_array {
+    my ($bindir, $dbdir, $dbname) = @_;
+    my ($cmd, $rc);
+
+    # Suffix array
+    $cmd = "$bindir/gmapindex -d $dbname -F $dbdir -D $dbdir -S";
+    print STDERR "Running $cmd\n";
+    if (($rc = system($cmd)) != 0) {
+	die "$cmd failed with return code $rc";
     }
-    push @suffixes,sprintf "ref%02d%02d%doffsetscomp",$basesize,$kmersize,$sampling;
-    push @suffixes,sprintf "ref%02d%dpositions",$kmersize,$sampling;
+    sleep($sleeptime);
 
-    print STDERR "Copying files to directory $destdir/$dbname\n";
-    system("mkdir -p \"$destdir/$dbname\"");
-    system("mkdir -p \"$destdir/$dbname/$dbname.maps\"");
-    system("chmod 755 \"$destdir/$dbname/$dbname.maps\"");
-    foreach $suffix (@suffixes) {
-	system("mv \"$builddir/$dbname.$suffix\" \"$destdir/$dbname/$dbname.$suffix\"");
-	system("chmod 644 \"$destdir/$dbname/$dbname.$suffix\"");
+    # LCP and child arrays
+    $cmd = "$bindir/gmapindex -d $dbname -F $dbdir -D $dbdir -L";
+    print STDERR "Running $cmd\n";
+    if (($rc = system($cmd)) != 0) {
+	die "$cmd failed with return code $rc";
     }
+    sleep($sleeptime);
 
-    system("rm -f \"$builddir/$dbname.coords\"");
     return;
 }
 
 
-
 sub print_usage {
   print <<TEXT1;
 
@@ -254,26 +384,53 @@ A simplified alternative to using the program gmap_setup, which creates a Makefi
 Usage: gmap_build [options...] -d <genomename> <fasta_files>
 
 Options:
-    -D, --dir=STRING        Destination directory for installation (defaults to gmapdb directory specified at configure time)
-    -d, --db=STRING         Genome name
-    -T STRING               Temporary build directory
-
-    -M, --mdflag=STRING     Use MD file from NCBI for mapping contigs to chromosomal coordinates
-
-    -k, --kmer=INT          k-mer value for genomic index (allowed: 16 or less, default is 15)
-    -b, --basesize=INT      Basesize for offsetscomp (if kmer chosen and not 15, default is kmer; else default is 12)
-    -q INT                  sampling interval for genomoe (allowed: 1-3, default 3)
-    -s, --sort=STRING       Sort chromosomes using given method:
-			      none - use chromosomes as found in FASTA file(s)
-			      alpha - sort chromosomes alphabetically (chr10 before chr 1)
-			      numeric-alpha - chr1, chr1U, chr2, chrM, chrU, chrX, chrY
-			      chrom - chr1, chr2, chrM, chrX, chrY, chr1U, chrU
-    -g, --gunzip            Files are gzipped, so need to gunzip each file first
-    -w INT                  Wait (sleep) this many seconds after each step (default 2)
-
-    -c, --circular=STRING   Circular chromosomes (separated by a comma)
-
-    -e, --nmessages=INT     Maximum number of messages (warnings, contig reports) to report (default 50)
+    -D, --dir=STRING          Destination directory for installation (defaults to gmapdb directory specified at configure time)
+    -d, --db=STRING           Genome name
+
+    -n, --names=STRING        Substitute names for chromosomes, provided in a file.  The file should have one line
+                                for each chromosome name to be changed, with the original FASTA name in column 1 and
+                                the desired chromosome name in column 2.  This provides an easy way to change the
+                                names of chromosomes, for example, to add or remove the "chr" prefix.  Column 2 may
+                                be blank, which indicates no name change.  This file can also be combined with
+                                --sort=names to provide a particular order for the chromosomes in the genome index.
+
+    -M, --mdflag=STRING       Use MD file from NCBI for mapping contigs to chromosomal coordinates
+    -C, --contigs-are-mapped  Find a chromosomal region in each FASTA header line.  Useful for contigs that have been mapped
+                                to chromosomal coordinates.  Ignored if the --mdflag is provided.
+
+    -z, --compression=STRING  Use given compression types (separated by commas; default is bitpack64)
+                                bitpack64 - optimized for modern computers with SIMD instructions (recommended)
+                                all - create all available compression types, currently bitpack64
+                                none - do not compress offset files (I believe this is no longer supported)
+
+    -k, --kmer=INT            k-mer value for genomic index (allowed: 15 or less, default is 15)
+    -q INT                    sampling interval for genomoe (allowed: 1-3, default 3)
+
+    -s, --sort=STRING         Sort chromosomes using given method:
+			        none - use chromosomes as found in FASTA file(s)
+			        alpha - sort chromosomes alphabetically (chr10 before chr 1)
+			        numeric-alpha - chr1, chr1U, chr2, chrM, chrU, chrX, chrY
+			        chrom - chr1, chr2, chrM, chrX, chrY, chr1U, chrU
+				names - sort chromosomes based on file provided to --names flag
+
+    -g, --gunzip              Files are gzipped, so need to gunzip each file first
+    -E, --fasta-pipe=STRING   Interpret argument as a command, instead of a list of FASTA files
+    -w INT                    Wait (sleep) this many seconds after each step (default 2)
+
+    -c, --circular=STRING     Circular chromosomes (either a list of chromosomes separated by a comma, or
+                                a filename containing circular chromosomes, one per line).  If you use the
+                                --names feature, then you should use the original name of the chromosome,
+                                not the substitute name, for this option.                                                                
+
+    -e, --nmessages=INT       Maximum number of messages (warnings, contig reports) to report (default 50)
+
+    --no-sarray               Skip build of suffix array
+
+Obsolete options:
+    -T STRING                 Temporary build directory (may need to specify if you run out of space in your current directory)
+                                This is no longer necessary, since gmap_build now builds directly in the destination
+                                (or -D) directory.
+
 TEXT1
   return;
 }
diff --git a/util/gmap_process.pl.in b/util/gmap_process.pl.in
index 92fcfd3..10bace0 100644
--- a/util/gmap_process.pl.in
+++ b/util/gmap_process.pl.in
@@ -7,7 +7,8 @@ use IO::File;
 use Getopt::Std;
 undef($opt_c);			# coord file
 undef($opt_g);			# gunzip each file
-getopts("c:g");
+undef($opt_f);			# File with input FASTA source filenames
+getopts("c:gf:");
 
 if (!defined($coord_file = $opt_c)) {
   if (-e "coords.txt") {
@@ -19,11 +20,25 @@ if (!defined($coord_file = $opt_c)) {
 
 read_coords($coord_file);
 
-if ($#ARGV < 0) {
+if (defined($opt_f)) {
+    # Source files given in a file
+    @sourcefiles = ();
+    $SOURCES = new IO::File($opt_f) or die "Cannot open file $opt_f";
+    while (defined($line = <$SOURCES>)) {
+	chop $line;
+	push @sourcefiles,$line;
+    }
+    close($SOURCES);
+    process_fasta(\@sourcefiles);
+
+} elsif ($#ARGV < 0) {
+    # FASTA is piped via stdin
     @streams = ();
     push @streams,"<&STDIN";
     process_fasta(\@streams);
+
 } else {
+    # Source files given on command line
     process_fasta(\@ARGV);
 }
 
diff --git a/util/gmap_setup.pl.in b/util/gmap_setup.pl.in
deleted file mode 100755
index 846bf17..0000000
--- a/util/gmap_setup.pl.in
+++ /dev/null
@@ -1,459 +0,0 @@
-#! @PERL@
-# $Id: gmap_setup.pl.in,v 1.50 2010-07-21 22:01:03 twu Exp $
-
-use warnings;
-
-$gmapdb = "@GMAPDB@";
-$bindir = "@BINDIR@";
-$package_version = "@PACKAGE_VERSION@";
-
-use IO::File;
-use Getopt::Std;
-
-# Usage: gmap_setup -d <db> [-D <destdir>] [-k <kmersize>] [-o <Makefile>] [-M <.md file>] [-C] [-W] [-E] [-q interval] <fasta_files or command>
-#
-
-undef($opt_d);			# genome name
-undef($opt_D);			# destination directory
-$opt_b = 12;			# offsetscomp basesize
-$opt_k = 15;			# k-mer size for GMAP genomic index (currently allowed: 16 or less)
-undef($opt_o);			# name of output file (default is "Makefile.<genome>")
-
-undef($opt_M);			# use seq_contig.md file (provide as argument)
-undef($opt_s);			# Chromosome sort order
-undef($opt_C);			# Tries to find a chromosome tag in each FASTA header (also turns ons chromosome sorting)
-
-undef($opt_W);			# write directly to file, not RAM
-undef($opt_E);			# interpret argument as a command
-
-undef($opt_B);			# bindir (needed for "make check")
-
-$opt_q = 3;			# GMAP interval
-
-#undef($opt_9);			# debug
-
-getopts("d:D:b:k:K:q:Q:o:M:s:CWEB:");
-
-#if (defined($opt_S)) {
-#    print STDERR "The -S flag is no longer available.  It is now the default behavior, so you may\n";
-#    print STDERR "  simply call gmap_setup without it.  The other ways to call gmap_setup are with\n";
-#    print STDERR "  the -C flag (to try to parse the chromosomal coordinates from each FASTA header)\n";
-#    print STDERR "  or with the -M flag (to specify an NCBI .md file that contains chromosomal\n";
-#    print STDERR "  coordinates.\n";
-#    die;
-#}
-
-if (!defined($genome_name = $opt_d)) {
-  print_usage();
-  die "Must specify genome database name with -d flag.";
-} elsif ($opt_d =~ /(\S+)\/(\S+)/) {
-  $genome_name = $2;
-  if (defined($opt_D)) {
-    $opt_D = $opt_D . "/" . $1;
-  } else {
-    $opt_D = $1;
-  }
-}
-
-$genome_name =~ s/\/$//;	# In case user gives -d argument with trailing slash
-
-if (!defined($outputfile = $opt_o)) {
-  $outputfile = "Makefile.$genome_name";
-}
-
-$gmap_basesize = $opt_b;
-
-$gmap_kmersize = $opt_k;
-$gmap_interval = $opt_q;
-
-
-$MAKEFILE = new IO::File(">$outputfile") or die "Cannot write to file $outputfile";
-
-print $MAKEFILE "# Makefile for creating genome $genome_name for use by GMAP.\n";
-print $MAKEFILE "# Created by gmap_setup, but may be edited as needed\n\n";
-#print $MAKEFILE ":SILENT: \n"; -- Doesn't work
-print $MAKEFILE "\n";
-
-# Remove unexpected suffix behavior
-print $MAKEFILE ".SUFFIXES:\n";
-print $MAKEFILE ".SUFFIXES: .txt\n\n";
-
-print $MAKEFILE "GENOME = $genome_name\n";
-
-if (!defined($destination = $opt_D)) {
-    $destination = $gmapdb . "/" . $genome_name;
-}
-$destination =~ s/\/\//\//g;	# Remove double slashes
-print $MAKEFILE "DESTINATION = $destination\n";
-print $MAKEFILE "\n";
-
-
-if (defined($opt_s)) {
-    print $MAKEFILE "CHR_ORDER_FLAG = -s $opt_s\n";
-} else {
-    print $MAKEFILE "CHR_ORDER_FLAG = \n";
-}
-
-
-if (defined($opt_E)) {
-  $incommand = $ARGV[0];
-} else {
-  #$incommand = "cat \$(FASTA)";
-  print $MAKEFILE "FASTA = " . join(" \\\n         ", at ARGV) . "\n";
-}
-
-print $MAKEFILE "COORDS = coords.\$(GENOME)\n";
-
-if (defined($opt_B)) {
-  print $MAKEFILE "FA_COORDS = $opt_B/fa_coords\n";
-  print $MAKEFILE "MD_COORDS = $opt_B/md_coords\n";
-  print $MAKEFILE "GMAP_PROCESS = $opt_B/gmap_process\n";
-  print $MAKEFILE "GMAPINDEX = $opt_B/gmapindex\n";
-} else {
-  print $MAKEFILE "FA_COORDS = $bindir/fa_coords\n";
-  print $MAKEFILE "MD_COORDS = $bindir/md_coords\n";
-  print $MAKEFILE "GMAP_PROCESS = $bindir/gmap_process\n";
-  print $MAKEFILE "GMAPINDEX = $bindir/gmapindex\n";
-}
-print $MAKEFILE "\n";
-
-print $MAKEFILE "# If WRITEFILE is '-W', then gmapindex will write directly in the file, not in RAM\n";
-if (defined($opt_W)) {
-  print $MAKEFILE "WRITEFILE = -W\n"
-} else {
-  print $MAKEFILE "WRITEFILE = \n";
-}
-print $MAKEFILE "\n";
-
-# Now hardcoded
-#print $MAKEFILE "GMAPINDEX_INTERVAL = $opt_q # Change this only for special situations.  Intervals < 3\n";
-#print $MAKEFILE "                       # may result in large index files that cannot be read on some machines\n";
-#print $MAKEFILE "                       # If you set interval to be 3 (default) or 1, the file can also be used for GSNAP\n";
-
-# Used only for deleting
-print $MAKEFILE "FILE_ENDINGS = chromosome chromosome.iit chrsubset contig contig.iit \\\n";
-print $MAKEFILE "               genome genomecomp genomealt version \\\n";
-print $MAKEFILE "               ";
-print $MAKEFILE "id*offsetscomp id*positions ref*gammaptrs ref*offsetscomp ref*positions snp*gammaptrs snp*offsetscomp snp*positions \\\n";
-print $MAKEFILE "               ";
-print $MAKEFILE "pf*gammaptrs pf*offsetscomp pf*positions pr*gammaptrs pr*offsetscomp pr*positions\n";
-
-print $MAKEFILE "\n";
-
-
-########################################################################
-#   General commands
-########################################################################
-
-print $MAKEFILE "install:\n";
-print $MAKEFILE "\tmkdir -p \$(DESTINATION)\n";
-if (!defined($opt_D) || $opt_D ne ".") {
-    print $MAKEFILE "\tfor s in \$(FILE_ENDINGS); do \\\n";
-    print $MAKEFILE "\tif test -r \$(GENOME).\$\$s; then \\\n";
-    print $MAKEFILE "\tmv -f \$(GENOME).\$\$s \$(DESTINATION); \\\n";
-    print $MAKEFILE "\tfi \\\n";
-    print $MAKEFILE "\tdone\n";
-}
-print $MAKEFILE "\tchmod 644 \$(DESTINATION)/\$(GENOME).*\n";
-print $MAKEFILE "\tmkdir -p \$(DESTINATION)/\$(GENOME).maps\n";
-print $MAKEFILE "\tchmod 755 \$(DESTINATION)/\$(GENOME).maps\n";
-print $MAKEFILE "\n";
-
-printf $MAKEFILE "gmapdb: checkcoords \$(GENOME).version \$(GENOME).genomecomp \$(GENOME).ref%d%d%doffsetscomp \$(GENOME).ref%d%d%dpositions gmapmsg\n",
-    $gmap_basesize,$gmap_kmersize,$gmap_interval,$gmap_basesize,$gmap_kmersize,$gmap_interval;
-printf $MAKEFILE "gmapdb_lc: checkcoords \$(GENOME).version \$(GENOME).genome \$(GENOME).ref%d%d%doffsetscomp_lc \$(GENOME).ref%d%d%dpositions gmapmsg\n",
-    $gmap_basesize,$gmap_kmersize,$gmap_interval,$gmap_basesize,$gmap_kmersize,$gmap_interval;
-printf $MAKEFILE "gmapdb_lc_masked: checkcoords \$(GENOME).version \$(GENOME).genome \$(GENOME).ref%d%d%doffsetscomp.masked \$(GENOME).ref%d%d%dpositions.masked gmapmsg\n",
-    $gmap_basesize,$gmap_kmersize,$gmap_interval,$gmap_basesize,$gmap_kmersize,$gmap_interval;
-
-print $MAKEFILE "coords: \$(COORDS)\n";
-print $MAKEFILE "\n";
-
-print $MAKEFILE "checkcoords: \n";
-print $MAKEFILE "\tif test -s \$(COORDS); then \\\n";
-print $MAKEFILE "\techo File \$(COORDS) found.  Proceeding...; \\\n";
-print $MAKEFILE "\telse \\\n";
-print $MAKEFILE "\techo File \$(COORDS) not found.  Please run \"make -f $outputfile coords\" first.; \\\n";
-print $MAKEFILE "\texit 1; \\\n";
-print $MAKEFILE "\tfi\n";
-print $MAKEFILE "\n";
-
-print $MAKEFILE "gmapmsg:\n";
-print $MAKEFILE "\techo gmapdb for $genome_name complete.\n";
-print $MAKEFILE "\techo To install, do: make -f Makefile.$genome_name install\n";
-
-print $MAKEFILE "cleanall: clean\n";
-print $MAKEFILE "\trm -f \$(GENOME).version\n";
-print $MAKEFILE "\trm -f Makefile.\$(GENOME)\n";
-print $MAKEFILE "\techo To start over again, run gmap_setup\n";
-print $MAKEFILE "\n";
-
-print $MAKEFILE "clean:\n";
-print $MAKEFILE "\tfor s in \$(FILE_ENDINGS); do \\\n";
-print $MAKEFILE "\tif test -r \$(GENOME).\$\$s; then \\\n";
-print $MAKEFILE "\trm -f \$(GENOME).\$\$s; \\\n";
-print $MAKEFILE "\tfi; \\\n";
-print $MAKEFILE "\tdone;\n";
-print $MAKEFILE "\trm -f coords.\$(GENOME)\n";
-print $MAKEFILE "\n";
-
-
-
-########################################################################
-#   Coords file
-########################################################################
-
-print $MAKEFILE "\$(COORDS):\n";
-print $MAKEFILE "\tfor s in \$(FILE_ENDINGS); do \\\n";
-print $MAKEFILE "\trm -f \$(GENOME).\$\$s; \\\n";
-print $MAKEFILE "\tdone;\n";
-if (defined($mdfile = $opt_M)) {
-    print $MAKEFILE "\t\$(MD_COORDS) -o \$(COORDS) $mdfile\n";
-
-} elsif (defined($opt_C)) {
-# Try to parse chromosomal information
-    if (defined($opt_E)) {
-	print $MAKEFILE "\t$incommand | \$(FA_COORDS) -C -o \$(COORDS)\n";
-    } else {
-	print $MAKEFILE "\t\$(FA_COORDS) -C -o \$(COORDS) \$(FASTA)\n";
-    }
-} else {
-    if (defined($opt_E)) {
-	print $MAKEFILE "\t$incommand | \$(FA_COORDS) -o \$(COORDS)\n";
-    } else {
-	print $MAKEFILE "\t\$(FA_COORDS) -o \$(COORDS) \$(FASTA)\n";
-    }
-}
-
-
-########################################################################
-#   Contig files
-########################################################################
-
-if (defined($opt_E)) {
-    print $MAKEFILE "\$(GENOME).contig.iit: \$(COORDS)\n";
-} else {
-    print $MAKEFILE "\$(GENOME).contig.iit: \$(COORDS) \$(FASTA)\n";
-}
-print $MAKEFILE "\techo Making contig files...\n";
-if (defined($opt_E)) {
-    print $MAKEFILE "\t$incommand | \$(GMAP_PROCESS) -c \$(COORDS) | \$(GMAPINDEX) -d \$(GENOME) -A \$(CHR_ORDER_FLAG)\n";
-} else {
-    print $MAKEFILE "\t\$(GMAP_PROCESS) -c \$(COORDS) \$(FASTA) | \$(GMAPINDEX) -d \$(GENOME) -A \$(CHR_ORDER_FLAG)\n";
-}
-print $MAKEFILE "\n";
-
-
-########################################################################
-#   Genome files
-########################################################################
-
-print $MAKEFILE "\$(GENOME).genomecomp: \$(GENOME).contig.iit\n";
-print $MAKEFILE "\techo Making compressed genome file...\n";
-if (defined($opt_E)) {
-    print $MAKEFILE "\t$incommand | \$(GMAP_PROCESS) -c \$(COORDS) | \$(GMAPINDEX) -d \$(GENOME) \$(WRITEFILE) -G\n";
-} else {
-    print $MAKEFILE "\t\$(GMAP_PROCESS) -c \$(COORDS) \$(FASTA) | \$(GMAPINDEX) -d \$(GENOME) \$(WRITEFILE) -G\n";
-}
-print $MAKEFILE "\n";
-
-
-print $MAKEFILE "\$(GENOME).genome: \$(GENOME).contig.iit\n";
-print $MAKEFILE "\techo Making full ASCII genome file...\n";
-if (defined($opt_E)) {
-    print $MAKEFILE "\t$incommand | \$(GMAP_PROCESS) -c \$(COORDS) | \$(GMAPINDEX) -d \$(GENOME) \$(WRITEFILE) -l -G\n";
-} else {
-    print $MAKEFILE "\t\$(GMAP_PROCESS) -c \$(COORDS) \$(FASTA) | \$(GMAPINDEX) -d \$(GENOME) \$(WRITEFILE) -l -G\n";
-}
-print $MAKEFILE "\n";
-
-
-########################################################################
-#   GMAP index files, unmasked
-########################################################################
-
-$k_flag = "-k $gmap_kmersize";
-$q_flag = "-q $gmap_interval";
-
-printf $MAKEFILE "\$(GENOME).ref%d%d%doffsetscomp: \$(GENOME).genomecomp\n",$gmap_basesize,$gmap_kmersize,$gmap_interval;
-print $MAKEFILE "\techo Making index offsetscomp file...\n";
-print $MAKEFILE "\tcat \$(GENOME).genomecomp | \$(GMAPINDEX) -d \$(GENOME) $k_flag $q_flag -O; \n";
-print $MAKEFILE "\n";
-
-printf $MAKEFILE "\$(GENOME).ref%d%d%doffsetscomp_lc: \$(GENOME).genome\n",$gmap_basesize,$gmap_kmersize,$gmap_interval;
-print $MAKEFILE "\techo Making index offsetscomp file...\n";
-print $MAKEFILE "\tcat \$(GENOME).genome | \$(GMAPINDEX) -d \$(GENOME) -l $k_flag $q_flag -O; \n";
-print $MAKEFILE "\n";
-
-printf $MAKEFILE "\$(GENOME).ref%d%d%dpositions: \$(GENOME).ref%d%d%doffsetscomp\n",$gmap_basesize,$gmap_kmersize,$gmap_interval,$gmap_basesize,$gmap_kmersize,$gmap_interval;
-print $MAKEFILE "\techo Making index positions file...\n";
-print $MAKEFILE "\tif test -s \$(GENOME).genome; then \\\n";
-print $MAKEFILE "\tcat \$(GENOME).genome | \$(GMAPINDEX) -d \$(GENOME) -l $k_flag $q_flag -P \$(WRITEFILE); \\\n";
-print $MAKEFILE "\telse \\\n";
-print $MAKEFILE "\tcat \$(GENOME).genomecomp | \$(GMAPINDEX) -d \$(GENOME) $k_flag $q_flag -P \$(WRITEFILE); \\\n";
-print $MAKEFILE "\tfi\n";
-print $MAKEFILE "\n";
-
-
-########################################################################
-#   GMAP index files, masked
-########################################################################
-
-printf $MAKEFILE "\$(GENOME).ref%d%d%doffsetscomp.masked: \$(GENOME).genome\n",$gmap_basesize,$gmap_kmersize,$gmap_interval;
-print $MAKEFILE "\techo Making masked index offsetscomp file...\n";
-print $MAKEFILE "\tcat \$(GENOME).genome | \$(GMAPINDEX) -d \$(GENOME) -l -m $k_flag $q_flag -O\n";
-print $MAKEFILE "\n";
-
-printf $MAKEFILE "\$(GENOME).ref%d%d%dpositions.masked: \$(GENOME).ref%d%d%doffsetscomp.masked\n",
-    $gmap_basesize,$gmap_kmersize,$gmap_interval,$gmap_basesize,$gmap_kmersize,$gmap_interval;
-print $MAKEFILE "\techo Making masked index positions file...\n";
-print $MAKEFILE "\tcat \$(GENOME).genome | \$(GMAPINDEX) -d \$(GENOME) -l -m $k_flag $q_flag -P\n";
-print $MAKEFILE "\n";
-
-
-########################################################################
-#   Version file
-########################################################################
-
-print $MAKEFILE "\$(GENOME).version:\n";
-print $MAKEFILE "\techo \$(GENOME) > \$\@\n";
-print $MAKEFILE "#\tThis file can be edited manually to change the genome name printed by GMAP\n";
-print $MAKEFILE "\n";
-
-close($MAKEFILE);
-
-
-########################################################################
-#   Final instructions
-########################################################################
-
-$FP = new IO::File(">INSTALL.$genome_name") or die "Cannot write to INSTALL.$genome_name";
-print_instructions($FP);
-close($FP);
-
-$FP = new IO::File(">&STDOUT");
-print_instructions($FP);
-close($FP);
-
-exit;
-
-
-
-sub print_instructions {
-  my ($FP) = @_;
-
-  print $FP <<INSTRUCTIONS1;
-============================================================
-
-A Makefile called Makefile.$genome_name has been created for your genome.
-You may inspect and edit it if necessary.  To start the build of your genome,
-do
-
-INSTRUCTIONS1
-
-print $FP "    make -f $outputfile coords\n";
-print $FP "    make -f $outputfile gmapdb\n";
-print $FP "    make -f $outputfile install\n";
-
-print $FP <<INSTRUCTIONS2;
-
-If you need to start over again, do
-
-    make -f $outputfile clean  (which preserves Makefile.$genome_name and INSTALL.$genome_name)
- or
-    make -f $outputfile cleanall  (which deletes the above files)
-
-A copy of these commands has been written to a file called
-INSTALL.$genome_name.
-
-============================================================
-INSTRUCTIONS2
-
-  return;
-}
-
-
-
-sub print_usage {
-  print <<TEXT1;
-
-gmap_setup: Sets up a Makefile for creating a genome by use by GMAP or GSNAP.
-Part of GMAP package, version $package_version.
-
-Note: It is easier to run the newer program gmap_build instead.
-
-Usage: gmap_setup -d <genomename> [-D <destdir>] [-o <Makefile>] [-C] [-M <.md file>]
-       [-E] [-s sorttype] [-k kmersize] [-b basesize] [-q interval] [-W] <fasta_files or command>
-
-    -d    genome name
-    -D    destination directory for installation (defaults to gmapdb directory specified at configure time)
-    -o    name of output Makefile (default is "Makefile.<genome>")
-    -M    use coordinates from an .md file (e.g., seq_contig.md file from NCBI)
-    -C    try to parse chromosomal coordinates from each FASTA header
-    -E    interpret argument as a command, instead of a list of FASTA files
-    -s    use given sorttype to order chromosomes: none, alpha, numeric-alpha, or chrom (default)
-    -k    kmer size
-
-  Advanced flags, not typically used:
-    -b    offsetscomp basesize
-    -q    GMAP indexing interval (default: 3 nt)
-    -W    write some output directly to file, instead of using RAM (use only if RAM is limited)
-
-These flags are explained below:
-
-If you want to treat each FASTA entry as a separate chromosome (either
-because it is in fact an entire chromosome or because you have contigs
-without any chromosomal information), you can simply call gmap_setup
-like this:
-
-    gmap_setup -d <genome> <fasta_file>...
-
-The accession of each FASTA header (the word following each ">") will
-be the name of each chromosome.  GMAP can handle an unlimited number
-of "chromosomes", with arbitrarily long names.  In this way, GMAP
-could be used as a general search program for near-identity matches
-against a FASTA file.
-
-
-* The -M and -C flags: If your sequences represent contigs that have
-  mapping information to specific chromosomal regions, then you can
-  have gmap_setup try to read each header to determine its chromosomal
-  region (the -C flag) or read an .md file that contains information
-  about chromosomal regions (the -M flag).  The .md files are often
-  provided in NCBI releases, but since the formats change often,
-  gmap_setup will prompt you to make sure it parses it correctly.
-
-
-* The -E flag: If you need to pre-process the FASTA files before using
-  these programs, perhaps because they are compressed or because you
-  need to insert chromosomal information in the header lines, you can
-  specify a command instead of multiple fasta_files, like these
-  examples:
-
-    gmap_setup -d <genome> -E 'gunzip -c genomefiles.gz'
-    gmap_setup -d <genome> -E 'cat *.fa | ./add-chromosomal-info.pl'
-
-
-* The -W flag: The gmap_setup process works best if you have a
-  computer with enough RAM to hold the entire genome (e.g., 3
-  gigabytes for a human- or mouse-sized genome).  Since the resulting
-  genome files work across all machine architectures, you can find any
-  machine with sufficient RAM to build the genome files and then
-  transfer the files to another machine.  (GMAP itself runs fine on
-  machines with limited RAM.)  If you cannot find any machine with
-  sufficient RAM for gmap_setup, you can run the program with the -W
-  flag to write the files directly, but this can be very slow.
-
-
-* The -q flag: If you specify a smaller interval (for example,
-  1 for the GMAP sampling interval), you can create a higher-resolution
-  database, which can improve speed somewhat.  However, the corresponding
-  genome index files will be larger (three times as big if you specify -q 1).
-  These index files may exceed the 4-gigabyte filesize limit on some computers,
-  and will therefore fail to work on those computers.
-
-
-TEXT1
-  return;
-}
-
diff --git a/util/gvf_iit.pl.in b/util/gvf_iit.pl.in
new file mode 100755
index 0000000..7164c13
--- /dev/null
+++ b/util/gvf_iit.pl.in
@@ -0,0 +1,63 @@
+#! @PERL@
+
+use warnings;
+
+while (defined($line = <>)) {
+    if ($line =~ /^\#/) {
+	# Skip comment
+    } else {
+	chop $line;
+	@fields = split /\t/,$line;
+	if ($fields[2] eq "SNV") {
+	    $chr = $fields[0];
+	    $chrpos = $fields[3];	# GVF file is 1-based
+
+	    undef $rsid;
+	    undef $alleleA;
+	    undef $alleleB;
+
+	    foreach $item (split ";",$fields[8]) {
+		if ($item =~ /Dbxref=(\S+)/) {
+		    $rsid = $1;
+		    $rsid =~ s/.*://;
+		} elsif ($item =~ /Reference_seq=(.)/) {
+		    $alleleA = $1;
+		} elsif ($item =~ /Variant_seq=(.)/) {
+		    $alleleB = $1;
+		}
+	    }
+	    if (($snp_strand = $fields[6]) eq "-") {
+		$alleleA = $refcomp{$alleleA};
+		$alleleB = $revcomp{$alleleB};
+	    }
+	    if ($alleleA le $alleleB) {
+		$snp_type = $alleleA . $alleleB;
+	    } else {
+		$snp_type = $alleleB . $alleleA;
+	    }
+
+	    if (!defined($rsid)) {
+		# Skip
+	    } elsif ($snp_strand ne "+" && $snp_strand ne "=") {
+		# Skip
+	    } elsif (!defined($alleleA) || !defined($alleleB)) {
+		# Skip
+	    } elsif (!defined($acgt{$alleleA}) || !defined($acgt{$alleleB})) {
+		print STDERR "$rsid has alleles $fields[9] with non-ACGT character\n";
+	    } else {
+		print ">$rsid $chr:$chrpos $snp_type $snp_strand\n";
+	    }
+	}
+    }
+}
+
+exit;
+
+
+BEGIN {
+    %acgt = ("A" => 1, "C" => 1, "G" => 1, "T" => 1);
+
+    %revcomp = ("A" => "T", "C" => "G", "G" => "C", "T" => "A");
+}
+
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/gmap.git



More information about the debian-med-commit mailing list